概要
本ドキュメントでは、ASR9000 シリーズルータを使用している場合の packet drop の確認方法とその手順について紹介します。
show interface での drop の確認
- Total input drop には NP での drop もカウントされ、理由は多岐にわたる。
- QOS, RPF による drop や、無効なパケット、処理可能な範囲を超える受信による drop
- 落とすべき drop も集計され、その殆どが H/W 起因の drop ではない。
- 厳密に確認が必要な場合は、キャプチャの取得が必要となる事が多い。
- 通常、H/W に問題がある場合は、input error や CRC 等の部分がカウントアップする
RP/0/RSP0/CPU0:ASR9K#show interface gigabitethernet 0/0/0/0
- snip -
5 minute input rate 4000 bits/sec, 5 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 12 packets input, 1488 bytes, 10 total input drops 0 drops for unrecognized upper-level protocol Received 0 broadcast packets, 0 multicast packets 0 runts, 0 giants, 0 throttles, 0 parity 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
|
drop ポイントの特定について
show drop / show controllers np description コマンド
- IOS-XR 5.3.0 より、show drop コマンドに all option が実装
- 特定の location/module で S/W, H/W の drop カウンタを網羅的に出力
- これ以降、RSV_DROP_IN_L3_NOT_MYMAC に着目
RP/0/RSP0/CPU0:ASR9K#show drops all location 0/0/CPU0
show arp traffic: [arp:ARP] IP Packet drop count for node 0/0/CPU0: 58
show cef drops: [cef:0/0/CPU0] No route drops packets : 2 [cef:0/0/CPU0] Discard drops packets : 114677
show controller np counters: [np:NP0] RSV_DROP_IN_L3_NOT_MYMAC: 12870712863 [np:NP0] MODIFY_PUNT_REASON_MISS_DROP: 3
|
- ongoing option をつけることで、前回実施時点からの差分を出力
RP/0/RSP0/CPU0:ASR9K#show drops all ongoing location 0/0/CPU0
- snip - show controller np counters: [np:NP0] RSV_DROP_IN_L3_NOT_MYMAC: +53028
|
- Commands option でコマンド内訳を確認可能
RP/0/RSP0/CPU0:ASR9001d#show drops all commands
Module CLI [arp] show arp traffic [cef] show cef drops [fabric] show controllers fabric fia drops egress [fabric] show controllers fabric fia drops ingress [lpts] show lpts pifib hardware entry statistics - snip -
|
- show controllers np description でカウンタの概要を確認可能
- RSV_DROP_IN_L3_NOT_MYMAC は受信した unicast フレームが、その受信したインタフェース MAC を宛先としていなかったために Drop したことを示している。
RP/0/RSP0/CPU0:ASR9K#show controllers np descriptions location 0/0/CPU0
Counter Drop Feature Description ------------------------------------------------------------------------------- RSV_DROP_IN_L3_NOT_MYMAC Drop L3 Unicast frames dropped on layer3 ingress interface because they do not match the interface MAC address (packet not destined for this next-hop).
|
キャプチャをせずに drop したパケットを特定する方法
- ASR9K では、キャプチャせずに drop したパケットを特定するために幾つかの方法がある
- “monitor np counter” コマンドによって dump する方法
- キャプチャされたパケットは drop する
- キャプチャ実施後、NP cleanup の際に、数十 ms の traffic drop が発生する
- Trident LC は未対応
- “show controllers np capture” コマンドによって dump する方法
- Typhoon では 32 packet, Tomahawk では 128 packet 分の drop したパケットを常時バッファリング
- 通信影響は無し
- Trident LC は未対応
monitor np counter の実施例
- コマンドを実施すると、指定したカウンタのパケットが来るまで待ちの状態となる
- Count オプションを指定していない場合は、1パケット該当するパケットが来るまで待ち続ける
- 一般的な packet dump decoder で decode 可能
RP/0/RSP0/CPU0:ASR9K#monitor np counter RSV_DROP_IN_L3_NOT_MYMAC np0 location 0/0/CPU0
Warning: Every packet captured will be dropped! If you use the 'count' option to capture multiple protocol packets, this could disrupt protocol sessions (eg, OSPF session flap). So if capturing protocol packets, capture only 1 at a time.
Warning: A mandatory NP reset will be done after monitor to clean up. This will cause ~50ms traffic outage. Links will stay Up. Proceed y/n [y] > y Monitor: Active Debug image tracepoint found on NP0, Top R. Disabling it first Monitor RSV_DROP_IN_L3_NOT_MYMAC on NP0 ... (Ctrl-C to quit)
Mon Dec 12 18:18:06 2016 -- NP0 packet
From GigE0/0/0/12: 124 byte packet 0000: 00 00 01 00 00 01 00 10 94 00 00 02 08 00 45 00 ..............E. <<< Dst MAC が不正 - snip -
Monitor: Re-enable Debug image tracepoint on NP0, Top R
Cleanup: Confirm NP reset now (~50ms traffic outage). Ready? [enter] > ※ENTER
|
show controllers np capture の実施例
- IOS-XR 5.3.3 より、show controllers np capture コマンドが実装
- help option で capture の対象となっているカウンタを表示
RP/0/RSP0/CPU0:ASR9K#show controllers np capture np0 help location 0/0/CPU0
NP0 Status Capture Counter Name ---------------------+------------------------------ Capturing PARSE_UNKNOWN_DIR_DROP Capturing PARSE_UNKNOWN_DIR_1 Capturing PARSE_UNKNOWN_DIR_2 Capturing PARSE_UNKNOWN_DIR_3 Capturing ING_RSV_PW_DHCP_UNTRUSTED_DROP Capturing RSV_DROP_IN_L3_NOT_MYMAC
|
- buffer が少ないため、drop が多い環境では、capture 対象の counter を絞る必要がある
- 下記の例では全ての counter の capture を停止している
RP/0/RSP0/CPU0:ASR9K#show controllers np capture np0 filter all disable location 0/0/CPU0
Disable NP0 packet capture for: all
RP/0/RSP0/CPU0:ASR9K#show controllers np capture np0 help location 0/0/CPU0
NP0 Status Capture Counter Name ---------------------+------------------------------ Not capturing PARSE_UNKNOWN_DIR_DROP Not capturing PARSE_UNKNOWN_DIR_1 Not capturing PARSE_UNKNOWN_DIR_2 Not capturing PARSE_UNKNOWN_DIR_3 Not capturing ING_RSV_PW_DHCP_UNTRUSTED_DROP Not capturing RSV_DROP_IN_L3_NOT_MYMAC
|
- show controllers np capture の実施例
- IF-> NP 方向の ingress packet は L2 header より dump される
- PDD 等、一般的な packet dump decoder で decode できます。
- Fabric -> NP 方向では、Fabric header/L3 header の順で dump される
RP/0/RSP0/CPU0:ASR9K#show controllers np capture np0 location 0/0/CPU0
NP0 capture buffer has seen 32299570 packets - displaying 32
Mon Dec 12 15:24:57.130 : RSV_DROP_IN_L3_NOT_MYMAC From GigabitEthernet0_0_0_12: 128 byte packet on NP0 0000: 00 00 01 00 00 01 00 10 94 00 00 02 08 00 45 00 <<< 同様に Dst MAC が不正 0010: 00 6e d6 76 00 00 ff 11 6f ae c0 55 01 02 50 01 0020: 64 01 04 00 04 00 00 5a 00 14 00 00 00 00 00 00 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060: 00 00 00 00 00 00 00 00 71 de 2f d8 79 3d 41 cb 0070: d3 e5 63 89 f2 93 85 fc 4d 73 27 9a |