МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет «Львівська політехніка»
Кафедра «Телекомунікації»
Вивчення структури операційної системи IOS.
Конфігурування інтерфейсів маршрутизатора.
Методичні вказівки до лабораторних робіт з курсу
«Операційні системи телекомунікаційних мереж»
Для студентів спеціальності
«Інформаційні мережі зв’язку»
Львів 2005
Мета роботи: вивчити структуру операційної системи IOS; навчитися конфігурувати LAN і WAN інтерфейси, настроювати таблиці хостів в маршрутизаторах Cisco.
Теоретичні відомості
Спочатку IOS проектувалась як маленька операційна система, яка вбудовувалась в перші маршрутизатори Cisco. В ті часи маршрутизатори були виключно апаратними. Практично не існувало розділення між програмною і апаратною частинами. Спочатку операційну систему IOS навіть не називали IOS, а лише системою, яка управляла маршрутизатором Cisco.
З ростом популярності маршрутизованих мереж виникла потреба в пристроях, які б підтримували різноманітні протоколи і забезпечували додаткову функціональність, таку, наприклад, як комутація. У відповідь на підвищення вимог до маршрутизаторів Cisco вносила різні доповнення в програмне забезпечення. В результаті IOS перетворилася в багатофункціональну операційну систему, яка підтримує маршрутизацію і комутацію. Цікаво відмітити, що, не дивлячись на значне розширення функціональних можливостей системи IOS лишилися практично незмінними.
В порівнянні з іншими операційними системами, структура системи IOS дуже проста. Як і більшість маленьких операційних систем, які вбудовуються, IOS була спроектована таким чином, щоб займати мінімальну кількість пам’яті і функціонувати максимально швидко. Спочатку маршрутизатори володіли невеликим об’ємом пам’яті де зберігалося програмне забезпечення і дані (такі як таблиці маршрутизації). Щоб забезпечити мінімізацію операційної системи, IOS спроектована і містить в собі лише з самі необхідні функції для забезпечення поставлених завдання маршрутизації.
Необхідність високопродуктивної операційної системи зіграла вирішальну роль в проектуванні структури IOS. Значні зусилля були спрямовані на створення системи, яка б дозволяла маршрутизатору перенаправляти мережеві пакети з максимальною швидкістю. Це привело до потреби зменшення витрат процесорного часу на службові потреби операційної системи, що дозволило максимально ефективно використовувати ресурси процесора для маршрутизації мережевих пакетів. Механізм захисту внутрішньопотокової пам’яті, який присутні в інших операційних системах, був виключений із системи IOS з метою зниження витрат процесорних ресурсів на обслуговування потреб системи. В цілому ідея IOS полягає в тому, щоб досягнути максимальної швидкості роботи, нехай і ціною ефективності захисту системи від збоїв.
На мал. 1.1 показаний загальний вигляд структури операційної системи IOS.
Процеси
Пакетний
буфер
Ядро
Драйвери прстроїв
ПЗ
швидкої
комутації
Апаратна частина
Мал. 1.1. Структура операційної системи IOS
На мал.. 1.1 приведені основні елементи системи:
Процеси. Зазвичай під процесами розуміються окремо взяті потоки і пов’язані з ними дані. Процеси виконують конкретні задачі, такі як підтримка працездатності системи, комутацію мережевих пакетів і реалізацію протоколів маршрутизації.
Ядро системи здійснює основні функції операційної системи: керування пам’яттю і планування задач, а також відповідає за розподіл апаратних ресурсів (пам’ять і центральний процесор) між всіма процесами.
Буфери пакетів. Зазвичай це буфери пам’яті, які використовуються для зберігання мережевих пакетів, які маршрутизуються.
Драйвери пристроїв. Драйвери керують апаратною частиною мережевих інтерфейсів і периферійними пристроями (такими як флеш-карти). Драйвер виступає в ролі посередника між ядром системи IOS і всіма процесами та апаратною частиною маршрутизотора. Драйвери напряму взаємодіють з програмним забезпеченням швидкої комутації пакетів.
Програмне забезпечення швидкої комутації пакетів. Під таким програмним забезпеченням розуміється набір оптимізованих функцій, які здійснюють швидку комутацію шляхів для передачі пакетів.
Операційна система IOS опроецьовує всю фізичну пам’ять, яка має одну неперервну область віртуального простору. Як ми вже зазначали вище, в системі IOS не реалізований повноцінній механізм віртуальної пам’яті. Для зниження розрахункових затрат на обслуговування системи і процесів ядро IOS не підтримує ні сторінкову адресацію пам’яті, ні підкачку окремих областей пам’яті. Таким чином, весь адресний простір системи IOS обмежений об’ємом доступної фізичної пам’яті.
Всю пам’ять операційна система поділяє на окремі області (regions), які зазвичай відповідають різним типам фізичної пам’яті. Наприклад, статична пам’ять (Static Random Access Memory – SRAM) – для зберігання пакетів, динамічна (Dynamic Random Access Memory – DRAM) – для зберігання програмного забезпечення і даних маршрутизотора певного типу. Поділ пам’яті на області дозволяє системі IOS об’єднувати різноманітні типи пам’яті, а програми навіть не знають особливостей пам’яті на конкретній апаратній платформі.
Всі області пам’яті класифікуються за одною з восьми категорій, які перераховані нижче:
Таблиця 1.1. Різновид областей пам’яті
Області пам’яті можуть бути вкладеними у відношенні „батьківська область – дочірня область”. В принципі, обмежень на глибину подібного роду вкладень немає, однак використовується лише один рівень. Вкладені області формують підобласті (subregions) батьківських областей. На мал. 1.2 проілюстрована можлива в системі IOS конфігурація пам’яті з областями і підобластями.
DRAM
SRAM
Фізична
пам’ять
Локальна
область
Область швидкої пам’яті
Області
пам’ять
Лока-льна
(куча)
IBSS
Idata
IText
Підобласті
пам’ять
Мал. 1.2 Області пам’яті
Для того щоб дізнатися, які області пам’яті відсутні в даній системі, використовується команда show region.
Керування пам’ятю в системі IOS виконується за допомогою так званих пулів пам’яті (memory pools). Кожний пул являє собою блок пам’яті, який може буди виділений з кучі або не використовуватися. Пули складаються з областей пам’яті, а керування ними виконується ядром системи. Дуже часто пул пам’яті в точності відповідає області пам’яті, однак один пул може покривати і декілька ділянок пам’яті. Таким чином, пам’ять може виділятися для використання зразу декількох областей, що є дуже ефективним.
Інформація про пули пам’яті може бути отримана за допомогою команди show memory.
Процеси операційної системи IOS еквівалентні потокам в інших операційних системах, оскільки в IOS процеси складаються з одного потоку. Кожному процесу відповідає певний стек (контекст центрального процесора). Процес може користуватися ресурсами пам’яті і консольними пристроями. Щоб знизити затрати на обслуговування, система IOS не реалізує механізм захисту областей окремих процесорів. Також не здійснюється керування пам’яттю під час переключення контекстів. Все це означає, що хоч кожному процесу і виділена своя область пам’яті, ніщо не заважає йому втрутитися в пам’ять іншого процесу.
Як ми вже відмічали раніше, операційна система IOS використовує модель пріоритетного виконання до повного завершення для планування своїх процесів. Може здатися, що використання планування без пріоритетних переривань – не найкраще рішення для системи, яка повинна оперативно обслуговувати вхідні мережеві пакети. В деяких випадках так воно і є: потреба в оперативності виходить за обмеження механізма планування процесів в системі IOS. Все ж механізм планування задач операційної системи IOS має масу безперечних переваг, що дозволяє використовувати його для обслуговування процесів, які не претендують на надшвидку комутацію пакетів. Перерахуємо деякі позитивні сторони даного підходу:
Нові затрати ресурсів. При кооперативній багатозначності контексти різноманітних потоків переключаються відносно рідко, що виражається в меншій завантаженості центрального процесора (так як він рідше займається власне переключенням потоків).
Спрощення програмування. Оскільки програміст може контролювати момент, коли процес буде припинений, тому що дуже легко переключати процеси лише в тих місцях, де вони оперують з загальними даними в пам’яті. Це дозволяє запобігти небажаних єфектів і заторів між потоками.
Плануючи виконання процесів, операційна система IOS використовує політику пріоритетів. При народженні процесу йому назначається один з чотирьох пріоритетів, в залежності від завдання даного процесу. В наслідку пріоритет не змінюється. Приведемо опис можливих пріоритетів процесів операційної системи IOS.
Критичний пріоритет. Зарезервований для системних процесів, які розділяють ресурси.
Високий пріоритет. Призначається процесам, які забезпечують високу оперативність (як, наприклад, процес, що отримує пакети безпосередньо від мереженого інтерфейсу).
Середній пріоритет. По замовченню такий пріоритет призначається більшості процесів системи IOS.
Низький пріоритет. Призначається процесам, які мають значення інформаційних повідомлень.
Взалежності від пріоритетів механізм пріоритетів дає різним процесам привілеї на доступ до процесорних ресурсів. Однак треба пам’ятати, операційна система IOS не реалізує пріоритетні переривання. Таким чином, процес з більш високим пріоритетом не може перервати виконання процесу з низьким пріоритетом. Замість цього система IOS надає процесам з високим пріоритетом більшу можливість захопити процесорні ресурси.
Маршрутизуючи пакети, система повинна мати запас пам’ті для тимчасового збереження пакетів. Зазвичай для цього створюються буфери пам’яті, в яких зберігаються пакети, що поступають, поки система вирішує, куди їх переправити. Оскільки вся ідея операційної системи IOS полягає в маршрутизації пакетів, для роботи з буфером пакетів існує спеціальний менеджер пакетного буферу (packet buffer manager). Він використовується системою для створення і керування набором пулів буфера пакетів. Буфери в таких пулах мають загальну назву – системні буфери.
Менеджери буферного пулу дозволяють маніпулювати набором (або пулом) буферів певного розміру. Менеджер буферного пулу може використовуватись для керування будь-яким видом буферних пулів, але переважно він застосовується для маніпуляції з буфером пакетів.
Пули пам’яті для буферизації пакетів створюються шляхом виділення пам’яті з пулу (наприклад, процесорного або пулу вводу – виводу). Для того щоб створити пул, менеджер пакетного буферу вимагає у менеджера пулів виділити блок пам’яті і потім розділює його на буфери. Менеджер пакетного буферу створює список всіх вільних буферів для їх наступного заповнення і звільнення.
Пули пакетного буфера можуть бути або статистичними, або динамічними. Статистичний пул створюється з фіксованою кількістю буферів, тобто далі по ходу роботи додаткові буфери не виділяються. Динамічні пули створюються з мінімальною кількістю буферів (так звані постійні буфери) з можливістю подальшого створення і видалення додаткових буферів. При необхідності розширення додаткового пулу буферів менеджер пулів намагається негайно задовільнити запит на розширення. Якщо ж миттєво розширити пул не вдається, запит на розширення обробляється пізніше фоновим процесом менеджера пулів.
Пули пакетного буфера можуть бути загальними або локальними. Загальні пули, як випливає з їх назви, можуть використовуватися будь-яким системним процесом. Локальні пули використовуються лише процесом, для якого пул був створений.
В будь-якій IOS-системі існує певний набір загальних буферних пулів – системних буферів. Ці буферні пули використовуються для комутації пакетів, що приходять, або для зберігання пакетів, що генеруються системою (наприклад, тестові пакети мережених інтерфейсів або пакети оновлення таблиць маршрутизації). Інформація, яка стосується системних і інших буферів, може бути отримана з допомогою команди show buffer.
Давайте розглянем інтерфейси IOS-системи які являють собою складову апаратної частини операційної системи. нтерфеси маршрутизатора поділяються на LAN і WAN. Маршрутизатор найчастіше під’єднується до LAN через інтерфейси Ethernet чи FastEthernet. WAN зв’язки організовуються через так звані Serial інтерфейси.
Для того, щоб сконфігурувати Ethernet інтерфейс йому потрібно призначити ІР адресу, мережеву маску і активізувати його.
Для виконання цієї задачі необхідно виконати наступні кроки:
Увійти в режим глобальної конфігурації
Увійти в режим інтерфейсу
Визначити для інтерфейсу ІР адресу і мережеву маску
Активізувати інтерфейс
По замовчуванню інтерфейс знаходиться у стані “down”, тобто виключений. Для того,щоб включити потрібно застосувати команду no shutdown в режимі інтерфейсу.
Приклад:
Router>enable
Router#conf t
Router(config)#interface Ethernet 0
Router(config-if)#ip address 10.10.10.1 255.255.255.0
Router(config-if)#no shutdown
Для того, щоб сконфігурувати Serial інтерфейс потрібно виконати ті самі дії, що й для конфігурування Ethernet інтерфейсу. Але слід зауважити, що Serial інтерфейси вимагають синхронізуючого сигналу, для контролювання синхронізацією. В більшості застосувань синхронізацію забезпечує обладнання DCE, таке як CSU/DSU. По замовчуванню Cisco маршрутизатори є DTE обладнанням, але вони можуть бути сконфігуровані як DCE обладнання.
На Serial зв’язках,що безпосереднь з’єднані, як в лабораторній, одна сторона мусить бути DCE і надавати синхронізацію. Синхронізація і швидкість виставляється за допомогою команди clock rate.
Приклад:
Router>enable
Router#conf t
Router(config)#interface Ethernet 0
Router(config-if)#ip address 10.10.10.1 255.255.255.0
Router(config-if)#clock rate 56000
Router(config-if)#no shutdown
Розв’язання імен хостів – це процес, що використовує комп’ютерна система для того, що асоціювати ім’я хоста з його ІР адресою.
В загальному випадку, щоб використовувати імена хостів для встановлення з’єднання з віддаленим ІР-обладнанням, мережене обладнання, таке як маршрутизатори, мусять вміти асоціювати імена хостів з ІР адресами. Перелік імен хастів і асоційованих з ними ІР адрес називається таблицею хостів.
Таблиця хостів може містити все обладнання в мережі. Кожна унікальна ІР адреса може мати асоційоване з нею ім’я. Cisco IOS підтримує кеш імен-адрес для використання EXEC командами. Цей кеш пришвидшує процес підміни імен адресами.
Імена хостів, на відміну від DNS імен, діють тільки в маршрутизаторі, в якому вони сконфігуровані. Таблиця хостів дозволяє системному адміністратору вводити або ім’я хоста(наприклад, Lviv), або його ІР адресу для того, щоб дістатися до нього за допомогою команди Telnet.
Для того, щоб призначити ім’я хоста до адреси, спочатку потрібно увійти в глобальний конфігураційний режим. Потім ввести команду ip host, за якою має йти ім’я призначення і всі ІР адреси, за якими маршрутизатор може бути досягнений. Для того щоб протестувати зв’язок до хоста, використовуються команди telnet або ping з іменем маршрутизатора, або ІР адресою, що асоціюється з ім’ям маршрутизатора.
Хід роботи
1. Під’єднайтеся до маршрутизатора А і увійдіть в Привілейований режим.
2. Увійдіть в конфігураційний режим в і задайте ім’я хоста Lab_A.
3. Задайте ІР адресу 201.100.11.1 з маскою 255.255.255.0 на інтерфейсі Serial0. Цей інтерфейс є (DCE), тому задайте йому clock rate 56000. Не забудьте активізувати інтерфейс.
4. Тепер під’єднайтеся до маршрутизатора В і увійдіть в Привілейований режим.
5. Увійдіть у конфігураційний режим і задайте ім’я маршрутизатора Lab_B. .
6. Задайте ІР адресу 201.100.11.2 з маскою 255.255.255.0 на інтерфейсі Serial1. Не забудьте активізувати інтерфейс. .
7. Після того як ми виконали дії з 1 по 6, ми можемо спробувати пропінгувати інтерфейс Serial0 маршрутизатора Lab_A. Вийдіть з режиму інтерфейсу і введіть команду ping 201.100.11.1.
8. Сконфігуруйте таблицю хостів. Зробіть можливим пінгування маршрутизатора Lab_A не по його ІР адресу по його назві.
8.Спробуйте пропінгувати інтерфейс Serial0 маршрутизатора Lab_A просто вводячи команду ping Lab_A.
9. Ви можете переконатися чи є відповідний вхід в таблиці хостів, використовуючи команду show hosts.
10. Закінчити роботу і здати звіт.