概要
このドキュメントでは、エンベデッド サービス プロセッサ 10(ESP10)を搭載したアグリゲーション サービス ルータ 1000(ASR 1000)でのログ メッセージ HAL_PKTMEM-2-OUT_OF_RESOURCES のトラブルシューティングと確認の方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
背景説明
PAK_PRIORITY は、デバイス内部でのパケットの送信時にデバイスがパケットの処理を指定するために使用するメカニズムです。通常 PAK_PRIORITY がタグ付けされているパケットは、制御プロトコル パケットです(例:RIP、OSPF、EIGRP、ISIS、PPP、HDLC など)。
症状
通常、この問題が発生している場合、ルータは特定のインターフェイスからトラフィックを転送できません。
このログはログ バッファで確認できます。
0.48 18:56:40.808 GMT:%IOSXE-2-PLATFORM:F0:cpp_cp:QFP:00スレッド:069 TS:00006374345833820173 %HAL_PKTMEM-2-OUT_OF_RESOURCES:
0.4月8 18:57:41.222GMT:%IOSXE-2-PLATFORM:F0:cpp_cp:QFP:00 Thread:047 TS:00006374406093385973 %HAL_PKTMEM-2-OUT_OF_RESOURCES:
0.4月8 18:58:43.662GMT:%IOSXE-2-PLATFORM:F0:cpp_cp:QFP:00 Thread:009 TS:00006374468373382518 %HAL_PKTMEM-2-OUT_OF_RESOURCES
このログは、pak_priority トラフィックのオーバーサブスクリプションが原因で、デバイスがパケットバッファを使い切ったことを示しています。
ASR 1000 は PAK_PRIORITY パケットをドロップしません。このため、バッファがすぐにいっぱいになり、他のトラフィックが通過できなくなります。
トラブルシュート
最初に、問題が発生しているインターフェイスでキューのインターフェイス デフォルト値を確認します。
R1# sh platf hard qfp active infrastructure bqs queue output default interface GigabitEthernet0/0/4
Interface:GigabitEthernet0/0/4 QFP:0.0 if_h:19キュー/スケジュール数:1
キューの詳細:
インデックス0(キューID:0x8a、名前:GigabitEthernet0/0/4)
ソフトウェア制御情報:
(キャッシュ)キューid:0x0000008a、wred:0x8b670082、qlimit(バイト):3281312
parent_sid:0x278、debug_name:GigabitEthernet0/0/4
sw_flags:0x08000091、sw_state:0x00000801、port_uidb:0
orig_min:0、min:105000000
min_qos:0 , min_dflt:0
orig_max:0、最大:0
max_qos:0、max_dflt:0
共有:1
plevel:0、プライオリティ:0
defer_obj_refcnt:0
Statistics:
テールドロップ(バイト):0、(パケット):0
enqs合計(バイト):969986824(パケット):6713421
queue_depth(バイト):262736736
キューの制限が3281312ですが、キューの深さが262736736であることがわかります。パケットの量が超過しています。これは、pak_priority パケットがインターフェイスに高速で到着するときにのみ発生します。
次に、ASR 1000 の QFP(Quantum Flow Processor)でのドロップを調べます。BQSOOR(Buffering Queueing and Scheduling out of resource)ドロップが増加していることがわかります。BQS は Buffering, Queueing and Scheduling ASIC です。つまり、バッファがいっぱいになるために、デバイスが、到着する特定のパケットをバッファに入れることができません。
R1# show plat hardw qfp active statistics drop all | e _0_
—
グローバルドロップ統計パケットオクテット
—
BqsOr 62918 8700111
R1# show plat hardw qfp active statistics drop all | e _0_
—
グローバルドロップ統計パケットオクテット
—
BqsOr 62923 8700966
R1# show plat hardw qfp active statistics drop all | e _0_
—
グローバルドロップ統計パケットオクテット
—
BqsOr 62942 8703894
次に、bqs パケット使用率を調べ、バッファ使用率(パーセンテージ)を確認します。
R1# show platform hardware qfp act bqs 0 packet utilization
パケットバッファメモリ使用率の詳細:
合計:256.00 MB
Used:253.44 MB
Free:2620.00 KB
しきい値:
メモリ不足(OOM):255.96 MB、ステータス:False
バイタル(> 98 %):253.44 MB、ステータス:正しい
リソース不足(OOR):217.60 MB、ステータス:正しい
使用率の向上:99 %
使用率は 99% であり、デバイスでバッファのリソースが不足していることがわかります。
次に、パケットが含まれているバッファ グループを特定する必要があります。
次の 4 つのオプションがあります。
•MQC で作成された QoS キューは、コマンド「Show policy-map int | incl queue depth|limit"
•出力インターフェイスのデフォルト キューは、コマンド「Sho plat hard qfp act inf bqs que out def all | incl queue_depth"
•インフラストラクチャに使用されるリサイクル キューは、コマンド「Sho plat hard afp act inf bqs queue out recycle all | incl queue_depth"
•IPC(プロセス間通信プロトコル)キューは、コマンド「Sho plat hard afp act inf bqs queue out ipc | incl queue_depth"
R1# show platform hardware qfp act inf bqs que out def all | i queue_de
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):262736736
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
R1# show platform hardware qfp act inf bqs que out recy all | i queue_de
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
queue_depth(パケット):0
R1# show platform hardware qfp act inf bqs que out ipc | i queue_de
queue_depth(バイト):0
queue_depth(バイト):0
queue_depth(バイト):0
パケットがデフォルト キューに入っていることがわかります。
通常この問題は、PAK_PRIORITY でマークされた大量のパケット、またはパケット転送を妨害する目的で PAK_PRIORITY としてマークされて送信された可能性がある DDOS 攻撃に関連している可能性があります。このため、有効な送信元以外からのパケットをドロップするために CoPP(コントロール プレーン ポリシング)が必要となることがあります。
また、フロー制御が原因で発生することもあります。この場合、インターフェイスで入力一時停止が増加することが確認されます。
R1# show int gi0/0/4
GigabitEthernet0/0/4 is up, line protocol is up
ハードウェアはSPA-10X1GE-V2、アドレスは74de.eeee.cccc(bia 74de.eeee.cccc)
説明:inmumpt005rtun01-G0/2 Airtel 7779861 300Mbps/1Gbps
Internet address is 10.1.1.1/30
MTU 9000 bytes, BW 300000 Kbit/sec, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive not supported
全二重、1000Mbps、リンクタイプはforce-up、メディアタイプはLX
output flow-control is on, input flow-control is on
ARP type:ARPA, ARP Timeout 04:00:00
Last input 00:00:02, output 00:00:01, output hang never
「show interface」カウンタの最後のクリア8w5d
Input queue:0/375/0/0 (size/max/drops/flushes);Total output drops: 11
Queueing strategy:クラスベースキューイング
Output queue:0/40 (size/max)
30 second input rate 0 bits/sec, 0 packets/sec
30 second output rate 0 bits/sec, 0 packets/sec
16653945560 packets input, 6397725725851 bytes, 91 no buffer
Received 339 broadcasts (0 IP multicasts)
0 runts, 0 giants, 0 throttles
52個の入力エラー、52 CRC、0フレーム、0オーバーラン、0無視
0ウォッチドッグ, 2095792マルチキャスト, 166107198 pause input
12240362564 packets output, 3785983938723 bytes, 0 underruns