概要
このドキュメントでは、最大伝送ユニット(MTU)の問題によって、内部または外部の Border Gateway Protocol(BGP)ネイバー フラップが発生しているかどうかを確認する方法について説明します。
前提条件
両方の BGP ルータに対して以下のタスクを実行してから、このドキュメントに記載されている手順を実行してください。
- BGP の設定を確認します。
- Internet Control Message Protocol(ICMP)経由で BGP ネイバーにアクセスでき、ドロップが検出されていないことを検証します。
- ピア BGP に使用されている接続インターフェイスがオーバーサブスクライブされていないこと、および入出力ドロップやエラーが存在しないことを検証します。
- CPU およびメモリの使用率を確認します。
問題
BGP ネイバー形式。ただし、プレフィックス交換時に、BGP 状態がドロップし、「Generate Missing BGP Hello Keepalives」がログに記録されるか、または他のピアによりセッションが終了されます。
MTU が原因で BGP ネイバーがフラップしているかどうかを判断するために、次の手順を実行します。
- 以下のコマンドを使用して、影響を受けているネイバーおよび両方の BGP ルータ上の接続インターフェイスを確認します。ピアリング アドレスがループバック アドレスの場合は、ループバックで到達可能な接続インターフェイスを確認します。また、両方のピアリング ルータ上の BGP OutQ を確認します。OutQ が一貫してゼロ以外の場合、パス内の MTU の問題が原因で、更新がピアに到達できない可能性が高いです。
Router#show ip bgp summ | in InQ|10.10.10.2
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.10.10.2 4 3 64 62 3 0 0 00:00:3 2
Router#show ip route 10.10.10.2
Routing entry for 10.10.10.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via GigabitEthernet1/0
Route metric is 0, traffic share count is 1
- 両サイドのインターフェイス MTU を確認します。
Router#show ip int g1/0 | i MTU
MTU is 1500 bytes
Router#
- TCP で認められている両方の BGP スピーカーの最大データ セグメントを確認します。
Router#show ip bgp neigh 20.20.20.2 | inc segment
Datagrams (max data segment is 1460 bytes):
Router#
前述の例では、20 バイトが TCP ヘッダーに割り当てられ、別の 20 バイトが IP ヘッダーに割り当てられるため、1,460 が正しいことになります。
- BGP が使用されている(path-mtu が有効)かどうか確認します。
Router#show ip bgp neigh 10.10.10.2 | in tcp
Transport(tcp) path-mtu-discovery is enabled
Router#
- 最大インターフェイス MTU と DF(Don't Fragment)ビット セットが設定された BGP ピアを ping します。
Router#ping 10.10.10.2 size 1500 df
Type escape sequence to abort.
Sending 5, 1500-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds:
Packet sent with the DF bit set
.....
Success rate is 0 percent (0/5)
- ICMP サイズの値を減らして、使用できる最大 MTU サイズを判断します。
ping 10.10.10.2 size 1300 df
解決方法
考えられる原因を次に示します。
- 両方のルータのインターフェイス MTU が一致していない。
- 両方のルータのインターフェイス MTU は一致しているが、BGP セッションが形成されているレイヤ 2 ドメインが一致していない。
- パス MTU ディスカバリにより、TCP BGP セッションの最大データサイズが正しくないと判断されている。
- PMTUD ICMP パケットが(ファイアウォールまたは ACL)によってブロックされているために、BGP Path Maximum Transmission Unit Discovery(PMTUD)が失敗している可能性がある。
この MTU の問題を解決する方法を次に示します。
- 両方のルータのインターフェイス MTU を同一にします。show ip int | in MTUコマンドを発行します。
- 両方のルータのインターフェイス MTU は正しい(たとえば、1,500)が、DF ビット セットの ping テストが 1,300 を超えない場合、影響を受けている BGP セッションが形成されたレイヤ 2 ドメインに一貫性のない MTU の設定が含まれている可能性があります。各レイヤ 2 インターフェイス MTU を確認し、レイヤ 2 インターフェイス MTU を修正して、問題を解決します。
- レイヤ 2 ドメインを確認または変更できない場合は、ip tcp mss グローバル コマンドを 1,000 などの小さい値に設定できます。その結果、ローカルで発生するすべての TCP の最大データ セグメントのセッション(BGP を含む)が 1,000 に設定されます。このコマンドの詳細については、『Cisco IOS IP アプリケーション サービスのコマンド リファレンス』の「ip tcp mss」の項を参照してください。
また、ip tcp adjust-mss コマンドを使用して、さらにトラブルシューティングすることもできます。このコマンドはインターフェイス レベルで設定され、すべての TCP セッションに作用します。このコマンドの詳細については、『Cisco IOS IP アプリケーション サービスのコマンド リファレンス』の「ip tcp adjust-mss」の項を参照してください。
- (オプション)BGP Path Maximum Transmission Unit Discovery(PMTUD)によって、正しい最大データ サイズが生成されていない可能性があります。BGP PMTUD をグローバルに、またはネイバーごとに無効にして、BGP PMTUD が原因なのかどうか確認します。BGP PMTUD を無効にすると、BGP Maximum Segment Size(MSS)は、RFC 879 の定義に従い、デフォルトの 536 になります。
PMTUD を無効にする方法の詳細については、『Cisco IOS BGP 構成ガイド』の「セッションごとの TCP パス MTU ディスカバリに対する BGP サポートの設定」の項を参照してください。
PMTUD の詳細については、「PMTUD の概要」を参照してください。