OSPF

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску

Overview

OSPF - link-state IGP протокол.

Hello пакеты для установления и поддержания соседства.

OSPF флудит LSA (IP 89 порт, 224.0.0.5 адрес) во все порты OSPF, кроме того, с которого прилетела LSA. С помощью LSA на каждом роутере строится топология сети и на основании этих данных затем производится рассчет кратчайшего пути.

На всех роутерах одной area поддерживается одинаковая копия LSDB.

Policy можно применят на export для summary (вроде).

+ export               Export policy

И только для external маршрутов на import. !!! При этом в ospf database они будут видны, но в sh route их не будет.

+ import               Import policy (for external routes or setting priority)

Иерархичный дизайн сети достигается за счет использования 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 пакеты для установления и поддержания соседства.

  • Down

Самое начало, ничего не происходит.

  • Init

В hello-packet в списке соседей нет router-id маршрутизатора, получившего этот пакет.

Если маршрутизатор не переходит в состояние 2-Way, а скачет - down-Init-down-init... вероятно на маршрутизаторах не совпали параметры:

Area ID
Authentication
Network Mask
Hello Interva
Router Dead Interval
Options fields

Либо до удаленного маршрутизатора не доходят ваши сообщения hello (причиной могут быть неверно настроенные фаерволы)

  • 2-Way

В hello-packet в списке соседей появился RID роутера, получившего этот пакет.

  • ExStart

Выборы DR и BDR маршрутизаторов производятся в момент первоначальной установки соседских отношений по следующим правилам:

  • Роутер с наибольшим приоритетом становится DR;
  • Роутер со вторым по величине приоритетом становится BDR;
  • Если роутеры имеют равный приоритет, то в качестве DR выбирается роутер с наибольшим RID, BDR выбирается роутер со вторым по величине RID;
  • Роутер, с приоритетом равным нулю, не принимает участия в выборах DR и BDR;
  • Если после выбора DR и BDR в сегменте сети добавляется роутер с более высоким приоритетом или бОльшим RID, то повторные выборы не производятся;
  • Повторные выборы производятся только после того как DR или BDR становится недоступными.

(Происходит обмен сообщениями DD (database descr), где заполнены только поля: router-id, neighbors, mtu.

Если маршрутизатор не переходит в следующее состояние, то вероятнее всего причина в несовпадении mtu на физических интерфейсах.

  • ExChange

Процесс обмена LSDB с помощью сообщений DD (database descr) (локальной базой маршрутов, их метриками, состояний линков)

  • Loading

Обмен сообщениями link-state request, link-state update. На каждом маршрутизаторе должна быть одинаковая LSDB. (Каждый роутер восполняет недостающие знания о новых маршрутах)

  • 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.20]
+ stub

Чтобы анонсировать 0/0, на ABR настраиваем:

[edit protocols ospf area 0.0.0.20 stub]
+     default-metric 10;

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.20]
+  stub default-metric 10 no-summaries;

not-so-stubby

Обменивается маршрутами по ospf с ABR, содержит external routes (ASBR), НО не принимает external routes от ABR. (не принимает LSA 4,5)

Конфигурация nssa делается на каждом роутере внутри area.

[edit protocols ospf area 0.0.0.30]
+nssa

на ABR:

   OSPF database, Area 0.0.0.30
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Router  *10.200.86.1      10.200.86.1      0x80000002    35  0x20 0xe809  48
Router   10.200.86.3      10.200.86.3      0x80000004    36  0x20 0xbdba  72
Router   10.200.86.9      10.200.86.9      0x80000004    42  0x20 0xabe2  48
Network  192.168.86.37    10.200.86.9      0x80000001    42  0x20 0xf1d7  32
Summary *10.100.86.8      10.200.86.1      0x80000001   129  0x20 0x67ad  28
...
Summary *192.168.86.48    10.200.86.1      0x80000001   129  0x20 0x3fb6  28
NSSA     172.16.0.0       10.200.86.9      
NSSA     172.16.1.0       10.200.86.9      - пришло от ASBR (LSA7) внутри area
NSSA     172.16.2.0       10.200.86.9      
   OSPF AS SCOPE link state database
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Extern  *172.16.0.0       10.200.86.1      
Extern  *172.16.1.0       10.200.86.1      - сгенерировал ABR (LSA7 -> LSA5) и послал в area0 
Extern  *172.16.2.0       10.200.86.1

Анонс 0/0 настраивается на ABR:

[edit protocols ospf area 0.0.0.30 nssa]
+      default-lsa default-metric 1;

Смотрим, что прилетело от ABR в NSSA area:

   OSPF database, Area 0.0.0.30
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
NSSA     0.0.0.0          10.200.86.1      0x80000001    50  0x20 0x8681  36

Если на ABR добавляем no-summaries, то 0/0 прилетит как LSA3 (а не LSA7 (NSSA)):

   OSPF database, Area 0.0.0.30
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Summary  0.0.0.0          10.200.86.1      0x80000001     3  0x20 0xae65  28
NSSA     0.0.0.0          10.200.86.1      0x80000001  3600  0x20 0x8681  36

Чтобы при настроенном no-summaries 0/0 прилетал все же как LSA 7, то добавляем в конце type-7:

   OSPF database, Area 0.0.0.30
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Summary  0.0.0.0          10.200.86.1      0x80000001  3600  0x20 0xae65  28
NSSA     0.0.0.0          10.200.86.1      0x80000001     5  0x20 0x8681  36

Типы 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 сообщениях в backbone от других area.
  • Если после сети добавить restrict, то сети не просуммируются, а перестанут передаваться в backbone. То есть будет не передан и summary route и все вложенные в него сети.
  • override-metric, то можно перезаписать значение ospf-метрики или ее тип.
  • exact - проадвертайзит только если в таблице маршрутизация будет четко такой же префикс.

Настраивается только на ABR. Здесь из area 10 будет передаваться суммированный маршрут в backbone:

[edit protocols ospf area 0.0.0.10]
+     area-range 192.168.86.0/24 [restrict|override-metric| exact];

Сразу после применения видно, что маршруты, сгенерированные ABR, и отправленные в area0 - скоро отвалятся.

   OSPF database, Area 0.0.0.0
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Router   10.200.86.1      10.200.86.1      0x80000027   490  0x22 0x82a8  72
Router   10.200.86.2      10.200.86.2      0x80000016   312  0x22 0x74d9  84
Router  *10.200.86.6      10.200.86.6      0x80000019     2  0x22 0xbe08  72
Network *192.168.86.10    10.200.86.6      0x8000000a   596  0x22 0xa839  32
Summary *10.200.86.5      10.200.86.6      0x80000007  2170  0x22 0x9246  28
Summary *10.200.86.7      10.200.86.6      0x80000007  2034  0x22 0x884d  28
Summary  10.200.86.9      10.200.86.1      0x80000002  1185  0x22 0x9c41  28
Summary *192.168.86.0     10.200.86.6      0x80000001     2  0x22 0x1537  28
Summary *192.168.86.4     10.200.86.6      0x80000007  3600  0x22 0xc481  28
Summary  192.168.86.24    10.200.86.1      0x8000000f   385  0x22 0xa25   28
Summary *192.168.86.28    10.200.86.6      0x80000008  3600  0x22 0xdb50  28
Summary  192.168.86.36    10.200.86.1      0x80000002  1185  0x22 0xb579  28
!!!Такой метод будет работать только для summary LSA. Для суммирования external LSA можно сделать area 30 NSSA area и тогда area-range сработает (пример ниже), либо на роутере area3 создавать aggregate route и делать его export в protocols ospf.
  • Суммирование маршрутов от NSSA (LSA 7): аналогично работает и добавление restrict и override-metric и exact:
[edit protocols ospf area 0.0.0.10 nssa]
+      area-range 172.16.0.0/22;

До

    OSPF database, Area 0.0.0.10
NSSA    *0.0.0.0          10.200.86.1      0x80000003   112  0x20 0x67f   36
NSSA     172.16.0.0       10.200.86.9      0x80000002  2485  0x28 0x88ff  36
NSSA     172.16.1.0       10.200.86.9      0x80000002  1886  0x28 0x7d0a  36
NSSA     172.16.2.0       10.200.86.9      0x80000002  1287  0x28 0x7214  36
   OSPF AS SCOPE link state database
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Extern  *172.16.0.0       10.200.86.1      0x80000004     5  0x22 0x6d5d  36
Extern  *172.16.1.0       10.200.86.1      0x80000003  3600  0x22 0x2274  36
Extern  *172.16.2.0       10.200.86.1      0x80000003  3600  0x22 0x177e  36

После:

   OSPF database, Area 0.0.0.10
NSSA    *0.0.0.0          10.200.86.1      0x80000003   201  0x20 0x67f   36
NSSA     172.16.0.0       10.200.86.9      0x80000002  2574  0x28 0x88ff  36
NSSA     172.16.1.0       10.200.86.9      0x80000002  1975  0x28 0x7d0a  36
NSSA     172.16.2.0       10.200.86.9      0x80000002  1376  0x28 0x7214  36
   OSPF AS SCOPE link state database
Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len 
Extern  *172.16.0.0       10.200.86.1      0x80000004    94  0x22 0x6d5d  36

  • По дефолту в nssa будут передаваться LSA3 (summary) маршруты. Если нужно, LSA3 заменить на LSA7, то настраиваем:
 r> show configuration protocols ospf area 4 
nssa {
   default-lsa {
       type-7;
   no-summaries;}
  • Можно ограничить кол-во перфиксов, экспортируемых в 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
  • virtual-link. Как уже описывалось ранее, каждая area должна быть соединена с backbone area. Если у роутера нет физического линка до backbone, то делаем соединение через virtual-link.

В настройках всего 2 параметра: - transit-area, neighbor-id.

Ospf-virtual-link.png

OSPFv3

По принципу работы не отличается от OSPFv2, но все же есть некоторый отличия:

  • В OSPF3 все информаци о соседях представлена в виде router-ID (lo0.0 inet address).
  • OSPF работает по линкам, а не по сетям.
  • OSPF3 LSA1, LSA2 не передают никакой информации о сетях (prefix).
  • Включены 2 новых типа LSA: link-LSA и intra-area-prefix-LSA. Стандартные LSA 3, 4 превратились в inter-area-prefix-LSA и inter-area-router-LSA.
  • OSPF3 использует link-local address для обмена сообщениями между соседями (за исключением virtual-link).
  • Для аутентификации используется IPv6 authentification header.

Intra-area-prefix-LSA: передает internal prefix, требуется, т.к. LSA 1, 2 передают только инфо о топологии.

Link-LSA: передает link-local address и сети, прикрепленные к этому link.

Config

[edit]
routing-options {
	router-id 10.200.86.1;}
[edit protocols]
ospf3 {
	area 0.0.0.0 {
   		interface ge-0/0/0.80 {
		interface lo0.0 {
			passive; }
	area 0.0.0.30 {
		interface ge-0/0/0.110 }}
show ospf3 interface
show ospf3 neighbor
show ospf3 database
show route protocol ospf3

Realm

  • По дефолту OSPFv3 передает инфо только о IPv6 unicast маршрутах. Чтобы OSPFv3 мог передавать и другие family, в том числе и IPv4 unicast, IPv4 multicast, IPv6 multicast, включаем realm:
set protocols ospf3 area 0.0.0.0 interface fe-0/1/0      - IPv6
set protocols ospf3 realm ipv4-unicast area 0.0.0.0 interface fe-0/1/0 - IPv4
set interfaces fe-0/1/0 unit 0 family inet6