このドキュメントは、Cisco Express Forwarding(CEF; Cisco エクスプレス フォワーディング)のルーティング ループや、最適でないルーティングのトラブルシューティングに役立ちます。これらの問題は、キャッシュされた有効な Cisco エクスプレス フォワーディング隣接関係が誤ったインターフェイスを指しているために発生します。誤ったインターフェイスを示す隣接関係が作成されるのは、次のような理由です。
スタティック ルートが、マルチアクセス インターフェイスを直接指している。
プロキシ Address Resolution Protocol(ARP)の応答結果として Cisco エクスプレス フォワーディング隣接関係が作成され、有効になる。
このドキュメントで使用されている概念について詳しく理解するには、次のリソースを参照してください。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
ドキュメント表記の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
下図に示すように、ルータ R1 と R3 が Serial 8/0 によって接続され、ルータ R2 と R4 が Serial 8/0 によって接続されています。また、R1 と R2 は Ethernet 0/0 で接続されています。
R2はR4から10.10.34.0/24の外部ボーダーゲートウェイプロトコル(eBGP)プレフィックス更新を受信します。R2は内部BGP(iBGP)を介してこのプレフィックスをR1に伝搬します。
R2 には、R4 の Serial 8/0、IP アドレス 10.10.24.4 を指す、デフォルトのスタティック ルート(0.0.0.0/0)が定義されています。
また、R2 には、Ethernet 0/0 のインターフェイスを指すバックアップ用のフローティング デフォルト ルート(ip route 0.0.0.0 0.0.0.0 Ethernet 0/0 10)があり、R2 と R4 との間の接続に障害が発生した場合に、パケットをルーティングするようになっています。
R1 には、R3 の Serial 8/0、IP アドレス 10.10.13.3 を指すデフォルト ルートが定義されています。
10.10.34.0/24宛てのIPトラフィックがR1とR2の間でループされます。R1でtracerouteコマンドの出力を確認してください。
R1#traceroute 10.10.34.4 Type escape sequence to abort. Tracing the route to 10.10.34.4 1 192.168.12.2 20 msec 20 msec 20 msec 2 192.168.12.1 8 msec 12 msec 8 msec 3 192.168.12.2 8 msec 8 msec 12 msec 4 192.168.12.1 12 msec ...
宛先を 10.10.34.4 とするトラフィックは、R1 の Ethernet 0/0(IP アドレス 192.168.12.1)と R2 の Ethernet 0/0(IP アドレス 192.168.12.2)間をホップすることに注意してください。 理想的には、iBGPで学習されたプレフィックス10.10.34.0/24が原因では、R1から10.10.34.0/24宛てのトラフィックはR2に到達する必要があります。その後、R2からR4にルーティングされる必要があります。ただし、tracerouteコマンドの出力は、R1とR2間でR2間でR2間R2のでR
R1 |
---|
hostname R1 ! ip subnet-zero ! ip cef ! interface Ethernet0/0 ip address 192.168.12.1 255.255.255.0 ! interface Serial8/0 ip address 10.10.13.1 255.255.255.0 ! router bgp 11 no synchronization bgp log-neighbor-changes neighbor 10.10.13.3 remote-as 12 neighbor 192.168.12.2 remote-as 11 no auto-summary ! ip route 0.0.0.0 0.0.0.0 10.10.13.3 |
R2 |
---|
hostname R2 ! ip cef ! interface Ethernet0/0 ip address 192.168.12.2 255.255.255.0 ! interface Serial8/0 ip address 10.10.24.2 255.255.255.0 ! router bgp 11 no synchronization bgp log-neighbor-changes network 192.168.12.0 neighbor 10.10.24.4 remote-as 10 neighbor 192.168.12.1 remote-as 11 neighbor 192.168.12.1 next-hop-self no auto-summary ! ip route 0.0.0.0 0.0.0.0 10.10.24.4 ip route 0.0.0.0 0.0.0.0 Ethernet0/0 10 ! |
10.10.34.4 に宛てたパケットが R1 と R2 の間でループ状態になっているため、トラブルシューティングを始めます。R1のIPルーティングを確認します。show ip route 10.10.34.0コマンドの出力で、10.10.34.0/24宛てのパケットのネクストホップ192.168.12.2を確認します。これは、パケットがネクストホップ192.168.12.2に送信され、R1で正しくスイッチングされることを確認します。
R1#show ip route 10.10.34.0 Routing entry for 10.10.34.0/24 Known via "bgp 11", distance 200, metric 0 Tag 10, type internal Last update from 192.168.12.2 00:22:59 ago Routing Descriptor Blocks: * 192.168.12.2, from 192.168.12.2, 00:22:59 ago Route metric is 0, traffic share count is 1 AS Hops 1
次の手順は、R2のIPルーティングテーブルを確認することです。このshow ip route 10.10.34.0コマンドの出力に示されているように、10.10.34.0宛てのパケットはSerial 8/0のネクストホップ10.10.24.4にルーティングされます。ただし、tracerouteコマンドははR1に戻IPアドレス192.168.12.1にに調査が必要です。 10.10.34.0宛てのパケットがR2で10.10.24.4ではなくネクストホップ192.168.12.1(TRACEROUTEコマンドの出力など)にスイッチングされる理由。
R2#show ip route 10.10.34.0 Routing entry for 10.10.34.0/24 Known via "bgp 11", distance 20, metric 0 Tag 10, type external Last update from 10.10.24.4 00:42:32 ago Routing Descriptor Blocks: * 10.10.24.4, from 10.10.24.4, 00:42:32 ago Route metric is 0, traffic share count is 1 AS Hops 1
このとき、Cisco エクスプレス フォワーディングでスイッチングされるネットワークでは、パケット フォワーディングの決定の項目には、次のものがあることを理解しておくことが重要です。
プレフィクスが最も長く一致する項目を探すための、ルーティング テーブルの検索。
転送情報ベース(FIB)の検索。
ルーティング テーブルは確認されているため、Cisco エクスプレス フォワーディング FIB を調べます。show ip cef 10.10.34.4 detail コマンドの結果で、Cisco エクスプレス フォワーディングは 10.10.34.4 を、Serial 8/0 側のネクスト ホップ 10.10.24.4 ではなく、Ethernet 0/0 側にスイッチングしていることに注意してください(show ip route 10.10.34.0 コマンドの出力と同様)。 この矛盾によって、ネットワーク上でループが引き起こされます。
R2#show ip cef 10.10.34.4 detail 10.10.34.4/32, version 19, cached adjacency 10.10.34.4 0 packets, 0 bytes via 10.10.34.4, Ethernet0/0, 0 dependencies next hop 10.10.34.4, Ethernet0/0 valid cached adjacency
次のステップは、Cisco エクスプレス フォワーディング隣接関係テーブルを見て、Cisco エクスプレス フォワーディングがパケットを Ethernet 0/0 にスイッチングするように学習した理由を調べることです。隣接関係が ARP によって構築されていることに注意してください。
R2#show adjacency ethernet 0/0 detail | begin 10.10.34.4 IP Ethernet0/0 10.10.34.4(5) 50 packets, 2100 bytes AABBCC006500AABBCC0066000800 ARP 03:02:00
次の show ip arp コマンドの出力で確認できます。
R2#show ip arp 10.10.34.4 Protocol Address Age (min) Hardware Addr Type Interface Internet 10.10.34.4 60 aabb.cc00.6500 ARPA Ethernet0/0
次に、IP ルートがルーティング テーブルにある場合、ARP エントリが作成された理由を調べます。もう一度、ルーティング テーブルを見てみます。
R2#show run | include ip route 0.0.0.0 ip route 0.0.0.0 0.0.0.0 10.10.24.4 ip route 0.0.0.0 0.0.0.0 Ethernet0/0 10
R2にはマルチアクセスインターフェイスEthernet 0/0を指し、R1のイーサネットIPアドレス192.168.12.1を指さないため、R2とR4の間でシリアル接続が失敗すると、すべてのトラフィックがフローティングスタティックルートを使用してルーティングされます..この例では、R2 では 10.10.34.0 ネットワークへのより具体的なルートが失われています。したがって、データ パケットがこのネットワークのホストに到着すると、Ethernet インターフェイス経由で ARP 要求が生成されます。R1 の Ethernet インターフェイスでは、プロキシ ARP がデフォルトで有効になっており、デフォルト ルートは R3 を指しているため、R1 はプロキシ ARP 応答を自身の MAC アドレスを付けて返します。このため、R2 はすべてのトラフィックを R1 に送り、R1 はすべてのトラフィックをデフォルト ルート(0.0.0.0/0)を使用して AS 12 側に転送し、結果として 10.10.34.4 へはインターネット経由で転送されます。
R2 が R1 からのプロキシ ARP 応答を受信すると、Ethernet 0/0 のインターフェイスを指す /32 の有効な Cisco エクスプレス フォワーディングの隣接関係が作成されます。この Cisco エクスプレス フォワーディング エントリは、プロキシ ARP ルータである R1 がイーサネット セグメント上に現れるまでは、無効になりません。したがって、R2 と R4 の間のシリアル接続が回復し、ルーティング テーブルのデフォルト ルートで AS 10 に至る Serial 8/0 が示されていても、パケットの Cisco エクスプレス フォワーディング スイッチングには /32 Cisco エクスプレス フォワーディング エントリが使用され続けます。この結果、ルーティング ループが発生します。
最後に、ログを見て、シリアル リンク(s8/0)フラップしたかどうかを調べます。.これにより、ルーティング テーブルにフローティング スタティック ルートが設定されて、プロキシ ARP が生じることになり、その結果、Cisco エクスプレス フォワーディングの FIB に 10.10.34.4/32 の Cisco エクスプレス フォワーディング エントリが設定されます。
R2#show log | beg Ethernet0/0 [..] %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial8/0, changed state to down %BGP-5-ADJCHANGE: neighbor 10.10.24.4 Down Interface flap %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial8/0, changed state to up %BGP-5-ADJCHANGE: neighbor 10.10.24.4 Up
このログが原因を示しています。一連のイベントを要約すると、次のステップになります。
R2 の Serial 8/0 がダウンします。
R2 には 10.10.34.4 宛のパケットがあります。
R2 は、Ethernet 0/0 を直接指しているバックアップ用デフォルト ルートに従います。
R2 が 10.10.34.4 の ARP 要求を送信します。
R1(プロキシ)はその ARP 要求に対し、自身の MAC アドレスを R2 に返します。
ここで、R1 の MAC アドレスを持った 10.10.34.4 宛の ARP エントリが R2 に作成されます。
R2は10.10.34.4のCisco Express Forwarding隣接関係を作成し、Ethernet 0/0を介してこの宛先のCisco Express Forwardingテーブル(FIB)に10.10.34.4/32エントリがインストールされます。このCisco Express Forwardingエントリは、ARPエントリが有効である限間維持されます。
R2 の Serial 8/0 が回復します。
R2 では、eBGP ルート 10.10.34.0/24 を、ネクスト ホップを 10.10.24.4 として R4 から学習し、このルートを IP ルーティング テーブルに設定します。
R1 では、プレフィクス 10.10.34.0/24 を iBGP を経由して R2 から学習し、これを IP ルーティング テーブルに設定します。
R1 に 10.10.34.4 宛のパケットがあります。
R1 はルーティング テーブルを調べ、R2 への iBGP プレフィクス ルートを照合し、R2 へルートします。
R2は10.10.34.4宛のパケットを受信します。R1のMACアドレスを持つFIBテーブルのEthernet 0/0をポイントする10.10.34.4/32のCisco Express Forwarding(CEF)エントリがすでに存在するため、ルーティングテーブルを参照せずにR1にパケットをを返します。これによってループが形成されます。
Ethernet 0/0 を直接指しているフローティング スタティック ルートを、ネクスト ホップのアドレスを指しているものに置き換えます。
R2(config)#no ip route 0.0.0.0 0.0.0.0 ethernet 0/0 10 R2(config)# ip route 0.0.0.0 0.0.0.0 192.168.12.1 10
マルチアクセス インターフェイスの Ethernet 0/0 に代わって、ネクスト ホップの IP アドレスを指すスタティック ルートを持つことで、R2 では、すべての宛先に対してプロキシ ARP 要求が送信されなくなります。パケットは、ネクスト ホップ 192.168.12.1 に従ってルーティングとスイッチングが行われます。これによって、ARP Cisco エクスプレス フォワーディング エントリの設定や、ループが避けられます。
正しいインターフェイスである Serial 8/0 を指している R2 の Cisco エクスプレス フォワーディング エントリを見てみます。
R2#show ip cef 10.10.34.4 10.10.34.0/24, version 32, cached adjacency to Serial8/0 0 packets, 0 bytes via 10.10.24.4, 0 dependencies, recursive next hop 10.10.24.4, Serial8/0 via 10.10.24.0/24 valid cached adjacency