Раздел помощи SpaceWeb

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

24 июл, 2024

Основы протокола OSPF 

OSPF (Open Shortest Path First) – это один из наиболее широко используемых протоколов динамической маршрутизации в компьютерных сетях. Он был разработан как стандартный протокол маршрутизации для использования в сетях IP (Internet Protocol) и стал частью набора протоколов, которые описаны в стандарте RFC 2328.

OSPF – это протокол внутренней маршрутизации, который позволяет маршрутизаторам обмениваться маршрутной информацией внутри одной автономной системы. Его основная задача – определение оптимального пути для передачи данных между узлами сети на основе различных метрик (например, стоимости маршрута).

OSPF использует алгоритм Дейкстры для вычисления кратчайшего пути в сети, что позволяет ему быстро адаптироваться к изменениям топологии и обеспечивать надёжную маршрутизацию. Протокол поддерживает сложные сетевые структуры, включая разделение на области, что помогает снизить нагрузку на маршрутизаторы и повысить масштабируемость сети.

Для чего нужен протокол OSPF 

Протокол OSPF играет ключевую роль в управлении маршрутизацией в сложных компьютерных сетях. Его основные назначения и области применения включают:

  1. Оптимизация маршрутизации. OSPF ищет наиболее эффективные пути для передачи данных между узлами сети. Используя алгоритм Дейкстры, он вычисляет кратчайший путь на основе различных метрик: например, пропускной способности и задержке. Это обеспечивает минимальное время доставки данных и оптимальное использование сетевых ресурсов.
  2. Динамическая маршрутизация. В отличие от статической маршрутизации, где маршруты прописываются вручную, OSPF автоматически адаптируется к изменениям в топологии сети. Это особенно важно для крупных и сложных сетей, где частые изменения маршрутов могут быть вызваны поломкой оборудования или изменением сетевых путей.
  3. Поддержка больших и сложных сетей. OSPF поддерживает разделение сети на области, что помогает улучшить масштабируемость и управляемость сети. Так он снижает нагрузку на маршрутизаторы, уменьшая объемы маршрутных обновлений и упрощая администрирование сети.

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

Как мы уже упоминали, в основе OSPF лежит алгоритм Дейкстры, также известный как алгоритм SPF (Shortest Path First, «выбор наилучшего пути»). Он алгоритм используется для вычисления кратчайшего пути до каждого узла в сети. Маршрутизатор строит дерево кратчайших путей с собой в качестве корня и затем рассчитывает оптимальные маршруты к каждому узлу сети.

Как работает OSPF:

  1. Когда маршрутизатор включается, он выбирает уникальный идентификатор маршрутизатора (Router ID). Этот идентификатор может быть установлен вручную администратором или выбран автоматически на основе IP-адресов маршрутизатора.
  2. Маршрутизатор начинает отправлять hello-пакеты по всем интерфейсам, на которых активирован OSPF. Они содержат информацию о состоянии соединений и идентификаторы соседей. 
  3. Если маршрутизатор получает hello-пакет от другого маршрутизатора через интерфейс, на котором активирован OSPF, он устанавливает с ним соседские отношения. Если ответ не приходит в течение определенного времени, маршрутизатор считает устройство «мёртвым» и перестраивает маршруты, исключая его.
  4. После установления соседских отношений маршрутизаторы начинают обмениваться LSA (Link State Advertisements) – сообщениями о состоянии соединений и доступных сетях. Эти данные необходимы для построения карты сети (топологии).
  5. Все маршрутизаторы в области OSPF хранят информацию о состоянии сети в базе данных состояния соединений (LSDB). Маршрутизаторы синхронизируют свои LSDB, чтобы у всех было одно и то же представление о топологии сети.
  6. В сетях с множеством маршрутизаторов (особенно в широковещательных и многодоступных сетях) для оптимизации обмена данными выбираются Designated Router (DR) и Backup Designated Router (BDR). DR координирует отправку LSA-сообщений, снижая нагрузку на сеть. Если DR не задан вручную, им становится маршрутизатор с самым высоким Router ID.
  7. При изменениях в сети (например, добавлении нового маршрутизатора или выход из строя существующего) LSA-сообщения обновляются и распространяются через DR, чтобы все маршрутизаторы получили актуальную информацию. Это предотвращает перегрузку сети из-за частых обновлений от каждого маршрутизатора.
  8. Каждое устройство запускает алгоритм SPF для вычисления оптимального маршрута к каждому узлу сети. Этот процесс строит дерево кратчайших путей, где корень – сам маршрутизатор, а ветви – пути к различным сетям.
  9. Результаты работы алгоритма SPF используются для обновления таблицы маршрутизации. В этой таблице хранятся лучшие маршруты к каждой сети, что позволяет направлять трафик наиболее эффективным способом.
  10. OSPF продолжает мониторить состояние сети, периодически отправляя hello-пакеты и обновляя LSA. При любом изменении топологии маршрутизаторы быстро адаптируются, пересчитывая маршруты и поддерживая актуальность таблицы маршрутизации.

Работа по алгоритму OSPF происходит только при условии, что OSPF установлен и активирован как на маршрутизаторе, так и на его интерфейсах. Далее подробно рассмотрим процессы маршрутизации OSPF.

Запуск

Для начала необходимо запустить OSPF на маршрутизаторе. Маршрутизатор автоматически назначит себе идентификатор (Router ID), хотя администратор может сделать это вручную. 

Затем необходимо назначить сети для передачи OSPF-пакетов и указать источники этих пакетов. Также нужно определить сети, которые будут объявлены для других маршрутизаторов, указав номер сети, маску и идентификатор области (Area ID). Если все маршрутизаторы настроены правильно, между ними будет установлено соседство. 

Важно! Интервалы передачи hello-пакетов, Area ID и интерфейсы на соседних маршрутизаторах должны быть одинаковыми.

Установка отношений

Чтобы маршрутизаторы установили отношения необходимо выполнить несколько шагов. Например, это необходимо, когда у вас есть четыре маршрутизатора, один из которых новый.  

Предположим, один из маршрутизаторов назначен как DR, а другой как BDR:

  1. Новый маршрутизатор начинает процесс, отправляя hello-пакеты по своим интерфейсам. Остальные три маршрутизатора, получая эти пакеты, добавляют новый маршрутизатор в свои списки с состоянием Init.
  2. Новый маршрутизатор также получает hello-пакеты от существующих маршрутизаторов и добавляет их в свой список соседей. После обмена hello-пакетами устанавливаются двухсторонние (2-Way) симметричные отношения. На этом этапе маршрутизаторы могут обмениваться hello-пакетами, но ещё не обмениваются маршрутной информацией.
  3. Далее маршрутизаторы начинают пересылать друг другу служебные пакеты, которые содержат информацию о маршрутах и состоянии соединений. В них входят запросы состояния соединений и объявления о состоянии соединений.
  4. Обменявшись служебными пакетами, маршрутизаторы начинают обмениваться детальной информацией о маршрутах. Этот процесс включает отправку пакетов с обновлениями состояния соединений (Link State Updates, LSU), которые содержат полную информацию о топологии сети.
  5. Маршрутизаторы синхронизируют свои базы данных состояния соединений (LSDB), что позволяет всем маршрутизаторам в сети иметь актуальную и идентичную карту топологии сети. На этом этапе устанавливаются полноценные соседские отношения между всеми устройствами, включая DR и BDR.
  6. После установления соседских отношений и синхронизации баз данных маршрутизаторы продолжают поддерживать актуальность маршрутной информации через периодическую отправку hello-пакетов и обновлений состояния соединений. Если топология сети меняется, процесс синхронизации повторяется для обновления информации во всех маршрутизаторах.

Распределение ролей

Ранее мы упоминали, что в сети OSPF назначаются две важные роли для оптимизации маршрутизации:

  • Designated Router (DR) – выделенный маршрутизатор
  • Backup Designated Router (BDR) – резервный выделенный маршрутизатор

DR и BDR могут быть назначены вручную администратором или автоматически во время установления соседских отношений. Вручную эти роли часто назначаются основным маршрутизаторам, в то время как автоматический выбор происходит на основе наивысшего приоритета интерфейса OSPF или самого большого Router ID. 

BDR становится маршрутизатор, который следует по приоритету после DR. Если DR выходит из строя, BDR занимает его место, и затем выбирается новый BDR.

Назначение DR и BDR значительно уменьшает количество LSA-сообщений в сети:

  1. Все маршрутизаторы в сети отправляют свои LSA-сообщения DR. DR обрабатывает эти сообщения и передаёт актуальную информацию остальным маршрутизаторам. Это снижает нагрузку на сеть, поскольку маршрутизаторы не обмениваются LSA напрямую друг с другом, а делают это через DR.
  2. Выбрав DR, маршрутизаторы устанавливают с ним соседские отношения. Это означает, что каждый маршрутизатор поддерживает связь с DR для обмена маршрутной информацией. В результате, фактически все маршрутизаторы в сети взаимодействуют друг с другом через DR, упрощая управление маршрутами.
  3. Маршрутизаторы обмениваются DBD-сообщениями, которые содержат описание содержимого LSDB. Это позволяет синхронизировать базы данных состояния соединений между маршрутизаторами. Чтобы обеспечить эффективный обмен данными, DR и BDR получают групповой адрес, например, 224.0.0.5. Он используется для рассылки служебных сообщений, обеспечивая корректную работу OSPF.

Иерархия OSPF

Протокол OSPF поддерживает работу в рамках иерархической структуры. Благодаря этому можно организовать более эффективную и масштабируемую маршрутизацию. 

Основные элементы иерархии OSPF включают автономные системы (AS), области и маршрутизаторы с различными функциями.

Автономные системы (AS)

Самой большой частью в иерархии OSPF считается автономная система (AS). AS – это группа сетей, которые находятся под общим управлением и используют единую стратегию маршрутизации. Благодаря этому можно централизованно управлять маршрутами и обеспечивать согласованную политику маршрутизации.

Области (Areas)

AS можно разделить на области (areas), каждая из которых объединяет группу смежных сетей и подключенных хостов. Топология каждой области скрыта от объектов за её пределами, что уменьшает объём маршрутной информации и повышает эффективность маршрутизации. Внутри одной области все маршрутизаторы поддерживают идентичную базу данных состояния канала (LSDB).

Пограничные маршрутизаторы (ABR)

Маршрутизаторы, которые расположены на границе областей и соединяют их с магистральной зоной (backbone area), называются пограничными (Area Border Routers, ABR). У них есть несколько интерфейсов для подключения к разным областям. Кроме того, они поддерживают отдельные базы данных состояния канала для каждой из них. 

ABR отвечают за передачу маршрутной информации между областями и магистральной зоной.

Типы пакетов OSPF

Протокол OSPF использует несколько типов пакетов для эффективной маршрутизации и обмена информацией между маршрутизаторами. LSA сами по себе не передаются, а входят в другие пакеты – LSU и DBD. 

Рассмотрим основные типы пакетов OSPF:

  1. Hello-пакеты используются для обнаружения и поддержания соседских отношений между маршрутизаторами.

Они содержат информацию, которая необходима для идентификации маршрутизатора: Router ID, а также некоторые параметры: например, интервалы отправки Hello-пакетов и интервал простоя.

  1. Database Description (DBD) пакеты используются для обмена краткими описаниями содержимого баз данных состояния соединений (LSDB) между соседними маршрутизаторами.

DBD-пакеты содержат информацию о структуре LSDB, включая идентификаторы LSA и метрики, но без детальной информации. Они помогают маршрутизаторам определить, какие LSA необходимо запросить для полной синхронизации баз данных.

  1. Link State Request (LSR) пакеты запрашивают подробную информацию о LSA у соседнего маршрутизатора.

Когда маршрутизатор обнаруживает, что у него нет актуальной информации о конкретном состоянии соединения, он направляет LSR-пакет соседу с запросом на отправку необходимой LSA.

  1. Link State Update (LSU) пакеты используются для передачи LSA между маршрутизаторами.

LSU-пакеты содержат одну или несколько LSA и отправляются в ответ на LSR-пакеты или для распространения информации о топологии сети. Они обеспечивают обновление состояния сети и помогают синхронизировать LSDB всех маршрутизаторов в сети.

  1. Link State Acknowledgment (LSAck) пакеты используются для подтверждения получения LSA.

После получения LSU-пакета маршрутизатор отправляет LSAck-пакет для подтверждения получения информации. Это гарантирует надёжность передачи данных и предотвращает повторную отправку одной и той же информации.

Структура заголовка OSPF-пакета

В заголовке любого OSPF-пакета содержится следующая информация:

  • Version. Номер версии протокола OSPF.
  • Type. Тип OSPF-пакета, например, Hello. Помогает маршрутизаторам определить, как обрабатывать пакет.
  • Packet length. Длина пакета с заголовком в байтах. Помогает маршрутизаторам выделять правильное количество ресурсов для обработки.
  • Router ID. Идентификатор маршрутизатора. Важен для уникальной идентификации источника пакета.
  • Area ID. 32-битный идентификатор зоны, который определяет, в какой зоне создан пакет.
  • Checksum. Контрольная сумма для проверки целостности пакета. Гарантирует, что данные пакета не были повреждены при передаче.
  • Authentication type. Тип используемой схемы аутентификации. Варианты:

0 (без аутентификации), 1 (простейшая аутентификация) и 2 (MD5-аутентификация). 

  • Authentication. Поле данных аутентификации. Как и предыдущий показатель, повышает безопасность, предотвращая несанкционированный доступ и изменения в маршрутизации.

Зоны OSPF 

Как мы уже упоминали, OSPF поддерживает иерархическую структуру сети, которая разделена на зоны или области (areas). У каждой зоны есть свои особенности и функции, которые обеспечивают оптимальную маршрутизацию и эффективное использование ресурсов сети. 

Рассмотрим основные типы зон в OSPF:

Backbone Area (Area 0, нулевая зона)

Центральная и наиболее важная зона в OSPF. Backbone Area служит магистральной сетью, через которую осуществляется маршрутизация между всеми другими зонами в автономной системе. Все зоны должны быть подключены к Backbone Area через пограничные маршрутизаторы (Area Border Routers, ABR). 

Backbone Area обеспечивает высокую производительность и надёжность межзоновой маршрутизации, так как она обрабатывает и пересылает маршруты между всеми другими зонами.

Regular Areas

Эти зоны подключаются к Backbone Area через ABR и включают в себя группы смежных сетей и подключенных хостов. Внутренние маршрутизаторы в Regular Areas поддерживают одинаковую базу данных состояния соединений (LSDB), что позволяет им иметь полное представление о топологии своей зоны. 

Однако топология других зон для них невидима, что снижает объём маршрутных данных и упрощает управление сетью. Регулярные зоны предназначены для локальных сегментов сети, где необходимо детальное знание топологии только внутри зоны.

Stub Areas

Эти зоны ограничивают количество маршрутов в зоне, чтобы уменьшить объём маршрутных обновлений. В Stub Areas не вводятся внешние маршруты (из других автономных систем) – все внешние маршруты заменяются одним суммарным маршрутом, который предоставляет ABR. Это снижает количество LSA в зоне и уменьшает нагрузку на маршрутизаторы. 

Stub Areas подходят для небольших и относительно стабильных сегментов сети, где нет необходимости в знании внешних маршрутов.

Totally Stubby Areas

Подтип Stub Areas, где дополнительно ограничивается распространение внутренних межзоновых маршрутов. В Totally Stubby Areas маршрутизаторы получают только один суммарный маршрут для доступа ко всем внешним сетям и межзоновым маршрутам, что еще больше снижает объем маршрутных данных. 

Этот тип зоны подходит для небольших сегментов сети, где требуется минимальный объём маршрутной информации для упрощения управления и повышения производительности.

Not-So-Stubby Areas (NSSA)

NSSA позволяет вводить внешние маршруты в зону через граничные маршрутизаторы автономной системы (ASBR), но распространяет их только внутри своей зоны. По сути, она позволяет получать преимущества Stub Areas, но добавляет возможность интеграции внешних маршрутов. 

NSSA преобразуют внешние маршруты в специальный тип LSA (Type 7), который затем конвертируется в стандартный тип LSA (Type 5) при передаче в Backbone Area. 

NSSA подходят для сегментов сети, где необходимо учитывать внешние маршруты, но при этом ограничивать объём внутренней маршрутной информации.

Virtual Links

В некоторых случаях у зон может не быть прямого соединения с Backbone Area. Тогда используются виртуальные каналы, которые создают логическое соединение между зоной и Backbone Area через другую зону. 

Virtual Links позволяют поддерживать целостность топологии OSPF и обеспечивают связность всех зон с Backbone Area. Они создаются через конфигурацию маршрутизаторов и обеспечивают маршрутизацию между зонами, которые физически не могут быть напрямую подключены к Backbone Area.

Таким образом, зоны OSPF позволяют эффективно организовать маршрутизацию в крупных сетях, минимизируя объёмы маршрутных обновлений и улучшая управляемость сети. Каждая зона предназначена для определённых сценариев использования, что делает OSPF гибким и мощным инструментом для построения сложных сетевых инфраструктур.

Заключение

Протокол OSPF представляет собой мощный и гибкий инструмент для динамической маршрутизации в современных сетях. Его иерархическая структура, использование зон, поддержка различных типов пакетов и механизмов синхронизации данных обеспечивают высокую производительность, надёжность и масштабируемость сетевых инфраструктур. 

Благодаря возможностям автоматической адаптации к изменениям топологии и механизмам аутентификации, OSPF остаётся предпочтительным выбором для крупных корпоративных и провайдерских сетей.