4.9.2 Стани протокола ospf
Маршрутизатори OSPF використовують п’ять різних типів пакетів для ідентифікації своїх сусідів та оновлення інформації маршрутизації канального рівня. В таблиці 4.12 описані типи пакетів протокола OSPF [5]. Ці п’ять типів пакетів дозволяють протоколу OSPF здійснювати різноманітні та складні типи зв’язків.
Таблиця 4.12 – Типи пакетів протокола OSPF
Тип пакета протоколу OSPF |
Опис |
Тип 1 – Hello |
Використовується для створення та підтримки таблиці сусідніх пристроїв |
Тип 2 – Пакет опису бази даних (Database description packet, DBD) |
Описує вміст бази даних стану каналів OSPF-маршрутизатора |
Тип 3 – Запит інформації про стан каналів (link-state requests – LSR) |
Здійснює запит окремих фрагментів бази даних стану каналів маршрутизатора |
Тип 4 – Оновлення стану каналів (Link-state update, LSU) |
Передає повідомлення про стан каналів (link-state advertisements, LSA) сусіднім маршрутизаторам |
Тип 5 – Підтвердження отримання повідомлення про стан каналів (Link-state acknowledgement, LSAck) |
Підтверджує отримання від сусіднього пристрою повідомлення LSA |
Ключовим фактором при проектуванні OSPF-мереж та при усуненні помилок в них є розуміння зв’язків або станів, які виникають між OSPF-маршрутизаторами. Інтерфейси OSPF-маршрутизаторів можуть знаходитися в одному з наведених нижче семи станів. Зв’язки між сусідніми маршрутизаторами послідовно проходять ці стани зверху вниз [5, 15]:
Вимкнений стан (Down State)
Ініціалізація (Init State)
Двохстороннє з’єднання (Two-way)
ExStart
Обмін (Exchange)
Завантаження (Loading)
Стан встановлення повного зв’язку між сусідніми (суміжними) пристроями (Full adjacency)
Вимкнений стан
Вимкнений стан має місце, коли обмін інформацією між сусідніми пристроями не відбувався. Маршрутизатори очікують переходу в наступний стан – стан ініціалізації
Стан ініціалізації
В стані ініціалізації OSPF-маршрутизатори регулярно (зазвичай 10 секунд) відсилають пакети першого типу (Hello) для встановлення зв’язку з сусідніми маршрутизаторами. Коли деякий інтерфейс отримує перший Hello-пакет, відповідний маршрутизатор переходить в стан ініціалізації. Це означає, що маршрутизатору відомо про наявність у нього сусіднього пристрою і він чекає переходу зв’язку з ним в наступний стан.
Існує два типи зв’язку між маршрутизаторами: двохсторонній зв’язок та стан повного зв’язку сусідніх пристроїв, хоча між цими двома станами і знаходяться декілька проміжних станів. Перед тим, як стане можливим встановлення будь-якого типу зв’язку, маршрутизатор повинен отримати від свого сусіда повідомлення Hello.
Стан двохстороннього зв’язку
Кожен OSPF-маршрутизатор намагається встановити з усіма своїми сусідами по мережі OSPF стан двохстороннього зв’язку або двонаправленого зв’язку, використовуючи для цього пакети Hello, які зокрема містять список відомих відправнику сусідніх OSPF-маршрутизаторів.
Маршрутизатор переходить в стан двохстороннього зв’язку в момент, коли бачить себе в пакеті Hello, отриманому від сусіднього пристрою. Тобто, коли перший маршрутизатор взнає, що другий маршрутизатор знає про нього, він оголошує наявність стану двохстороннього зв’язку між ними.
Стан двохстороннього зв’язку є базовим станом двох сусідніх пристроїв протоколу OSPF, однак в ньому ще не відбувається сумісне використання інформації маршрутизації. Для того, щоб дізнатись про стан каналів інших маршрутизаторів і врешті решт створити ТМ, кожен OSPF-маршрутизатор повинен утворити хоча б одне з’єднання (стан суміжності) з сусіднім пристроєм. Стан суміжності це більш тісний зв’язок між OSPF-маршрутизаторами, що включає в себе ряд послідовних станів, які базуються не лише на Hello-повідомленнях, а й інших чотирьох типах OSPF-пакетів. Маршрутизатори, які намагаються стати суміжними обмінюються інформацією ще до того, як буде повністю встановлено стан суміжності. Першим етапом встановлення стану повної суміжності є стан ExStart.
Стан ExStart
В технічному аспекті в момент коли маршрутизатор та його сусідній пристрій входять у стан ExStart, їх зв’язок характеризується як стан суміжності, однак в дійсності ці пристрої ще не є повністю суміжними. Стан ExStart встановлюється за допомогою пакетів опису бази даних (DBD). Для обговорення того, який маршрутизатор в даному з’єднанні буде головним (master), а який підлеглим (slave), маршрутизатори використовують пакети Hello, а для обміну вмістом БД використовуються пакети DBD (рис. 4.29).
Маршрутизатор з максимальним значенням OSPF-ідентифікатора (ID) стає головним. Коли два сусідніх маршрутизатора визначають свої ролі як головного та підлеглого, вони входять у стан обміну (Exchange) та починають надсилати один одному інформацію маршрутизації.
Стан обміну
В стані обміну сусідні маршрутизатори використовують пакети DBD для відправлення один одному своєї інформації про стан каналів, як показано на рис. 4.29. Іншими словами, маршрутизатори описують один одному свої БД стану каналів. При цьому маршрутизатори порівнюють отриману інформацію з тією, що міститься в їх власних БД стану каналів. Якщо будь-який з маршрутизаторів отримує інформацію про канал, яка відсутня в його БД він запитує у сусіднього маршрутизатора повне оновлення. Повний обмін інформації відбувається в стані завантаження (Loading).
Стан завантаження
Після того, як обидва маршрутизатора описали один одному свої БД, вони можуть запитати більш повну інформацію, використовуючи пакети запиту стану каналів (LSR). Коли маршрутизатор отримує запит LSR, він відповідає відправкою оновлення маршрутизації, використовуючи пакет оновлення стану каналів (LSU). Ці LSU-пакети містять оголошення актуального стану каналів (LSA), які складають сутність протоколів маршрутизації стану каналів. Як показано на рис. 4.29, підтвердження отримання LSU-пакетів здійснюється за допомогою пакетів підтвердження стану каналів (LSAck).
Стан повної суміжності
Після того, як повністю реалізований стан завантаження, маршрутизатори повністю суміжні. Кожен маршрутизатор підтримує свій список суміжних сусідніх маршрутизаторів (БД суміжних пристроїв).
В табл. 4.13 перераховано важливі бази даних протоколу OSPF [5, 15].
Таблиця 4.13 – Бази даних протоколу OSPF
База даних |
Опис |
База даних суміжних пристроїв |
Список усіх сусідніх пристроїв, з якими даний маршрутизатор встановив двосторонні зв’язки. |
База даних стану каналів або топологічна база даних (Link State Data Base) |
Інформація про всі маршрутизатори мережі. Ця база даних відображає поточну мережеву топологію. Всі маршрутизатори однієї і тієї ж області мають ідентичні бази даних канального рівня. |
База даних пересилання або таблиця маршрутизації (Routing Table) |
Список маршрутів, що генерується при виконанні алгоритму над топологічною базою даних. Таблиця маршрутизації кожного маршрутизатора унікальна та містить інформацію про те, яким чином і за якими маршрутами слід направляти пакети, призначені іншим маршрутизаторам. |
Рисунок 4.29 – Виявлення маршрутизатора по протоколу OSPF
