вторник, 25 июля 2017 г.

OSPFv2. E1/E2. Выбор лучшего маршрута

OSPF все никак не отпускает. Сегодня коротенько о том, как происходит выбор лучшего маршрута в случае нескольких внешних одинаковых E1 или E2 анонсов. Или "тяжелая жизнь О5"...

Для рассмотрения этого вопроса придется немного модифицировать прошлую схему. Я убрал все лишнее и добавил один линк в area 1. Теперь area0 и area1 соединяют два ABRа - O2 и O3, и в этом вся мякотка. О1 по прежнему анонсирует пачку внешних маршрутов 192.168. Более того, в area0 теперь не широковещательная среда. Я сделал PtP линки между O1-O2, O2-O3 и O3-O1. Сделано это для наглядности. Схема изображена в начале поста.

Базовый конфиг рассматривать не будем, все это уже было в упомянутом большом посте с лабой. В результате мы имеем все те же установившиеся соседства в area0 и соседство между О3 и О5 в area1.

E2 Intra-area

Для начала, добавим маршруты 192.168 как внешние с типом E2 и метрикой 10. В таком случае, стоимость такого маршрута по пути не будет меняться (писал об этом тут). Посмотрим, как будет складываться ситуация внутри одной области - area0.

Итак, О1 передает пачку LSA Type 5 в нулевую область. В их числе и "дефолтный" маршрут.

root@O1> show ospf database external
    OSPF AS SCOPE link state database
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Extern  *0.0.0.0          10.0.10.1        0x80000004     3  0x22 0x5446  36
Extern  *192.168.0.0      10.0.10.1        0x80000005     3  0x22 0xa08f  36
Extern  *192.168.1.0      10.0.10.1        0x80000005     3  0x22 0x9599  36
Extern  *192.168.2.0      10.0.10.1        0x80000005     3  0x22 0x8aa3  36
Extern  *192.168.3.0      10.0.10.1        0x80000005     3  0x22 0x7fad  36
Extern  *192.168.4.0      10.0.10.1        0x80000005     3  0x22 0x74b7  36
Extern  *192.168.5.0      10.0.10.1        0x80000005     3  0x22 0x69c1  36
Extern  *192.168.6.0      10.0.10.1        0x80000005     3  0x22 0x5ecb  36


Возьмем для примера 192.168.0.0 и проследим судьбу этого LSA. Итак, метрика равна 10, тип 2, Forwardind address по нулям. Ок.

root@O1> show ospf database external lsa-id 192.168.0.0 detail
    OSPF AS SCOPE link state database
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Extern  *192.168.0.0      10.0.10.1        0x80000006    17  0x22 0x322   36
  mask 255.255.255.255
  Topology default (ID 0)
    Type: 2, Metric: 10, Fwd addr: 0.0.0.0, Tag: 0.0.0.0


О1 рассылает такой LSA своим соседям, в итоге и О2 и О3 его получают.


Возьмем О3, например. LSA у него есть. Соответствующий маршрут установлен в таблицу маршрутизации с метрикой 10. Все как надо.

root@O3> show ospf database external lsa-id 192.168.0.0 detail
    OSPF AS SCOPE link state database
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Extern   192.168.0.0      10.0.10.1        0x80000006   101  0x22 0x322   36
  mask 255.255.255.255
  Topology default (ID 0)
    Type: 2, Metric: 10, Fwd addr: 0.0.0.0, Tag: 0.0.0.0
 

root@O3> show ospf route 192.168.0.0
Topology default Route Table:

Prefix             Path  Route      NH       Metric NextHop       Nexthop
                   Type  Type       Type            Interface     Address/LSP
192.168.0.0/32     Ext2  Network    IP           10 em6.0         10.10.7.2


Как видно в последнем выводе, маршрут ведет к О1, по кротчайшему пути. Прекрасно. Вполне логично, что при обрыве линка О1-О3 маршрут поменяется и трафик пойдет по длинному пути О3-О2-О1. Вполне логично. Но почему? Метрика нам тут не поможет...

Итак, LSA Type 5 про 192.168.0.0 доходит до О3. Глянем на него ещё разок.

root@O3> show ospf database external lsa-id 192.168.0.0 detail
    OSPF AS SCOPE link state database
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Extern   192.168.0.0      10.0.10.1        0x8000000c   708  0x22 0xf628  36
  mask 255.255.255.255
  Topology default (ID 0)
    Type: 2, Metric: 10, Fwd addr: 0.0.0.0, Tag: 0.0.0.0

Эти строки дают нашему О3 знания о том, что префикс 192.168.0.0 находится за роутером с RouterID 10.0.10.1. 

Для того чтобы понять как добраться до роутера с ID 10.0.10.1 O3 предпринимает следующие действия.

1. Находит Advertising Router в LSA Type 5, что является Router ID ASBRa.
2. Считает наиболее выгодный маршрут основываясь на LSDB в этой области до ASBRa.
3. Next-Hop в сторону ASBRa и будет подставлен в таблицу маршрутизации.

Поэтому, в случае отказа линка, таблица маршрутизации сразу поменяется. Наиболее выгодный маршрут в случае аварии до ASBRa будет лежать через О2.

E2 Inter-area

Теперь посмотрим как себя будет вести O5. Для этого потребуются ещё некоторые изменения в сети, для наглядности. Сейчас все линки в сети имеют одинаковую стоимость. Каждый линк по 1Г, а rreference-bandwidth настроен на 100Г.  Путем несложной калькуляции получаем, что каждый линк в сети имеет стоимость 100. Линки в area1 оставим без изменения, а вот в area0 линк от О2 к О1 сделаем похуже, так будет поинтересней.

root@O2# set protocols ospf area 0 interface em7.0 metric 50
root@O2# commit and-quit
commit complete
Exiting configuration mode

root@O2> show ospf interface em7.0 detail
Interface           State   Area            DR ID           BDR ID          Nbrs
em7.0               PtToPt  0.0.0.0         0.0.0.0         0.0.0.0            1
  Type: P2P, Address: 10.10.6.2, Mask: 255.255.255.252, MTU: 1986, Cost: 50
  Adj count: 1
  Hello: 10, Dead: 40, ReXmit: 5, Not Stub
  Auth type: None
  Protection type: None
  Topology default (ID 0) -> Cost: 50

Теперь имеем примерно такую картину.

Пришло время взглянуть на О5. Он получает все те же LSA Type5 с типом E2. Метрика одинаковая и равна 10. У О5 есть четыре возможных пути, два из которых проходят через линк О2 - О3. Понятно, что такой маршрут точно не будет выбран. А какой будет? Конечно же О5 - О2 - О1, что логично. И вот какой алгоритм стоит за этим простым умозаключением (чуть сложнее, чем в случае Intra-area). Посмотрим прям с командами, лишнее я буду заменять тремя точками.

1. О5 находит Advertising Router в LSA Type 5, что является Router ID ASBRa (как и в прошлом случае). В нашем случае это будет 10.0.10.1.

root@O5> show ospf database external lsa-id 192.168.0.0 detail
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Extern   192.168.0.0      10.0.10.1        0x8000000e   191  0x22 0xf22a  36
...
2. Далее О5 находит все ABR через которые доступен ASBR. Далает он это с помощью LSA Type 4. Я уже писал про этот процесс в прошлом посте. У нас есть LSA Type 4 c ID 10.0.10.1, в котором содержится.

root@O5> show ospf database asbrsummary lsa-id 10.0.10.1 detail

 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
ASBRSum  10.0.10.1        10.0.10.2        0x80000007   599  0x22 0xbd1b  28
...
  Topology default (ID 0) -> Metric: 50
ASBRSum  10.0.10.1        10.0.10.3        0x80000007   662  0x22 0xadf7  28
...
  Topology default (ID 0) -> Metric: 100

Тут становится видно, что добраться до ASBRa с RID 10.0.10.1 можно через ABR 10.0.10.2 (O2) стоимость от этого ABRa до интересующего нас ASBRa равна 50. Либо можно пойти через ABR 10.0.10.3 (О3), такой путь этот ABR оценивает уже в 100 попугаев. Это важно,  в LSA Type 4 передается стоимость от ABRа до ASBRa. Они рассказывают в других областях, что через них можно выйти из автономной системы и во сколько они это оценивают.

3. О5 считает стоимости для достижения О2 и О3 основываясь на LSDB внутри области 1. Эта информация уже есть в таблице. 

root@O5> show ospf route 10.0.10.2
Prefix             Path  Route      NH       Metric NextHop       Nexthop
                   Type  Type       Type            Interface     Address/LSP
10.0.10.2          Intra Area BR    IP          100 em2.0         10.10.1.1

root@O5> show ospf route 10.0.10.3
Prefix             Path  Route      NH       Metric NextHop       Nexthop
                   Type  Type       Type            Interface     Address/LSP
10.0.10.3          Intra Area BR    IP          100 em4.0         10.10.5.2

Стоимости одинаковые.

4. О5 складывает полученные стоимости из шага 2 и 3.
В первом случае, до 192.168.0.0 можно добраться через О2 и стоить это будет 100 + 50 = 150 попугаев.
Второй вариант - через О2 и стоить это уже будет 100 + 100 = 200. Выбор очевиден и О5 добавляет наиболее выгодный маршрут в таблицу. 

root@O5> show ospf route 192.168.0.0
Topology default Route Table:

Prefix             Path  Route      NH       Metric NextHop       Nexthop
                   Type  Type       Type            Interface     Address/LSP
192.168.0.0/32     Ext2  Network    IP           10 em2.0         10.10.1.1

Обратите внимание, метрика по прежнему равна 10, потому что это E2 маршрут.

E1

В случае E1 маршрутов, все вроде бы как проще, потому что метрика изменяется по пути. Каждый маршрутизатор добавляет свою стоимость к оригинальной метрике. Итак, сеть та же, стоимости линков те же, единственное, что мы поменяли, это тип маршрутов на E1.

Внутри одной области все совсем просто, О3 из аналогичного примера с E2 маршрутами, руководствуется все теми же принципами. Единственное, что измениться, это метрика. Теперь она складывается из оригинальной метрики (10) просуммированной со стоимостью исходящего линка.

root@O3> show ospf route 192.168.0.0
Topology default Route Table:
Prefix             Path  Route      NH       Metric NextHop       Nexthop
                   Type  Type       Type            Interface     Address/LSP
192.168.0.0/32     Ext1  Network    IP          110 em6.0         10.10.7.2

Да и в случае О5 все будет происходить аналогично примеру из E2 Intra-area.

1. О5 ищет наиболее выгодную стоимость до ближайшего ABRа, который анонсировал LSA Type 4 (в нешем случае они одинаковы).
2. Добавляет стоимости от ABRов до ASBRа.
3. И приплюсовывает оригинальную метрику.  

В таком случае, у О5 будет два маршрута на выбор 
О5-О2-О1 100+50+10 = 160
О5-О3-О1 100+100+10 = 210

Конечно же, лучший маршрут можно увидеть в таблице.

root@O5> show ospf route 192.168.0.0
Topology default Route Table:

Prefix             Path  Route      NH       Metric NextHop       Nexthop
                   Type  Type       Type            Interface     Address/LSP
192.168.0.0/32     Ext1  Network    IP          160 em2.0         10.10.1.1

Еще раз замечу, теперь метрика меняется, потому как мы работаем с E1 маршрутами.

И ещё...

Метрика всегда побеждает. Если бы у О5 было два маршрута E2, но с разной метрикой, он не стал бы заморачиваться и выбрал бы наименьшую. Более того, если сущесвтует два одинаковых маршрута в одну сеть, но с двумя разными типами, то всегда будет отдано предпочтение маршруту E1. Причем независимо от метрики.

Комментариев нет:

Отправить комментарий