ルータ間でMTU値が異なるとOSPFのネイバーが張れません。 MTU値が同じ場合と違う場合の動作についてまとめます。

ネイバー確立時のMTU値の通知
ネイバー確立で、Helloパケットを交換し、2Wayへ推移後、DD(LSAの要約)を送信する時に、自身のMTU値をネイバーに伝えます。この値がルータ間で異なると隣接関係になれません。

MTU値が違う場合
R3のMTU値を1400に変更し、R2とMTUが不一致になるようにします。R2側でdebug ip ospf adjを実行し、MTU値が異なる場合の挙動を確認します。
R2#debug ip ospf adj
R3のMTU値を変更し、一旦、隣接関係を切断します。
R3(config)#int fa0/0.23 R3(config-subif)#ip mtu ? <68-1500> MTU (bytes) R3(config-subif)#ip mtu 1400 R3(config-subif)#shutdown R3(config-subif)#no shutdown
R3のMTU値変更後のR2のdebug ip ospf adjの出力です。
R2#
*Jun 16 12:37:31.111: OSPF-1 ADJ Fa0/0.23: Rcv DBD from
3.3.3.3 seq 0x2277 opt 0x52 flag 0x7 len 32 mtu 1400 state EXCHANGE
*Jun 16 12:37:31.111: OSPF-1 ADJ Fa0/0.23: Nbr 3.3.3.3 has smaller interface MTU
*Jun 16 12:37:31.111: OSPF-1 ADJ Fa0/0.23: Send DBD to 3.3.3.3 seq 0x2277 opt 0x52 flag 0x2 len 92
R3のMTU値(1400)が自身のMTU値(1500)より小さく、隣接関係が張れません。
R2とR3のネイバーの状態を確認します。
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
3.3.3.3 1 EXCHANGE/BDR 00:00:37 192.168.23.3 FastEthernet0/0.23
R3#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1 EXSTART/DR 00:00:37 192.168.23.2 FastEthernet0/0.23
上記の通り、Full状態にはなりません。しばらくすると、以下のログが出力され、ネイバーがダウンします。
R3# *Jun 16 12:39:15.251: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from EXSTART to DOWN, Neighbor Down: Too many retransmissions
では、R3のMTU値を元に戻します
R3(config)#int fastEthernet 0/0.23 R3(config-subif)#no ip mtu
これでMTU値がルータ間で一致しました。しばらくすると、 Ignore timer expiredにより、再度、ルータは、ネイバー確立を試みます。
*Jun 16 12:40:15.251: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from DOWN to DOWN, Neighbor Down: Ignore timer expired *Jun 16 12:40:19.955: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from LOADING to FULL, Loading Done
MTU値をチェックしない設定(mtu-ignore)
隣接関係の確立条件のMTU値の一致をip ospf mtu-ignoreにより除外することができます。
R2(config)#int fa0/0.23 R2(config-subif)#ip ospf mtu-ignore
R3(config)#int fa0/0.23 R3(config-subif)#ip ospf mtu-ignore
R2側でdebug ip ospf adjを実行し、MTU値を無視した際の挙動を確認します。
R2#debug ip ospf adj OSPF adjacency debugging is on
R3のMTU値を変更し、一旦、隣接関係を切断し、再度ネイバー接続を試みます。
R3(config)#int fa0/0.23 R3(config-subif)#ip mtu 1400 R3(config-subif)#shutdown *Jun 16 12:49:11.175: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from FULL to DOWN, Neighbor Down: Interface down or detached R3(config-subif)#no shutdown *Jun 16 12:50:02.963: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from LOADING to FULL, Loading Done
R3のコンソールログで、R2と隣接関係になれていることが確認できます。
R2のdebug ip ospf adjの出力です。
R2# *Jun 16 12:50:03.519: OSPF-1 ADJ Fa0/0.23: Rcv DBD from 3.3.3.3 seq 0xA09 opt 0x52 flag 0x1 len 72 mtu 1400 state EXCHANGE *Jun 16 12:50:03.519: OSPF-1 ADJ Fa0/0.23: Exchange Done with 3.3.3.3 *Jun 16 12:50:03.523: OSPF-1 ADJ Fa0/0.23: Send LS REQ to 3.3.3.3 length 36 LSA count 1 *Jun 16 12:50:03.523: OSPF-1 ADJ Fa0/0.23: Send DBD to 3.3.3.3 seq 0xA09 opt 0x52 flag 0x0 len 32 *Jun 16 12:50:03.539: OSPF-1 ADJ Fa0/0.23: Rcv LS UPD from 3.3.3.3 length 76 LSA count 1 *Jun 16 12:50:03.543: OSPF-1 ADJ Fa0/0.23: Synchronized with 3.3.3.3, state FULL *Jun 16 12:50:03.543: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 from LOADING to FULL, Loading Done
対向ルータのMTUは1400と認識していますが、Exchangeステートが完了し、Full状態に遷移していることがわかります。
コメント