Открыть сервис

OSPF

OSPF (от англ. Open Shortest Path First — «открытый кратчайший путь первым») — это протокол динамической маршрутизации, основанный на алгоритме состояния каналов (link-state), используемый в компьютерных сетях для автоматического обмена информацией о маршрутах и построения топологии сети. OSPF относится к классу протоколов внутреннего шлюза (IGP), то есть применяется внутри одной автономной системы (AS). Разработан в 1980-х годах рабочей группой IETF как открытый стандарт (заменяющий проприетарный протокол RIP) и описан в RFC 2328 (OSPFv2) для IPv4, а для IPv6 — в RFC 5340 (OSPFv3). Протокол широко используется в корпоративных и провайдерских сетях, а также в сетях операторов связи.

История

Разработка OSPF началась в 1987 году в рамках деятельности IETF (Internet Engineering Task Force) с целью создания протокола, лишённого недостатков RIP (ограничение на 15 хопов, медленная сходимость, отсутствие поддержки масок переменной длины). Первая версия, OSPFv1, была опубликована в RFC 1131 в 1989 году, но не получила широкого распространения из-за ошибок. В 1991 году вышла стабильная версия OSPFv2 (RFC 1247), последующие уточнения закреплены в RFC 2328 (1998 год) и дополнительных документах. OSPFv3, адаптированный для работы с IPv6, был стандартизирован в 1999 году (RFC 2740) и обновлён в RFC 5340 (2008 год). С течением времени протокол дополнялся механизмами аутентификации, поддержкой многоадресной рассылки, VLSM и CIDR, а также расширениями для работы с MPLS (Traffic Engineering).

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

OSPF использует алгоритм Дейкстры (SPF — Shortest Path First) для вычисления кратчайших путей к каждой сети. Каждый маршрутизатор формирует карту топологии (LSDB — Link-State Database) на основе сообщений LSA (Link-State Advertisement), рассылаемых всеми участниками в пределах одной области. Протокол работает поверх IP (протокол 89), использует многоадресные адреса 224.0.0.5 (для всех OSPF-маршрутизаторов) и 224.0.0.6 (для DR/BDR). Пакеты делятся на пять типов: Hello (обнаружение соседей и поддержание связи), Database Description, Link-State Request, Link-State Update и Link-State Acknowledgment.

Алгоритм состояния каналов

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

Обнаружение соседей

Процесс начинается с рассылки Hello-пакетов каждые 10 секунд (по умолчанию для широковещательных сетей) на интерфейсах, где включён OSPF. Для установления соседства необходимо совпадение нескольких параметров: идентификатора области (Area ID), паролей (если аутентификация включена), таймеров Hello и Dead (по умолчанию 40 секунд), а также маски подсети в сетях типа «точка-точка».

Выбор назначенного маршрутизатора (DR) и резервного (BDR)

В сетях множественного доступа (Ethernet, Frame Relay) для уменьшения числа LSA выбирается выделенный маршрутизатор (DR). Все остальные узлы обмениваются информацией только с DR и BDR (Backup Designated Router). DR формирует маршрутизацию от имени всей сети, BDR служит резервом. Выборка происходит на основе приоритетов (по умолчанию 1) и наибольшего Router ID (обычно IP-адрес loopback-интерфейса или наибольший IP физического интерфейса).

Типы пакетов и механизм надёжности

Каждый тип пакета имеет свою роль. Hello-пакеты подтверждают «живучесть» соседа. При инициализации соседства пары обмениваются Database Description-пакетами (DD), содержащими заголовки LSA, затем запрашивают недостающие записи через Link-State Request. Ответы приходят в Link-State Update, а подтверждение приёма — в Link-State Acknowledgment. Пакеты ретранслируются до тех пор, пока не будет получено подтверждение (надёжный обмен по модели «запрос-ответ»).

Иерархическая структура

OSPF поддерживает разбиение автономной системы на логические области (areas). Каждая область идентифицируется 32-битным числом (обычно записывается как десятичное число или в формате IP-адреса). Область 0.0.0.0 (нулевая область, backbone — магистральная) обязательна: все остальные области должны быть подключены к ней напрямую или через виртуальные каналы. Это позволяет снизить нагрузку на процессор и память маршрутизаторов: топология одной области не передаётся в другую, а LSA обобщаются (summary LSA) на границе.

Типы маршрутизаторов:

Типы сетей

OSPF различает несколько топологических типов сетей, влияющих на поведение протокола:

Метрика

Метрика в OSPF по умолчанию — стоимость (cost) интерфейса, обратно пропорциональная пропускной способности. Формула Cisco: 10^8 / Bandwidth (бит/с). Например, для Ethernet (100 Мбит/с) cost = 1, для T1 (1,544 Мбит/с) cost = 64. Рекомендуется вручную настраивать cost на основе реальной пропускной способности или административных предпочтений. Маршрут вычисляется как сумма стоимостей всех интерфейсов на пути.

Типы LSA

Различают несколько типов LSA (Link-State Advertisement), которые распространяются в областях:

Преимущества и недостатки

Преимущества:

Недостатки:

Применение

OSPF широко используется в корпоративных сетях (средние и крупные предприятия), университетских кампусах, сетях операторов связи и дата-центрах. Часто комбинируется с BGP для взаимодействия между автономными системами. Наиболее популярен в средах Cisco, Juniper, Huawei, а также в программных маршрутизаторах (FRRouting, Quagga, BIRD, OpenOSPFD). Версия OSPFv3 применяется в сетях с двойным стеком IPv4/IPv6.

Интересные факты

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →