linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Протоколы/ospf

kb/protocols ── Протоколы ── advanced

OSPF - Open Shortest Path First

**OSPF** - link-state IGP внутри одной автономной системы. Каждый роутер знает полную топологию (LSDB) и независимо считает кратчайшие пути алгоритмом Dijkstra. Сходимость секунды.

view as markdownaka: ospfv2, open-shortest-path-first

Что такое link-state

В отличие от distance-vector (RIP, EIGRP), где сосед просто говорит «до prefix X через меня метрика 5», link-state работает иначе:

  1. Каждый роутер описывает только свои локальные линки в LSA (Link State Advertisement)
  2. Все LSA flood'ятся по area без изменений
  3. Каждый роутер собирает у себя одинаковую LSDB (Link State Database) - полная карта area
  4. Локально считает SPF (Dijkstra) → таблица routing-table

Главное: все видят одинаковую топологию, нет распространения слухов через промежуточных, нет count-to-infinity петель.

Соседства (adjacency)

OSPF слышит соседей multicast 224.0.0.5 (ALL-OSPF-ROUTERS) на каждом включённом интерфейсе. Hello каждые 10s (Ethernet) или 30s (NBMA).

Состояния соседства:

Down → Init → 2-Way → ExStart → Exchange → Loading → Full
  • Down/Init - Hello ещё не получили или односторонний
  • 2-Way - оба видят друг друга, но обмен LSDB ещё не делали (на broadcast-сети все non-DR соседи остаются в 2-Way)
  • ExStart/Exchange/Loading - синхронизация LSDB
  • Full - синхронизация завершена, можно использовать

В рабочей сети все нужные соседи должны быть Full (или 2-Way с не-DR). show ip ospf neighbor через cmd-vtysh.

Area

Большую сеть OSPF делит на area - изолированные домены flooding'а.

  • Area 0 - backbone, обязателен. Все остальные area подключаются к 0.
  • Area N - non-backbone, может быть stub/totally-stubby для уменьшения LSDB
  • ABR (Area Border Router) - стоит между area, summarize'ит маршруты
  • ASBR (AS Boundary Router) - редистрибьютит во внешний мир (BGP, static)

Если у вас < ~50 роутеров - одной Area 0 хватит. Иерархия даёт смысл на сотнях узлов.

Типы LSA (упрощённо)

TypeИмяЧто описывает
1Router LSAсвои линки внутри area
2Network LSAbroadcast-сегмент (генерит DR)
3Summary LSAprefix из соседнего area (генерит ABR)
4ASBR Summaryкак достать ASBR
5External LSAредистрибьютнутые внешние prefix'ы
7NSSA Externalто же что type-5 но в NSSA-area

В show ip ospf database видно все LSA в LSDB.

DR / BDR на broadcast-сетях

На Ethernet-сегменте с N роутерами было бы N×(N-1)/2 adjacencies. Чтобы избежать flood-storm выбирают DR (Designated Router) и BDR (Backup). Все остальные строят Full только с DR/BDR.

  • DR election: highest priority (по умолчанию 1), tie-breaker - Router ID
  • На p2p-линках (типа /30) DR не нужен - там и так один сосед

Если у вас loopback с большим IP и priority 0 - соберёте OSPF быстрее и предсказуемее.

Минимальная конфигурация (FRR)

router ospf
 ospf router-id 1.1.1.1
 network 10.0.0.0/30 area 0
 network 192.168.10.0/24 area 0

Что делает network: на каждом интерфейсе чей IP попадает в этот prefix - включается OSPF (рассылается Hello, prefix анонсируется в LSA type 1).

Альтернатива (новее): per-interface конфигурация:

interface eth0
 ip ospf area 0

Так точнее - не зависит от текущего IP интерфейса.

Типичные грабли

  • MTU mismatch между соседями → застряли в ExStart. Решение: одинаковый MTU или ip ospf mtu-ignore.
  • Hello/Dead интервалы не совпадают → соседи не видят друг друга. OSPF требует точного совпадения Hello и Dead.
  • Auth mismatch (если включён MD5/key-chain) → silent drop.
  • Subnet mask mismatch на broadcast-сегменте → не идёт 2-Way.
  • passive-interface забыли поставить на интерфейсе к клиентам → они получают Hello от вас (не страшно, но шумно и потенциально опасно).

OSPF vs BGP в одной сети

  • OSPF - внутри AS, быстрая сходимость, лимит ~500 prefix'ов в одной area без проблем
  • BGP (bgp) - между AS или для transit'а большого числа prefix'ов

Классическая схема: OSPF несёт loopback'и роутеров (next-hop'ы), BGP - клиентские prefix'ы. Это снимает с OSPF нагрузку и оставляет BGP политику.

§ команды

bash
vtysh -c 'show ip ospf neighbor'

Список соседей и их состояние - должны быть Full

bash
vtysh -c 'show ip ospf interface brief'

На каких интерфейсах работает OSPF, area, DR/BDR

bash
vtysh -c 'show ip ospf database'

LSDB - все LSA которые знает этот роутер

bash
vtysh -c 'show ip ospf route'

Маршруты посчитанные SPF - до того как попали в RIB

bash
tcpdump -i any -n proto ospf

Наблюдать Hello и LSU прямо в сети (multicast 224.0.0.5/6)

§ см. также

  • bgpBGP - Border Gateway Protocol**BGP** - протокол маршрутизации между автономными системами (AS). Это «язык» которым общаются ISP и крупные сети интернета: какой AS владеет какими prefix'ами и через кого до них доходить.
  • routing-tableRouting tableТаблица маршрутизации - список «куда направлять пакеты с таким destination». Самая длинная (longest-prefix) подходящая запись выигрывает.
  • ipv4-addressingIPv4-адресация и CIDRIP-адрес = 32 бита, обычно как `a.b.c.d`. **/N** в конце - длина префикса сети: `/24` = первые 24 бита фиксированы, последние 8 - host'ы (256 адресов).
  • cmd-vtyshvtysh - CLI к FRR (BGP/OSPF)vtysh - Cisco-подобный CLI к FRRouting. Через него настраиваются все routing-демоны (zebra, bgpd, ospfd) одной интегрированной сессией.

§ упоминается в уроках

  • ›advanced-09-ospf-area-0
  • ›intermediate-03-three-node-routing
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки