Електронний посібник

Лекція № 15

Тема: Реалізація мережного рівня засобами стека TCP/IP: принципи маршрутизації, приклади таблиць маршрутизації

Мета: ознайомитися з принципами маршрутизації, принципами побудови таблиць маршрутизації, призначенням полів таблиць маршрутизації

План


1 Принципи маршрутизації.

2 Таблиці маршрутизації в IP-мережах.

3 Призначення полів таблиці маршрутизації.

4 Джерела і типи записів у таблиці маршрутизації.

Лекційний матеріал

Принципи маршрутизації

Найважливішим завданням мережевого рівня є маршрутизація - передача пакетів між двома кінцевими вузлами в складеній мережі.

Розглянемо принципи маршрутизації на прикладі складової мережі, зображеної на рис.1. У цій мережі 20 маршрутизаторів об'єднують 18 мереж в загальну мережу; S1, S2, ... , S20 - це номери мереж. Маршрутизатори мають по декілька портів (принаймні, по два), до яких приєднуються мережі. Кожен порт маршрутизатора можна розглядати як окремий вузол мережі: він має власну мережеву адресу і власний локальний адрес в тій підмережі, яка до нього підключена. Наприклад, маршрутизатор під номером 1 має три порти, до яких підключені мережі S1, S2, S3. На рисунку мережеві адреси цих портів позначені як М1 (1), Ml (2) та М1 (3). Порт М1 (1) має локальний адреса в мережі з номером S1, порт Ml (2) - в мережі S2, а порт М1 (3) - в мережі S3. Таким чином, маршрутизатор можна розглядати як сукупність декількох вузлів, кожний з яких входить у свою мережу. Як єдиний пристрій маршрутизатор не має ні окремого мережевого адреси, ні будь-якого локальної адреси.

Якщо маршрутизатор має блок керування (наприклад, SNMP-управління), то цей блок має власні локальний і мережевий адреси, за якими до нього звертається центральна станція управління, що знаходиться десь у складеній мережі.

У складних складових мережах майже завжди існує кілька альтернативних маршрутів для передачі пакетів між двома кінцевими вузлами. Маршрут - це послідовність маршрутизаторів, які повинен пройти пакет від відправника до пункту призначення. Так, пакет, відправлений з вузла А у вузол В, може пройти через маршрутизатори 17, 12, 5, 4 і 1 або маршрутизатори 17,13, 7, 6 і З. Неважко знайти ще кілька маршрутів між вузлами А і В.

Завдання вибору маршруту з декількох можливих вирішують маршрутизатори, а також кінцеві вузли. Маршрут вибирається на підставі наявної у цих пристроїв інформації про поточну конфігурацію мережі, а також на підставі зазначеного критерію вибору маршруту. Звичайно як критерій виступає затримка проходження маршруту окремим пакетом або середня пропускна здатність маршруту для послідовності пакетів. Часто також використовується досить простий критерій, що враховує тільки кількість пройдених в маршруті проміжних маршрутизаторів (хопов).

Щоб за адресою мережі призначення можна було б вибрати раціональний маршрут подальшого проходження пакету, кожен кінцевий вузол і маршрутизатор аналізують спеціальну інформаційну структуру, яка називається таблицею маршрутизації. Використовуючи умовні позначення для мережевих адрес маршрутизаторів та номерів мереж в тому вигляді, як вони наведені на рис. 5.2, подивимося, як могла б виглядати таблиця маршрутизації, наприклад, в маршрутизаторі 4 (табл. 5.1).

Таблиця 1 значно спрощена в порівнянні з реальними таблицями, наприклад, відсутні стовпці з масками, ознаками стану маршруту, часом, протягом якого дійсні запису даної таблиці (їх застосування буде розглянуто пізніше). Крім того, як вже було сказано, тут вказані адреси мереж умовного формату, що не відповідають якогось певного мережевого протоколу. Тим не менше ця таблиця містить основні поля, наявні в реальних таблицях при використанні конкретних мережевих протоколів, таких як IP, IPX або Х.25.

У першому стовпці таблиці перераховуються номери мереж, що входять до интермережі. У кожному рядку таблиці слідом за номером мережі вказується мережева адреса наступного маршрутизатора (більш точно, мережеву адресу відповідного порту наступного маршрутизатора), на який треба направити пакет, щоб той пересувався у напрямку до мережі з даним номером з раціонального маршруту.

Коли на маршрутизатор надходить новий пакет, номер мережі призначення, витягнутий з надійшовшого кадру, послідовно порівнюється з номерами мереж з кожного рядка таблиці. Рядок із поєднаним номером мережі вказує, на який найближчий маршрутизатор слід направити пакет. Наприклад, якщо на якій-небудь порт маршрутизатора 4 надходить пакет, адресований у мережу S6, то з таблиці маршрутизації випливає, що адреса наступного маршрутизатора - М2 (1), тобто черговим етапом руху даного пакета буде рух до порту 1 маршрутизатора 2.

Оскільки пакет може бути адресований в будь-яку мережу складовою мережі, може здатися, що кожна таблиця маршрутизації повинна мати записи про всіх мережах, що входять до складену мережу. Але при такому підході у разі великої мережі обсяг таблиць маршрутизації може виявитися дуже великим, що вплине на час її перегляду, зажадає багато місця для зберігання і т. п. Тому на практиці число записів у таблиці маршрутизації намагаються зменшити за рахунок використання спеціального запису - « маршрутизатор за замовчуванням »(default). Дійсно, якщо взяти до уваги топологію складеної мережі, то в таблицях маршрутизаторів, що знаходяться на периферії складовою мережі, достатньо записати номери мереж, безпосередньо приєднаних до даного маршрутизатора або розташованих поблизу, на тупикових маршрутах. Про всі ж інших мережах можна зробити в таблиці єдиний запис, що вказує на маршрутизатор, через який пролягає шлях до всіх цих мереж. Такий маршрутизатор називається маршрутизатором за замовчуванням, а замість номера мережі у відповідному рядку міститься особлива запис, наприклад default. У нашому прикладі таким маршрутизатором за замовчуванням для мережі S5 є маршрутизатор 5, точніше його порт М5 (1). Це означає, що шлях з мережі S5 майже до всіх мереж великий складовою мережі пролягає через цей порт маршрутизатора.

Перед тим як передати пакет наступному маршрутизатору, поточний маршрутизатор повинен визначити, на який з кількох власних портів він повинен помістити даний пакет. Для цього служить третій стовпець таблиці маршрутизації. Ще раз підкреслимо, що кожен порт ідентифікується власним мережевою адресою.

Деякі реалізації мережевих протоколів передбачають наявності в таблиці маршрутизації відразу декількох рядків, що відповідають одному і тому ж адресою мережі призначення. У цьому випадку при виборі маршруту приймається до уваги стовпець «Відстань до мережі призначення». При цьому під відстанню розуміється будь-яка метрика, яка у відповідності із заданим у мережевому пакеті критерієм (часто званим класом сервісу). Відстань може вимірюватися хопамі, часом проходження пакета по лініях зв'язку, будь-якої характеристикою надійності ліній зв'язку на даному маршруті або іншою величиною, що відбиває якість даного маршруту по відношенню до заданого критерію. Якщо маршрутизатор підтримує кілька класів сервісу пакетів, то таблиця маршрутів складається і застосовується окремо для кожного виду сервісу (критерію вибору маршруту).

У табл.1 відстань між мережами вимірювалося хопамі. Відстань для мереж, безпосередньо підключених до портів маршрутизатора, тут приймається рівним 0, проте в деяких реалізаціях відлік відстаней починається з 1.

Наявність декількох маршрутів до одного вузла роблять можливим передачу трафіку до цього вузла паралельно по декількох каналах зв'язку, це підвищує пропускну здатність і надійність мережі.

Завдання маршрутизації вирішують не лише проміжні вузли - маршрутизатори, а й кінцеві вузли - комп'ютери. Засоби мережного рівня, встановлені на кінцевому вузлі, при обробці пакету повинні, перш за все, визначити, чи прямує він в іншу мережу або адресований якомусь вузлу даної мережі. Якщо номер мережі призначення збігається з номером даної мережі, то для даного пакету не потрібно вирішувати задачу маршрутизації. Якщо ж номери мереж відправлення і призначення не співпадають, то маршрутизація потрібна. Таблиці маршрутизації кінцевих вузлів повністю аналогічні таблиць маршрутизації, що зберігається на маршрутизаторах.

Звернімося знову до мережі, зображеної на рис.2. Таблиця маршрутизації для кінцевого вузла В могла б виглядати таким чином (табл. 5.2). Тут MB - мережеву адресу порту комп'ютера В. На підставі цієї таблиці кінцевий вузол У вибирає, на який з двох наявних в локальній мережі S3 маршрутизаторів слід надсилати той чи інший пакет.


Таблиця 2. Таблиця маршрутизації кінцевого вузла В


Кінцеві вузли в ще більшому ступені, ніж маршрутизатори, користуються прийомом маршрутизації за замовчуванням. Хоча вони також в загальному випадку мають у своєму розпорядженні таблицю маршрутизації, її об'єм зазвичай незначний, що пояснюється периферійним розташуванням всіх кінцевих вузлів. Кінцевий вузол часто взагалі працює без таблиці маршрутизації, маючи тільки відомості про адресу маршрутизатора за замовчуванням. При наявності одного маршрутизатора в локальній мережі цей варіант - єдино можливий для всіх кінцевих вузлів. Але навіть за наявності декількох маршрутизаторів в локальній мережі, коли перед кінцевим вузлом стоїть проблема їх вибору, завдання маршруту за замовчуванням часто використовується в комп'ютерах для скорочення обсягу їх таблиці маршрутизації.

Нижче поміщена таблиця маршрутизації іншого кінцевого вузла складовою мережі - вузла А (табл.3). Компактний вигляд таблиці маршрутизації відображає той факт, що всі пакети, що направляються з вузла А, або не виходять за межі мережі S12, або неодмінно проходять через порт 1 маршрутизатора 17. Цей маршрутизатор і визначено в таблиці маршрутизації в якості маршрутизатора за замовчуванням.

Ще однією відмінністю роботи маршрутизатора і кінцевого вузла при виборі маршруту є спосіб побудови таблиці маршрутизації. Якщо маршрутизатори зазвичай автоматично створюють таблиці маршрутизації, обмінюючись службовою інформацією, то для кінцевих вузлів таблиці маршрутизації часто створюються вручну адміністраторами і зберігаються у вигляді постійних файлів на дисках.

Таблиці маршрутизації в IP-мережах

Програмні модулі протоколу IP встановлюються на всіх кінцевих станціях і маршрутизаторах мережі. Для просування пакетів вони використовують таблиці маршрутизації.

Приклади таблиць різних типів маршрутизаторів

Структура таблиці маршрутизації стека TCP / IP відповідає загальним принципам побудови таблиць маршрутизації, розглянутим вище. Однак важливо відзначити, що вигляд таблиці IP-маршрутизації залежить від конкретної реалізації стека TCP / IP. Наведемо приклад трьох варіантів таблиці маршрутизації, з якими міг би працювати маршрутизатор Ml в мережі, представленої на рис. 2.



Рис. 2. Приклад маршрутизуються мережі


Якщо уявити, що в якості маршрутизатора Ml в даній мережі працює штатний програмний маршрутизатор MPR операційної системи Microsoft Windows NT, то його таблиця маршрутизації могла б мати наступний вигляд (табл. 4).
















Таблиця 4. Таблиця програмного маршрутизатора MPR Windows NT

Якщо на місці маршрутизатора М1 встановити апаратний маршрутизатор NetBuilder II компанії 3 Com, то його таблиця маршрутизації для цієї ж мережі може виглядати так, як показано в табл. 5.


Таблиця 5. Таблиця маршрутизації апаратного маршрутизатора NetBuilder II компанії 3 Com

Таблиця 6 представляє собою таблицю маршрутизації для маршрутизатора Ml, реалізованого у вигляді програмного маршрутизатора однією з версій операційної системи Unix.


Таблиця 6. Таблиця маршрутизації Unix-маршрутизатора

Зауважимо, що оскільки між структурою мережі і таблицею маршрутизації в принципі немає однозначної відповідності, то і для кожного з наведених варіантів таблиці можна запропонувати свої «підваріанти», що відрізняються обраним маршрутом до тієї або іншої мережі. У даному випадку увага концентрується на суттєвих розбіжностях у формі подання маршрутної інформації різними реалізаціями маршрутизаторів.


Призначення полів таблиці маршрутизації


Незважаючи на досить помітні зовнішні відмінності, в усіх трьох таблицях є всі ті ключові параметри, необхідні для роботи маршрутизатора, які були розглянуті раніше при обговоренні концепції маршрутизації.

До таких параметрів, безумовно, відносяться адреса мережі призначення (стовпці «Destination» в маршрутизаторах NetBuilder і Unix або «Network Address» у маршрутизаторі MPR) і адреса наступного маршрутизатора (стовпці «Gateway» в маршрутизаторах NetBuilder і Unix або «Gateway Address» в маршрутизаторі MPR).

Третій ключовий параметр - адреса порту, на який потрібно надіслати пакет, в деяких таблицях вказується прямо (поле «Interface» в таблиці Windows NT), а в деяких - побічно. Так, в таблиці Unix-маршрутизатора замість адреси порту задається його умовне найменування - 1е0 для порту з адресою 198.21.17.5, lei для порту з адресою 213.34.12.3 і 1о0 для внутрішнього порту з адресою 127.0.0.1.

У маршрутизаторі NetBuilder II поле, що позначає вихідний порт в будь-якій формі, взагалі відсутній. Це пояснюється тим, що адреса вихідного порту завжди можна опосередковано визначити за адресою наступного маршрутизатора. Наприклад, спробуємо визначити за табл. 5.10 адресу вихідного порту для мережі 56.0.0.0. З таблиці випливає, що наступним маршрутизатором для цієї мережі буде маршрутизатор з адресою 213.34.12.4. Адреса наступного маршрутизатора повинен належати одній з безпосередньо приєднаних до маршрутизатора мереж, і в даному випадку це мережа 213.34.12.0. Маршрутизатор має порт, приєднаний до цієї мережі, і адреса цього порту 213.34.12.3 ми знаходимо в полі «Gateway» другого рядка таблиці маршрутизації, яка описує безпосередньо приєднану мережу 213.34.12.0. Для безпосередньо приєднаних мереж адресою наступного маршрутизатора завжди є адреса власного порту маршрутизатора. Таким чином, адреса вихідного порту для мережі 56.0.0 - це адреса 213.34.12.3.

Інші параметри, які можна знайти в представлених версіях таблиці маршрутизації, є необов'язковими для прийняття рішення про шлях проходження пакета.

Наявність або відсутність поля маски в таблиці говорить про те, наскільки сучасний даний маршрутизатор. Стандартним рішенням сьогодні є використання поля маски в кожному записі таблиці, як це зроблено в таблицях маршрутизаторів MPR Windows NT (поле «Netmask») і NetBuilder (поле «Mask»). Обробка масок при ухваленні рішення маршрутизаторами буде розглянута нижче. Відсутність поля маски говорить про те, що або маршрутизатор розрахований на роботу тільки з трьома стандартними класами адрес, або він використовує для всіх записів одну і ту ж маску, що знижує гнучкість маршрутизації.

Метрика, як видно з прикладу таблиці Unix-маршрутизатора, є необов'язковим параметром. В інших двох таблицях це поле є, однак він використовується лише в якості ознаки безпосередньо підключеної мережі. Дійсно, якщо в таблиці маршрутизації кожна мережа призначення згадується лише один раз, то поле метрики не буде прийматися до уваги при виборі маршруту, так як вибір відсутній. А ось ознака безпосередньо підключеної мережі маршрутизатора потрібен, оскільки пакет для цієї мережі обробляється особливим способом - він не передається наступному маршрутизатору, а відправляється вузлу призначення. Тому метрика 0 для маршрутизатора NetBuilder або 1 для маршрутизатора MPR просто говорить маршрутизатора, що ця мережа безпосередньо підключена до його порту, а інше значення метрики відповідає віддаленої мережі. Вибір значення метрики для безпосередньо підключеної мережі є досить довільним, головне, щоб метрика віддаленої мережі відлічувалася з урахуванням цього вибраного початкового значення. У Unix-маршрутизаторі використовується поле ознак, де прапор G відзначає віддалену мережу, а його відсутність - безпосередньо підключену.

Однак існують ситуації, коли маршрутизатор повинен обов'язково зберігати значення метрики для запису про кожну віддалену мережу. Ці ситуації виникають, коли записи в таблиці маршрутизації є результатом роботи деяких протоколів маршрутизації, наприклад протоколу RIP. У таких протоколах нова інформація про будь-яку віддалену мережу порівнюється з наявною в таблиці, і якщо метрика нової інформації краще наявною, то новий запис витісняє поточним. У таблиці Unix-маршрутизатора поле метрики відсутня, і це значить, що він не використовує протокол RIP.

Прапори записів присутні тільки в таблиці Unix-маршрутизатора. Вони описують характеристики запису.

U - показує, що маршрут активний і працездатний. Аналогічний сенс має поле «Status» у маршрутизаторі NetBuilder.

Н - ознака специфічного маршруту до певного хосту. Маршрут до всієї мережі, до якої належить даний хост, може відрізнятися від даного маршруту.

G - означає, що маршрут пакета проходить через проміжний маршрутизатор (gateway). Відсутність цього прапора відзначає безпосередньо підключену мережу.

D - означає, що маршрут отриманий з повідомлення Redirect (перенаправлення) протоколу ICMP. Ця проблема може бути присутня тільки в таблиці маршрутизації кінцевого вузла. Ознака означає, що кінцевий вузол в якійсь попередній передачі пакету вибрав не раціональний наступний маршрутизатор на шляху до цієї мережі, і цей маршрутизатор за допомогою протоколу ICMP повідомив, що всі наступні пакети до даної мережі потрібно відправляти через інший наступний маршрутизатор. Протокол ICMP може посилати повідомлення тільки вузлу-відправнику, тому у проміжного маршрутизатора ця ознака зустрітися не може. Ознака ніяк не впливає на процес маршрутизації, він тільки вказує адміністратору джерело появи запису. У таблиці Unix-маршрутизатора використовуються ще два поля, що мають довідкове значення. Поле «Refcnt» показує, скільки разів на даний маршрут посилалися при просуванні пакетів. Поле «Use" відображає кількість пакетів, переданих за цим маршрутом.

У таблиці маршрутизатора NetBuilder також є два довідкових поля. Поле часу життя «TTL» (Time To Live) має сенс для динамічних записів, які мають обмежений термін життя. Поточне значення поля показує термін, що залишився життя записи в секундах. Поле «Source» відображає джерело появи запису в таблиці маршрутизації. Хоча це поле є не у всіх маршрутизаторах, але практично для всіх маршрутизаторів існують три основних джерела появи запису в таблиці.


Джерела і типи записів у таблиці маршрутизації


Першим джерелом є програмне забезпечення стека TCP / IP. При ініціалізації маршрутизатора це програмне забезпечення автоматично заносить в таблицю кілька записів, в результаті чого створюється так звана мінімальна таблиця маршрутизації.

Це, по-перше, записи про безпосередньо підключених мережах і маршрутизаторах за замовчуванням, інформація про яких з'являється в стеку при ручному конфігуруванні інтерфейсів комп'ютера або маршрутизатора. До таких записів у наведених прикладах відносяться запису про мережі 213.34.12.0 і 198.21.17.0, а також запис про маршрутизаторі за замовчуванням - default в Unix-маршрутизаторі і 0.0.0.0 в маршрутизаторі MPR Windows NT, У наведеному прикладі таблиці для маршрутизатора NetBuilder маршрутизатор за замовчуванням не використовується, отже, при надходженні пакета з адресою призначення, відсутнім у таблиці маршрутизації, цей пакет буде відкинутий.

По-друге, програмне забезпечення автоматично заносить в таблицю маршрутизації запису про адреси особливого призначення. У наведених прикладах таблиця маршрутизатора MPR Windows NT містить найбільш повний набір записів такого роду. Кілька записів у цій таблиці пов'язані з особливим адресою 127.0.0.0 (loopback), який використовується для локального тестування стека TCP / IP. Пакети, спрямовані в мережу з номером 127.0.0.0, не передаються протоколом IP на канальний рівень для подальшої передачі в мережу, а повертаються на джерело - локальний модуль IP. Записи з адресою 224.0.0.0 потрібні для обробки групових адрес (multicast address). Крім того, в таблицю можуть бути занесені адреси, призначені для обробки широкомовних розсилок (наприклад, запису 8 і 11 містять адресу відправки широкомовного повідомлення у відповідних підмережах, а останній запис у таблиці - адреса обмеженою широкомовлення повідомлення). Зауважимо, що в деяких таблицях запису про особливі адресах взагалі відсутні.

Другим джерелом появи запису в таблиці є адміністратор, безпосередньо формує запис за допомогою деякої системної утиліти, наприклад програми route, наявної в операційних системах Unix і Windows NT. В апаратних маршрутизаторах також завжди є команда для ручного завдання записів таблиці маршрутизації. Задані вручну записи завжди є статичними, тобто не мають терміну закінчення життя. Ці записи можуть бути як постійними, тобто зберігаються при перезавантаженні маршрутизатора, так і тимчасовими, що зберігаються в таблиці тільки до вимикання пристрою. Часто адміністратор вручну заносить запис default про маршрутизаторі за замовчуванням. Таким же чином в таблицю маршрутизації може бути внесено запис про специфічному для вузла маршруті. Специфічний для вузла маршрут містить замість номера мережі повний IP-адресу, тобто адресу, що має ненульову інформацію не тільки в поле номера мережі, але і в полі номера вузла. Передбачається, що для такого кінцевого вузла маршрут повинен вибиратися не так, як для всіх інших вузлів мережі, до якої він відноситься. У разі коли у таблиці є різні записи про просування пакетів для всієї мережі та її окремого вузла, при вступі пакета, адресованого вузлу, маршрутизатор віддасть перевагу запису з повною адресою вузла.

І нарешті, третім джерелом записів можуть бути протоколи маршрутизації, такі як RIP або OSPF. Такі записи завжди є динамічними, тобто мають обмежений термін життя. Програмні маршрутизатори Windows NT і Unix не показують джерело появи того чи іншого запису в таблиці, а маршрутизатор NetBuilder використовує для цієї мети полі «Source».