OSPF: различия между версиями

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску
м
 
(не показано 109 промежуточных версий этого же участника)
Строка 1: Строка 1:
=Overview=
{{#description2:Основы OSPF. Типы пакетов. Установление соседства. Типы Area. Типы LSA. Таймеры. Типы роутеров. Метрики/SPF. OSPFv3. Realm. backbone. stub area. nssa area. totally stub area. Информация для подготовки к экзаменам Juniper.}}
 
=Основы=
OSPF - link-state IGP протокол.
OSPF - link-state IGP протокол.


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


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


На всех роутерах одной area поддерживается одинаковая копия LSDB.
На всех роутерах одной area поддерживается одинаковая копия LSDB.
'''Policy''' можно применять на '''export''' для summary-LSA 3 (вроде).
+ export              Export policy
И только для external маршрутов на '''import'''. !!! При этом в ospf database они будут видны, но в sh route их не будет.
+ import              Import policy (for external routes or setting priority)


Иерархичный дизайн сети достигается за счет использования area, которые соединяются посредством backbone area.
Иерархичный дизайн сети достигается за счет использования area, которые соединяются посредством backbone area.
Dijkstra рассчитывается только в рамках одной area (на основании одной LSDB, которая едина в рамках одной area).
Summary metric для dest = сумме outgoing interface metrics.


На бродкаст сегменте выбирается DR (наиб приоритет, затем наиб router ID), который занимается флудом LSA внутри area. Для роутеров не в бродкастном сегменте, подключенных через Ethernet, включаем ''interface-type p2p'', чтобы на этом линке не проводились выборы DR и чтобы уменьшить время сходимости.
На бродкаст сегменте выбирается DR (наиб приоритет, затем наиб router ID), который занимается флудом LSA внутри area. Для роутеров не в бродкастном сегменте, подключенных через Ethernet, включаем ''interface-type p2p'', чтобы на этом линке не проводились выборы DR и чтобы уменьшить время сходимости.
Строка 16: Строка 28:
Отправляются на адрес 224.0.0.5 каждые 10 сек. Содержит в себе поля: network mask, hello interval, dead interval, options, (router priority, designated router, backup designated router, neighbor).
Отправляются на адрес 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.
'''Database description (DD)''' - используется только во время установления соседства. Определяет кто отвечает за синхронизацию LSDB (выбирается роутер с бОльшим RID). Обменивается LSA до полной синхронизации. Содержит: ospf header, sequence number, lsa header.


'''Link-state request''' - отправляется роутером, когда тот понимает, что LSBD устарела. Содержит: ospf header, link-state type, link-state ID, advertising router.
'''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, либо если меняется информация о состоянии линка. Содержит: ospf header, numbers of advertisement, link-state avertisement.
'''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.
'''Link-state acknowledgment''' - ответ на link-state update. Содержит: ospf header, list of LSA headers.


=Установление соседства=
=Установление соседства=
Соседи используют hello пакета для установления и поддержания соседства.
Соседи используют hello пакеты для установления и поддержания соседства.
 
'''1. Down'''


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


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


Если маршрутизатор не переходит в состояние 2-Way, а скачет - down-Init-down-init...
Если маршрутизатор не переходит в состояние 2-Way, а скачет - down > init > down > init...
вероятно на маршрутизаторах не совпали параметры:  
вероятно на маршрутизаторах не совпали параметры:  
  Area ID
  Area ID
Строка 43: Строка 53:
  Router Dead Interval
  Router Dead Interval
  Options fields
  Options fields
 
либо до удаленного маршрутизатора не доходят ваши сообщения hello  
Либо до удаленного маршрутизатора не доходят ваши сообщения hello  
(причиной могут быть неверно настроенные фаерволы)
(причиной могут быть неверно настроенные фаерволы)


'''3. 2-Way'''
*'''2-Way'''
 
В hello-packet в списке соседей появился RID роутера, получившего этот пакет.
В hello-packet в списке соседей появился router-id маршрутизатора, получившего этот пакет.
 
'''4. ExStart'''


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


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


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


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


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


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


*'''Full'''
Соседство установлено, LSDB синхронизированы.
Соседство установлено, LSDB синхронизированы.
Последующие изменения в топологии передаются через сообщения link-state update,
Последующие изменения в топологии передаются через сообщения link-state update,
в ответ приходят link-state acknowledgment (в кач-ве подтверждения о доставке).
в ответ приходят link-state acknowledgment (в кач-ве подтверждения о доставке).
=Таймеры=
*Hello interval - установление и поддержание соседства = 10sec для broadcast и p2p networks; 30 sec - для nonbroadcast multiple access (NBMA).
*Dead - интервал, в течение которого не приходит hello, чтобы считать соседа неоперабельным = 40 sec.
*LSA retransmission interval - когда роутер отправил LSA, он ждет 5 sec ответа от соседа, что LSA получен (LSA ACK). Если ACK не пришел - делается повторная передача LSA.
*Transit-delay - устанавливает время, необходимое для передачи link-state update на интерфейсе = 1sec. Менять дефолтное значение не советуется.
*LSA refresh - интервал обновления LSA = 50min. Если LSA не обновилась через 60min, то инфо о ней считается устаревшей и она пропадает из LSDB.
{{note|text=Когда делаешь ''clear ospf database purge'' как раз всем LSA устанавливается LSA refresh interval 60min (3600sec) и неактуальные сразу же сбрасываются.}}
Кстати, у по дефолту НЕ у Juniper LSA refresh interval = 30min.


=Роутеры=
=Роутеры=
*'''ABR (Area border router)''': OSPF роутер, имеющий линки в двух area - соединяет и распространите инфо из OSPF area в backbone.
*'''ABR (Area border router)''': OSPF роутер, имеющий линки в двух area - соединяет и распространите инфо из OSPF area в backbone.
*'''ASBR (AS boundary router)''': может находиться внутри backbone или других area. Имеет подключения к другим external routing protocols и распространяет эту инфу по сети.  
*'''ASBR (AS boundary router)''': может находиться как внутри backbone или других area. Имеет подключения других external routing protocols и распространяет эту инфу по сети.  
*'''Backbone''': все линки внутри backbone area.
*'''Backbone''': хотя бы один линк внутри backbone area.
*'''Internal''': все линки внутри одной area, backbone - частный случай internal.
*'''Internal''': все линки внутри одной area, backbone - частный случай internal.


=Метрики/SPF=
outside the area (INTER-area routing)
*Внутренние маршруты area (intra-area) juniper preference = 10
*Внешние маршруты (inter-area) juniper external-preference = 150
{{note|text=Метрика будет сравниваться только у маршрутов одного типа. Поэтому не всегда можно гарантировать forwarding согласно метрики. Не забываем про тип маршрута!}}
external metrics - применяются к префиксам из других AS.
*TYPE 1 - учитывается external cost + cost в пути до граничного маршрутизатора.
*TYPE 2 - учитывается только external cost. Этот тип используется по дефолту.
TYPE1 приоритетнее TYPE2. Далее учитывается стоимость самой метрики - чем меньше, тем приоритетнее.
*reference-bandwidth - дефолтной расчет метрики из емкости интерфейса: cost = ref-bandwidth/bandwidth. По умолчанию ref-bandwidth = 100Mbit. Можно настроить свое значение, глобально для протокола.
set protocols ospf reference-bandwidth 10g
Если устанавливаем metric вручную на интерфейсе, то дефолтное поведение перебивается для данного интерфейса.


=Типы Area=
=Типы Area=
Ненулевые area могут иметь один и тот же номер area, но такой подход - не правильный. При этом разные area с одним area-id не будут никогда считать себя одним сегментом сети.
area-id не передаются в LSA.
Если разбирать самые стандартные area (не stub, nssа и прочее):
*area1 - area0 - area3 - ok. У всех area будет полная картина сети.
*area1 - area2 - area3 - ok,  только area2 будет иметь маршруты всей сети, а area1 и area3 будут иметь только свои маршруты + маршруты area2.
*area1[1] - area0 - area1[2] - ok, НО конечно area1[1] будет видеть area1[2] как LSA3. Такой себе вариант.
==backbone==
==backbone==
Area 0 (к ней в обязательном порядке должны подключаться остальные area).
Area 0 (к ней в обязательном порядке должны подключаться остальные area).
Но если area не имеет прямого физического подключения к backbone area, то она может соединяться с ней через virtual-link.


==stub area==
==stub area==
Обменивается маршрутами по ospf с ABR, не содержит с себе external routes, не принимает от ABR external routes. (не принимает LSA 4,5). Доступность внешних маршрутов достигается анонсированием 0/0 со стороны ABS в сторону stub-area.
Обменивается маршрутами по ospf с ABR (LSA 3), не содержит с себе 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


  [edit protocols ospf area 0.0.0.1]
Чтобы появился 0/0, на ABR настраиваем:
  mortlach# set stub
  [edit protocols ospf area 0.0.0.20 stub]
  +    default-metric 10;


==stub with no summaries==
==stub with no summaries (totally stub)==
В неё не анонсируется вообще никаких LSA. Доступность маршрутов из остальных area достигается тем же анонсированием 0/0 со стороны ABS в сторону totally stub-area.
В неё не анонсируется вообще никаких LSA. В area не вставляются LSA 3, 4, 5. По area гуляют только LSA 1 и LSA 2 [no-summaries как раз намекает на отсутствие LSA3]. Доступность маршрутов из остальных area достигается тем же анонсированием 0/0 со стороны ABR в сторону totally stub-area. И ASBR не флудит external routes в такой area. Также virtual-link не поддерживается в такой area.


  [edit protocols ospf area 0.0.0.1]
  [edit protocols ospf area 0.0.0.20]
  mortlach# set stub no-summaries
  stub default-metric 10 no-summaries;


==not-so-stubby==
==not-so-stubby==
Обменивается маршрутами по ospf с ABR, содержит external routes, НО не принимает external routes от ABR. (не принимает LSA 4,5)
Обменивается OSPF-маршрутами с ABR (LSA3), может содержать external routes (ASBR) - НО! в этой area external = LSA7 (NSSA). Не принимает external routes от ABR. (не принимает LSA 4,5). Внешние ресурсы также через 0/0 на ABR.
 
Конфигурация 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


  [edit protocols ospf area 0.0.0.1]
Чтобы при настроенном ''no-summaries'' 0/0 прилетал все же как LSA 7, то добавляем в конце '''type-7''':
  mortlach# set 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  '''3600'''  0x20 0xae65  28
  NSSA    0.0.0.0          10.200.86.1      0x80000001    5  0x20 0x8681  36


=Типы LSA=
=Типы LSA=
'''Type 1 LSA (Router)''' — Описывают сам маршрутизатор и его интерфейсы. Не передаются между Area.
Все типы имеют одинаковый '''заголовок''':
*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. LSA1 = area scope.
 
*'''Type 2 LSA (Network)''' — Отправляются DR. Описывает роутеры, подключенные в бродкаст сегменте + сам себя. Не передаются между area. В выводе ''sh ospf database'': ID = DR, attached router = роутеры в бродкаст сегменте.


'''Type 2 LSA (Network)''' — Описывают сети, подключенные к маршрутизатору. Не передаются между Area.
*'''Type 3 LSA (Summary)''' — Отправляются ABR. Описывают сети, которые маршрутизатор получил из предыдущих типов LSA, и передает между Area. LSA будет флудиться каждому роутеру внутри area. ABR, получив LSA3 не перешлет ее другому ABR, а сгенерирует на основании полученной LSA3, LSA1, 2 новую LSA3, и уже ее передаст в соседние area. LSA3 = area scope.
{{note|text=Summary не означает агрегирование! ABR передает один в один LSA1 и LSA2 в другую area без какой-либо агрегации/суммаризации по дефолту.}}


'''Type 3 LSA (Summary)''' — Описывают сети, которые маршрутизатор получил из предыдущих типов LSA, но передаются между Area.
*'''Type 4 LSA (ASBR Summary)''' — Генерируются ABR, LSA содержит описание самих ASBR роутеров. В выводе ''sh ospf database'': ID = ASBR router.


'''Type 4 LSA (ASBR Summary)''' — Генерируются маршрутизаторами (ASBR), в которые попадают маршруты из других протоколов, чтобы описать себя.
*'''Type 5 LSA (External)''' — Описывают сети, полученные из других протоколов маршрутизации ASBR-ами. Рассылаются ими же. В выводе ''sh ospf database'': ID + mask = external networks.


'''Type 5 LSA (External)''' — Описывают сети, полученные из других протоколов маршрутизации ASBR-ами. Рассылаются ими же.
*'''Type 6 LSA (Group membership)''' — Не используется, некогда планировался под MOSPF.


'''Type 6 LSA''' — Не используется, некогда планировался под MOSPF.
*'''Type 7 LSA (NSSA External)''' — Генерируются ASBR-ами в NSSA. Передаются только внутри NSSA. Но на выходе из зоны ABR-ами транслируются в LSA Type 5. В выводе ''sh ospf database'': ID + mask = external networks.


'''Type 7 LSA (NSSA External)''' — Генерируются ASBR-ами в NSSA, на выходе из зоны транслируются ABR-ами в LSA Type 5.
*'''Type 9 (Graceful restart)''' - поддерживает graceful restart.


'''Type 10 LSA (Traffic Engineering)''' — Содержат информацию, которая в последствии находится в TED и используется при работе CSPF-алгоритма.
*'''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 7 (external in nssa) - только внутри nssa area.
 
Время жизни каждой 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, то роутер сможет установить несколько соседств в каждой сети одновременно.
*'''Broadcast''' - поведение аналогично тому, когда router включен в LAN сегмент. То есть дополнительно производится выбор DR, BDR среди роутеров. И если на интерфейсе висит несколько ip, то роутер сможет установить несколько соседств в каждой сети одновременно.
*'''Point to point (p2p)''' - соединение между одним source и одним destination. Возможно установление только '''одного''' соседства с такого типа интерфейса. Можно назначать на ethernet интерфейсы без IP адресов.
*'''Point to point (p2p)''' - соединение между одним source и одним destination. Возможно установление только '''одного''' соседства с такого типа интерфейса. Можно назначать на ethernet интерфейсы без IP адресов.
*'''Point to multipoint (p2mp)''' - соединение между одним source и несколькими destination. Сеть рассматривается как набор p2p линков. Т.к. нет autodiscovery механизма, от обязательно указывать соседа.
*'''Point to multipoint (p2mp)''' - соединение между одним source и несколькими destination. Сеть рассматривается как набор p2p линков. Т.к. нет autodiscovery механизма, от обязательно указывать соседа.
*'''Nonebroadcast multiaccess (NBMA)''' - работает как p2mp, но может взаимодействовать с другим оборудованием.
*'''Nonebroadcast multiaccess (NBMA)''' - работает как p2mp, но может взаимодействовать с другим оборудованием.
*'''Demand circuit''' - соединение на котором можно ограничить полосу или время доступа.
*'''Demand circuit''' - соединение на котором можно ограничить полосу или время доступа.
*'''Passive''' - передает свой адрес, но не участвует в установлении OSPF соседства и вообще не обменивается hello-сообщениями. Также в passive можно использовать инфо об интерейсе и его сетях для TE вычислений.
*'''Passive''' - анонсирует адреса на интерфейсе, но не участвует в установлении OSPF соседства и вообще не обменивается hello-сообщениями. Также в passive можно использовать инфо об интерфейсе и его сетях для TE вычислений.
*'''Disable''' - не участвует в OSPF и не передает о себе инфо в LSDB
*'''Disable''' - не участвует в OSPF и не передает о себе инфо в LSDB
*'''Peer (для OSPFv2)''' - требуется GMPLS
*'''Peer (для OSPFv2)''' - требуется GMPLS
Строка 142: Строка 282:


=Другие фичи=
=Другие фичи=
*Аутентификация: простая, MD5, IPSec.
*Аутентификация: простая (plain-text, simple), MD5, none. и еще IPSEC.
*Суммирование маршрутов, прилетающих в update сообщениях от других area.
:*simple - только один ключ. По сути просто не дает левому роутеру подключиться к твоему ospf домену, из-за использованиях хоть такого метода защиты. Но ключ не шифруется. Так что только MD5, только безопасность!
:*md5 - можно использовать несколько ключей. Менять их по времени. Каждый md5 key - с уникальным id. По id определяется какой md5 key использовать.
 
*Суммирование маршрутов (area-range), прилетающих в 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
{{note|text=!!!Такой метод будет работать только для '''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, то настраиваем:
  set protocols ospf area 4 nssa default-lsa type-7
 
*Можно ограничить кол-во перфиксов, экспортируемых в OSPF.
*Можно ограничить кол-во перфиксов, экспортируемых в OSPF.
*GRES возможен.
*GRES возможен.
*BFD (Bidirectional Forwarding Detection) можно использовать для сокращения времени обнаружения аварии между роутерами.
*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
*Topologies - можно использовать разные топологии для ipv4 unicast и ipv6 multicast. Для мультикаста и для юникаста с помощью метрик по-разному направлять трафик.
set protocols ospf topology ipv4-multicast
set protocols ospf area 0.0.0.0 interface xe-0/0/1.2056 metric 40
set protocols ospf area 0.0.0.0 interface xe-0/0/1.2056 topology ipv4-multicast metric 500
*Traffic-engineering (MPLS):
По дефолту выключен. Включаем, чтобы LSP участвовали как линки при расчёте SPF. Также в LSA теперь будут заноситься параметры traffic-engineering'a:
set protocols ospf traffic-engineering
*Traceoptions - как и для всех протоколов можно включить для диагностики
set protocols ospf traceoptions file ospf-log
set protocols ospf traceoptions file size 10m
set protocols ospf traceoptions file files 10
set protocols ospf traceoptions flag state detail
set protocols ospf traceoptions flag error detail
*Virtual-link. Как уже описывалось ранее, каждая area должна быть соединена с backbone area. Если у роутера нет физического линка до backbone, то делаем соединение через virtual-link.
В настройках всего 2 параметра: - ''transit-area'', ''neighbor-id''.
[[Файл:Ospf-virtual-link.png|600px]]
R8: set protocols ospf area 0 virtual-link transit-area 1 neighbor-id 172.30.5.7
virtual-link в SPF считается за обычный линк. Дополнительной стоимости не добавляет.
При этом, если у нас есть подобное включение: R1 (area 5) <> R2 (area 6) <> R3 (area 7). То area 5 и area 7 не будут видеть префиксы друг друга (будут видеть только area 6). А area 6 будет получать префиксы всех area.
То есть любая другая '''area не 0''' будет принимать LSDB от других area, но не передавать другим area. В отличие от Backbone. Backbone работает как RR :) А остальные как IBGP соседи. :)
=OSPFv3=
OSPF3 router-id, area-id, LSA link-state ID - взяты из OSPFv2, то есть имеют тот же формат: IPV4 = 32bit.
ROUTER ID = 172.30.5.4
AREA ID = 0.0.0.1
link state ID = 0.0.0.0, 0.0.0.1, 0.0.0.2, ...
По принципу работы не отличается от 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.0      - IPv6
set protocols ospf3 realm ipv4-unicast area 0.0.0.0 interface fe-0/1/0.0 - IPv4
set interfaces fe-0/1/0 unit 0 family inet6
=Дополнительная информация=
*[[IS-IS]]
*[[BGP]]
*[[L3VPN]]

Текущая версия на 10:41, 18 июля 2021


Основы

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

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

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

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

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

+ 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) - используется только во время установления соседства. Определяет кто отвечает за синхронизацию LSDB (выбирается роутер с бОльшим 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 (в кач-ве подтверждения о доставке).

Таймеры

  • Hello interval - установление и поддержание соседства = 10sec для broadcast и p2p networks; 30 sec - для nonbroadcast multiple access (NBMA).
  • Dead - интервал, в течение которого не приходит hello, чтобы считать соседа неоперабельным = 40 sec.
  • LSA retransmission interval - когда роутер отправил LSA, он ждет 5 sec ответа от соседа, что LSA получен (LSA ACK). Если ACK не пришел - делается повторная передача LSA.
  • Transit-delay - устанавливает время, необходимое для передачи link-state update на интерфейсе = 1sec. Менять дефолтное значение не советуется.
  • LSA refresh - интервал обновления LSA = 50min. Если LSA не обновилась через 60min, то инфо о ней считается устаревшей и она пропадает из LSDB.

Когда делаешь clear ospf database purge как раз всем LSA устанавливается LSA refresh interval 60min (3600sec) и неактуальные сразу же сбрасываются.

Кстати, у по дефолту НЕ у Juniper LSA refresh interval = 30min.

Роутеры

  • 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.

Метрики/SPF

outside the area (INTER-area routing)

  • Внутренние маршруты area (intra-area) juniper preference = 10
  • Внешние маршруты (inter-area) juniper external-preference = 150

Метрика будет сравниваться только у маршрутов одного типа. Поэтому не всегда можно гарантировать forwarding согласно метрики. Не забываем про тип маршрута!

external metrics - применяются к префиксам из других AS.

  • TYPE 1 - учитывается external cost + cost в пути до граничного маршрутизатора.
  • TYPE 2 - учитывается только external cost. Этот тип используется по дефолту.

TYPE1 приоритетнее TYPE2. Далее учитывается стоимость самой метрики - чем меньше, тем приоритетнее.

  • reference-bandwidth - дефолтной расчет метрики из емкости интерфейса: cost = ref-bandwidth/bandwidth. По умолчанию ref-bandwidth = 100Mbit. Можно настроить свое значение, глобально для протокола.
set protocols ospf reference-bandwidth 10g

Если устанавливаем metric вручную на интерфейсе, то дефолтное поведение перебивается для данного интерфейса.

Типы Area

Ненулевые area могут иметь один и тот же номер area, но такой подход - не правильный. При этом разные area с одним area-id не будут никогда считать себя одним сегментом сети.

area-id не передаются в LSA.

Если разбирать самые стандартные area (не stub, nssа и прочее):

  • area1 - area0 - area3 - ok. У всех area будет полная картина сети.
  • area1 - area2 - area3 - ok, только area2 будет иметь маршруты всей сети, а area1 и area3 будут иметь только свои маршруты + маршруты area2.
  • area1[1] - area0 - area1[2] - ok, НО конечно area1[1] будет видеть area1[2] как LSA3. Такой себе вариант.

backbone

Area 0 (к ней в обязательном порядке должны подключаться остальные area).

Но если area не имеет прямого физического подключения к backbone area, то она может соединяться с ней через virtual-link.

stub area

Обменивается маршрутами по ospf с ABR (LSA 3), не содержит с себе 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 3, 4, 5. По area гуляют только LSA 1 и LSA 2 [no-summaries как раз намекает на отсутствие LSA3]. Доступность маршрутов из остальных area достигается тем же анонсированием 0/0 со стороны ABR в сторону totally stub-area. И 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 (LSA3), может содержать external routes (ASBR) - НО! в этой area external = LSA7 (NSSA). Не принимает external routes от ABR. (не принимает LSA 4,5). Внешние ресурсы также через 0/0 на ABR.

Конфигурация 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. LSA1 = area scope.
  • 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. LSA3 = area scope.

Summary не означает агрегирование! ABR передает один в один LSA1 и LSA2 в другую 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 7 (external in nssa) - только внутри nssa area.

Время жизни каждой 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

Если на маршрутизаторах указаны разные типы интерфейсов, то они между собой соседство не поднимут.

Другие фичи

  • Аутентификация: простая (plain-text, simple), MD5, none. и еще IPSEC.
  • simple - только один ключ. По сути просто не дает левому роутеру подключиться к твоему ospf домену, из-за использованиях хоть такого метода защиты. Но ключ не шифруется. Так что только MD5, только безопасность!
  • md5 - можно использовать несколько ключей. Менять их по времени. Каждый md5 key - с уникальным id. По id определяется какой md5 key использовать.
  • Суммирование маршрутов (area-range), прилетающих в 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, то настраиваем:
 set protocols ospf area 4 nssa default-lsa type-7
  • Можно ограничить кол-во перфиксов, экспортируемых в 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
  • Topologies - можно использовать разные топологии для ipv4 unicast и ipv6 multicast. Для мультикаста и для юникаста с помощью метрик по-разному направлять трафик.
set protocols ospf topology ipv4-multicast
set protocols ospf area 0.0.0.0 interface xe-0/0/1.2056 metric 40
set protocols ospf area 0.0.0.0 interface xe-0/0/1.2056 topology ipv4-multicast metric 500
  • Traffic-engineering (MPLS):

По дефолту выключен. Включаем, чтобы LSP участвовали как линки при расчёте SPF. Также в LSA теперь будут заноситься параметры traffic-engineering'a:

set protocols ospf traffic-engineering
  • Traceoptions - как и для всех протоколов можно включить для диагностики
set protocols ospf traceoptions file ospf-log
set protocols ospf traceoptions file size 10m
set protocols ospf traceoptions file files 10
set protocols ospf traceoptions flag state detail
set protocols ospf traceoptions flag error detail
  • Virtual-link. Как уже описывалось ранее, каждая area должна быть соединена с backbone area. Если у роутера нет физического линка до backbone, то делаем соединение через virtual-link.

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

Ospf-virtual-link.png

R8: set protocols ospf area 0 virtual-link transit-area 1 neighbor-id 172.30.5.7

virtual-link в SPF считается за обычный линк. Дополнительной стоимости не добавляет.

При этом, если у нас есть подобное включение: R1 (area 5) <> R2 (area 6) <> R3 (area 7). То area 5 и area 7 не будут видеть префиксы друг друга (будут видеть только area 6). А area 6 будет получать префиксы всех area.

То есть любая другая area не 0 будет принимать LSDB от других area, но не передавать другим area. В отличие от Backbone. Backbone работает как RR :) А остальные как IBGP соседи. :)

OSPFv3

OSPF3 router-id, area-id, LSA link-state ID - взяты из OSPFv2, то есть имеют тот же формат: IPV4 = 32bit.

ROUTER ID = 172.30.5.4

AREA ID = 0.0.0.1

link state ID = 0.0.0.0, 0.0.0.1, 0.0.0.2, ...

По принципу работы не отличается от 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.0      - IPv6
set protocols ospf3 realm ipv4-unicast area 0.0.0.0 interface fe-0/1/0.0 - IPv4
set interfaces fe-0/1/0 unit 0 family inet6

Дополнительная информация