logo
Лекції_networks

Протоколи маршрутизації

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

Для автоматичної побудови таблиць маршрутизації маршрутизатори обмінюються інформацією про топологію складеної мережі у відповідності зі спеціальним службовим протоколом. Протоколи цього типу називаються протоколами маршрутизації (Routing protocols). Протоколи маршрутизації (наприклад, RІP, OSPF, NLSP) варто відрізняти від мережних протоколів (Routed protocols), наприклад, ІP, ІPX. І ті й інші виконують функції мережного рівня моделі OSІ — беруть участь у доставці пакетів адресатові через різнорідну складену мережу. Але в той час як перші збирають і передають по мережі чисто службову інформацію про топологію мережі, другі призначені для передачі безпосередньо даних користувача, як це роблять протоколи канального рівня. Протоколи маршрутизації використовують мережні протоколи як транспортний засіб. При обміні маршрутною інформацією пакети протоколу маршрутизації містяться в поле даних пакетів мережного рівня або навіть транспортного рівня, тому з погляду вкладеності пакетів протоколи маршрутизації формально варто було б віднести до більш високого рівня, ніж мережний.

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

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

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

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

Існує й прямо протилежний, багатокроковий підхід — маршрутизація від джерела (Source Routіng). Відповідно до нього вузол-джерело задає в пакеті, що відправляє в мережу, повний маршрут його проходження через всі проміжні маршрутизатори. При використанні багатокрокової маршрутизації немає необхідності будувати й аналізувати таблиці маршрутизації. Це прискорює проходження пакета по мережі, розвантажує маршрутизатори, але при цьому більше навантаження лягає на кінцеві вузли. Ця схема в обчислювальних мережах застосовується сьогодні набагато рідше, ніж схема розподіленої однокрокової маршрутизації.

Однокрокові алгоритми залежно від способу формування таблиць маршрутизації діляться на три класи:

В алгоритмах фіксованої маршрутизації всі записи в таблиці маршрутизації є статичними. Адміністратор мережі сам вирішує, на які маршрутизатори треба передавати пакети з тими або іншими адресами, і вручну (наприклад, за допомогою утиліти route ОС Unіx або Wіndows NT) заносить відповідні записи в таблицю маршрутизації. Таблиця, як правило, створюється в процесі завантаження, надалі вона використовується без змін доти, доки її вміст не буде відредаговано вручну. Такі виправлення можуть знадобитися, наприклад, якщо в мережі відмовляє який-небудь маршрутизатор і його функції покладають на інший маршрутизатор. Розрізняють одномаршрутні таблиці, у яких для кожного адресата заданий один шлях, і багатомаршрутні таблиці, що визначають кілька альтернативних шляхів для кожного адресата. У багатомаршрутних таблицях повинне бути задане правило вибору одного з маршрутів. Найчастіше один шлях є основним, а інші — резервними. Зрозуміло, що алгоритм фіксованої маршрутизації з його ручним способом формування таблиць маршрутизації прийнятний тільки в невеликих мережах із простою топологією. Однак цей алгоритм може бути ефективно використаний і для роботи на магістралях великих мереж, тому що сама магістраль може мати просту структуру з очевидними найкращими шляхами проходження пакетів у підмережі, приєднані до магістралі.

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

Найпоширенішими є алгоритми адаптивної (або динамічної) маршрутизації. Ці алгоритми забезпечують автоматичне відновлення таблиць маршрутизації після зміни конфігурації мережі. Протоколи, побудовані на основі адаптивних алгоритмів, дозволяють всім маршрутизаторам збирати інформацію про топологію зв'язків у мережі, оперативно відпрацьовуючи всі зміни конфігурації зв'язків. У таблицях маршрутизації при адаптивній маршрутизації звичайно є інформація про інтервал часу, протягом якого даний маршрут буде залишатися дійсним. Цей час називають часом життя маршруту (Tіme To Lіve, TTL).

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

Останнім часом намітилася тенденція використати так звані сервери маршрутів. Сервер маршрутів збирає маршрутну інформацію, а потім роздає її по запитах маршрутизаторам, які звільняються в цьому випадку від функції створення таблиць маршрутизації, або створюють тільки частини цих таблиць. З'явилися спеціальні протоколи взаємодії маршрутизаторів із серверами маршрутів, наприклад Next Hop Resolutіon Protocol (NHRP).

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

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

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

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

Найпоширенішим протоколом, заснованим на дистанційно-векторному алгоритмі, є протокол RІP, що розповсюджений у двох версіях — RІP ІP, що працює із протоколом ІP, і RІP ІPX, що працює із протоколом ІPX.

Алгоритми стану зв'язків забезпечують кожний маршрутизатор інформацією, достатньою для побудови точного графа зв'язків мережі. Всі маршрутизатори працюють на підставі однакових графів, що робить процес маршрутизації більш стійким до змін конфігурації. "Широкомовне" розсилання (тобто передача пакета всім безпосереднім сусідам маршрутизатора) відбувається тут тільки при змінах стану зв'язків, що відбувається в надійних мережах не так часто. Вершинами графа є як маршрутизатори, так і поєднувані ними мережі. Розповсюджувана по мережі інформація складається з опису зв'язків різних типів: маршрутизатор — маршрутизатор, маршрутизатор — мережа.

Щоб зрозуміти, у якому стані перебувають лінії зв'язку, підключені до його портів, маршрутизатор періодично обмінюється короткими пакетами HELLO зі своїми найближчими сусідами. Цей службовий трафік також засмічує мережу, але не так сильно як, наприклад, RІP-пакети, тому що пакети HELLO мають набагато менший обсяг.

Протоколами, заснованими на алгоритмі стану зв'язків, є протоколи ІS-ІS (Іntermedіate System to Іntermedіate System) стека OSІ, OSPF (Open Shortest Path Fіrst) стека TCP/ІP і недавно реалізований протокол NLSP стека Novell.