4.9.2 Стани протоколу OSPF
Маршрутизатори OSPF використовують п’ять різних типів пакетів для ідентифікації своїх сусідів та оновлення інформації маршрутизації канального рівня. В таблиці 4.12 описані типи пакетів протоколу OSPF [5]. Ці п’ять типів пакетів дозволяють протоколу OSPF здійснювати різні та складні типи зв’язків.
Таблиця 4.12 – Типи пакетів протоколу OSPF
Протокол OSPF функціонує не так як дистанційно-векторні протоколи. Маршрутизатори ідентифікують сусідні маршрутизатори та обмінюються з ними інформацією. У протоколу OSPF є свій набір термінів, які наведені на рис. 4.28 [1, 5, 15].
Ключовим фактором при проектуванні 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
Рисунок 4.29 – Виявлення маршрутизатора за протоколом OSPF