NetLab Academy

Сетевые лаборатории в браузере

Войти Начать бесплатно

Теория: OSPF углублённо: области, типы LSA и сходимость

Что начинается за пределами одной area 0: зачем делить сеть на области, кто такие ABR и ASBR, из чего состоит база, чем E1 отличается от E2 и куда уходит время при сходимости. Прочитайте материал, а затем пройдите тест — следующий пункт курса откроется после верных ответов.

Зачем сеть делят на области

В одной области каждый роутер хранит одинаковую базу — LSDB, — и сам считает по ней кратчайшие пути. Пока роутеров десяток, это бесплатно. Когда их триста, всплывают три расхода сразу.

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

Деление на области (area) ставит границу этому распространению. Внутри области роутеры знают топологию подробно, а за её пределы уходит уже не описание связей, а готовые сведения о доступных подсетях. Падение линка внутри периферийной области соседние области вообще не заметят: суммарный маршрут как был, так и остался.
Кто что видит: одна область против трёх, и роли на границах
Правило прилегания видно прямо здесь: областей может быть сколько угодно, но каждая держится за area 0. Разорвите магистраль — и области перестанут видеть друг друга, продолжая работать внутри себя.

Backbone и правило прилегания

Область 0 особая — это backbone, магистраль. Правило жёсткое: каждая область должна прилегать к нулевой. Трафик между двумя периферийными областями всегда идёт через backbone, даже если физически они соседи.

Причина не в бюрократии, а в защите от петель. Внутри области петли невозможны: у всех одинаковая база и одинаковый алгоритм. Между областями роутеры видят не топологию, а чужие сводки — и доверяют им на слово. Звезда с единственным центром исключает круговые зависимости, которые проверить было бы нечем.

Отсюда практическое следствие: разрыв backbone разрезает домен пополам. Области по разные стороны разрыва продолжают работать внутри себя, а друг друга теряют. Костыль на такой случай существует — virtual-link, туннель через транзитную область, — но это аварийная мера, а не архитектура.

ABR и ASBR — кто это и чем занят

ABR (Area Border Router) — роутер, у которого интерфейсы лежат в разных областях, и одна из них нулевая. Его работа — пересказывать области то, что происходит у соседей: он берёт подсети своей области и объявляет их в другую уже как готовые записи, без подробностей внутренней топологии.

ASBR (Autonomous System Boundary Router) — роутер, который вносит в OSPF маршруты извне: статику, connected-сети, маршруты другого протокола. Это делает команда redistribute, и один её вызов превращает роутер в ASBR.

Роли независимы: один и тот же роутер бывает и ABR, и ASBR одновременно, а бывает ни тем, ни другим. Проверяется одной командой:
show ip ospf border-routers   # кто ABR и ASBR и как до них добраться

Типы LSA: из чего состоит база

База — не список маршрутов, а набор объявлений (LSA) разных типов. Знать их полезно не ради терминов: по типу сразу видно, кто запись породил и как далеко она разойдётся.

Type 1, Router. «Вот мои линки и их стоимость». Порождает каждый роутер, живёт только внутри своей области.
Type 2, Network. «Вот кто сидит на этом общем сегменте». Порождает DR, тоже только внутри области.
Type 3, Summary. «В соседней области есть такая подсеть». Порождает ABR. Топологии за границей здесь нет — только префикс и стоимость.
Type 4, ASBR-Summary. «Вот как добраться до ASBR». Тоже от ABR: без неё внешние маршруты некуда привязать.
Type 5, AS-External. «Есть маршрут во внешний мир». Порождает ASBR, и эта запись расходится по всему домену, а не по одной области.
Type 7, NSSA-External. Тот же внешний маршрут, но рождённый внутри области, куда Type 5 не пускают. На границе ABR превращает его в Type 5.

Смотреть базу целиком: show ip ospf database. По разделам вывода видно ровно эти типы.

Внешние маршруты: E1 и E2, и почему по умолчанию E2

Маршрут, влитый через redistribute, приходит соседям с пометкой E2 или E1 — и разница между ними ловит людей регулярно.

E2 (по умолчанию). Метрика остаётся такой, какой её задал ASBR, и не растёт по мере удаления. Для роутера на другом конце домена внешняя сеть стоит ровно столько же, сколько для соседа ASBR.
E1. К внешней метрике прибавляется внутренняя стоимость пути до ASBR. Чем дальше, тем дороже.

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

ip route 203.0.113.0/24 10.0.41.1
router ospf
 redistribute static                    # придёт как E2
 redistribute static metric-type 1      # придёт как E1
exit
Правило простое: один выход наружу — разницы нет; два и больше — почти всегда нужен E1.

Особые области: stub, totally stubby, NSSA

Периферийной области подробности внешнего мира не нужны: выход из неё всё равно один — через ABR. На этом и построены особые типы.

Stub. Внешние маршруты (Type 5) внутрь не пускаются, вместо них ABR объявляет маршрут по умолчанию. База заметно худеет.
Totally stubby. Отрезаются ещё и межобластные записи (Type 3): внутри остаётся своя топология плюс один default. Максимальная экономия для тупиковой площадки.
NSSA. Компромисс: внешние маршруты внутрь не пускают, но свой локальный ASBR разрешён — его маршруты идут как Type 7 и превращаются в Type 5 на границе. Так подключают филиал, у которого есть собственный канал.

Ловушка одна и всегда одна: тип области обязан совпадать у всех её роутеров. Он объявляется в Hello, и при расхождении соседство просто не поднимется. Симптом при этом выглядит как «сосед не видит меня», а причина — в одной строке конфигурации.

Типы сетей и DR/BDR

На интерфейсе Ethernet OSPF по умолчанию считает сеть broadcast и выбирает DR и BDR — даже если на сегменте всего два роутера. Выборы стоят времени при поднятии соседства и добавляют в базу лишний Type 2.

На линке между двумя роутерами это чистые накладные расходы. Тип меняется одной строкой:
interface eth1
 ip ospf network point-to-point
exit
Соседство поднимается быстрее, DR не избирается, Type 2 не порождается.

Тип обязан совпадать на обоих концах. При расхождении Hello отбрасываются, и соседство зависает — а в конфигурации оба конца выглядят правильно. Проверять: show ip ospf interface eth1, поле Network Type.

Аутентификация соседства

По умолчанию OSPF примет соседа, который просто прислал корректный Hello. В сети, где к порту может подключиться кто угодно, этого мало: чужой роутер способен объявить себя лучшим путём и увести трафик.

interface eth1
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 S3cretKey
exit
Ключ и его номер должны совпадать на обоих концах. Не совпали — Hello молча отбрасываются, соседство не поднимается, и в логах на первый взгляд ничего интересного.

Диагностика та же: show ip ospf interface eth1 покажет, включена ли аутентификация. Это первое, что стоит проверить, когда линк поднят, адреса верные, а сосед не появляется.

Сходимость: что происходит при падении линка

Порядок событий стоит держать в голове — по нему видно, где именно теряется время:

1. Роутер замечает падение — по пропаже несущей мгновенно, а если линк «поднят, но молчит», то только по dead-таймеру (по умолчанию 40 секунд).
2. Он порождает новый Router-LSA и рассылает его по области.
3. Каждый роутер области кладёт LSA в базу и пересчитывает SPF.
4. Появляются новые маршруты в таблице.

Основное время съедает первый шаг. Отсюда два рычага: уменьшить таймеры (ip ospf hello-interval и dead-interval, обязательно на обоих концах) или, что лучше, использовать линки, на которых обрыв виден физически.

Обратная сторона — частые пересчёты. Флапающий линк заставляет всю область считать SPF снова и снова. От этого защищает троттлинг: первый пересчёт быстрый, повторные — с растущей паузой.
timers throttle spf 200 400 10000   # старт 200 мс, шаг 400 мс, потолок 10 с
Куда уходит время между обрывом линка и новым маршрутом
Считать SPF роутер умеет за миллисекунды. Всё время съедает первый шаг — заметить, что линка больше нет. Поэтому обрыв, видимый физически, сходится в сотни раз быстрее «поднятого, но молчащего» линка.

Что здесь ломается

Разные area на концах линка. Соседство не доходит до Full и виснет в ExStart или Exchange. Номер области объявляется в Hello, и расхождение — стоп-сигнал.

Разные таймеры. Hello и dead тоже сверяются. Поменяли на одном конце — соседство то поднимается, то падает.

Разные тип сети или аутентификация. Симптом один и тот же: сосед не появляется вовсе, обе конфигурации выглядят правильными по отдельности.

Опечатка в маске network. Подсеть просто не попадает в OSPF. Соседство при этом прекрасно работает — и именно поэтому смотрят не туда.

Область оторвана от backbone. Внутри всё живо, наружу маршрутов нет. Проверяется на ABR: есть ли у него вообще интерфейс в области 0.

Общее правило: меняйте по одному и смотрите вывод после каждого шага. Три правки сразу превращают диагностику в гадание.

Как проверять

show ip ospf neighbor — состояние соседств. Первое, куда смотреть всегда. Не Full — маршрутов от этого соседа не будет вовсе.

show ip ospf interface eth1 — область, тип сети, таймеры, аутентификация, роль DR/BDR. Здесь находится причина большинства «сосед не поднимается».

show ip ospf database — что вообще знает роутер. По разделам видно типы LSA: свои Router, чужие Summary, внешние External.

show ip ospf border-routers — кто в домене ABR и ASBR.

show ip ospf route — таблица глазами самого протокола, и именно здесь видно происхождение маршрута: N — сеть своей области, N IA — из другой области (принёс ABR), N E1 и N E2 — внешние. Рядом печатается область и стоимость.

show ip route ospf — итог в общей таблице маршрутизации. Здесь все маршруты OSPF помечены одной буквой O, без деления на межобластные и внешние — в отличие от Cisco IOS, где пишется O IA и O E1. Привычка искать эти пометки в общей таблице стоит многим первого получаса отладки: смотреть надо в show ip ospf route.

Команды — шпаргалка

# области
router ospf
 network 10.0.12.0/30 area 0        # подсеть и номер зоны, куда её положить
 network 10.0.23.0/30 area 1        # сети в двух зонах сразу — роутер стал ABR
 area 1 stub                        # тип зоны: внешние маршруты в неё не пускать
 area 1 stub no-summary             # no-summary — заодно отрезать межзонные,
                                    #   останется один маршрут по умолчанию (totally stubby)
 area 1 nssa                        # как stub, но свой ASBR внутри разрешён

# внешние маршруты
 redistribute static                # слово после команды — ОТКУДА брать маршруты
 redistribute static metric-type 1  # тип метрики: 1 (E1) складывает стоимость пути
                                    #   внутри OSPF, 2 (E2, по умолчанию) — не складывает
 redistribute connected             # подсети собственных интерфейсов

# фильтрация анонсов
ip prefix-list NO_LAN seq 10 deny 192.168.111.0/24
                                    # seq — номер строки: правила проверяются по
                                    #   возрастанию, первое совпадение решает
ip prefix-list NO_LAN seq 20 permit any   # иначе неявный deny отбросит всё
router ospf
 distribute-list prefix NO_LAN out  # prefix — фильтровать по prefix-list с этим
                                    #   именем; out — на исходящих анонсах

# сходимость
 timers throttle spf 200 400 10000  # три числа в миллисекундах: задержка до
                                    #   первого расчёта, шаг увеличения, потолок

# на интерфейсе
interface eth1
 ip ospf cost 500                   # метрика линка: меньше — привлекательнее
 ip ospf network point-to-point     # тип сети: без выборов DR/BDR
 ip ospf authentication message-digest   # вид аутентификации: хеш, а не пароль
                                    #   открытым текстом
 ip ospf message-digest-key 1 md5 S3cretKey
                                    # 1 — номер ключа, должен совпадать у соседей;
                                    #   md5 — алгоритм; дальше сам секрет

# проверка
show ip ospf neighbor               # соседи и состояние соседства
show ip ospf interface eth1         # имя порта сужает вывод до него одного
show ip ospf database               # сырые LSA: кто что анонсировал
show ip ospf border-routers         # где находятся ABR и ASBR
show ip ospf route                  # здесь видно N IA / N E1 / N E2
show ip route ospf                  # здесь всё помечено просто O
Контрольные вопросы

Дальше — лабораторная работа «OSPF: несколько областей»

Для неё нужен аккаунт: стенд поднимается персонально под вас — свои роутеры, свои конфиги, никто в них не мешает. Регистрация — почта и пароль.

Теория прочитана. Дальше — руками.

Личный стенд из настоящих роутеров разворачивается за секунды. Платформа проверяет не ответы на тесты, а состояние вашей сети: поднялись ли соседства, сошлись ли маршруты, ходит ли ping. Рядом — AI-наставник, который видит ваши конфиги и ведёт к решению, не выдавая готовое.

Начать бесплатно → бета открыта, доступ бесплатный