キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
1019
閲覧回数
0
いいね!
0
コメント
shoriuch
Cisco Employee
Cisco Employee

[toc:faq]

 

概要

本ドキュメントでは、ASR9000 シリーズルータを使用している場合に、想定外 ARP パケットを受信することによって、ルートの学習に問題が発生してしまった事例と、その対処方法について紹介します。

  

事例の概要

  • 対向 L3 Switch 再起動後に BGP session が確立できなくなった
    • Ping を実施しても失敗するため、疎通性が失われているようにみえる。
    • clear arp を行うことで、復旧する。
    • 対向の Loopback アドレス宛に BGP neighbor を設定している
    • 対向の Loopback アドレスへは static route を設定しており、route 解決している

RP/0/RSP0/CPU0:ASR9K#show bgp vrf all summary

VRF: Test
-------------
192.168.254.254     0 65535   12502   12675        0    0    0 00:08:29 Active

 

  

確認の手順と確認結果の例

 

test

show route による確認

  • RIB には エントリが想定通りに載っていることを確認
    • 設定通り、static によってエントリが生成されている
    • Next-hop のアドレス、interface についても想定通り

RP/0/RSP0/CPU0:ASR9K#show route vrf Test 192.168.254.254/32

Routing entry for 192.168.254.254/32
  Known via "static", distance 1, metric 0
  Installed Nov  1 18:17:49.187 for 02:24:29
  Routing Descriptor Blocks
    192.168.0.1, via Bundle-Ether1
      Route metric is 0
  No advertising protos.

 

show cef / show arp による確認

  • RSP 上の FIB にもエントリが想定通り載っていることを確認
    • Next-hop のアドレス、interface についても想定通り

RP/0/RSP0/CPU0:ASR9K#show cef vrf Test 192.168.254.254/32 location 0/RSP0/CPU0

192.168.254.254/32, version 651, internal 0x4000801 0x0 (ptr 0x9d614714) [1], 0x0 (0x9d57e568), 0x440 (0x9e1774c8)
 Updated Nov  1 18:17:49.211
 Prefix Len 32, traffic index 0, precedence n/a, priority 3
   via 192.168.0.1, Bundle-Ether1, 4 dependencies, weight 0, class 0 [flags 0x0]
    path-idx 0 NHID 0x0 [0x9cf703e0 0x0], Internal 0x9e3fa46c, parent-ifh 0x220
    next hop 192.168.0.1
    local adjacency
     local label 16013      labels imposed {None}

 

  • LC 上の FIB にエントリが存在しない事が判明

RP/0/RSP0/CPU0:ASR9K#show cef vrf Test 192.168.254.254/32 location 0/0/CPU0

%Prefix not found or IP is not running. VRF Test.

 

  • さらに、該当 prefix への arp エントリが存在することを確認
    • ARP は同一セグメント内の MAC 解決に使用される。通常Loopback が載ることはない。

RP/0/RSP0/CPU0:ASR9K#show arp vrf Test
---------------------------------------------------------------------------
0/0/CPU0
---------------------------------------------------------------------------
192.168.254.254   00:04:29   beef.beef.beef  Dynamic    ARPA  Bundle-Ether1

 

 

原因及び詳細

  • 対向L3SW 再起動時にパケットキャプチャを行ったところ、Loopback アドレスを Sender IP とした ARP request を送信しており、対向機器の不具合により送信されていた。
  • ASR9K では該当の ARP request によって、対向機器の Loopback アドレスを隣接アドレスとして学習しており、その影響で FIB へインストールできていなかった

106518    2016-12-13 15:00:00.000000    CiscoInc_ab:cd:ef    Broadcast    ARP    60    Who has 192.168.0.2? Tell 192.168.254.254.
Frame 106518: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0
Ethernet II, Src: CiscoInc_ad:cd:ef (00:81:c4:ab:cd:ef), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Address Resolution Protocol (request)
    Hardware type: Ethernet (1)
    Protocol type: IPv4 (0x0800)
    Hardware size: 6
    Protocol size: 4
    Opcode: request (1)
    Sender MAC address: CiscoInc_ab:cd:ef (00:81:c4:ab:cf:ef)
    Sender IP address: 192.168.254.254
    Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)
    Target IP address: 192.168.0.2


ARP で学習すると FIB にインストールされない理由

  • RIB/ARP 双方で /32 ルートを学習している場合、XR 6.0.0 以前では ARP によって学習された AIB(adjacency information base) の情報を優先して採用する。

  • その際、該当Prefix は、直接インタフェースと接続されている(隣接している)とみなした上で
    FIB へインストールをしようとするため Connected route でカバーされているかどうかのチェックが入る。

  • 今回の対向機器の loopback アドレスは別セグメントであるので、同じ L3 ドメインに所属するインタフェースを持っていない。
    それにより、上記チェックに失敗し、LC上の FIB へのインストールがされない


IOS-XR の ARP の実装及び ARP の観点での対処策

  • 別セグメントの ARP パケットを受信した場合でも ARP 学習される
    • “arp learning local” を Interface 上に設定することで、subnet check が有効となる
  • 自発の ARP request に対する reply だけでなく、別機器からの ARP request によっても学習を行い、 ARP entry を生成する。 ※ RFC826 を参照
RP/0/RP0/CPU0:ASR9K(config)#interface bundle-ether 1
RP/0/RP0/CPU0:ASR9K(config-if)#arp learning ?
  disable  Disable dynamic learning of ARP entries
  local    Enable dynamic learning only for local subnet only
RP/0/RP0/CPU0:ASR-9922-AC(config-if)#arp learning local

 

IOS-XR FIB の実装及び、FIB の観点での対処策

  • Entry の学習ソースは AIB, RIB, LSD.
  • IOS-XR 6.0.0 以前のデフォルトの優先度は AIB> LSD > RIB.  AIB が最優先
  • IOS-XR 6.0.0 以降ではデフォルトで LSD > RIB > AIBへと実装が変更されている

  • IOS-XR 5.1.2 にて優先度を変更する以下の設定が実装
    • 優先度を LSD > RIB > AIB の順に変更することができる

RP/0/RP0/CPU0:ASR9K(config)#cef adjacency route override rib ?  
disable  Prevent adjacency routes from overriding RIB routes
RP/0/RP0/CPU0:ASR9K(config)#cef adjacency route override rib disable


Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします