IP : Cisco Express Forwarding(CEF)

Cisco エクスプレス フォワーディング(CEF)のルーティング ループのトラブルシューティング

2016 年 10 月 28 日 - 機械翻訳について
その他のバージョン: PDFpdf | ライター翻訳版 (2008 年 12 月 4 日) | 英語版 (2015 年 8 月 22 日) | フィードバック


目次


概要

このドキュメントは、Cisco Express Forwarding(CEF; Cisco エクスプレス フォワーディング)のルーティング ループや、最適でないルーティングのトラブルシューティングに役立ちます。これらの問題は、キャッシュされた有効な Cisco エクスプレス フォワーディング隣接関係が誤ったインターフェイスを指しているために発生します。 誤ったインターフェイスを示す隣接関係が作成されるのは、次のような理由です。

前提条件

要件

このドキュメントで使用されている概念について詳しく理解するには、次のリソースを参照してください。

使用するコンポーネント

このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

ネットワーク図

ルータ R1 は Serial 8/0 経由で R3 に接続し、ルータ R2 は Serial 8/0 経由で R4 に接続しています。 次の図に示すように、R1 と R2 は Ethernet 0/0 経由で接続されています。

/image/gif/paws/26083/trouble_cef_01.gif

  • R2 では、10.10.34.0/24 に対する external Border Gateway Protocol(eBGP; 外部ボーダー ゲートウェイ プロトコル)のプレフィクスの更新を R4 から受信します。 R2 は、internal BGP(iBGP; 内部 BGP)を経由して、このプレフィクスを 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)間をホップすることに注意してください。 原理的には、10.10.34.0/24 を宛先とする R1 からのトラフィックは、iBGP で学習したプレフィクス 10.10.34.0/24 によって R2 に達する必要があります。 そして、R2 から R4 にトラフィックがルーティングされるはずです。 ところが、traceroute コマンドの出力では、R1 と R2 の間のルーティング ループが確認されます。

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 のネクスト ホップを確認できます。 これは traceroute コマンドの第 1 ホップと一致し、パケットはネクスト ホップ 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 コマンドでは、パケットが IP アドレス 192.168.12.1 の R1 へ戻されていることが分かります。 10.10.34.0 宛のパケットが、R2 上で 10.10.24.4 ではなく、traceroute コマンドでの出力のように 192.168.12.1 をネクスト ホップとしてスイッチされた原因を調べるには、さらに調査が必要です。

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 と R4 の間のシリアル接続で障害が発生した場合、すべてのトラフィックが Ethernet 0/0 側のフローティング スタティック ルートを使用してルートされます。これは、R2 にフローティング スタティック ルートが定義されていて、これが R1 の IP アドレスである 192.168.12.1 ではなく、マルチアクセス インターフェイスである Ethernet 0/0 を指しているためです。 このため、未知の宛先すべてに対して、ルータ R2 では Ethernet0/0 インターフェイス経由で ARP 要求を送信します。 この例では、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

このログが原因を示しています。 一連のイベントを要約すると、次のステップになります。

  1. R2 の Serial 8/0 がダウンします。

  2. R2 には 10.10.34.4 宛のパケットがあります。

  3. R2 は、Ethernet 0/0 を直接指しているバックアップ用デフォルト ルートに従います。

  4. R2 が 10.10.34.4 の ARP 要求を送信します。

  5. R1(プロキシ)はその ARP 要求に対し、自身の MAC アドレスを R2 に返します。

  6. ここで、R1 の MAC アドレスを持った 10.10.34.4 宛の ARP エントリが R2 に作成されます。

  7. R2 は 10.10.34.4 の Cisco エクスプレス フォワーディングの隣接関係を作成し、この宛先に対し、Cisco エクスプレス フォワーディング テーブル(FIB)に Ethernet 0/0 経由の 10.10.34.4/32 エントリが設定されます。 この Cisco エクスプレス フォワーディング エントリは、ARP エントリが有効である間、または R1 が Ethernet セグメントに現れるまで維持されます。

  8. R2 の Serial 8/0 が回復します。

  9. R2 では、eBGP ルート 10.10.34.0/24 を、ネクスト ホップを 10.10.24.4 として R4 から学習し、このルートを IP ルーティング テーブルに設定します。

  10. R1 では、プレフィクス 10.10.34.0/24 を iBGP を経由して R2 から学習し、これを IP ルーティング テーブルに設定します。

  11. R1 に 10.10.34.4 宛のパケットがあります。

  12. R1 はルーティング テーブルを調べ、R2 への iBGP プレフィクス ルートを照合し、R2 へルートします。

  13. R2 は 10.10.34.4 宛のパケットを受信します。 FIB テーブルに 10.10.34.4/32 宛の Cisco エクスプレス フォワーディング エントリがすでにあり、これが Ethernet 0/0 を指し、R1 の MAC アドレスが設定されているため、ルーティング テーブルが検索されずにパケットが 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

関連情報


Document ID: 26083