内容

はじめに

前提条件

要件

使用するコンポーネント

背景説明

パントデバッグログファイル

Linux共有メモリパントインターフェイス(LSMPI)

パントポリサー

データ収集用のEmbedded Event Manager(EEM)

実例

機能拡張

はじめに

このドキュメントでは、パントキープアライブの障害をトラブルシューティングする方法について説明します。

前提条件

要件

Cisco IOS® XEの基礎知識

使用するコンポーネント

このドキュメントは、CSR8000v、ASR1000、ISR4000シリーズなどのCisco IOS XEルータに基づいています。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

背景説明

Cisco IOS XEベースシステムのパントパスは、内部データパスです。これは、コントロールプレーンとデータプレーン間の通信が行われるパスです。

この内部パスは、ルータで使用されるコントロールプレーンパケットを送信するために使用されます。

このパスに障害が発生すると、ログに次のようなエラーが記録されます。

%IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 60 seconds

キープアライブメッセージは、QFPとRPの間のパスの状態を監視するメッセージです。

このパスは、システムの運用に不可欠です。

これらのキープアライブが5分以内に受信されない場合は、次のような重要なログが表示されます。

%IOSXE_INFRA-2-FATAL_NO_PUNT_KEEPALIVE:  Keepalive not received for 300 seconds resetting

この状態から回復するために、システムがリセットされます。

パントデバッグログファイル

パントキープアライブが失敗し、それに起因するリセットが発生した場合、問題発生時の動作を理解するために関連データを収集するpunt_debug.logというファイルが作成されます。

注：ファイルpunt_debug.logを生成するには、システムが最新のCisco IOS XEソフトウェアリリースで最新の状態になっていることを確認します。

このファイルには、さまざまなカウンタを理解するために、これらのコマンドの実行が複数回含まれています。

show platform software infra punt-keepalive（プラットフォームのソフトウェアを表示）

show platform software infra lsmpi（登録ユーザ専用）

show platform software infrastructure lsmpiドライバ

show platform software infra lsmpi bufusage（登録ユーザ専用）

show platform software punt-policer（登録ユーザ専用）

show platform software status control-processor brief

show process cpu platform sorted（プロセスCPUプラットフォームのソート済み）

show platform software infrastructure punt（プラットフォームのソフトウェアのパント）

show platform hardware qfp active statistics drop（プラットフォームのハードウェアQFPアクティブ統計ドロップ）

show platform hardware qfp active infra punt statistics type（原因別）

show platform hardware qfp active infrastructure bqs queue output default all（プラットフォームのハードウェアqfpアクティブインフラストラクチャbqsキュー出力のデフォルトすべて）

注:punt_debug.logでは、問題を引き起こす可能性のあるエラーインジケータと大量のパケットに注目します。

Linux共有メモリパントインターフェイス(LSMPI)

このコンポーネントは、フォワーディングプロセッサからルーティングプロセッサにパケットとメッセージを送信するために使用されます。

パントポリサー

パントポリサーは、コントロールプレーンパケットをシステムで保護およびポリシングできるようにするコントロールプレーン保護メカニズムです。

show platform software punt-policerコマンドを使用すると、適合パケットとこのポリサーによる廃棄を確認できます。

----------------- show platform software punt-policer ------------------

Per Punt-Cause Policer Configuration and Packet Counters

Punt                                Config Rate(pps)     Conform Packets                   Dropped Packets               Config Burst(pkts)  Config Alert

Cause  Description                   Normal   High     Normal           High             Normal           High             Normal   High     Normal   High

-------------------------------------------------------------------------------------------------------------------------------------------------------------

2    IPv4 Options                  874      655      0                0                0                0                874      655      Off      Off

3    Layer2 control and legacy     8738     2185     0                0                0                0                8738     2185     Off      Off

4    PPP Control                   437      1000     0                0                0                0                437      1000     Off      Off

—— snip : output omitted for brevity  ——

コマンドshow platform software infrastructure punt は、パントの原因に関するカウンタデータを表示します。

------------------ show platform software infrastructure punt ------------------

LSMPI interface internal stats:

enabled=0, disabled=0, throttled=0, unthrottled=0, state is ready

Input Buffers = 51181083

Output Buffers = 51150283

—— snip : output omitted for brevity  ——

EPC CP RX Pkt cleansed 0

Punt cause out of range 0

IOSXE-RP Punt packet causes:

3504959 ARP request or response packets

27 Incomplete adjacency packets

—— snip : output omitted for brevity  ——

FOR_US Control IPv4 protcol stats:

2369262 TCP packets

FOR_US Control IPv6 protcol stats:

6057 ICMPV6 packets

Packet histogram(500 bytes/bin), avg size in 119, out 95:

Pak-Size      In-Count        Out-Count

0+:      51108211         51144723

500+:         22069             2632

1000+:          2172                0

1500+:          3170                0

このデータは、パントキープアライブパスに影響を与える可能性のある内容を理解するのに役立ちます。

データ収集用のEmbedded Event Manager(EEM)

punt_debug.logが問題を診断するのに十分なデータを提供しない場合は、EEMスクリプトを使用して、問題が発生した時点でより多くのデータポイントを取得できます。

event manager applet punt_script authorization bypass

event syslog pattern "IOSXE_INFRA-4-NO_PUNT_KEEPALIVE" maxrun 1000

action 0.0 cli command "enable"

action 0.1 set i "0"

action 0.2 cli command "test platform software punt-keepalive ignore-fault"

action 0.3 while $i lt 10

action 0.4 syslog msg "iteration $i"

action 0.9 cli command "show clock | append bootflash:qfp_lsmpi.txt"

action 1.0 cli command "show platform software infrastructure lsmpi | append bootflash:qfp_lsmpi.txt"

action 1.1 cli command "show platform software infrastructure lsmpi driver | append bootflash:qfp_lsmpi.txt"

action 1.2 cli command "show platform software infrastructure lsmpi driver 0 | append bootflash:qfp_lsmpi.txt"

action 1.3 cli command "show platform software infrastructure lsmpi bufusage | append bootflash:qfp_lsmpi.txt"

action 1.4 cli command "show platform software infrastructure lsmpi bufusage 0 | append bootflash:qfp_lsmpi.txt"

action 1.5 cli command "show platform software infrastructure punt-keepalive | append bootflash:qfp_lsmpi.txt"

action 1.6 cli command "show platform software infrastructure punt | append bootflash:qfp_lsmpi.txt"

action 1.7 cli command "show platform software punt-policer | append bootflash:qfp_lsmpi.txt"

action 1.8 cli command "show platform hardware qfp active infrastructure punt stat type per-cause | append bootflash:qfp_lsmpi.txt"

action 1.9 cli command "show platform hardware qfp active infrastructure punt statistics type punt-drop | append bootflash:qfp_lsmpi.txt"

action 1.a cli command "show platform hardware qfp active infrastructure punt statistics type inject-drop | append bootflash:qfp_lsmpi.txt"

action 1.b cli command "show platform hardware qfp active infrastructure bqs queue output default interface-string internal0/0/rp:0 hier detail | append bootflash:qfp_lsmpi.txt"

action 1.c cli command "show platform hardware qfp active statistics drop | append bootflash:qfp_lsmpi.txt"

action 1.d cli command "show platform hardware qfp active datapath utilization | append bootflash:qfp_lsmpi.txt"

action 1.e cli command "show platform hardware qfp active datapath infrastructure sw-hqf | append bootflash:qfp_lsmpi.txt"

action 1.f cli command "show platform hardware qfp active datapath infrastructure sw-distrib | append bootflash:qfp_lsmpi.txt"

action 1.g cli command "show platform hardware qfp active datapath infrastructure sw-pktmem | append bootflash:qfp_lsmpi.txt"

action 1.h cli command "show platform software status control-processor brief | append bootflash:qfp_lsmpi.txt"

action 2.0 increment i

action 2.1 wait 3

action 2.4 end

action 3.0 syslog msg "End of data collection. Please transfer the file at bootflash:qfp_lsmpi.txt"

action 5.0 cli command "debug platform hardware qfp active datapath crashdump"

注：スクリプトに含まれるコマンドは、スクリプトが設定されているプラットフォームによって異なります。

このスクリプトを使用すると、問題発生時のlsmpi、リソース、およびパント状態を理解できます。

EEMスクリプトには、qfpコアダンプを生成するdebug platform hardware qfp active datapath crashdumpコマンドが含まれています。このコアダンプは開発者チームとTACが必要とします。

注:Cisco TACにケースを提出する場合は、スクリプトによって生成されたコアファイルを提供してください。

パケットトレースが必要な場合は、次の修正をスクリプトに追加できます。

まず、パケットトレースの設定をセットアップします。これは、EEMスクリプトから実行できます。

debug platform packet-trace packet 8192 fia-trace circular（隠しコマンド）

debug platform condition both（プラットフォームの両方の状態をデバッグ）

debug platform packet-trace copy packet both L2

次に、EEMスクリプト内で次のアクションを実行して開始および停止します。

アクション6.2 cliコマンド「debug platform condition start」

アクション6.3待機8

アクション6.4 cliコマンド「debug platform condition stop」

次に、次のコマンドを使用してデータを別のファイルにダンプします。

action 6.5 cliコマンド「show platform packet-trace statistics | append bootflash:traceAll.txt」と入力します。

アクション6.6 cliコマンド「show platform packet-trace summary | append bootflash:traceAll.txt」と入力します。

アクション6.7 cliコマンド「show platform packet-trace packet all decode | append bootflash:traceAll.txt」と入力します。

このパケットトレースアクションロジックは、EEMスクリプト内のwhileサイクルのendステートメントの直後に追加されます。

このスクリプトを使用すると、問題を引き起こしている可能性のあるパケットのタイプを把握できます。

パケットトレースは、「IOS XEデータパスパケットトレース機能によるトラブルシューティング」で説明されている機能です。

実例

CSR8000vは絶えずリブートしています。

システムレポートを抽出すると、クラッシュダンプと、スタックトレース内のpunt keep alive関連機能を示すiosdコアファイルを確認できます。

注：スタックトレースのデコードには、TACのサポートが必要です。

ただし、crashinfoファイルはクリアテキストであり、次の症状が見られます。

Jan 15 14:29:41.756 AWST: %IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 160 seconds

Jan 15 14:30:01.761 AWST: %IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 180 seconds

Jan 15 14:30:21.766 AWST: %IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 200 seconds

Jan 15 14:30:41.776 AWST: %IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 220 seconds

Jan 15 14:31:01.780 AWST: %IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 240 seconds

Jan 15 14:31:41.789 AWST: %IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 280 seconds

Jan 15 14:32:01.791 AWST: %IOSXE_INFRA-4-NO_PUNT_KEEPALIVE:  Keepalive not received for 300 seconds

Jan 15 14:32:01.791 AWST: %IOSXE_INFRA-2-FATAL_NO_PUNT_KEEPALIVE:  Keepalive not received for 300 seconds resetting

%Software-forced reload

Exception to IOS Thread:

Frame pointer 0x7F0AE0EE29A8, PC = 0x7F0B342C16D2

UNIX-EXT-SIGNAL: Aborted(6), Process = PuntInject Keepalive Process

-Traceback= 1#7b5996c3

影響を受けるプロセスは、PuntInject Keepaliveプロセスです。

キープアライブが300秒のしきい値に達すると、システムはアボート信号をトリガーする必要があります。

punt_debug.logは、show platform software infrastructure lsmpi driverコマンド内の送信エラーの一部を示します。

Reason for TX drops (sticky):

Bad packet len   : 0

Bad buf len      : 0

Bad ifindex      : 0

No device        : 0

No skbuff        : 0

Device xmit fail : 82541   >>>>>>>>>>>>>>>>>>>>> Tx failure

これは一般的な障害です。

このカウンタは、ファイルで取得された複数のサンプル内で増加します。

EEMスクリプトは、リソース、パントデータパス、およびその他のインフラストラクチャ関連コマンドに関する詳細なデータを取得するために提供されています。

lsmpiトラフィックパントカウンタを確認すると、EIGRPコントロールプレーンパケットが顕著であることがわかります。usパケットとして識別されるパケットを次に示します。

17660574 For-us data packets

543616 RP<->QFP keepalive packets

1004 Glean adjacency packets

3260636 BFD control packets

122523839 For-us control packets<<<<

FOR_US Control IPv4 protcol stats:

153551 TCP packets

2663105 GRE packets

104394559 EIGRP packets<<<<

その後、ハイパーバイザがオーバーサブスクライブされ、基盤となるコンピューティングリソースに影響を与えていることが判明しました。

CSR8000vは別のハイパーバイザに導入され、問題の軽減に役立ちました。

機能拡張

Cisco Bug ID CSCwf85505により、Cisco IOS XE 17.15バージョン以降、自動QFPコアファイル生成の拡張機能が導入されました