Протокол OSPF

OSPF (Open Shortest Path First) — это протокол динамической маршрутизации, отслеживающий состояние каналов (Link-State) и использующий для нахождения оптимального пути передачи данных алгоритм Дейкстры.

Для повышения эффективности и масштабируемости OSPF поддерживает иерархическую структуру сети, разделяя её на зоны (areas), что позволяет уменьшить нагрузку на устройства и упростить управление крупными сетями. Главная зона, называемая Area 0 (или backbone, магистральная зона), связывает все остальные зоны и обеспечивает их взаимодействие.

OSPF наряду с такими протоколами как RIP, IS-IS и EIGRP является IGP (Interior Gateway Protocol) протоколом, т.е. обеспечивает маршрутизацию внутри одной автономной системы (autonomous system, AS) или сети с единой политикой маршрутизации.

Маршрутизаторы OSPF обмениваются информацией о состоянии соединений, “стоимости” передачи данных по тому или иному соединению и другой информацией со своими соседями. Обмен информацией позволяет всем участвующим маршрутизаторам выстроить карту топологии сети. Каждый маршрутизатор применяет к полученной карте алгоритм кратчайшего пути Дейкстры (SPF) для расчёта оптимального пути к каждому пункту назначения в сети.

Основные операции выполняемые протоколом OSPF:

  • Маршрутизатор с настроенным OSPF отправляет приветственные (Hello) сообщения через каждый интерфейс, на котором активирован OSPF. Если маршрутизатор получает корректное приветственное сообщение на интерфейсе с OSPF, он устанавливает отношения смежности (adjacency) с другими маршрутизаторами OSPF в этой сети.
  • Если интерфейс подключён к широковещательной сети, такой как Ethernet, маршрутизаторы используют пакеты Hello для выбора назначенного маршрутизатора (Designated Router, DR) и резервного назначенного маршрутизатора (Backup Designated Router, BDR) в этой сети.
  • Маршрутизаторы обмениваются пакетами описания базы данных (Database Description packets). Эти пакеты содержат индекс всех объявлений о состоянии соединений (Link-State Advertisements, LSAs), которые есть в топологической базе данных маршрутизатора.
  • На основе содержимого пакетов с описанием базы данных каждый маршрутизатор запрашивает LSAs, которые необходимы для обновления его топологической базы данных. Запрос выполняется с помощью пакета запроса состояния канала (Link-State Request, LSR).
  • По запросу маршрутизатор отправляет обновление состояния соединения (Link-State Update, LSU), содержащее LSAs, запрошенные соседом. В ответ на каждое LSU маршрутизатор отправляет пакет подтверждения состояния соединения (Link-State Acknowledgment).
  • После завершения обмена LSU маршрутизаторы становятся полностью смежными. Они продолжают обмениваться периодическими приветственными сообщениями для поддержания смежности.
  • Если происходит изменение топологии, затронутые изменением маршрутизаторы передают обновлённое LSA, отражающее это изменение. Каждый маршрутизатор OSPF обновляет свою базу данных состояния каналов (Link-State Database, LSDB), распространяет новый LSA своим соседям и запускает алгоритм кратчайшего пути (Shortest Path First, SPF) для пересчёта своей таблицы маршрутизации.
  • LSAs устаревают в LSDB и считаются устаревшими через 3,600 секунд (1 час). Маршрутизатор, который создал LSA, повторно распространяет его после достижения возраста ~1,800 секунд, чтобы обновить его в LSDB.