OSPF - динамический протокол маршрутизации состояния канала. Предназначен для обмена маршрутной информацией в пределах автономной системы. Исползьзуется поверх протокола IP. Маршрутизаторы обмениваются друг с другом информацией о своих интерфейсах, формируют граф сети, идентичный для каждого маршрутизатора и, используя алгоритм поиска кратчайшего пути, получают маршруты для каждой подсети.
Терминология OSPF
- Router id - уникальный в пределах домена OSPF идентификатор маршрутизатора
- Area - совокупность маршрутизаторов, имеющих единую базу состояния каналов (LSDB). Существуют различные типы зон, вот некоторые из них:
- Backbone area - зона с идентификатором 0.0.0.0, не может быть тупиковой.
- Stub area - зона, в которой запрещено распространение External LSA, вместо этого распространяется Summary LSA с маршрутом по умолчанию.
- Totally stub area - Stub зона, в которой кроме того запрещено распространение Summary LSA, вместо этого распространяется единственный Summary LSA с маршрутом по умолчанию.
- NSSArea - Stub зона, в которой разрешено распространение Type 7 External LSA, которые предназначены для анонса внешних по отношению к автономной системе маршрутов.
- LSDB - база данных, содержащая информацию о состоянии всех каналов, формируется путём обмена сообщениями LSA.
- LSA - сообщение, описывающее состояние канала или сети. Существуют LSA разных типов, вот некоторые из них:
- Router LSA (Type 1) - объявление о состоянии каналов маршрутизатора, распространяется внутри зоны, отправляется всеми роутерами.
- Network LSA (Type 2) - объявление о состоянии каналов сети, распространяется внутри зоны, отправляется DR.
- Network Summary LSA (Type 3) - суммарное объявление о состоянии каналов в сети, не содержит информации о топологии сети, содержит маршруты и метрики к сетям вне зоны, распространяется ABR.
- ASBR Summary LSA (Type 4) - суммарное объявление о состоянии каналов пограничного маршрутизатора автономной системы, распространяется ABR, то же что LSA 3, только распространяется информация о состоянии каналов ASBR.
- AS External LSA (Type 5) - объявление о состоянии внешних каналов автономной системы, рапространяется в пределах всей автономной системы, отправялется ASBR.
- AS External LSA for NSSA (Type 7) - объявление о состоянии внешних каналов автономной системы в NSSA зоне, аналогично LSA Type 5, рапространяется только в пределах NSSA зоны, отправялется ASBR.
Типы маршрутизаторов OSPF
- Backbone router - один из интерфейсов относится к магистральной зоне
- Internal router - все интерфейсы маршрутизатора находятся в одной зоне
- Area Border Router - соединяет одно или больше зон с магистральной зоной, для каждой зоны имеет отдельную базу состояний каналов
- AS Boundary Router - пограничный маршрутизатор автономной системы, один из интерфейсов связан с другой автономной системой или доменом маршрутизации другого протокола
Типы пакетов OSPF
- Database Description - описание всех LSA, хранящихся в LSDB маршрутизатора
- Link State Request - запрос с описанием тех LSA, которых не хватает в LSDB
- Link State Update - сообщение, в котором передаются полные LSA
- Link State Acknowledgment - подтверждение о получении конкретных LSA с их описанием
Стадии обмена маршрутной информацией
- Установление отношений смежности
- Обмен информацией о состоянии каналов
- Вычисление кратчайших путей по алгоритму SPF до всех подсетей
Установление отношений смежности
Есть отношения соседства и отношения смежности. LSA передаются только между маршрутизаторами установившими отношения смежности. Отношения смежности устанавливаются путём передачи Hello пакетов, которые также выполняют роль keepalive пакетов. Для установления смежности необходимо, чтобы на обоих маршрутизаторах совпадали следующие параметры:
- Hello interval
- Router Dead Interval = 4 * Hello interval
- Area ID
- Authentication
- Stub area flag
- сеть и маска сети на интерфейсах
1 2 3 4 5 | |
В point-to-point соединениях сразу устанавливаются отношения смежности. В сетях с широковещанием происходят выборы DR и BDR, остальные маршрутизаторы устанавливают с ними отношения смежности, а друг с другом - отношения соседства.
Отношения соседства происходят следующим образом:
- Маршрутизатор R1 отправляет Hello сообщение на мультикастовый адрес 224.0.0.5.Маршрутизатор R2 принимает его, и если соответствующие параметры совпадают вносит его в список соседей.
- R2 юникастом отправляет также Hello сообщение, в котором в списке соседей уже указан R1, т.е. он его уже считает своим соседом. R1 принимает сообщение, находит себя в списке соседей, также вносит R2 в список соседей, между ними устанавливаются отношения смежности. R1 и R2 переходят в состояние TWO WAY
- Далее происходит обмен информацией о состоянии каналов.
Обмен информацией о состоянии каналов
- Маршрутизаторы обмениваются DBD сообщениями с описанием LSDB. Первым DBD отправляет маршрутизатор с большим Router ID.
- Подтвердив получение DBD сообщениями LSAck, R1 и R2 посылают друг другу LSR с указанием тех LSA, которые им незвестны, переходя в состояние LOADING
- Получив LSR, маршрутизатор отправляет LSU, которые содержат в себе LSA с детальной информацией о подсетях.
Состояния узлов OSPF
- Down - процесс OSPF запущен, но ни одно Hello сообщение не отправлялось. Например в случае когда мы запустили OSPF, но все интерфейсы в состоянии passive
- Init - процесс OSPF отправил Hello сообщение и ждет ответа.
- Two way - отношение соседства установлено, т.е. совпали все параметры Hello сообщений и маршрутизатор увидел себя в списке соседей пришедшего Hello сообщения. Такое состояние принимают DROTHER маршрутизаторы между собой в широковещательной сети.
- Exstart - определяется Master и Slave в паре, на основании Router ID, у кого больше, тот становится Master
- Exchange - обмен DBD сообщениями
- Loading - во время обмена LSA, в случае если в DBD соседа есть сети, которых нет у маршрутизатора.
- Full - когда LSDB на двух маршрутизаторах синхронизирована.