Понимание OSPF LSA, их интерпретация в LSDB и таблицы маршрутизации

Материал из Cisco CCNP
Перейти к навигации Перейти к поиску

В данной секции описывается как соотносятся LSDB и таблица маршрутизации. А также описываются два типа external cost как способа защиты от overload.

OSPF LSDB

Каждый OSPF девайс в сети анонсирует состояние каждого своего линка. Эти анонсы рассылаются всем маршрутизаторам зоны (area). Каждый раз, когда OSPF маршрутизатор получает анонс от другого маршрутизатора, он рассылает (flood) этот анонс своим соседям (в зависимости от типа сети - точка-точка или множественного доступа, по разному). В конце концов, каждый OSPF маршрутизатор в зоне имеет одну и туже топологическую информацию.

Данная информация хранится в LSDB. Вот почему после установления соседства маршрутизаторы обмениваются информацией - чтобы иметь одну и туже базу топологии. Если мы взглянем на LSDB, то не увидим там префиксов, а увидим LSA. Каждый LSA содержит один или несколько префиксов от соседей. Так что при использовании команды show ip ospf database не стоит ожидать увидеть префиксы.

Типы LSA:

  • LSA type 1: Router Links LSA
  • LSA type 2: Network Links LSA
  • LSA type 3: Network Summary LSA
  • LSA type 4: ASBR LSA
  • LSA type 5: External LSA
  • LSA type 7: NSSA External LSA

и некоторые другие.

LSA Type-1

LSA 1 (Router LSA) - Объявления маршрутизатора. Описывается состояние подключённых линий связи (к другим маршрутизаторам или сетей) маршрутизатора, которые принадлежат одной области и их метрики. Маршрутизатор объявляет о своих связях с соседними маршрутизаторами. Создаются каждым маршрутизатором области и лавинно рассылаются только в границах своей области. В качестве данного типа LSA выступает ID соседнего маршрутизатора, который прислал анонс о состоянии своих интерфейсов (линий связи). Так же сообщает, является ли маршрутизатор ABR или ASBR.

То есть данный тип LSA содержит:

  • RID маршрутизатора, сгенерировавшего анонс
  • Список его интерфейсов, содержащий для каждого интерфейса
    • IP адрес (если есть, иначе для Unnambered или Virtual Link передаётся его номер.)
    • Тип интерфейса
Тип интерфейса Описание Link ID Link Data
1 Point-to-point connection to another router Neighbor router ID IP address of the originating's interface to the network
2 Connection to transit network IP address of DR IP address of the originating's interface to the network
3 connection to a stub network IP network/subnet number Subnet mask of the interface
4 Virtual Link neighboring router ID IP address of the originating's interface to the network

Визуально LSA тип 1 можно представить как показано ниже (рисунок взять из статьи на habrahabr.ru/post/201794/ пользователя Ovsiannikov)

Итак, если тип линка — point-to-point или Virtual Link, то теперь нужно найти другой кусочек топологии, с известным router-id и совместить их.

Если тип интерфейса — Broadcast или NBMA (сеть множественного доступа), то на другом конце может быть много разных маршрутизаторов, в этом случае нам необходимы LSA type 2.

Рассмотрим пример, как LSA type 1 выглядят в LSDB.

R3#show ip ospf database

            OSPF Router with ID (3.3.3.3) (Process ID 1) 
		Router Link States (Area 0) 

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         1341        0x80000005 0x0049DB     5
2.2.2.2         2.2.2.2         1355        0x80000005 0x006D6C     5
3.3.3.3         3.3.3.3         1340        0x80000005 0x005BBD     4 

		Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
10.10.23.2      2.2.2.2         1443        0x80000001 0x00F8F2

Из вывода мы можем видеть, что всего есть три устройства в зоне 0 с запущенным OSPF, больше маршрутизаторов нет. Мы видим три записи, по одной на каждый маршрутизатор, в колонках содержится:

  • ADV Router - The advertising router’s RID.
  • Age - The LSA’s age.
  • Checksum - The checksum of the LSA’s contents.
  • Link Count - Used only on router LSA. Total number the number of directly attached links on the router. Each serial interface counts as two links, and each Ethernet interface counts as one link.
  • Link ID - A value that uniquely identifies a specific LSA.
  • Seq# - The sequence number, used to detect an older or duplicate LSA.

Таким образом в примере у нас 3 маршрутизатора с ID 1.1.1.1, 2.2.2.2 и 3.3.3.3. Первый анонсирует 5 линков, как и второй, а третий - 4. Если мы посмотрим детально на содержимое каждого LSA, то получим больше информации, сделать это можно с помощью команды ip ospf database router <RID>. Главное помнить, что каждый маршрутизатор в зоне имеет одинаковую LSDB, поэтому базу можно посмотреть на любом маршрутизаторе.

Давайте взглянем как выглядят LSA маршрутизатора R2 на маршрутизаторе R3:

R3#show ip ospf database router 2.2.2.2
            OSPF Router with ID (3.3.3.3) (Process ID 1) 
		Router Link States (Area 0)
  LS age: 1385
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 2.2.2.2
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000005
  Checksum: 0x6D6C
  Length: 84
  Number of Links: 5

     Link connected to: a Stub Network
     (Link ID) Network/subnet number: 2.2.2.2
     (Link Data) Network Mask: 255.255.255.255
       Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 20.20.20.2
     (Link Data) Network Mask: 255.255.255.255
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.10.23.2
     (Link Data) Router Interface address: 10.10.23.2
      Number of MTID metrics: 0
       TOS 0 Metrics: 10

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 1.1.1.1
     (Link Data) Router Interface address: 10.10.12.2
      Number of MTID metrics: 0
       TOS 0 Metrics: 10

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.10.12.0
     (Link Data) Network Mask: 255.255.255.0
      Number of MTID metrics: 0
       TOS 0 Metrics: 10

OSPF различает Transit Network и Stub Network. Transit Network - это сеть, где сосуществуют несколько маршрутизаторов и в такой сети отношение соседства строится между всеми (например как в broadcast network). А stub network - сеть, где или нет других маршрутизаторов, или не существует более одного (как Loopbacks или point-to-point сеть).

Маршрутизатор R2 имеет 5 линков, это мы видим из вывода команды. Фактически у него 4 линка, но один из них посчитан дважды: первый раз как Stub Network, второй - как “connected to another router”. Из данной информации мы делаем вывод, что этот линк типа p2p с сетью/маской 10.10.12.0/24, и он подключён к другому маршрутизатору, чей RID 1.1.1.1. IP адрес, который использует R2 на этом канале - 10.10.12.2, и его стоимость равна 10 (строка Metrics).

Эта информация очень ценная, так как она даёт представление о сети, зная как маршрутизаторы соединяются и стоимость линков. R3 должен построить spf дерево и добавить стоимость до R2 чтобы знать стоимость достижения его сетей. Также у нас две stub сети, не подключённые к другим маршрутизаторам. Эти сети могут быть loopback-интерфейсами или p2p-интерфейсами к другим маршрутизаторам на линке. В нашем сценарии, эти сети типа loopback маршрутизатора R2. Взглянем на информацию. Видим ip адрес и маску каждого loopback-интерфейса и их стоимость.

Остаётся один линк, он представлен как transit network. Взглянем на неё:

 Link connected to: a Transit Network
  (Link ID) Designated Router address: 10.10.23.2
   (Link Data) Router Interface address: 10.10.23.2
    Number of MTID metrics: 0
    TOS 0 Metrics: 10

Вывод показывает несколько вещей. Прежде всего, это multi-access сеть (сеть множественного доступа). Здесь указан DR, чей IP адрес 10.10.23.2, и IP адрес, который R2 использует для этого линка 10.10.23.2. Адреса совпадают, значит R2 является DR. Также указана стоимость для достижения R2 этой сети, она равна 10. Каждый раз, когда мы видим transit network, нам нужен LSA type 2, сообщающий об этой сети.

LSA Type-2

LSA 2 (Network LSA) - Объявления о сети. Создаются назначенными DR маршрутизаторами в сетях в broadcast сегменте (например, Ethernet). Содержат данные о всех маршрутизаторах, подключенных к сегменту. Данный тип анонсов рассылается лавинно только назначенным маршрутизатором области в границах своей области и позволят используя только один LSA описать все маршрутизаторы, подключенные к сегменту сети. Link-state ID для LSA 2 типа является IP адрес назначенного маршрутизатора, который рассылает данные анонсы.

Эти LSA присутствуют каждый раз, когда есть OSPF multi-access сеть (transit network). В данном типе сети OSPF вместо установления соседства между всеми маршрутизаторами выбирает DR и BDR, DR используется для обмена топологической информацией, этакий коммуникационный центр, следящий за тем, чтобы базы были синхронизированы между всеми участниками сегмента (смотри главу, где всё это объясняется). Каждый маршрутизатор в transit network устанавливается полное соседство только с DR и BDR, отсылает LSA type 1 только им (используется адрес 224.0.0.6). Затем DR пересылает этот LSA type 1 всем своим соседям, внутри и за пределы transit network, но в пределах зоны. Он также генерирует LSA type 2 с информацией о транзитной сети. Только DR может генерировать LSA2, и только он сообщает его соседям, even the ones in the transit network, putting itself as the virtual owner of this LSA. Каждый раз, когда есть Transit Network, есть и LSA type 2, относящийся к ней.

Каждый такой DR рассылает сообщения которые можно нарисовать так:

В середине IP адрес DR в этой сети с маской, и полный список подключённых маршрутизаторов. Заполняем пробелы:

Маршрутизатор собирает из кусочков полную топологию сети и может запустить SPF алгоритм. После завершения расчётов ему известны оптимальные пути ко всем маршрутизаторам и сетям.

В LSDB LSA type 2 находится под строкой Net Link States

R3#show ip ospf database 

            OSPF Router with ID (3.3.3.3) (Process ID 1)

		Router Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         1341        0x80000005 0x0049DB 5
2.2.2.2         2.2.2.2         1355        0x80000005 0x006D6C 5
3.3.3.3         3.3.3.3         1340        0x80000005 0x005BBD 4

		Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
10.10.23.2      2.2.2.2         1443        0x80000001 0x00F8F2

Помните, что для одной и той же transit network, количество LSA type 1 будет соответствовать количеству маршрутизаторов в такой transit network. Но будет только один LSA type 2, сгенерированный DR.

Взглянем глубже на этот тип. Для проверки его, воспользуемся командой show ip ospf database network ip_of_that_link. Этот адрес один, который DR использует на данном канале, в нашем случае это 10.10.23.2:

R3# show ip ospf database network 10.10.23.2
           OSPF Router with ID (3.3.3.3) (Process ID 1)
		Net Link States (Area 0)

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 711
  Options: (No TOS-capability, DC)
  LS Type: Network Links
  Link State ID: 10.10.23.2 (address of Designated Router)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0xF8F2
  Length: 32
  Network Mask: /24
 	Attached Router: 2.2.2.2
 	Attached Router: 3.3.3.3

Итак, что мы здесь видим. Прежде всего мы видим ID маршрутизатора, сделавшего этот анонс, ID = 2.2.2.2. Этот маршрутизатор отвечает за сбор всей информации о данной транзитной сети и генерирует LSA type 2. Также мы видим, что есть 2 маршрутизатора в транзитной сети, маршрутизаторы 2.2.2.2 и 3.3.3.3. В этом типе LSA нет ассоциированных стоимостей до сетей. Это потому что стоимость анонсируется в LSA 1 каждым маршрутизатором.

LSA Type-3

LSA 3 (Summary LSA ABR) - Суммарные анонсы о сетях в пределах автономной системы. Формируются пограничными маршрутизаторами области (Area Border Router, ABR) для объявления о внутренних сетях из определенной области другим пограничным маршрутизаторам. На основании полученных анонсов ABR получают возможность выбрать самый оптимальный вариант достижимости конкретной сети не из своей области и лавинообразно сообщить о нем всем маршрутизаторам своей области. Данный тип LSA генерируется только ABR для объявления о сетях из других областей в границах своей автономной системы. По умолчанию в данных анонсах отсутствует суммирование маршрутов и каждая сеть описывается отдельной записью. Для включения суммирования записей о сетях других областей в анонсы LSA 3 требуется дополнительная настройка маршрутизатора. Идентификатором состояния каналов (link-state ID) является номер сети получателя, которая описывается в анонсах.

Одно из преимуществ OSPF - возможность сегментировать сеть на зоны. Фактически это необходимо для очень больших сетей, так как базы становятся меньше и стабильнее. Почему так покажу чуть позже. Взглянем на LSDB маршрутизатора R1 и попробуем получить информацию о соединениях из его LSA type 3:

R1#sh ip ospf database
            OSPF Router with ID (1.1.1.1) (Process ID 1)

		Router Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         951         0x80000005 0x0049DB 5
2.2.2.2         2.2.2.2         767         0x80000002 0x007665 5
3.3.3.3         3.3.3.3         883         0x80000006 0x005CBA 4

		Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
10.10.23.3      3.3.3.3         912         0x80000001 0x00F8F2

		Summary Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
4.4.4.4         2.2.2.2         757         0x80000001 0x000317
5.5.5.5         3.3.3.3         840         0x80000001 0x00B65B
10.10.24.0      2.2.2.2         757         0x80000001 0x00AD51
10.10.35.0      3.3.3.3         873         0x80000001 0x0016D9

У R1 4 разных LSA type 3, два из них анонсированы маршрутизатором, чей ID 2.2.2.2, а другие два анонсированы маршрутизатором с ID 3.3.3.3. Эти маршрутизаторы (ADV Router) являются ABR-ами для зоны Area 0

Каждый маршрутизатор, принадлежащий к двум зонам - ABR, и отвечает за генерацию краткой (summary) информации о префиксах в одной зоне и анонсировании их в другую зону с помощью LSA type 3. В каждом таком LSA ABR помечает себя как next-hop для маршрута. Т.е. служит точкой выхода из зоны для данной сети.

Визуально представить эту составляющую можно как зелёный квадрат, прицепленый к маршрутизатору, с информацией о сети из другой Area и стоимости соединения. Маршрутизатор, к которому мы их подсоединяем — ABR. Интерфейсы к которым цепляем “рамочку” не указываются, т.к. они принадлежат другой области.

Вглянем поглубже на этот тип. Воспользуемся командой show ip ospf database summary adv-router ID of the ABR router чтобы получить информацию обо всех LSA3 анонсированных этим маршрутизатором, или команду show ip ospf database summary the IP of the link, если хотим получить больше информации.

R1#sh ip ospf database summary 4.4.4.4

            OSPF Router with ID (1.1.1.1) (Process ID 1)

		Summary Net Link States (Area 0)

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 829
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 4.4.4.4 (summary Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0x317
  Length: 28
  Network Mask: /32
	MTID: 0 	Metric: 11 

Что мы видим? Данный LSA даёт нам несколько важных кусочков информации:

  • Первое, мы знаем, что информация этого LSA верная и кандидат на добавление в RIB, так как установлен routing bit.
  • IP адрес линка и его маска 4.4.4.4/32
  • Для того, чтобы достичь его, мы должны пройти через ABR 2.2.2.2
  • Метрика для 2.2.2.2 чтобы достичь сеть 4.4.4.4 равна 11

Последнее значение очень интересно. Метрика для этого префикса это метрика с точки зрения R2, а не метрика владельца этого маршрута, которую мы могли бы найти в R4's LSA type 1. И такое поведение - один маршрутизатор сообщает его точку зрения об этом маршруте остальным в сети напоминает дистанционно-векторные протоколы. OSPF ведёт себя как дистанционно-векторный протокол, когда анонсирует LSA type 3. Видите разницу? В LSA1 каждый маршрутизатор сообщает о своих линках и их стоимости, так что каждый в зоне может узнать это напрямую от источника. А с LSA3 ABR сообщает свою точку зрения. Он генерирует краткую инфу об одной зоне, скрывая топологии в ней, и просто сообщает о префиксах и стоимости для достижения префиксов.

Такая краткость (summary), как я упомянул чуть раньше, делает LSDB OSPF менше и более стабильными. Меньше, потому что LSA 3 дают меньше информации, чем LSA 1. А стабильнее, так как при расчёте SPF LSA type 3 требуют меньше циклов процессора. LSA 1 и 2 используются в начальном расчёте SPF, более требовательном к CPU. После того как топология построена, оставшиеся LSA добавляются в ноды топологии на втором, менее ресурсоёмком цикле расчёта SPF.

Давайте взглянем на то, как R5 воспринимает внешний мир, мир за пределами area 5:

R5#sh ip ospf database

            OSPF Router with ID (5.5.5.5) (Process ID 1)

		Router Link States (Area 5)

Link ID         ADV Router      Age         Seq#       Checksum Link count
3.3.3.3         3.3.3.3         598         0x80000004 0x00224D 2
5.5.5.5         5.5.5.5         547         0x80000004 0x0081BF 3

		Summary Net Link States (Area 5)

Link ID         ADV Router      Age         Seq#       Checksum
1.1.1.1         3.3.3.3         598         0x80000003 0x006BB4
2.2.2.2         3.3.3.3         598         0x80000004 0x003BDF
3.3.3.3         3.3.3.3         598         0x80000003 0x00AA77
4.4.4.4         3.3.3.3         598         0x80000004 0x0043C5
10.10.12.0      3.3.3.3         598         0x80000003 0x007486
10.10.13.0      3.3.3.3         598         0x80000003 0x0005FE
10.10.23.0      3.3.3.3         598         0x80000003 0x009663
10.10.24.0      3.3.3.3         598         0x80000004 0x00EDFF
20.20.20.2      3.3.3.3         598         0x80000004 0x00B034

Как видим, в LSDB R5 есть только 2 LSA type 1, один от R3, сообщивший о своём линке в Area 5, и другой, со всей информацией о своих линка в зоне 5. Остальная маршрутная информация пришла LSA type 3, которую ABR (в нашем случае R3) внедрил в зону 5. Таким образом R3 знает всю информацию о Area 0 и генерирует краткий анонс в зону 5. Генерирует не только LSA type 1 и 2, представленных в зоне 0, но и LSA3, которые в ней также есть.

Одна интересная вещь, которую стоит упомянуть здесь. Когда ABR отправляет LSA type 3 в немагистральную сеть, он учитывает все LSA типов 1, 2 и 3, существующих в магистральной зоне. Но только LSA типов 1 и 2 (intra-area routes), присутствующие в немагистральной зоне, инжектируются обратно в магистральную зону в виде LSA 3. LSA type 3, уже присутствующие в немагистральной зоне обратно в магистраль не анонсируются.

Можно сделать некоторые вычисления на основе номеров LSA каждого типа в каждой зоне:

R1#sh ip ospf database

            OSPF Router with ID (1.1.1.1) (Process ID 1)

		Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         951         0x80000005 0x0049DB 5
2.2.2.2         2.2.2.2         767         0x80000002 0x007665 5
3.3.3.3         3.3.3.3         883         0x80000006 0x005CBA 4

		Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
10.10.23.3      3.3.3.3         912         0x80000001 0x00F8F2

		Summary Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
4.4.4.4         2.2.2.2         757         0x80000001 0x000317
5.5.5.5         3.3.3.3         840         0x80000001 0x00B65B
10.10.24.0      2.2.2.2         757         0x80000001 0x00AD51
10.10.35.0      3.3.3.3         873         0x80000001 0x0016D9
R5#sh ip ospf database

            OSPF Router with ID (5.5.5.5) (Process ID 1)

		Router Link States (Area 5)

Link ID         ADV Router      Age         Seq#       Checksum Link count
3.3.3.3         3.3.3.3         598         0x80000004 0x00224D 2
5.5.5.5         5.5.5.5         547         0x80000004 0x0081BF 3

		Summary Net Link States (Area 5)

Link ID         ADV Router      Age         Seq#       Checksum
1.1.1.1         3.3.3.3         598         0x80000003 0x006BB4
2.2.2.2         3.3.3.3         598         0x80000004 0x003BDF
3.3.3.3         3.3.3.3         598         0x80000003 0x00AA77
4.4.4.4         3.3.3.3         598         0x80000004 0x0043C5
10.10.12.0      3.3.3.3         598         0x80000003 0x007486
10.10.13.0      3.3.3.3         598         0x80000003 0x0005FE
10.10.23.0      3.3.3.3         598         0x80000003 0x009663
10.10.24.0      3.3.3.3         598         0x80000004 0x00EDFF
20.20.20.2      3.3.3.3         598         0x80000004 0x00B034
R4#sh ip ospf database

            OSPF Router with ID (4.4.4.4) (Process ID 1)

		Router Link States (Area 4)

Link ID         ADV Router      Age         Seq#       Checksum Link count
2.2.2.2         2.2.2.2         1018        0x80000002 0x00CAC9 2
4.4.4.4         4.4.4.4         1015        0x80000003 0x00C0A8 3 

		Summary Net Link States (Area 4)

Link ID         ADV Router      Age         Seq#       Checksum
1.1.1.1         2.2.2.2         1037        0x80000001 0x008D98
2.2.2.2         2.2.2.2         1047        0x80000001 0x00FA31
3.3.3.3         2.2.2.2         987         0x80000002 0x002FED
5.5.5.5         2.2.2.2         987         0x80000002 0x0037D3
10.10.12.0      2.2.2.2         1037        0x80000001 0x0032D8
10.10.13.0      2.2.2.2         1037        0x80000001 0x008B74
10.10.23.0      2.2.2.2         1037        0x80000001 0x00B847
10.10.35.0      2.2.2.2         987         0x80000002 0x009652
20.20.20.2      2.2.2.2         1047        0x80000001 0x007085

Посчитаем LSA в зонах:

LSA type 1 and LSA type 2 LSA type 3
AREA 0 3 type 1 and 1 type 2 (the link between R2 and R3 is a broadcast network 4
AREA 4 2 type 1 (one from each router in the area) 9
AREA 5 2 type 1 (one from each router in the area) 9

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

Запомним несколько других вещей о LSA type 3. Например, если маршрутизатор находит тот же самый префикс, полученный через LSA 1 и LSA 3, он всегда предпочтёт префикс полученный через LSA 1. Это так, потому что LSA 1 - префикс принадлежащей тот же самой зоне, где находится маршрутизатор. Представим, что есть 2 ABR'a в зоне 5. Первый инжектирует в зону 0 LSA type 3 из зоны 5. Второй ABR имеет одну LSA 1 для этого префикса из зоны 5 и одно типа LSA 3 для того же префикса из зоны 0. Конечно он предпочтёт использовать прямой линк в зону 5 для достижения данного префикса.

Другая интересная вещь о LSA type 3. Мы знаем, что OSPF не разрешает фильтровать анонсы LSA type 1 и LSA type 2, потому что они необходимы маршрутизаторам в одной зоне (нужно иметь одинаковую инфу), иначе результат расчёта SPF не будет точны. Но можно фильтровать анонсы LSA type 3, и это можно делать на ABR. Даже больше! Не просто фильтровать, а ещё и делать суммирование (аггрегацию). Для этих целей используйте команды на ABR:

  • area x range: чтобы ссумировать несколько префиксов в один. Можно указать анонсировать суммарный маршрут или не анонсировать его, т.е. отфильтровать.
  • area x filter-list prefix: отфильтровать специфичный префикс из одной зоны в другую.

LSA Type-4

LSA 4 (Summary LSA ASBR) - Суммарные анонсы о маршрутах к ASBR. Необходимы, так как LSA type 5 рассылаются во все зоны и детальной информации о next-hop может быть недоступна в таких зонах. Как и тип 3, данный анонс генерируется и рассылается только ABR, но в отличии от него описываются сети, которые находятся за границами не просто области, а автономной системы. Таким образом анонсы 4-го типа позволяют каждому маршрутизатору определить самый оптимальный маршрут к пограничному маршрутизатору автономной системы (ASBR). В качестве link-state (идентификатора состояния каналов) выступает идентификатор маршрутизатора ASBR, указанного в анонсе. Создаётся тем же ASBR, где генерируется относящийся к нему LSA type 5.

Итак, LSA type 4 сообщает нам точно, какие OSPF маршрутизаторы анонсировали ‘external’ маршрут в вашу сеть.

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

Таблица маршрутизации R1 выглядит так:

C    192.168.12.0/24 is directly connected, FastEthernet0/0
     1.0.0.0/24 is subnetted, 1 subnets
C       1.1.1.0 is directly connected, Loopback0
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/2] via 192.168.12.2, 00:03:47, FastEthernet0/0
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/3] via 192.168.12.2, 00:03:47, FastEthernet0/0
     4.0.0.0/32 is subnetted, 1 subnets
O       4.4.4.4 [110/3] via 192.168.12.2, 00:03:47, FastEthernet0/0
     6.0.0.0/24 is subnetted, 1 subnets
O E2    6.6.6.0 [110/20] via 192.168.12.2, 00:00:01, FastEthernet0/0
O IA 192.168.56.0/24 [110/4] via 192.168.12.2, 00:01:36, FastEthernet0/0
O    192.168.234.0/24 [110/2] via 192.168.12.2, 00:03:48, FastEthernet0/0
O IA 192.168.35.0/24 [110/3] via 192.168.12.2, 00:03:49, FastEthernet0/0

ASBR'ом является маршрутизатор R6, на котором сделали редистрибуцию loopback 6.6.6.6/24 в OSPF. Взглянем в топологическую таблицу маршрутизатора R1, воспользуемся командой show ip ospf database asbr-summary:

R1#sh ip ospf database asbr-summary
            OSPF Router with ID (1.1.1.1) (Process ID 1)
                Summary ASB Link States (Area 1)

  Routing Bit Set on this LSA
  LS age: 514
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(AS Boundary Router)
  Link State ID: 6.6.6.6 (AS Boundary Router address)
  Advertising Router: 3.3.3.3
  LS Seq Number: 80000001
  Checksum: 0x20F5
  Length: 28
  Network Mask: /0
        TOS: 0  Metric: 2

Данный LSA даёт следующую информацию:

  • Первое, мы знаем, что информация этого LSA верная и кандидат на добавление в RIB, так как установлен routing bit.
  • Link state ID является RID ASBR
  • Для того, чтобы достичь его, мы должны пройти через ABR 3.3.3.3
  • Метрика для 3.3.3.3 чтобы достичь маршрутизатору ASBR с RID 6.6.6.6 равна 2

Нет никакой информации о том, какие префиксы анонсирует ASBR. Эта информация содержится в LSA typ 5. Как представить визуально ASBR на топологии, показано в следующем разделе.

Расчёт стоимости до ASBR, анонсирующего LSA type 5

Пусть стоимость всех линков равна 1, но линк между R5 и R6 стоит 70. Тогда метрика будет равна 1+70 = 71. Метрика считается от ABR'a.

R1#sh ip ospf database asbr-summary 6.6.6.6
            OSPF Router with ID (1.1.1.1) (Process ID 1)
                Summary ASB Link States (Area 1)

  Routing Bit Set on this LSA
  LS age: 108
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(AS Boundary Router)
  Link State ID: 6.6.6.6 (AS Boundary Router address)
  Advertising Router: 3.3.3.3
  LS Seq Number: 80000002
  Checksum: 0xD2FC
  Length: 28
  Network Mask: /0
        TOS: 0  Metric: 71

LSA Type-5

LSA 5 (AS External LSA ) - Содержат информацию, импортированную в OSPF из других процессов маршрутизации, генерируют только ASBR. Распространяются во все area в неизменном виде, кроме stub и NSSA зон. Link-state ID представляет собой номер внешней сети, которая указывается в анонсе. Различают два типа метрики - External Metric Type 1 и External Metric Type 2.

Воспользуемся предыдущей топологией и рассмотрим этот тип LSA. На R6 редистрибуция была сделана так:

redistribute connected subnets tag 01010101
R6#sh ip ospf database
            OSPF Router with ID (6.6.6.6) (Process ID 1)

                Router Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum Link count
5.5.5.5         5.5.5.5         1061        0x80000004 0x005222 1
6.6.6.6         6.6.6.6         1113        0x80000004 0x003877 1

                Net Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.56.5    5.5.5.5         1305        0x80000002 0x0090C1

                Summary Net Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum
1.1.1.1         5.5.5.5         1305        0x80000002 0x00EA35
2.2.2.2         5.5.5.5         1305        0x80000002 0x00B26A
3.3.3.3         5.5.5.5         1305        0x80000002 0x007A9F
4.4.4.4         5.5.5.5         1305        0x80000002 0x0056BE
192.168.12.0    5.5.5.5         1305        0x80000002 0x00D8D6
192.168.35.0    5.5.5.5         1306        0x80000002 0x00C6D3
192.168.234.0   5.5.5.5         1305        0x80000002 0x003B96

                Type-5 AS External Link States

Link ID         ADV Router      Age         Seq#       Checksum Tag
6.6.6.0         6.6.6.6         182         0x80000001 0x001236 1010101
66.66.66.0      6.6.6.6         182         0x80000001 0x0099F9 1010101

ADV Router - The advertising router’s RID. Age - The LSA’s age.
Checksum - The checksum of the LSA’s contents.
Link Count - Used only on router LSA. Total number the number of directly attached links on the router. Each serial interface counts as two links, and each Ethernet interface counts as one link.
Link ID - A value that uniquely identifies a specific LSA.
Seq# - The sequence number, used to detect an older or duplicate LSA.
Tag - Administratively used to recognize routes that are introduced through a specific redistribution process.

Для отображения LSA type 5 воспользуемся командой show ip ospf database external:

OSPF Router with ID (1.1.1.1) (Process ID 1)

               Type-5 AS External Link States

 Routing Bit Set on this LSA
 LS age: 495
 Options: (No TOS-capability, DC)
 LS Type: AS External Link
 Link State ID: 6.6.6.0 (External Network Number )
 Advertising Router: 6.6.6.6
 LS Seq Number: 80000001
 Checksum: 0x1236
 Length: 36
 Network Mask: /24
       Metric Type: 2 (Larger than any link state path)
       TOS: 0
       Metric: 20
       Forward Address: 0.0.0.0
       External Route Tag: 1010101

 Routing Bit Set on this LSA
 LS age: 496
 Options: (No TOS-capability, DC)
 LS Type: AS External Link
 Link State ID: 66.66.66.0 (External Network Number )
 Advertising Router: 6.6.6.6
 LS Seq Number: 80000001
 Checksum: 0x99F9
 Length: 36
 Network Mask: /24
       Metric Type: 2 (Larger than any link state path)
       TOS: 0
       Metric: 20
       Forward Address: 0.0.0.0
       External Route Tag: 1010101

Что мы видим в выводе:

  • Первое, это то, что маршрут был анонсирован, адрес внешней сети указан в Link State ID, а его маска в Network Mask.
  • Маршрутизатор, который анонсировал данный маршрут указан в поле Advertising Router. Это RID ASBR'a.
  • Метрика маршрута(Metric) и её тип (Metric Type). Типы маршрутов рассматриваются дальше.

Оба маршрута с метрикой 20. 20 - метрика по-умолчанию для маршрутов, перераспределённых в OSPF. Также указано, что метрика типа 2. Типы: Type 2 (E2) - только метрика перераспределённого маршрута. Стоимость, которую имеет ASBR для маршрута после редистрибуции (в этом случае 20). Будет оставаться одинаковой хоть после пересечения 10 промежуточных маршрутизаторов. То есть остаётся постоянной по всей сети. Type 1 (E1) - содержит метрику перераспределённого маршрута ПЛЮС стоимость до этого ASBR.

Давайте изменим тип метрики для R6 на E1 и посмотрим, что поменялось. Используем команду redistribute connected subnets tag 01010101 metric-type 1

 R1#sh ip ospf database external

 Routing Bit Set on this LSA
 LS age: 25
 Options: (No TOS-capability, DC)
 LS Type: AS External Link
 Link State ID: 66.66.66.0 (External Network Number )
 Advertising Router: 6.6.6.6
 LS Seq Number: 80000001
 Checksum: 0x16FD
 Length: 36
 Network Mask: /24
       Metric Type: 1 (Comparable directly to link state metric)
       TOS: 0
       Metric: 20
       Forward Address: 0.0.0.0
       External Route Tag: 1010101

Видим, что тип метрики изменился, но стоимость попрежнему равна 20. Теперь заглянем в таблицу маршрутизации R1

R1#sh ip route 66.66.66.0
Routing entry for 66.66.66.0/24
  Known via "ospf 1", distance 110, metric 93
  Tag 1010101, type extern 1
  Last update from 192.168.12.2 on FastEthernet0/0, 00:02:05 ago
  Routing Descriptor Blocks:
  * 192.168.12.2, from 6.6.6.6, 00:02:05 ago, via FastEthernet0/0
      Route metric is 93, traffic share count is 1
      Route tag 1010101

Посчитаем метрику сами: 20 (при редистрибуции) + 70 + 1 + 1 + 1.

Визуально представить можно как (оранжевый) квадратик, прицепленый к маршрутизатору, с информацией о том в какие сети он может посылать пакеты независимо от протокола OSPF.

LSA Type-7

LSA 7 (NSSA LSA) - Анонсы о состояниях внешних каналов в сетях NSSA (не полностью тупиковые сети, Not-so-stubby-area). Маршрутизаторы в NSSA не получают external LSA от ASBR, но могут посылать информацию о внешних маршрутах от редистрибуции. Генерируются и рассылаются лавинообразно ASBR только в границах данной области NSSA. Для распространения информации о сетях из NSSA области по всей автономной системе маршрутизаторы ABR выполняют преобразование LSA 7 в LSA 5 и передают в оставшуюся сеть OSPF.

Перенастроим Area 2 как NSSA, и взглянем на топологическую таблицу R5:

R5#sh ip ospf database

                Type-7 AS External Link States (Area 2)

Link ID         ADV Router      Age         Seq#       Checksum Tag
6.6.6.0         6.6.6.6         170         0x80000001 0x0059BD 1010101
66.66.66.0      6.6.6.6         174         0x80000001 0x00E081 1010101
R5#sh ip ospf database nssa-external

           OSPF Router with ID (5.5.5.5) (Process ID 1)

               Type-7 AS External Link States (Area 2)

 Routing Bit Set on this LSA
 LS age: 214
 Options: (No TOS-capability, Type 7/5 translation, DC)
 LS Type: AS External Link
 Link State ID: 6.6.6.0 (External Network Number )
 Advertising Router: 6.6.6.6
 LS Seq Number: 80000001
 Checksum: 0x59BD
 Length: 36
 Network Mask: /24
       Metric Type: 1 (Comparable directly to link state metric)
       TOS: 0
       Metric: 20
       Forward Address: 192.168.56.6
       External Route Tag: 1010101

 Routing Bit Set on this LSA
 LS age: 214
 Options: (No TOS-capability, Type 7/5 translation, DC)
 LS Type: AS External Link
 Link State ID: 66.66.66.0 (External Network Number )
 Advertising Router: 6.6.6.6
 LS Seq Number: 80000001
 Checksum: 0xE081
 Length: 36
 Network Mask: /24
       Metric Type: 1 (Comparable directly to link state metric)
       TOS: 0
       Metric: 20
       Forward Address: 192.168.56.6
       External Route Tag: 1010101

LSA 8 (External LSA for BGP)

Данный тип LSA используется для обмена служебной информацией в случае взаимодействия протокола OSPF и BGP.

LSA 9, 10, 11 (Opaque LSA)

Непрозрачные анонсы LSA. Распространяются только в рамках определенного участка сети (например, только в определенной области или автономной системе) Используются различными вендорами для реализации дополнительных механизмов работы протокола OSPF. Используя соответствующие типы LSA маршрутизатор создает базу данных связей.

Когда “пазл” не складывается?

Цитата с http://habrahabr.ru/post/201794/

Достаточно часто бывает ситуация, когда из всех имеющихся кусочков — целостной картины не сложить. Это связано с тем что в Link State протоколах нет способа моментально отбросить “исчезнувший” ЛСА. Рассмотрим последний рисунок. Например, на роутере y.y.y.y упал интерфейс в сторону b.b.b.d (серого облака). Тогда y.y.y.y генерирует новый LSA типа1 (с тем же самым ID, но бо’льшим порядковым номером), где отключившегося интерфейса уже нет. z.z.z.z устанавливает в LSDB новый LSA, пересчитывает таблицу маршрутизации… Но всё ещё хранит в памяти все LSA полученые от g.g.g.g, m.m.m.m и k.k.k.k, связь с которыми уже потеряна. т.е. остались лишние кусочки. Аналогично, если вдруг у маршрутизатора поменяется “router-id”, то все остальные некоторое время хранят 2 копии LSA: со старым и с новым ID. У каждого маршрутизатора имеется “router-id” и он обязательно должен быть уникальный. Что произойдёт если будут дубликаты — зависит от вендора и настроек, но одно можно утверждать уверенно — будут проблемы. Как самый простой пример: 2 маршрутизатора транслируют взаимоисключающие LSA; остальные будут устанавливать LSA с большим порядковым номером, а сети подключённые к другому устройству будут потеряны и недоступны. Это можно сравнить с потерей кусочка пазла. Аналогично, не должно быть DR c одинаковыми IP адресами.

Таблица маршрутизации OSPF и типы маршрутов

R1#
show ip route
<output omitted>
Gateway of last resort is not set
172.31.0.0/24 is subnetted, 2 subnets
O IA 172.31.2.0 [110/1563] via 10.1.1.1, 00:12:35, FastEthernet0/0
O IA 172.31.1.0 [110/782] via 10.1.1.1, 00:12:35, FastEthernet0/0
   10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
C 10.200.200.13/32 is directly connected, Loopback0
C 10.1.3.0/24 is directly connected, Serial0/0/0
O 10.1.2.0/24 [110/782] via 10.1.3.4, 00:12:35, Serial0/0/0
C 10.1.1.0/24 is directly connected, FastEthernet0/0
O 10.1.0.0/24 [110/782] via 10.1.1.1, 00:12:37, FastEthernet0/0
O E2 10.254.0.0/24 [110/50] via 10.1.1.1, 00:12:37, FastEthernet0/0

ABR, получая суммированные (summary) или внешние (external) LSA, добавляет информацию в свою LSDB, а затем флудит копиями LSA в локальной зоне (local area). Маршрутизаторы внутри зоны добавляют полученную информацию в свои базы данных.

Компонента Описание
О внутризонные router и network LSA сети в зоне маршрутизатора.
O IA OSPF interarea (summary LSA) сети вне зоны маршрутизатора, но в той же автономной системе.
O E1 Type 1 external routes сети вне автономной системы маршрутизатора. К метрике внешнего маршрута добавляется cost всех линков по которым передавался маршрут. Используется когда несколько маршрутизаторов анонсируют внешнюю сеть.
O E2 Type 2 external routes (по умолчанию) сети вне автономной системы маршрутизатора. Используется только cost внешнего маршрута

Порядок расчёта наилучшего маршрута:

  • Все маршрутизаторы расчитывают наилучшие маршруты к получателям в своей зоне (intra-area) и добавляют эти записи в таблицу маршрутизации. Записи содержат LSA 1 и 2, помечаются значком O.
  • Все маршрутизаторы расчитывают наилучшие маршруты к другим зонам internetwork'а. Записи содержат LSA 3 и 4, помечаются значком O IA.
  • Все маршрутизаторы (за исключением stub area) расчитывают маршруты к внешним автономным системам (external autonomous system destinations). Эти маршруты являются или external type 1 (E1) и помечаются O E1 в таблице маршрутизации, или external type 2 (E2) и помечаются O E2 в таблице маршрутизации, в зависимости от конфигурации.

В итоге маршрутизатор может связываться с любом сетью в/снаружи автономной системы.

Расчёт стоимости маршрутов E1 и E2

Стоимость внешних маршрутов варьируется, в зависимости от external type, настроенного на ASBR, как показано на рисунке ниже.

Можно настроить следующие типы external cost:

  • E1 - Type 1 external routes - стоимость этого типа внешнего маршрута рассчитывается путем добавления внешней стоимости к внутренней стоимости каждого соединения, через которое проходит маршрут. Этот тип надо использовать, когда несколько ASBR распространяют маршруты в одну автономную систему для избежания неоптимальной маршрутизации. Когда ABR передает type 5 LSA в другую зону, он создает type 4 LSA, которое указывает стоимость пути от этого ABR до ASBR, который создал type 5 LSA.

Маршрутизатор (не ABR), который находится в разных зонах с ASBR, будет высчитывать метрику внешнего маршрута E1 сложив следующие значения метрик: метрику внешнего маршрута, которая указана в type 5 LSA, стоимость пути к ASBR, которая анонсируется в type 4 LSA, стоимость пути к ABR, который анонсировал type 4 LSA.

  • E2 - Type 2 external routes (используется по умолчанию для внешних маршрутов) — стоимость маршрута всегда равна стоимости внешнего маршрута. Использовать этот тип надо, когда только один ASBR распространяет внешние маршруты в автономную систему. Другие маршрутизаторы, при получении type 5 LSA, просто добавляют в свою таблицу маршрутизации маршрут во внешнюю сеть со стоимостью, которая указана в type 5 LSA.

В нижней части верхнего рисунка стоимость E2 маршрута к AS1 всегда 1785. Например, если бы было несколько путей к внешнему получателю, и использовался бы тип E2, то между путями не было бы никакой разницы.
В верхней части рисунка используется стоимость E1. Стоимость увеличивается на каждом маршрутизаторе (внутренняя стоимость добавляется к внешней), что позволяет выбрать наиболее оптимальный маршрут при наличии нескольких.

R1#
show ip route
<output omitted>
Gateway of last resort is not set
172.31.0.0/24 is subnetted, 2 subnets
O IA 172.31.2.0 [110/1563] via 10.1.1.1, 00:12:35, FastEthernet0/0
O IA 172.31.1.0 [110/782] via 10.1.1.1, 00:12:35, FastEthernet0/0
   10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
C 10.200.200.13/32 is directly connected, Loopback0
C 10.1.3.0/24 is directly connected, Serial0/0/0
O 10.1.2.0/24 [110/782] via 10.1.3.4, 00:12:35, Serial0/0/0
C 10.1.1.0/24 is directly connected, FastEthernet0/0
O 10.1.0.0/24 [110/782] via 10.1.1.1, 00:12:37, FastEthernet0/0
O E2 10.254.0.0/24 [110/50] via 10.1.1.1, 00:12:37, FastEthernet0/0

В выводе команды show ip route маршрутизатора В последняя запись (О Е2) - внешний маршрут от ASBR (маршрутизатор Е) через ABR (маршрутизатор А). [110/50] - Административная дистанция и стоимость маршрута E2.

Настройка LSDB Overload Protection

Если другие маршрутизаторы будут неправильно настроены, например, редистрибьюция большого числа префиксов, будет генерироваться большое количество LSA. Это чрезмерное количество LSA может сильно загрузить ресурсы процессора и памяти. Чтобы препятствовать этой проблеме, можно настроить защиту от перегрузки OSPF LSDB с помощью команды max-lsa.

dyn3(config-router)# max-lsa <maximum-number> [<threshold-percentage>] 
[warning-only] [ignore-time <minutes>]
[ignore-count <count-number>] [reset-time <minutes>]

Параметры команды max-lsa:

  • max-lsa <maximum-number> — максимальное количество LSA, которое маршрутизатор может хранить в LSDB (сгенерированных не локальным маршрутизатором);
  • <threshold-percentage> — процент от максимального количества LSA при достижении которого будет сгенерировано log-сообщение. По умолчанию 75%;
  • warning-only — (Опционально) указывает, что при достижении максимума LSA будет только сгенерировано сообщение. Выключено по умолчанию;
  • ignore-time <minutes> — (Опционально) время, в течение которого будут игнорироваться LSA полученные от соседей после достижения максимума LSA. По умолчанию 5 минут;
  • ignore-count <count-number> — (Опционально) количество раз, которое OSPF процесс может попадать в состояние игнорирования LSA. Если количество будет превышено, то процесс OSPF надо будет поднимать вручную. По умолчанию 5 раз;
  • reset-time <minutes> — (Опционально) время, после которого счетчик включения состояния игнорирования собьется в ноль. В течение этого диапазона времени количество LSA не должно превышать максимума. По умолчанию 10 минут.

Состояние игнорирования — наступает если включена защита от перегрузки. В этом состоянии процесс OSPF разрывает все отношения соседства и очищает свою базу данны

Когда эта функция включена, маршрутизатор хранит счетчик принятых (но не сгенерированных им самим) LSA, которые хранятся в LSDB. Если число принятых LSA достигнет установленной границы, отправится сообщение о превышении границы. Если счетчик LSA продолжит увеличиваться в течение одной минуты, процесс OSPF сбросит все отношения соседства (adjacency) и очистит LSDB. Это состояние называется Ignore. В этом состоянии OSPF пакеты не передаются и не принимаются через интерфейсы, принадлежащие этому процессу OSPF. OSPF процесс будет находится в состоянии Ignore в течение времени, заданного параметром ignore-time. Параметр ignore-count определяет максимальное количество раз, которые процесс OSPF может входить в состояние Ignore перед тем, как будет окончательно выключен, что потребует ручного вмешательства (manual intervention) Если OSPF процесс останется в нормальном состоянии в течение времени, заданном параметром reset-time, счетчик состояний Ignore сбрасывается до 0.

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

  • [1] - Особенности работы External Type 1 и External Type 2 маршрутов в OSPF. Часть 1
  • [2] - Understanding OSPF External Route Path Selection.
  • [3] - Interpreting the OSPF Database::Part I