OSPF Error: MTU mismatch — Соседство зависло в EXSTART / EXCHANGE
OSPF-соседство устанавливается, успешно проходит этап 2-Way, но бесконечно зависает в состоянии EXSTART или EXCHANGE, после чего сбрасывается по таймауту. В системном логе:
%OSPF-5-ADJCHANGE: Neighbor 10.20.30.2 on GigabitEthernet0/3 from EXSTART to DOWN, Neighbor Down: Too many retransmissions
%OSPF-5-ADJCHANGE: Neighbor 10.20.30.2 on GigabitEthernet0/3 from DOWN to INIT
%OSPF-5-ADJCHANGE: Neighbor 10.20.30.2 on GigabitEthernet0/3 from 2-WAY to EXSTART
%OSPF-7-DEBUG: Retransmitting DBD packet to 10.20.30.2 on GigabitEthernet0/3 (size 1500)- Вывод
show ip ospf neighborпоказывает статусEXSTART/DRилиEXCHANGE/BDR. - Пакеты обмена топологией DBD (Database Description) не могут быть приняты соседней стороной.
- Маршрутизаторы не могут завершить первичное наполнение базы LSDB.
1. Механизм зависания в EXSTART/EXCHANGE (RFC 2328)
На этапе EXSTART маршрутизаторы выбирают Master/Slave роли и согласовывают начальный Sequence Number для пакетов DBD. В теле каждого DBD-пакета передается поле Interface MTU:
- Маршрутизатор, получивший DBD-пакет, сравнивает переданное MTU с локальным MTU своего интерфейса.
- Если MTU соседа превышает локальное значение MTU, маршрутизатор отбрасывает данный DBD-пакет.
- Сторона Master не получает подтверждения (ACK) и циклически ретранслирует DBD, пока не истечет счетчик повторов, после чего соседство сбрасывается в Down.
2. Диагностика MTU на смежных интерфейсах
# Cisco IOS-XE
show interfaces GigabitEthernet0/3 | include MTU
show ip ospf interface GigabitEthernet0/3
show ip ospf neighbor GigabitEthernet0/3
# Junos
show interfaces ge-0/0/3 detail | match "MTU"
show ospf neighbor detail3. Решение 1: Выравнивание физического MTU (Рекомендуемое)
Убедитесь, что MTU совпадает с обеих сторон (включая учет QinQ / MPLS / IPSec оверхеда):
# Cisco IOS-XE
interface GigabitEthernet0/3
mtu 1500
ip mtu 1500
# Junos
set interfaces ge-0/0/3 mtu 1514
set interfaces ge-0/0/3 unit 0 family inet mtu 15004. Решение 2: Игнорирование проверки MTU в OSPF
Если MTU невозможно изменить (например, на стыке с провайдерским L2-каналом), отключите сверку поля MTU:
# Cisco IOS-XE (применяется на стороне с МЕНЬШИМ MTU)
interface GigabitEthernet0/3
ip ospf mtu-ignore
# Junos
set protocols ospf area 0.0.0.0 interface ge-0/0/3.0 mtu-ignore Частые вопросы (FAQ)
Почему Hello пакеты проходят при разном MTU, а DBD — нет?
Пакеты Hello имеют малый размер (обычно менее 100 байт) и легко проходят через канал с любым MTU. DBD и LSU пакеты имеют максимальный размер, равный Interface MTU, и блокируются при проверке или фрагментации.
На каком из маршрутизаторов нужно прописывать 'ip ospf mtu-ignore'?
Команду необходимо прописывать на маршрутизаторе с МЕНЬШИМ MTU (который отбрасывает пакеты соседа с большим MTU). Однако рекомендуется прописывать ее с обеих сторон соединения.
Может ли включение 'mtu-ignore' привести к скрытым проблемам?
Да. Если реальный L2-канал не пропускает большие кадры, а mtu-ignore включен, этап DBD завершится, но передача крупных Type-5/Type-3 LSA в пакетах Link State Update (LSU) приведет к дропам трафика и потере маршрутов.
В чем разница между Interface MTU и IP MTU на Cisco?
Interface MTU — это размер кадра L2 (включая заголовки инкапсуляции), а IP MTU — максимальный размер IP-пакета L3. OSPF в поле Interface MTU передает значение IP MTU.