シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ASR9K: サブネット外のアドレスの ARP 学習による問題について

[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


バージョン履歴
改訂番号
1/1
最終更新:
‎01-19-2017 04:44 PM
更新者:
 
ラベル(1)
タグ(2)