OSPF: типы LSA (Link-State Advertisements)

Прежде чем OSPF-маршрутизаторы установят между собой OSPF-соседство в состояние Full, они обменяются следующими типами сообщений:

  • Hello
  • Database Description
  • Link-state Request
  • Link-state Update
  • Link-state Acknowledgment

Основная информация о сетях, находящихся в OSPF-домене, рассылается при помощи сообщения Link-state Update, которые содержат в себе LSA, называемые Link-State Advertisements. Всего выделяют 11 видов LSA:

  • LSA 1 — Router LSA
  • LSA 2 — Network LSA
  • LSA 3 — Summary LSA
  • LSA 4 — ASBR Summary LSA
  • LSA 5 — External LSA
  • LSA 6 — Group membership LSA (Multicast OSPF LSA)
  • LSA 7 — NSSA External LSA
  • LSA 8 — External attributes LSA (OSPFv2) / Link-Local LSA (OSPFv3)
  • LSA 9 — Opaque LSA (link scope)
  • LSA 10 — Opaque LSA (area scope-used for traffic engineering)
  • LSA 11 — Opaque LSA (AS scope)

Прежде чем перейдем к детальному разбору LSA, посмотрим на общим вид пакета:

Version number — версия протокола OSPF (1 байт)
Type — тип OSPF-пакета (1 байт)
Packet length — размер пакета в байтах (2 байта)
Router ID — идентификатор OSPF-маршрутизатора (4 байта)
Area ID — идентификатор OSPF-области (4 байта)
Checksum — контрольная сумма (2 байта)
Authentication type — тип аутентификации (2 байта)
Authentication — пароль (8 байт)
Data — блок данных (переменная длина)

В случае с LSU нас интересует блок данных Data. Первым полем размеров в 4 байта идет количество LSA, находящихся в этом блоке. Далее идут эти самые LSA-данные. В одном блоке данных можешь быть как один LSA, так и несколько LSA разных типов.

LSA 1 — Router LSA.

Маршрутизаторы рассылают LSA первого типа в каждую область, к которой роутер непосредственно подключен, за пределы области Router LSA не выходят.
Эти пакеты описывают сети, подключенные к конкретному роутеру, тип сетей и стоимость маршрута до них.

Рассмотрим вот такую схему:

Простой вариант: R2 и R3, подключенные через коммутатор, и vMX1, подключенный через p2p-линк к R3. Помимо IP-адресов на физических интерфейсах, анонсируются Loopback-адреса. Глянем более детально структуру Router LSA, отправляемого R3 в сторону R2:

Из содержимого OSPF-заголовка видно, что используется OSPF версии 2, тип пакета — Link-state Update. Аутентификация отсутствует, ospf area 0 и router ID = 10.0.0.3 Размер пакета равен 160 байт и вычисляется следующим образом:

Packet lentgh = размер OSPF-заголовка + размер LSU-блока

В нашем случае это будет:

Packet length = 24 (размер OSPF-header) + 4 (блок # of LSAs) + 60 (размер первого LSA1) + 72 (размер второго LSA1) = 160

Что сходится с тем, что указано в OSPF-заголовке. Поле Number of LSAs в нашем случае равно двум, что говорит о том, что у нас пакет содержит 2 разных LSA. Заглянем внутрь первого LSA-type 1:

Интересующие нас поля:

  • LS Type: Router-LSA (тип LSA)
  • Link State ID: 10.0.0.1 (идентификатор LSA, в случае с LSA1 Link State ID равен ID роутера, рассылающего LSA )
  • Advertising Router: 10.0.0.1 (ID роутера, анонсировавшего данные сети)
  • Number of Links: 3 (количество описанных сетей в данном LSA)

После этого, собственно, идет описание сетей. Стоит обратить внимание, что сети отличаются полем Type. От его значения зависят поля ID и Data:

Link TypeLink IDLink Data
Point-to-point (Type 1)ID роутера-соседа через p2p-интерфейсIP-адрес интерфейса локального роутера («создателя» LSA)
Transit (Type 2)IP-адрес интерфейса выделенного (DR) маршрутизатора IP-адрес интерфейса локального роутера («создателя» LSA)
Stub (Type 3)IP-адрес подсетиМаска подсети
Virtual link (Type 4)ID роутера-соседа, к которому строится virtual link IP-адрес интерфейса локального роутера («создателя» LSA)

Если заглянем во второй LSA1, увидим аналогичную информацию:

Помимо вышеперечисленных полей, есть поле Metric, которое описывает стоимость маршрута до указанной сети (ospf cost). Значение поля зависит от расстояния до сети назначения и пропускной способности интерфейсов.

Чтобы просмотреть информацию в базе данных состояния каналов на оборудовании Cisco и Juniper, нужно выполнить следующие команды (в примерах использованы абсолютно одинаковые сети, чтобы можно было визуально сравнить данные):

Аналогичные команды на Juniper:

LSA 2 — Network LSA

LSA второго типа генерируются для широковещательного и NBMA сегментов сети (тип ospf-интерфейсов выставлен как broadcast или nbma/non-broadcast). Чаще на практике встречается broadcast-сети. Распространяются Network LSA2 также в пределах одной OSPF-области.

Рассмотрим схему:

В данном случае широковещательным сегментом сети будет сеть между роутерами R2, R3 и R4, подключенных через коммутатор. Интерфейсы роутеров находятся в одной сети 192.168.0.0/24.

Заглянем внутрь LSU, приходящего от R3 к vMX1:

LSA-type 2 содержит в себе следующие интересующие нас поля:

  • LS Type: Network-LSA (тип LSA)
  • Link State ID: 192.168.0.4 ( идентификатор LSA, в случае с LSA2 Link State ID равен IP-адресу широковещательного интерфейса выделенного роутера DR)
  • Advertising Router: 10.0.0.4 (Router ID DR)
  • Netmask: 255.255.255.0 (маска подсети)
  • Attached Router: 10.0.0.4, 10.0.0.3, 10.0.0.2 (роутеры, находящиеся в данном широковещательном сегмент)

Таким образом, заглянув внутрь LSA2-пакета, можно узнать адрес Designated Router, а также маршрутизаторов, находящемся в том же широковещательном сегменте, что и DR.

Увидеть LSA2 на оборудовании можно с помощью команд:

LSA 3 — Summary LSA

LSA третьего типа генерируются и отправляются только ABR (Area Border Router) маршрутизаторами. Используется для передачи информации о сетях из одной OSPF-области в другую. LSA распространяется только в пределах области, в которую он был анонсирован.

Рассмотрим следующую схему:

В данном случае в качестве ABR выступает R4, поскольку он принадлежит area 0 и area 1 одновременно. Посмотрим Summary LSA, отправляемые R4 к R5:

Рассмотрим более детально первый и последний LSA3:

Нас интересуют следующие поля:

  • LS Type: Summary-LSA (тип LSA)
  • Link State ID: 192.168.1.0 (идентификатор LSA, в случае с LSA3 равен адресу анонсируемой сети)
  • Advertising Router: 10.0.0.4 (Router ID ABR)
  • Netmask: 255.255.255.252 (маска анонсируемой сети)
  • Metric: 20 (стоимость ospf-маршрута)

Рассмотрев более детально вышеуказанные LSU видно, что в первом LSA3 анонсируется loopback-адрес роутера R2 (10.0.0.2/32), а в последнем IP-адрес интерфейса e0/1 (192.168.1.0/30). В обоих случаях Advertising Router 10.0.0.4, поскольку он является ABR.

Просмотр LSA не железе:

LSA 4 — ASBR Summary LSA

LSA четвертого типа описывают местонахождение ASBR-маршрутизатора (маршрутизатора, который импортирует в OSPF внешние маршруты). LSA4 генерируются ABR-роутерами и распространяются по всему OSPF-домену.

Рассмотрим такую схему:

От предыдущего примера она отличается только тем, что на R5 у нас теперь будет прописан статический маршрут, а затем импортирован в OSPF-процесс.

Посмотрим, как R4 получает информацию от R5 о внешнем маршруте:

Из содержимого OSPF-пакета видно, что на ABR прилетел все тот-же LSA 1 типа, но в нем выставлен в значение «1» флаг AS boundary router, что говорит о том, что роутер 10.0.0.5 является ASBR.

Теперь посмотрим, как получает информацию об этом роутер R3:

Поля, на которые стоит обратить внимание:

  • LS Type: Summary-LSA (ASBR)
  • Link State ID: 10.0.0.5 (идентификатор LSA, в случае с LSA4 равен Router ID ASBR)
  • Advertising Router: 10.0.0.4 (ID маршрутизатора, который анонсирует данный LSA)
  • Netmask: 0.0.0.0 (маска сети, в случае с LSA4 не играет роли и всегда равна 0.0.0.0)
  • Metric: 10 (стоимость маршрута до сети)

Проверка ABSR на Cisco выглядит так:

На Juniper:

LSA 5 — AS External LSA

LSA пятого типа описывают сети, импортированные в OSPF-процесс ASBR-маршрутизатором. Генерируются им же и распространяются по всему OSPF-домену.

Схему сети возьмем из предыдущего примера:

Это изображение имеет пустой атрибут alt; его имя файла - image-9.png

Сейчас R5 анонсирует в OSPF-процесс статический маршрут 10.200.0.0/24. Посмотрим, что прилетает внутри Link State Update на R4:

Интересующие нас поля:

  • LS Type: AS-External-LSA (тип LSA)
  • Link State ID: 10.200.0.0 (адрес анонсируемой сети)
  • Advertising Router: 10.0.0.5 (Router ID ASBR)
  • Netmask: 255.255.255.0 (маска анонсируемой сети)
  • External Type: Type 2 (равен 0 или 1, 0 — дефолтное значение, означает что маршрут является Type 2 external metric, если 1 — маршрут Type 1 external metric)
  • Metric: 20 (стоимость маршрута до сети)
  • Forwarding Address: 0.0.0.0 (адрес, через который можно добраться до анонсируемой сети. Значение 0.0.0.0 говорит о том, что сеть находится на самом ASBR)
  • External Route Tag: 0 (32-битное поле, которое может быть назначено внешнему маршруту. OSPF не использует это поле, но оно может быть обработано и использовано другими протоколами маршрутизации)

И в таком виде LSA5 распространяется по всему OSPF-домену.

На оборудовании LSA5 можно увидеть при помощи команд:

LSA 6 — Group Membership LSA

LSA шестого типа используются для рассылки мультикастового трафика через OSPF, если быть точнее — MOSPF (Multicast OSPF). LSA6 распространяются по OSPF-домену, который представляет из себя одну OSPF область. Каждый LSA6 описывает маршрут только до одной мультикастовой группы. За пределы области LSA6 не выходят.

В качестве Link State ID используется адрес мультикастовой группы, а в качестве Advertising Router, который, собственно, этот LSA6 и генерирует.

Широко MOSPF не используется и мало каким вендором поддерживается. Например, Cisco, Juniper и Huawei MOSPF не могут, да и зачем, когда есть PIM и MSDP?

LSA 7 — NSSA External LSA

Как и LSA5, LSA седьмого типа описывают сети, импортированные в OSPF-процесс ASBR-маршрутизатором. Отличие лишь в том, что ASBR находится внутри NSSA-области. Распространяется LSA7 в пределах области NSSA, затем на ABR преобразуется в LSA5 и дальше по всему OSPF-домену

Для примера возьмем сеть из LSA5, но area 1 в этом случае будет NSSA:


Заглянем внутрь LSU, прилетающего на R4 с R5.

Как и в случае с LSA5, сначала на роутер приходит LSA1 с выставленным флагом ASBR и NSSA (NSSA был выставлен на этапе установления соседства).

После анонсирования LSA1 роутер R5 следом отправляет LSA7:

Как видим, поля аналогичны тем, что были в LSA 5 типа, за исключением того, что в поле Forwarding Address появился IP-адрес ASBR-маршрутизатора. Ну и, конечно же, сам LS Type стал AS-External-LSA.

После попадания на ABR пакет LSA7 преобразуется в LSA5 и распространяется по оставшейся части OSPF-домена. Вот в таком виде он доходит до R3:

Это все тот же типичный LSA5, говорящий о том, что сеть 10.200.0.0/24 находится на роутере 10.0.0.5 (R5). Сам же пакет анонсирован роутером 10.0.0.4 (R4).

Увидеть NSSA можно, используя команды:

LSA 8 — External attributes LSA (OSPFv2)

LSA восьмого типа используются для транспортировки по OSPF-домену атрибутов BGP-маршрутов, импортированных в OSPF с помощью ASBR.

LSA 9, 10, 11 — OSPF opaque LSA

Как правило, opaque LSA используются для расширения функционала OSPF, позволяя ему передавать информацию, о которой OSPF изначально не заботится. Самое основное практическое применение Opaque LSA заключается в использовании MPLS Traffing Engineering.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.