OSPF

OSPF (Open Shortest Path First, RFC 2328 для v2, RFC 5340 для v3) — самый распространённый IGP (Interior Gateway Protocol) для маршрутизации внутри автономной системы. В отличие от BGP (который для inter-AS), OSPF работает внутри одной сети — провайдера, компании, ДЦ.

Как работает

OSPF — link-state протокол. Каждый роутер:

  1. Знает своих соседей (через Hello-пакеты).
  2. Синхронизирует базу LSDB (Link-State Database) — знает всю топологию сети.
  3. Считает кратчайшие пути алгоритмом Dijkstra (SPF) для всех destination-префиксов.
  4. Пере-считывает при изменениях (link up/down, метрика).

Каждый роутер имеет полную карту сети — в отличие от distance-vector (RIP, EIGRP) где роутер знает только «через кого лучше идти».

Основные пакеты

ТипЧто делает
HelloОбнаружение соседей, keepalive (по умолчанию каждые 10 сек)
Database Description (DBD)Summary LSDB после hello
Link State Request (LSR)«Пришли мне LSA X»
Link State Update (LSU)Содержит LSA (Link State Advertisement)
Link State Acknowledgment (LSAck)Подтверждение получения LSU

Работает поверх IP протокол 89, не TCP/UDP — свои механизмы reliability.

Типы LSA

ТипНазваниеЧто описывает
1Router LSAСебя и свои интерфейсы. Разсылается только внутри area
2Network LSAMulti-access сегмент (broadcast/NBMA), от DR
3Summary LSAПрефикс из другой area, от ABR
4ASBR-SummaryДостижимость ASBR из другой area
5AS-ExternalПрефиксы редистрибутированные из другого протокола (BGP, RIP)
7NSSA ExternalExternal в NSSA-area

Areas

OSPF-сеть разбита на areas (области) для масштабируемости. Каждая area имеет свою LSDB. Между areas — только суммаризованные маршруты.

                     Area 0 (backbone)
              ┌───────────────┬───────────────┐
              │               │               │
            ABR-1           ABR-2           ABR-3
              │               │               │
           Area 1           Area 2          Area 3

DR / BDR

На broadcast/NBMA сегменте (Ethernet) — Designated Router и Backup DR. Все роутеры peer'ятся только с DR/BDR, не полный mesh. Уменьшает O(N²) до O(N) adjacencies.

Выбор DR — по Router Priority (по умолчанию 1), тайбрейк — highest Router-ID. Priority 0 = «не хочу быть DR».

Метрика — cost

Метрика = reference_bandwidth / interface_bandwidth. По умолчанию reference = 100 Мбит/с:

СкоростьCost (default)
10 Мбит/с10
100 Мбит/с1
1 Гбит/с1 (клэмпится на минимум)
10 Гбит/с1

В современных сетях reference-bandwidth поднимают до 10-100 Гбит/с чтобы различать быстрые линки.

OSPFv2 vs OSPFv3

OSPFv2OSPFv3
IPIPv4IPv6 (изначально), позже address-families для IPv4 тоже
АутентификацияMD5, plainIPsec AH/ESP
Multicast224.0.0.5, 224.0.0.6ff02::5, ff02::6
Prefix в LSAВстроен в Router-LSAОтдельные Intra-Area-Prefix LSA

Cisco IOS

router ospf 1
 router-id 1.1.1.1
 network 10.0.0.0 0.0.0.255 area 0
 network 10.0.1.0 0.0.0.255 area 1
 auto-cost reference-bandwidth 100000

interface Gi0/0
 ip ospf 1 area 0
 ip ospf hello-interval 5
 ip ospf dead-interval 20
 ip ospf network point-to-point

FRR (Linux)

# /etc/frr/frr.conf
router ospf
 ospf router-id 1.1.1.1
 network 10.0.0.0/24 area 0

interface eth0
 ip ospf hello-interval 5
 ip ospf dead-interval 20

OSPF vs IS-IS vs EIGRP

OSPFIS-ISEIGRP
ТипLink-stateLink-stateAdvanced distance-vector (DUAL)
ОткрытостьОткрытый (RFC)Открытый (ISO)Открытый с 2013 (был Cisco-proprietary)
ТранспортIP protocol 89Прямо в L2 (не в IP)IP protocol 88
Многолетний useEnterprise, ДЦПровайдеры (тише, стабильнее)Cisco-only исторически

Сходимость

Классический OSPF сходится за 1-30 сек. Ускорения:

См. также