Статья содержит информацию о значении, методе распространения и содержимом пакета OSPF тип LSA4 – ASBR Summary.
Contents
Вводная информация
Как вам уже вероятно известно, LSA4 является специальным типом LSA, содержащим информацию про ASBR, т.е. узла топологии OSPF, выполняющего инжектирование внешней маршрутной информации.
Но почему такой имеется только для ASBR? Почему нет никакого специального LSA для LSA1/2/5/7? Почему нельзя было сразу сделать так, чтобы не пришлось придумывать дополнительный LSA?
Ответы на этот и другие вопросы мы постараемся найти с помощью следующей GNS3-топологии:
- В качестве Router ID используется адрес интерфейсов Loopback 0 в формате X.X.X.X, где X – порядковый номер устройства. Так для устройства R4 Router ID будет – 4.4.4.4.
- IP-адреация линий связи представляет собой /24 подсети, третий октет которых указывает на номера устройств с обоих сторон линии связи типа точка-точка, а четвёртый октет равен порядковому номеру устройства. Так линия связи между устройствами R3 и R4 использовала бы подсеть – 192.168.34/24, с последним октетом .3 для R3 и .4 для R4.
- Устройства – Cisco 2691. Версия IOS – 12.4(15)T6, Advanced IP Services.
- В OSPF анонсируется информация о линиях связи. Информация о адресах Loopback-интерфейсов не анонсируется.
Инжектирование
Исходное состояние
Так как мы пытаемся исследовать поведение именно LSA4, необходимо произвести инжектирование внешней маршрутной информации в топологию OSPF.
Убедимся, что в исходном состоянии такая информацию отсутствует:
1 2 3 4 5 6 |
! R4 OSPF configuration router ospf 1 router-id 4.4.4.4 log-adjacency-changes network 192.168.24.4 0.0.0.0 area 2 ! |
А так же проверим суммарную информацию LSDB с устройства R2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
R2#show ip ospf database database-summary | begin ^P Process 1 database summary LSA Type Count Delete Maxage Router 4 0 0 Network 0 0 0 Summary Net 9 0 0 Summary ASBR 0 0 0 Type-7 Ext 0 0 0 Opaque Link 0 0 0 Opaque Area 0 0 0 Type-5 Ext 0 0 0 Prefixes redistributed in Type-5 0 Opaque AS 0 0 0 Non-self 4 Total 13 0 0 R2# |
Как видим на R4 ничего не инжектируется и на R2 мы получаем только LSA1 и LSA3.
Инжектирование внешней маршрутной информации
Создадим дополнительный петлевой интерфейс на устройстве R4 и выполним его редистрибуцию:
1 2 3 4 5 6 7 8 9 10 |
! interface Loopack 14 description # EXTERNAL # ip address 44.0.0.4 255.255.255.255 exit ! router ospf 1 redistribute connected subnets end ! |
Проверяя с устройства R4, успешное инжектирование, будет трудно пропустить факт, что никакого LSA4 не видно(!):
1 2 3 4 |
R4#show ip ospf database asbr-summary OSPF Router with ID (4.4.4.4) (Process ID 1) R4# |
А если проверить с устройства R2?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
R2#show ip ospf database asbr-summary OSPF Router with ID (2.2.2.2) (Process ID 1) Summary ASB Link States (Area 0) LS age: 598 Options: (No TOS-capability, DC, Upward) LS Type: Summary Links(AS Boundary Router) Link State ID: 4.4.4.4 (AS Boundary Router address) Advertising Router: 2.2.2.2 LS Seq Number: 80000001 Checksum: 0xEA2F Length: 28 Network Mask: /0 TOS: 0 Metric: 10 R2# |
Нашлось.
Обратите внимание, что в качестве чревовещателя сообщаемся мы сами (R2) (поднялись наверх, глянули схему, вернулись обратно) и что данный LSA числится в составе LSDB только для зоны 0.
Таким образом, то что в зоне 2 никаким LSA4 не пахнет это вовсе не баг, а “так задумано”. Хорошо хоть Link State ID, сообщает кому действительно принадлежит ответственность за инжектирование внешней маршрутной информации (4.4.4.4).
Расследование
Давайте разбираться, зачем нам этот LSA4 и кто сказал, что без него не обойтись.
Начнём с обзора ранее инжектированной маршрутной информации на другом конце топологии – устройство R3, зона 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
R3#show ip ospf database external OSPF Router with ID (3.3.3.3) (Process ID 1) Type-5 AS External Link States Routing Bit Set on this LSA LS age: 1320 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 44.0.0.4 (External Network Number ) Advertising Router: 4.4.4.4 LS Seq Number: 80000002 Checksum: 0x758 Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 20 Forward Address: 0.0.0.0 External Route Tag: 0 R3# R3#show ip route 44.0.0.4 Routing entry for 44.0.0.4/32 Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 30 Last update from 192.168.13.1 on FastEthernet0/1, 00:56:51 ago Routing Descriptor Blocks: * 192.168.13.1, from 4.4.4.4, 00:56:51 ago, via FastEthernet0/1 Route metric is 20, traffic share count is 1 R3# |
Мы видим в составе LSA5 всю необходимую информацию: и префикс (Link State ID: 44.0.0.4) и откуда пришло (Advertising Router: 4.4.4.4), а маршрут корректно добавлен в системную таблицу маршрутизации.
Какая роль, во всей этой корректой работе, отведена LSA4?
Давайте представим, что к нам не приходит LSA4. Достаточно ли информации из LSA5 чтобы провести SPF-калькуляцию и сформировать из графа валидный маршрут?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
R3#show ip ospf database external OSPF Router with ID (3.3.3.3) (Process ID 1) Type-5 AS External Link States Routing Bit Set on this LSA LS age: 869 Options: (No TOS-capability, DC) LS Type: AS External Link Link State ID: 44.0.0.4 (External Network Number ) Advertising Router: 4.4.4.4 LS Seq Number: 80000001 Checksum: 0x957 Length: 36 Network Mask: /32 Metric Type: 2 (Larger than any link state path) TOS: 0 Metric: 20 Forward Address: 0.0.0.0 External Route Tag: 0 R3# |
Мы видим,
1 |
Advertising Router: 4.4.4.4 |
, что по идее означает, что мы можем использовать этот IP в качестве next-hop и благодаря рекурсивному lookup это должно быть вполне рабочим.
Вот только маршрута к 4.4.4.4 у нас нет, согласно вводных данных по топологии – пункт 4, подстрока “Информация о адресах Loopback-интерфейсов не анонсируется”.
1 2 3 4 |
R3#show ip route 4.4.4.4 % Network not in table R3# |
Что делать? Маршрута по умолчанию у нас тоже не имеется:
1 2 3 |
R3#show ip route | inc ^Ga Gateway of last resort is not set R3# |
Официальный RFC2328 (страница 172, пункт 3), говорит следующее:
1 2 3 4 5 |
Look up the routing table entries (potentially one per attached area) for the AS boundary router (ASBR) that originated the LSA. If no entries exist for router ASBR (i.e., ASBR is unreachable), do nothing with this LSA and consider the next in the list. |
Т.е. мы проверяем каждый LSA5 и в составе каждой проверки, чтобы считать информацию приемлемой к обработке, выполняем проверку таблицы маршрутизации, на наличие в ней рабочего маршрута до того устройства, которое обозначено в LSA как Advertising Router.
Как мы обнаружили, ранее, такого маршрута у нас не имеется, т.е. данный LSA будет просто пропущен.
Вернёмся в нашу полноценную топологию, где LSA4 приходит и посмотрим на его содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
R3#show ip ospf database asbr-summary OSPF Router with ID (3.3.3.3) (Process ID 1) Summary ASB Link States (Area 1) Routing Bit Set on this LSA LS age: 1271 Options: (No TOS-capability, DC, Upward) LS Type: Summary Links(AS Boundary Router) Link State ID: 4.4.4.4 (AS Boundary Router address) Advertising Router: 1.1.1.1 LS Seq Number: 80000001 Checksum: 0x6DA6 Length: 28 Network Mask: /0 TOS: 0 Metric: 20 R3# |
Мы видим, что ближайший сосед сообщает о наличии у него информации о некоем “AS Boundary Router” с адресом 4.4.4.4 – так оно нам и надо! Т.е. мы можем поступить по аналогии с LSA3 – добавить к стоимости в LSA4 нашу стоимость до Advertising Router и поместить в таблицу маршрутизации, без необходимости выполнять какие-либо SPF-калькуляции.
Получается, что на случай если мы НЕ обладаем маршрутной информацией по достижению ASBR, который инжектировал префикс, мы всегда можем положиться на LSA4, который добродушно рассылается от соседей соседям в формате – “если что, я знаю как дойти до одного места, о котором ты и не догадываешься”.
Понятно, что обеспечивать логику, где LSA4 не будет объявлятся, в случае если мы анонсируем Loopback ASBR реализовать и сложно и бессмыслено, поэтому существует он всегда, когда появляется LSA5.
Не переключайте канал, это ещё не всё.
NSSA
К счастью, необходимость в LSA4 перестаёт быть сомнительной, а значит важным будет отметить одну особенность работы данного типа при инжектировании маршрутов из зоны NSSA.
Внесение изменений в топологию OSPF
Идеология будет сохранена и R4 будет производить инжектирование маршрутной информации.
Изменим тип зоны 2 на NSSA и уберём редистрибуцию.
1 2 3 4 5 |
! R4 router ospf 1 area 2 nssa no redistribute connected subnets ! |
1 2 3 4 |
! R2 router ospf 1 area 2 nssa ! |
Топология приняла следующий вид:
Убедимся, что донастройка прошла упешно и ничего лишнего на R3 не приходит:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
R3#show ip ospf database database-summary | section Area 1 Area 1 database summary LSA Type Count Delete Maxage Router 2 0 0 Network 0 0 0 Summary Net 2 0 0 Summary ASBR 1 0 0 Type-7 Ext 0 0 0 Prefixes redistributed in Type-7 0 Opaque Link 0 0 0 Opaque Area 0 0 0 Subtotal 5 0 0 R3# |
Эмм, а что здесь, извините, делает LSA4 (Summary ASBR)?
Мы получаем какие-то LSA5 (External)?
1 2 3 4 |
R3#show ip ospf database external OSPF Router with ID (3.3.3.3) (Process ID 1) R3# |
Не получаем.
А что за LSA4 такой?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
R3#show ip ospf database asbr-summary OSPF Router with ID (3.3.3.3) (Process ID 1) Summary ASB Link States (Area 1) Routing Bit Set on this LSA LS age: 22 Options: (No TOS-capability, DC, Upward) LS Type: Summary Links(AS Boundary Router) Link State ID: 2.2.2.2 (AS Boundary Router address) Advertising Router: 1.1.1.1 LS Seq Number: 80000001 Checksum: 0x65C0 Length: 28 Network Mask: /0 TOS: 0 Metric: 10 R3# |
Объявляет этот LSA4 наш единственный сосед, но в качестве Link State ID указан не 4.4.4.4, а 2.2.2.2.
Происходит так по нескольким причинам:
- при использовании NSSA зоны, автоматически считается, что из этой зоны будут приходить внешняя маршрутная информация. Поэтому объявление LSA4 происходит заранее;
- узел ABR, одним концом смотрящий в бэкбон (area 0), а вторым в зону NSSA сам себя коронует до ASBR, так как для всей маршрутной информации поступающей из зоны NSSA выполняет трансляцию LSA7 в LSA5, указывая в роли Advertising Router именно себя.
Ну раз мы (R2) такие “сами с усами”, то наверняка и LSA4 генерируем именно мы.
1 2 3 4 |
R2#show ip ospf database asbr-summary OSPF Router with ID (2.2.2.2) (Process ID 1) R2# |
Нет.
А кто? R1?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
R1#show ip ospf database asbr-summary OSPF Router with ID (1.1.1.1) (Process ID 1) Summary ASB Link States (Area 1) LS age: 663 Options: (No TOS-capability, DC, Upward) LS Type: Summary Links(AS Boundary Router) Link State ID: 2.2.2.2 (AS Boundary Router address) Advertising Router: 1.1.1.1 LS Seq Number: 80000001 Checksum: 0x65C0 Length: 28 Network Mask: /0 TOS: 0 Metric: 10 R1# |
При этом генерируется он только в ненулевые зоны, так как считается, что наш ABR/ASRB одним хвостом смотрит в бэкбон, т.е. все иные участники нулевой зоны итак о нём знают.
Визуальное различие представлено на рисунке ниже:
Источники
RFC2328 – OSPF Version 2