Проверим статус установления отношений соседства на R1:
Как видно из рисунка 6, маршрутизатор R1 обнаружил соседа R2, однако установление соседских отношений находится на стадии ExStart (завершение синхронизации LSDB соответствует статусу Full, что будет рассмотрено ниже). Можно заключить, что отношения соседства не установлены и обмен маршрутной информации не выполняется.
Попробуем найти причину, обратившись к логам R1 (команда /log print):
В части диагностики OSPF, лог-записи RouterOS, настроенные по умолчанию, достаточно информативны. Видно, что произвести обмен DBD не удаётся, поскольку не совпадает значение MTU: на локальном маршрутизаторе R1 выставлено значение 1400, а на удалённом R2 — 1500.
Зададим значение MTU на eth1-интерфейсе R1 равным 1500 и убедимся в том, что отношения соседства установились (команда /interface ethernet set ether1 mtu=1500):
Следует иметь в виду, что реализация протокола OSPF на оборудовании различных вендоров может отличаться. Так, например, на оборудовании Cisco отношения соседства не устанавливаются на secondary-адресах интерфейсов. Проверим работу RouterOS в данных условиях, добавив подсети, к которым принадлежат secondary-адреса, в OSPF (команда на R1 и R2 /routing ospf network add network=172.16.100.0/24 area=backbone).
Список соседей маршрутизатора R1:
На иллюстрации видно, что R1 установил соседские отношения с R2 по двум каналам связи, т.е. поведение протокола OSPF в Cisco IOS и RouterOS в этой части отличаются, что необходимо учитывать при построении гетерогенных сетей.
Как было упомянуто, при установлении отношений соседства маршрутизаторы проходят несколько стадий. Рассмотрим их подробнее:
- Down. Состояние, в котором от соседа не принято Hello-пакета;
- Init. Состояние, в котором получен Hello-пакет от соседа, однако двухсторонние отношения ещё не установлены, поскольку в полученных Hello-пакетах отсутствует собственный RID;
- 2-Way. Состояние, в котором двухстороннее соединение считается установленным. Также на этом этапе происходит процесс выбора DR и BDR, который подробно рассматривается ниже. Важно понимать, что если в сегменте сети присутствует более 3 маршрутизаторов, то попытки перейти к следующим стадиям соседских отношений предпринимаются только с DR/BDR, т.е. каждый из DROther устанавливает отношения с другим DROther в состояние 2-Way;
- ExStart. Маршрутизатор с более высоким RID становится master, второй — slave. Master назначает начальный номер для первого DBD-пакета и начинает обмен DBD;
- Exchange. Маршрутизаторы обмениваются DBD о собственной LSDB;
- Loading. Производится обмен маршрутной информацией с применением служебных пакетов LSR, LSU, LSAck;
- Full. Синхронизация LSDB выполнена. В широковещательной сети каждый из DROther устанавливает Full-state соседство с DR и BDR.
Обратимся к схеме на рисунке 2 и спискам соседей на иллюстрациях 3 и 4. В данном примере R4 выбран в качестве DR, R3 — в качестве BDR, что подтверждает вывод команд: на рисунке 4 маршрутизатор R4 устанавливает Full-state отношения с каждым из маршрутизатором широковещательного сегмента, на рисунке 3 маршрутизатор R2 устанавливает Full-state отношения с R3 и R4 и 2-Way с R1, поскольку R1 и R2 являются DROther.
Для анализа установления соседских отношений можно использовать лог-записи, предварительно включив логирование для протокола OSPF (команда /system logging add topics=ospf action=memory), однако необходимо быть готовым к большому объёму записываемой информации.
/routing ospf interface;
set [find interface=vlan25] cost=40;
...
в уже настроенном ospf заново исполняются пункты 4-9 алгоритма ospf?