Почему этот маршрутизатор не может использовать несколько маршрутов одинаковой стоимости от OSPF?

16

Маршрутизатор Brocade под управлением NetIron 5.2 и эмуляция Dynamips под управлением IOS 12.4 не могут надежно использовать пути одинаковой стоимости в очень простой конфигурации. Я говорю «надежно», потому что я очень кратко наблюдал ожидаемое поведение от парчи, но это было после долгого периода бездействия и исчезло, как только я нарушил систему.

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

Моя сеть-прототип выглядит следующим образом.

R1 <--N1--> Rcore <--N2--> R2

R1и R2рекламировать любое место назначения через OSPF. Если Rcoreзатраты на интерфейсы N1и N2интерфейсы идентичны , а назначение anycast одинаково на каждом из других маршрутизаторов, я бы ожидал найти два пути одинаковой стоимости в Rcoreтаблице маршрутизации. Я не, по крайней мере, не всегда, и даже не предсказуемо. Почему нет?

Среди других, потенциально важных деталей, следующие.

  • Rcoreявляется соединением ABR N1и N2, которые находятся в отдельных областях NSSA, с магистралью (не показана).
  • Проверка RcoreLSDB подтверждает, что ожидаемые LSA от R1и R2правильно установлены, и содержат произвольное назначение с правильной метрикой.

Я рассмотрел три возможных объяснения.

  1. Я не понимаю, как настроить и работать ECMP на этих платформах. Это вероятно, и я надеюсь найти здесь просветление, которое не смог найти в документации продавца.
  2. Я не понимаю взаимодействия между областями OSPF, ECMP, anycast и т. Д. Я не думаю, что это очень вероятно, но я все равно готов чему-то научиться.
  3. Эти реализации двух поставщиков страдают от одной и той же ошибки, неправильной работы или чего-то еще. Я полагаю, это могло произойти.

Редактировать Добавлен пример конфигурации и вывода для реализации Dynamips / Dynagen.

Configs

маршрутизатор R1

!
version 12.4
!
hostname R1
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.1.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.1.0.2
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.1
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
!
line console 0
 exec-timeout 0 0
!
end

маршрутизатор R2

!
version 12.4
!
hostname R2
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.2.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.2.0.2
 log-adjacency-changes
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.2
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

маршрутизатор Rcore

!
version 12.4
!
hostname Rcore
!
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip ospf cost 4
!
interface FastEthernet0/0
 ip address 10.1.0.1 255.255.255.252
 ip ospf cost 2
!
interface FastEthernet0/1
 ip address 10.2.0.1 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 10.0.0.1 0.0.0.0 area 0.0.0.0
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

Выход

маршрутизатор Rcore

Маршрутизатор LSA от R1

Rcore#sh ip ospf database router 10.1.0.2

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

        Router Link States (Area 0.0.0.1)

  LS age: 1618
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.1.0.2
  Advertising Router: 10.1.0.2
  LS Seq Number: 80000002
  Checksum: 0x726F
  Length: 48
  Number of Links: 2

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

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

Маршрутизатор LSA от R2

Rcore#sh ip ospf database router 10.2.0.2

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

        Router Link States (Area 0.0.0.2)

  LS age: 1766
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.2.0.2
  Advertising Router: 10.2.0.2
  LS Seq Number: 80000002
  Checksum: 0x8A53
  Length: 48
  Number of Links: 2

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

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

Отрывок таблицы маршрутизации

Rcore#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
  Known via "ospf 1", distance 110, metric 3, type intra area
  Last update from 10.1.0.2 on FastEthernet0/0, 00:30:54 ago
  Routing Descriptor Blocks:
  * 10.1.0.2, from 10.1.0.2, 00:30:54 ago, via FastEthernet0/0
      Route metric is 3, traffic share count is 1
neirbowj
источник
Какой тип маршрута является anycast?
никотин
@nicotine: адрес anycast является вторичным адресом в интерфейсе обратной связи. В последней перестановке этой конфигурации она заканчивается как тупиковая сеть в LSA маршрутизатора. Конфиг фрагментов и захват терминала, чтобы следовать.
neirbowj
Я попытался сократить конфигурацию и вывести как можно больше, но не слишком много. Предложения по повышению плотности информации приветствуются.
neirbowj
Это должно работать. Можете ли вы опубликовать вывод следующих команд: show ip protocol, show ip ospf rib debug ip routing Попробуйте эти команды на Rcore. Это должно дать нам некоторые подсказки относительно того, почему не установлены двойные маршруты. Ваш вывод OSPF DB выглядит нормально для меня.
Даниэль Диб
Если вы отклоняете ссылку активного маршрута, она все еще предпочитает исходный маршрут? Например: в выходных данных CLI отображается активный маршрут, указывающий на 10.1.0.2. Если вы закрыли интерфейс на 10.1.0.2 достаточно долго, чтобы соседство OSPF могло сломаться, а затем вернул его в оперативный режим, будет ли переустановлен исходный маршрут к 10.1.0.2?
bigmstone

Ответы:

7

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

В целом, для Cisco, если маршруты равны в протоколе, они оба будут представлены в таблице маршрутизации. Таблица маршрутизации, по умолчанию, установит оба пути и сделает ECMP. Если метрики или протоколы различаются, они не будут ECMP. Это также относится к различным LSA для одного и того же префикса.

Пит Лумбис
источник
Да - записи базы данных должны сказать нам - у них есть тот же адрес пересылки и рекламный маршрутизатор?
никотин
Я буду работать над получением выходных данных сегодня днем.
neirbowj
6

Я рассматриваю, имеет ли ECMP смысл для anycast. Маршрутизация должна направлять anycast в логически ближайший пункт назначения, в котором один хост будет иметь преимущество перед другим. Даже в случае, когда хосты anycast равноудалены, я все равно ожидал бы, что это останется верным. Что касается распределения нагрузки ECMP, я бы подумал, что для / назначения невозможно с / 32. Возможно, есть алгоритмы распределения нагрузки, которые учитывают источник. Для каждого пакета кажется рискованным, даже для DNS. Я полагаю, что большинство готовых решений anycast запускают ospf на хосте.

Потребовалось немного поиска, но следующая выдержка из rfc2178 подтверждает причину.

16.8. Многолучевое распространение с равными затратами

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

Каждый из нескольких маршрутов будет иметь одинаковый тип (внутризоновый, межобластной, тип 1 внешний или тип 2 внешний), стоимость и будет иметь одну и ту же связанную область . Однако каждый маршрут указывает отдельный маршрутизатор следующего перехода и рекламный маршрутизатор.

Деннис Олвани
источник
1
Хм, я выделил одну область, и ECMP присутствует на ядре. Хотя я бы все же утверждал, что это бесполезно с / 32. Возможно, имеет значение следующее: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Деннис Олвани
Это говорит о том, что область является одним из критериев для ECMP. Похоже, что различные области могут быть нарушителем.
Деннис Олвани
OSPF на хосте - да, это цель. / 32 назначается в качестве вторичного адреса в обратной петле. Я также изучаю конфигурацию распределения нагрузки, но в первую очередь это зависит от ECMP.
neirbowj
5

Я не могу воспроизвести это в своей лаборатории, используя 12.4 (24). Та же топология, петля RCore области 0, R1 с lo0 и интерфейсом в области 1, R2 с lo0 и интерфейсом в области 2 (оба NSSA), перераспределенный маршрут выбирается для ECMP на Rcore:

Routing entry for 10.20.0.0/16
  Known via "ospf 1", distance 110, metric 20, type NSSA extern 2, forward metric 6477
  Last update from 2.2.2.6 on Serial1/1, 00:02:23 ago
  Routing Descriptor Blocks:
    2.2.2.6, from 2.2.2.21, 00:02:23 ago, via Serial1/1
      Route metric is 20, traffic share count is 1
  * 1.1.2.1, from 1.1.1.1, 00:06:31 ago, via Serial1/0
      Route metric is 20, traffic share count is 1

Возможности, о которых я могу подумать: В зависимости от того, как маршрут входит в OSPF и какой тип маршрута OSPF используется, стоимость маршрутизатора ASBR может / не может учитываться в процессе выбора маршрута (для работы ECMP обе стоимости маршрута). и стоимость в ASBR должна совпадать). Просмотр метрики фактического LSA для обоих может помочь.

Я смог воспроизвести это на IOS, имитируя вашу конфигурацию - помещая anycast в интерфейс и помещая интерфейс в область. Если вам нужен ECMP, рассмотрите возможность перераспределения маршрута в OSPF, поскольку это работает.

никотин
источник
FWIW, изображение в моем экземпляре Dynamips - 12,4 (25d) на 7200. Ваши результаты показывают «Известно через ... NSSA extern 2», но мое показывает «внутри области». Это хорошая подсказка.
neirbowj
Подключенный перераспределение произведет это вместо использования сетевой команды или ip ospf под интерфейсом.
Даниэль Диб
@DanielDib Я нахожусь в процессе исчерпывающих перестановок нормальной / заглушки / nssa, внутризональной / внешней и, по крайней мере, Cisco + Dynamips / Brocade. Я тоже попробую Можжевельник, если у меня будет время.
neirbowj
3

В зависимости от того, какое оборудование Brocade вы используете (MLX? CER? XMR?), Вы можете обновить программное обеспечение. Было исправлено несколько ошибок в 5.3 (и 5.4 в зависимости от вашего оборудования) программных деревьев, симптомы которых были связаны с неправильным обновлением стоимости маршрута OSPF. Я не знаю всех критериев для просмотра ошибок, но некоторые из них были следующими: если стоимость была изменена на 1-гигабитном порту или на петлевом интерфейсе на маршрутизаторе с OSPF, изменение не было обработано и стоимость не была обновлена ,

Я понимаю, что вы видите это на платформах двух производителей, так что, скорее всего, это проблема конфигурации. Я также понимаю, что старая техническая поддержка-обновление «обновляет ваше программное обеспечение» часто может стоить не больше, чем просто на глаз. Тем не менее, это может быть что-то иметь в виду.

GoatAtWork
источник
Я буду иметь это в виду. Однако R1 / R2 устанавливает стоимость, Rcore видит стоимость, а Rcore демонстрирует симптомы ECMP.
neirbowj