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

Стандартне значення адміністративної дистанції для протоколу OSPF - 110, що означає, що його маршрути вважаються більш пріоритетними ніж IS-IS, RIP, External EIGRP, Internal BGP, але менш пріоритетними ніж IGRP, EIGRP BGP. Така адміністративна дистанція - швидше преференція з боку Cisco до своїх протоколах. Так як з точки зору здорового глузду, OSPF, звичайно краще RIP, в сучасних мережах, але він так само має бути і краще IGRP, який, в силу свого віку є класовим протоколом маршрутизації. OSPF є безкласовим (classless) протоколом маршрутизації, що означає передачу разом з апдейтами інформацію про масці підмережі (префікс), в той час, як старі класові протоколи маршрутизації, спираються на стандартні класи мереж (A, B, C) і з цієї причини в нині малозастосовні.

Принцип роботи OSPF

Логіка роботи протоколу OSPF наступна:

  1. Маршрутизаториобмінюються маленькими HELLO-пакетами
  2. Обмінявшись пакетами, вони встановлюють сусідські відносини, додаючи кожен один одного в свою локальну таблицю сусідів
  3. Маршрутизатор збирають стану всіх своїх лінків (зв'язків з сусідами), що включають в себе id Маршрутизатора, id сусіда, мережа і префікс між ними, тип мережі, вартість линка (метрику) і формують пакет, званий LSA (Link State Advertisement).
  4. Маршрутизатор розсилає LSA своїм сусідам, ті поширюють LSA далі.
  5. Кожен маршрутизатор, який отримав LSA додає в свою локальну табличку LSDB (Link State Database) інформацію з LSA.
  6. У LSDB накопичується інформація, про всі парах з'єднаних в мережі маршрутизаторів, тобто кожен рядок таблиці - це інформація виду: «Маршрутизатор A має з'єднання зі своїм сусідом маршрутизатором B, між ними мережу така-то з такими-то властивостями».
  7. Після обміну LSA, кожен маршрутизатор знає про все лінки, на підставі пар будується повна карта мережі, що включає всі маршрутизатори та всі зв'язки між ними.
  8. На підставі цієї карти кожен маршрутизатор індивідуально шукає найкоротші з точки зору метрики маршрути в усі мережі та додає їх в таблицю маршрутизації.

Як видно з опису алгоритму, він досить складний і ресурсномісткий. Це пояснює високі вимоги OSPF до продуктивності маршрутизатора і оперативної пам'яті. Тепер, давайте уявимо, що відбувається, якщо у одного з маршрутизаторів пропадає зв'язок з сусідом:

  1. Він розсилає всім нові LSA
  2. Все заново будують карту мережі
  3. Заново вважають найкоротші маршрути в усі мережі
  4. Оновлюють свою таблицю маршрутизації

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

Види OSPF повідомлень

Всього існує п'ять типів OSPF повідомлень:

  1. Hello - відправляються регулярно для пошуку сусідів і установки сусідських відносин
  2. Database Description DBD - використовуються для перевірки синхронізації LSDB у сусідніх маршрутизаторів
  3. Link state request LSR - примусовий запит у якогось маршрутизатора його LSA. Може використовуватися, наприклад, коли маршрутизатор тільки включився і йому треба дізнатися поточні зв'язку в мережі, або, коли у маршрутизатора пропала мережа, і він хоче дізнатися чи немає у інших маршрутизаторів альтернативних маршрутів до неї.
  4. Link state update LSU - містить стану зв'язків маршрутизатора.
  5. Link State Acknowledgment LSAck - пакет-підтвердження, надсилається у відповідь на інші типи пакетів. Це пов'язано з тим, що OSPF не використовує протокол TCP і для надійної доставки потрібен свій власний механізм підтверджень.

OSPF Hello і Dead інтервали

Hello пакети розсилаються маршрутизаторами регулярно. Періодичність можна змінювати відповідно до завдань, але за замовчуванням вони шлються раз в 10 секунд в мережах з множинним доступом (BMA) і мережах точка-точка (point-to-point) і раз в 40 секунд в мережах з множинним доступом без можливості широкомовної розсилки (NBMA). Якщо маршрутизатор не отримує жодного пакета протягом Dead-інтервалу, то вважається, що сусід зник і відносини розриваються, що тягне за собою втрату, линка, відправку LSU, перерахунок топології і т.д. Dead-інтервал за замовчуванням дорівнює чотирьом Hello-інтервалах, (40 секунд для BMA і 120 для NBMA).

ID маршрутизатора в OSPF

У загальному випадку, алгоритм призначення маршрутизатора ідентифікатора наступний (в порядку пріоритету):

Робота OSPF в мережах з множинним доступом

Одна з проблем підходу OSPF до побудови карти мережі - використання його в мережах з множинним доступом. Часто використовується топологія, коли безліч маршрутизаторів не підключаються послідовно один до одного, а з'єднані через деяку загальну мережу, наприклад, всі мають окремий інтерфейс в деякій IP-мережі для обміну трафіком між собою, все підключені один комутатор, через який обмінюються, або все мають інтерфейс в деякому загальному VLAN. В цьому випадку, OSPF в теорії повинен встановлювати сусідські відносини за принципом «кожен з кожним» в межах цієї загальної мережі, що призводить до величезних таблиць сусідів, підвищеного навантаження на канал, на пам'ять і процесор. Нижче наведена таблиця, в якій показана залежність кількості сусідських відносин від кількості маршрутизаторів в одній мережі, загальна формула для кількості відносин має вигляд n (n-1) / 2.

Кількість маршрутизаторів в мережі з множинним доступом

Кількість сусідських відносин

Метрика в OSPF

Сам по собі відкритий протокол OSPF не пред'являє ніяких вимог до того, як повинна вважатися метрика і як має оцінюватися «якість маршруту», в стандарті просто говориться, що у кожного лінка є якась вартість (cost), якщо маршрут проходить через кілька лінків, то їх вартість підсумовується. Найкращим вважається той маршрут, у якого вартість менше за інших. Зрозуміло, що ми маємо справу з тією ж метрикою, тільки без виразного механізму його підрахунку. Різні виробники можуть по різному вважати вартість, тому Cisco передбачила два варіанти обчислення вартості:

    1. Вартість вважається як зворотна величина від швидкості линка, наприклад, 1 - для гигабита, 10 - для ста мегабіт, 100 - для десяти мегабіт, 1000 - для одного мегабіта і т.п. Такий варіант хороший, коли ми будуємо мережу тільки на обладнанні cisco і знаємо, що все маршрутизатори вважають метрику за таким алгоритмом. В цьому випадку вартість буде вважатися автоматично, що істотно спростить настройку.
    2. Вартість задається адміністратором вручну для кожного лінка виходячи зі своїх уявлень про якість цього лінка. Такий варіант може застосовуватися в разі, якщо якість линка не вимірюються однією його швидкістю. Наприклад, адміністратор може штучно завищити метрику для линка, на якому проводиться тарріфікація трафіку, або на якому часто виникають помилки. Це дає велику гнучкість, але вимагає ручного налаштування. Другий випадок, коли доводиться ісползовать цей метод - присутність в мережі маршрутизаторів різних виробників. У цій ситуації має бути забезпечено адекватний однакові уявлення про вартість на всіх маршрутизаторах. Треба вивчити, як вважається вартість у інших виробників, порахувати її так само і задати вручну на маршрутизаторах Cisco.

    При виборі першого способу вартість вважається так: береться величина в 1 гігабіт і ділиться на швидкість інтерфейсу. Цей підхід був придуманий в ті часи, коли 1 гігабіт був максимальною швидкістю, яку тільки можна уявити. Якщо вважати метрику таким чином, то вартість гігабіат буде дорівнює одиниці, а й вартість 10 гигабитного каналу теж буде дорівнює одиниці (так як вартість - ціле позитивне число). Для того щоб змінити те значення, яке ділиться на швидкість линка, є команда auto-cost reference-bandwidth, після якої вказується швидкість в мегабитах. Тобто, щоб 1 Гбіт відрізнявся від 10 Гбіт за вартістю, треба ввести команду:

    Після цього у 10 Гбіт буде вартість 1, у 1 Гб - вартість 10, у 100 Мб - вартість 100 і т.д. Важливо ввести однакове значення на всіх маршрутизаторах, щоб метрика вважалася суперечливо.

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

    Після прочитання цієї статті у вас має бути достатньо інформації щоб перейти до практики: «Налаштування OSPF для однієї зони на маршрутизаторах Cisco»

    Схожі статті