このドキュメントでは、コマンド ip ospf mtu-ignore を使用しないことがベスト プラクティスである理由について説明します。
インターフェイス MTU が 9000 などの高い値に設定されているが、このインターフェイス経由で転送可能なパケットサイズの実際の値が 1500 であるといった事象が発生する場合があります。
OSPF が動作するリンクの両側で MTU が一致しない場合は、OSPF 隣接関係が構築されません。これは、MTU がデータベース記述子(DBD)パケットで伝送され、相手側でチェックされるためです。
RFC 2328 でも指定されている DBD パケットは、OSPF リンクステート データベースの内容を記述します。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 2 | Packet length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface MTU | Options |0|0|0|0|0|I|M|MS
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DD sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+- -+
| |
+- An LSA Header -+
| |
+- -+
| |
+- -+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
RFC 2328 の付録 A.3.3 には、インターフェイス MTU について次のように記されています。フラグメンテーションせずに、関連付けられているインターフェイスに送信できる最大 IP データグラムのバイト単位のサイズ。
OSPF 隣接関係が初期化されると、リンクに接続されたルータは、DBD パケットに含まれるそれぞれのインターフェイス MTU 値を交換します。
RFC 2328 のセクション 10.6 に次の記述があります。Database Description パケットのインターフェイス MTU フィールドに示されている IP データグラム サイズが、ルータがフラグメンテーションせずに受信インターフェイスで受け取ることができるサイズより大きい場合、Database Description パケットは拒否されます。
debug ip ospf adj コマンドを使用すると、これらの DBD パケットの受信を確認できます。
この例では、2 つの OSPF ネイバー間で MTU 値が一致していません。このルータの MTU は 1600 です。
OSPF: Rcv DBD from 10.100.1.2 on GigabitEthernet0/1 seq 0x2124 opt 0x52 flag 0x2
len 1452 mtu 2000 state EXSTART
OSPF: Nbr 10.100.1.2 has larger interface MTU
もう 1 つの OSPF ルータのインターフェイス MTU は 2000 です。
OSPF: Rcv DBD from 10.100.100.1 on GigabitEthernet0/1 seq 0x89E opt 0x52 flag 0x7
len 32 mtu 1600 state EXCHANGE
OSPF: Nbr 10.100.100.1 has smaller interface MTU
OSPF 隣接関係が完全に解除されるまで、DBD パケットが継続的に再送信されます。
OSPF: Send DBD to 10.100.1.2 on GigabitEthernet0/1 seq 0x9E6 opt 0x52 flag 0x7
len 32
OSPF: Retransmitting DBD to 10.100.1.2 on GigabitEthernet0/1 [10]
OSPF: Send DBD to 10.100.1.2 on GigabitEthernet0/1 seq 0x9E6 opt 0x52 flag 0x7
len 32
OSPF: Retransmitting DBD to 10.100.1.2 on GigabitEthernet0/1 [11]
%OSPF-5-ADJCHG: Process 1, Nbr 10.100.1.2 on GigabitEthernet0/1 from EXSTART to
DOWN, Neighbor Down: Too many retransmissions
インターフェイス コマンド ip ospf mtu-ignore は、OSPF DBD パケット内の MTU 値のチェックを無効にします。したがって、このコマンドを使用すると、2 台の OSPF ルータ間でインターフェイス MTU が一致しない場合でも、OSPF 隣接関係が FULL 状態に到達できます。
このコマンドは、Cisco Bug ID CSCdr20891 で導入されました。
このコマンドは、Cisco Bug ID CSCsk86476 以降の OSPF パケットの実際のパケット サイズに影響します。
ただし、送信される IP パケットの実際のパケット サイズには影響せず、ルータを通過するトラフィックの Path MTU Discovery の動作にも影響しません。このコマンドの使用は OSPF 隣接関係の構築に役立つ場合がありますが、ルータを通過する中継トラフィックが大量の IP パケットの影響を受ける可能性があります。
Cisco Bug ID CSCse01519 以前は、OSPF DBD パケットのサイズが 1500 バイトに制限されていました。これにより、OSPF mtu-ignore 機能が使用され、MTU が一致しない状況でも、OSPF の正常動作が可能でした。
Cisco Bug ID CSCse01519 以降でコマンド ip ospf mtu-ignore が使用されていない場合は、実際の OSPF パケットが 1500 バイトを超えたときに OSPF 隣接関係が構築されない可能性があります。
Cisco Bug ID CSCse01519 以降で、コマンド ip ospf mtu-ignore が使用され、Cisco Bug ID CSCsk86476 以前の場合は、1500 バイトを超える大きな OSPF パケットがドロップされる可能性があります。この場合は、OSPF 隣接関係が FULL 状態に到達しません。
Cisco Bug ID CSCsk86476 以降で、コマンド ip ospf mtu-ignore が使用されている場合は、ルータが OSPF パケットの 1 つの安全な最大 MTU の使用にフォールバックします。値は 1300 バイトです。この値はかなり小さいため、OSPF フラッディングに影響する可能性があります。OSPF パケットが大きいほど、OSPF フラッディングの可能性が低くなります。
すべてのケースに適切な解決策は、インターフェイス上で正しい MTU を設定することです。この MTU 値はルータ上のリンクの両側で一致する必要があります。