OSPF
Overview
OSPF - link-state IGP протокол.
Hello пакета для установления и поддержания соседства.
OSPF флудит LSA (IP 89 порт, 224.0.0.5 адрес) во все порты OSPF, кроме того, с которого прилетела LSA. С помощью LSA на каждом роутере строится топология сети и на основании этих данных затем производится рассчет кратчайшего пути.
На всех роутерах одной area поддерживается одинаковая копия LSDB.
Policy можно применят только на export.
Иерархичный дизайн сети достигается за счет использования area, которые соединяются посредством backbone area.
Dijkstra рассчитывается только в рамках одной area (на основании одной LSDB, которая едина в рамках одной area).
Summary metric для dest = сумме outgoing interface metrics.
На бродкаст сегменте выбирается DR (наиб приоритет, затем наиб router ID), который занимается флудом LSA внутри area. Для роутеров не в бродкастном сегменте, подключенных через Ethernet, включаем interface-type p2p, чтобы на этом линке не проводились выборы DR и чтобы уменьшить время сходимости.
Типы пакетов
Hello - используются для установления и поддержания соседства ospf. Отправляются на адрес 224.0.0.5 каждые 10 сек. Содержит в себе поля: network mask, hello interval, dead interval, options, (router priority, designated router, backup designated router, neighbor).
Database description (DD) - используется только во время установления соседства. Определяет кто отвечает за синхронизацию (выбирается с большим RID). Обменивается LSA до полной синхронизации. Содержит: ospf header, sequence number, lsa header.
Link-state request - отправляется роутером, когда тот понимает, что LSBD устарела. Содержит: ospf header, link-state type, link-state ID, advertising router.
Link-state update - отправляется на адрес: 224.0.0.5 (всем) или 225.0.0.6 (для DR). Отправляется либо в ответ на link-state request, либо если меняется информация о состоянии линка. Передает одну или несколько LSA. Содержит: ospf header, numbers of advertisement, link-state avertisement.
Link-state acknowledgment - ответ на link-state update. Содержит: ospf header, list of LSA headers.
Установление соседства
Соседи используют hello пакета для установления и поддержания соседства.
1. Down
Самое начало, ничего не происходит.
2. Init
В hello-packet в списке соседей нет router-id маршрутизатора, получившего этот пакет.
Если маршрутизатор не переходит в состояние 2-Way, а скачет - down-Init-down-init... вероятно на маршрутизаторах не совпали параметры:
Area ID Authentication Network Mask Hello Interva Router Dead Interval Options fields
либо до удаленного маршрутизатора не доходят ваши сообщения hello (причиной могут быть неверно настроенные фаерволы)
3. 2-Way
В hello-packet в списке соседей появился router-id маршрутизатора, получившего этот пакет.
4. ExStart
Выборы DR и BDR маршрутизаторов производятся в момент первоначальной установки соседских отношений по следующим правилам:
- Маршрутизатор с наибольшим приоритетом выбирается DR маршрутизатором;
- Маршрутизатор со вторым по величине приоритетом назначается BDR маршрутизатором;
- Если маршрутизаторы имеют равный приоритет, то в качестве DR маршрутизатора выбирается маршрутизатор с наибольшим RID, BDR маршрутизатором выбирается маршрутизатор со вторым по величине RID;
- Маршрутизатор, с приоритетом равным нулю, не принимает участия в выборах DR и BDR маршрутизаторов;
- Если после выбора DR и BDR маршрутизаторов в сегмент сети добавляется маршрутизатор с более высоким приоритетом или большим RID, то повторные выборы не производятся;
- Повторные выборы производятся только после того как DR или BDR маршрутизаторы становится недоступными.
(Происходит обмен сообщениями DD (database descr), где заполнены только поля: router-id, neighbors, mtu.
Если маршрутизатор не переходит в следующее состояние, то вероятнее всего причина в несовпадении mtu на физических интерфейсах маршрутизаторов.
5. ExChange
Процесс обмена LSDB с помощью сообщений DD (database descr) (локальной базой маршрутов, их метриками, состояний линков)
6. Loading
Обмен сообщениями link-state request, link-state update. На каждом маршрутизаторе должна быть одинаковая LSDB. (Каждый маршрутизатор восполняет недостающие знания о новых маршрутах)
7. Full
Соседство установлено, LSDB синхронизированы. Последующие изменения в топологии передаются через сообщения link-state update, в ответ приходят link-state acknowledgment (в кач-ве подтверждения о доставке).
Роутеры
- ABR (Area border router): OSPF роутер, имеющий линки в двух area - соединяет и распространите инфо из OSPF area в backbone.
- ASBR (AS boundary router): может находиться внутри backbone или других area. Имеет подключения к другим external routing protocols и распространяет эту инфу по сети.
- Backbone: хотя бы один линк внутри backbone area.
- Internal: все линки внутри одной area, backbone - частный случай internal.
Типы Area
backbone
Area 0 (к ней в обязательном порядке должны подключаться остальные area).
Но если area не имеет прямого физического подключения к backbone area, то она может соединят с ней через virtual-link.
stub area
Обменивается маршрутами по ospf с ABR, не содержит с себе external routes, не принимает от ABR external routes. (не принимает LSA 4,5). Доступность внешних маршрутов достигается анонсированием 0/0 со стороны ABR в сторону stub-area. Через stub-area нельзя построить virtual-link и в ней не может размещаться ASBR. Если все же сконфигурировать ASBR внутри stub-area, то роутер разместит LSA 5 в своей локальной базе данных, но не будет пересылать ее другим роутера даже внутри area.
Все роутеры stub area должны быть сконфигурированы, как stub.
[edit protocols ospf area 0.0.0.1] mortlach# set stub
stub with no summaries (totally stub)
В неё не анонсируется вообще никаких LSA. По area гуляют только LSA 1 и LSA 2. Доступность маршрутов из остальных area достигается тем же анонсированием 0/0 со стороны ABR в сторону totally stub-area. В area не вставляются LSA 3, 4, 5. И ASBR не флудит external routes в такой area. Также virtual-link не поддерживается в такой area.
[edit protocols ospf area 0.0.0.1] mortlach# set stub no-summaries
not-so-stubby
Обменивается маршрутами по ospf с ABR, содержит external routes (ASBR), НО не принимает external routes от ABR. (не принимает LSA 4,5)
[edit protocols ospf area 0.0.0.1] mortlach# set nssa
Типы LSA
Все типы имеют одинаковый заголовок:
- LS age - sec - время, когда LSA была впервые создана
- Option - E-bit = External LSA, P bit = NSSA external LSA.
- LS type.
- Link-state ID - разные типы LSA используют поле по-разному.
- Advertising router - роутер, который сгенерировал LSA.
- LS sec number
- LS checksum
- Length
В выводе sh ospf database ID, отмеченный * - будет означать, что этот маршрут сгенерирован самим роутером.
- Type 1 LSA (Router) — Описывает стоимость (metric) и состояние интерфейсов. Не передаются между Area.
- Type 2 LSA (Network) — Отправляются DR. Описывает роутеры, подключенные в бродкаст сегменте + сам себя. Не передаются между area. В выводе sh ospf database: ID = DR, attached router = роутеры в бродкаст сегменте.
- Type 3 LSA (Summary) — Отправляются ABR. Описывают сети, которые маршрутизатор получил из предыдущих типов LSA, и передает между Area. LSA будет флудиться каждому роутеру внутри area. ABR, получив LSA3 не перешлет ее другому ABR, а сгенерирует на основании полученной LSA3, LSA1, 2 новую LSA3, и уже ее передаст в соседние area.
- Type 4 LSA (ASBR Summary) — Генерируются ABR, LSA содержит описание самих ASBR роутеров. В выводе sh ospf database: ID = ASBR router.
- Type 5 LSA (External) — Описывают сети, полученные из других протоколов маршрутизации ASBR-ами. Рассылаются ими же. В выводе sh ospf database: ID + mask = external networks.
- Type 6 LSA (Group membership) — Не используется, некогда планировался под MOSPF.
- Type 7 LSA (NSSA External) — Генерируются ASBR-ами в NSSA. Передаются только внутри NSSA. Но на выходе из зоны ABR-ами транслируются в LSA Type 5. В выводе sh ospf database: ID + mask = external networks.
- Type 9 (Graceful restart) - поддерживает graceful restart.
- Type 10 LSA (Traffic Engineering) — Содержат информацию, которая в последствии находится в TED и используется при работе CSPF-алгоритма.
LSA flooding scopes: LSA 1, LSA 2 - исключительно внутри area. LSA 3 - суммирует LSA 1 + LSA2 и передает эту инфу в соседнюю area. LSA 5 (external) - передаются по всему OSPF домену. LSA 4 (about ASBR) - по всему OSPF домену.
Время жизни каждой LSA - 3600 sec (1 h).
Junos не поддерживает: LSA6, LSA8, LSA11
Можно вручную ограничить кол-во LSA: полезно в тех случаях, когда CE <> PE висит на OSPF.
set protocols ospf database-protection maximum-lsa 1000
macduff> show ospf database OSPF database, Area 0.0.0.20 Type ID Adv Rtr Seq Age Opt Cksum Len Router 10.200.86.2 10.200.86.2 0x80000007 277 0x22 0xcb07 72 Router 10.200.86.4 10.200.86.4 0x8000000a 106 0x22 0x7294 72 Router *10.200.86.8 10.200.86.8 0x8000000d 105 0x22 0x5fd2 72 Network *192.168.86.14 10.200.86.8 0x80000003 2402 0x22 0xc01d 32 Summary 10.200.86.1 10.200.86.2 0x80000002 1991 0x22 0xdc09 28 Summary 10.200.86.2 10.200.86.2 0x80000004 2134 0x22 0xc41f 28 Summary 10.200.86.3 10.200.86.2 0x80000002 1705 0x22 0xd210 28 Summary 10.200.86.5 10.200.86.2 0x80000004 1420 0x22 0xba24 28 Summary 10.200.86.6 10.200.86.2 0x80000004 1277 0x22 0xa638 28 Summary 10.200.86.7 10.200.86.2 0x80000004 1134 0x22 0xb02b 28 Summary 10.200.86.9 10.200.86.2 0x80000002 848 0x22 0xa03b 28 Summary 192.168.86.4 10.200.86.2 0x80000004 991 0x22 0xec5f 28 Summary 192.168.86.8 10.200.86.2 0x80000006 2357 0x22 0xc085 28 Summary 192.168.86.24 10.200.86.2 0x80000002 1848 0x22 0x2812 28 Summary 192.168.86.28 10.200.86.2 0x80000004 705 0x22 0x62d 28 Summary 192.168.86.36 10.200.86.2 0x80000002 1563 0x22 0xb973 28 Summary 192.168.86.44 10.200.86.2 0x80000004 563 0x22 0x51d3 28 Summary 192.168.86.48 10.200.86.2 0x80000004 134 0x22 0x29f7 28 ASBRSum 10.200.86.9 10.200.86.2 0x80000001 390 0x22 0x9447 28 OSPF AS SCOPE link state database Type ID Adv Rtr Seq Age Opt Cksum Len Extern 172.16.0.0 10.200.86.9 0x80000001 393 0x22 0x487b 36 Extern 172.16.1.0 10.200.86.9 0x80000001 393 0x22 0x3d85 36 Extern 172.16.2.0 10.200.86.9 0x80000001 393 0x22 0x328f 36
Типы интерфейсов
- Broadcast - поведение аналогично тому, когда router включен в LAN сегмент. То ест дополнительно производится выбор DR, BDR среди роутеров. И если на интерфейсе висите несколько ip, то роутер сможет установить несколько соседств в каждой сети одновременно.
- Point to point (p2p) - соединение между одним source и одним destination. Возможно установление только одного соседства с такого типа интерфейса. Можно назначать на ethernet интерфейсы без IP адресов.
- Point to multipoint (p2mp) - соединение между одним source и несколькими destination. Сеть рассматривается как набор p2p линков. Т.к. нет autodiscovery механизма, от обязательно указывать соседа.
- Nonebroadcast multiaccess (NBMA) - работает как p2mp, но может взаимодействовать с другим оборудованием.
- Demand circuit - соединение на котором можно ограничить полосу или время доступа.
- Passive - передает свой адрес, но не участвует в установлении OSPF соседства и вообще не обменивается hello-сообщениями. Также в passive можно использовать инфо об интерейсе и его сетях для TE вычислений.
- Disable - не участвует в OSPF и не передает о себе инфо в LSDB
- Peer (для OSPFv2) - требуется GMPLS
Если на маршрутизаторах указаны разные типы интерфейсов, то они между собой соседство не поднимут.
Другие фичи
- Аутентификация: простая, MD5, IPSec.
- Суммирование маршрутов, прилетающих в update сообщениях от других area.
- Можно ограничить кол-во перфиксов, экспортируемых в OSPF.
- GRES возможен.
- BFD (Bidirectional Forwarding Detection) можно использовать для сокращения времени обнаружения аварии между роутерами.
- Можно отложить процесс перерасчета SPF при изменении LSDB (дефолт - 200ms):
set protocols ospf spf-options delay ? <delay> Time to wait before running an SPF (50..8000 milliseconds)
- Metric - определяем желаемый интерфейс для прохождения пакета.
- Overload - выставляет метрики на интерфейсах = 65535. Если после перерасчета SPF не для dest не нашлось обходных путей, роутер будет передавать транзитный трафик.
set protocols ospf overload
© Наталия Бобкова 2014—2022