このドキュメントでは、転送の問題のデバッグに使用できる、ACIにネイティブに組み込まれているツールについて説明します。
このドキュメントの内容は、『Troubleshooting Cisco Application Centric Infrastructure, Second Edition』から抽出しました。 特に、イントラファブリックフォワーディング:ツール章
また、ELAMとFtriageの詳細な説明は、セッションBRKDCN-3900bのCiscoLiveオンデマンドライブラリにあります。
ACIの観点から転送の問題をトラブルシューティングするには、次の点を理解する必要があります。
ACIには、特定のフローで何が起こっているかを詳細に把握するためのツールがいくつか含まれています。以降のいくつかのセクションでは、これらのツールについて詳しく説明します。ここでは概要だけを紹介します。
SPANとERSPANはどちらも、特定の場所で受信したすべてのトラフィックまたは一部のトラフィックを別の場所に複製できるようにするツールです。複製されたトラフィックの送信先のエンドデバイスは、何らかのパケットスニファ/アナライザアプリケーションを実行していると想定されます。従来のSPANでは、あるポートで受信され、別のポートを通過するトラフィックを複製します。ACIは、ERSPANに加えてこれをサポートします。
ERSPANは、ローカルポートからトラフィックを複製します。複製されたトラフィックはGREでカプセル化され、リモート宛先に送信されます。ACIでは、このERSPAN宛先はレイヤ3エンドポイントとしてのみ学習する必要があり、任意のVRF内の任意のEPGにすることができます。
トラブルシューティング中の準備時間を最小限に抑え、ERSPANセッションの迅速な設定とキャプチャを可能にするために、SPANの宛先を常にファブリックに接続しておくことをお勧めします。
Embedded Logic Analyzer Module(ELAM)は、ユーザがハードウェアで条件を設定し、設定された条件に一致する最初のパケットまたはフレームをキャプチャできるツールです。正常にキャプチャされると、ELAMステータスが「triggered」と表示されます。 トリガーされると、ELAMが無効になり、ダンプを収集して、スイッチASICがそのパケット/フレームに対して行っている膨大な数の転送の決定を分析できます。ELAMはASICレベルで実装され、スイッチ上のCPUやその他のリソースに影響を与えません。
このドキュメントの転送例では、フローで何が行われているかを検証する手段としてELAMを使用しています。例は、リーフCLIバージョンとELAMアシスタントアプリケーションの両方を示しています。
このガイドでは、第1世代のリーフスイッチ(EX、FX、またはFX2サフィックスのないスイッチ)でのELAMの使用については説明しません。
ツールを使用する前に、コマンド構文の構造を理解することが重要です。
リーフCLIの例:
vsh_lc [This command enters the line card shell where ELAMs are run]
debug platform internal <asic> elam asic 0 [refer to the ASICs table]
トリガーする条件の設定:
trigger reset [ensures no existing triggers are running]
trigger init in-select <number> out-select <number> [determines what information about a packet is displayed and which conditions can be set]
set outer/inner [sets conditions]
start [starts the trigger]
status [checks if a packet is captured]
パケット分析を含むダンプを生成する
ereport [display detailed forwarding decision for the packet]
引き続きstatusコマンドを入力して、トリガーの状態を表示します。定義された条件に一致するパケットがASICで検出されると、statusの出力にはtriggeredと表示されます。ELAMがトリガーされると、「ereport」を使用してスイッチの転送決定の詳細を表示できます。 ACIバージョン4.2よりも前では、reportを使用する必要があります。
ELAM構文では、ASICを指定する必要があることに注意してください。ASICはスイッチモデルに依存しているため、次の表を参照して、指定するASICを決定してください。
| スイッチ/ラインカードファミリ |
Elam用ASIC |
| -EXスイッチ/LC |
タイ |
| -FX(P)スイッチ/LC |
ロック |
| -FX2スイッチ/LC |
ロック |
| Cスイッチ(9364C、9332C) |
ロック |
| -GXスイッチ |
アプリケーション(APP) |
| -GX2スイッチ |
チョ |
| -FX3スイッチ |
ロック |
CLIから実行する場合に理解しておく必要があるELAMのもう1つのコンポーネントは、in-selectです。in-selectでは、パケット/フレームに含まれると予想されるヘッダーと、一致させるヘッダーを定義します。
たとえば、VXLANでカプセル化されていないダウンリンクポートから着信するパケットには、外側のレイヤ2、レイヤ3、およびレイヤ4ヘッダーだけが含まれます。
VXLANでカプセル化された前面パネル(ダウンリンク)ポート(VXLANモードのCisco ACI Virtual Edgeなど)から着信するパケット、またはアップストリームスパインから着信するパケットには、VXLANカプセル化が適用されます。つまり、外部および内部のレイヤ2、レイヤ3、およびレイヤ4ヘッダーの両方が存在する可能性があります。
すべてのトリガーオプションは次のとおりです。
leaf1# vsh_lc
module-1# debug platform internal tah elam asic 0
module-1(DBG-elam)# trigger reset
module-1(DBG-elam)# trigger init in-select ?
10 Outerl4-innerl4-ieth
13 Outer(l2|l3|l4)-inner(l2|l3|l4)-noieth
14 Outer(l2(vntag)|l3|l4)-inner(l2|l3|l4)-ieth
15 Outer(l2|l3|l4)-inner(l2|l3|l4)-ieth
6 Outerl2-outerl3-outerl4
7 Innerl2-innerl3-innerl4
8 Outerl2-innerl2-ieth
9 Outerl3-innerl3
in-select 6を選択した場合、唯一のオプションは、条件を設定し、外側のレイヤ2、3、または4ヘッダーからのヘッダーを表示することです。in-select 14を選択した場合、唯一のオプションは、外側および内側のレイヤ2、3、4ヘッダーの条件を設定し、その詳細を確認することです。
ベストプラクティスに関する注意:
out-selectコマンドでは、ELAMレポートに表示するルックアップ結果を制御できます。ほとんどの場合、out-select 0を使用できます。この値に含まれるほとんどの情報には、ルックアップの結果がパケット/フレームをドロップするかどうかのドロップベクトルが含まれています。
ELAMの結果を取得するために、ereportまたはreport detailの代わりにreportを使用すると、out-select 1にのみdrop vectorが表示されることに注意してください。ただし、常にout-select 0を使用してereportまたはreport detailを実行できます。
ELAMは、パケット内で検索するレイヤ2、3、および4の条件を大量にサポートします。innerとouterを指定すると、内側ヘッダー(VXLANカプセル化パケット)と外側ヘッダーのどちらで条件をチェックできるかが決定されます。
ARPの例
set outer arp source-ip-address 10.0.0.1 target-ip-address 10.0.0.2
MACアドレス例:
set outer l2 src_mac aaaa.bbbb.cccc dst_mac cccc.bbbb.aaaa
内部ヘッダーの例のIPアドレス:
set inner ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
ELAMがstatusでトリガーされたことを確認します。
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
ereportを使用すると、ELAMの結果をわかりやすい形式で表示できます。ELAMレポートはスイッチの/var/log/dme/log/フォルダに保存されることに注意してください。フォルダの下に、ELAM用の2つのファイルがあります。
この例では、-EXスイッチのダウンリンクポートから着信する非VXLANカプセル化トラフィック(外部ヘッダーで一致)をキャプチャします。
module-1# debug platform internal tah elam asic 0
module-1(DBG-elam)# trigger reset
module-1(DBG-elam)# trigger init in-select 6 out-select 0
module-1(DBG-elam-insel6)# set outer ipv4 src_ip 10.0.0.1 dst_ip 10.0.0.2
module-1(DBG-elam-insel6)# start
module-1(DBG-elam-insel6)# status
module-1(DBG-elam-insel6)# ereport
このマニュアルのトラブルシューティングの例では、ELAM Assistantの使用方法も示しています。
以前は、Cisco DC App Center(https://dcappcenter.cisco.com)からダウンロードできるアプリケーションでしたが、ACIバージョン6.1(2)+以降では、ELAM AssistantはAPICに直接統合され、APIC UIの[Operations]タブからアクセスできるようになっています。

ELAM Assistantが組み込まれている場合、読み取り/書き込み権限を持つAPICユーザだけがElam Assistantを使用でき、読み取り/書き込み権限を持たないユーザにはメニューオプションは表示されません。
このツールは、APICのGUIを介してELAMの導入と解釈を自動化します。
次の例は、ノード101ダウンリンクポートで特定の送信元および宛先IPに一致するELAMの展開を示しています。
この機能を使用するには、左側のパネルでCapture (Perform ELAM)をクリックし、メイン画面でAdd nodeをクリックして、ELAMを設定する必要があるノードの追加を開始する必要があります。この例では、node-101が追加されています。

対象のノードが追加されたら、方向(ダウンリンク/ダウンリンクVXLAN/アップリンク)を設定する必要があります。
特定のインターフェイスを監視する必要があるかどうかを指定することもできます。デフォルトはanyです。
最後に、一連のパラメータを設定できます(CLIバージョンと同様)。


最後に、ELAMの設定をクリックして、指定したノードでELAMをアームします。
ELAMがトリガーされたかどうかを確認するには、Check Triggerボタンをクリックします。ELAMがノードでトリガーされる場合、ステータスはノード名の横にあるReport Readyに変わります。

このReport Readyボタンは、下に示すELAMレポートの形式になっています。

出力は、Express、Detail、およびRawの3種類のフレーバーで表示されます。
また、ELAM Assistantを使用すると、送信元インターフェイスやVXLAN値など、より複雑な照合パラメータを簡単に使用できます。
pingコマンドは、インターネットプロトコル(IP)ネットワーク上のホストの到達可能性をテストするためにLinuxで使用される標準のネットワークユーティリティです。ICMPエコー要求パケットを指定された宛先(IPアドレスまたはドメイン名)に送信し、エコー応答をリッスンします。
このコマンドの主な機能は、次の操作を実行することです。
・ 接続テスト:リモートデバイスがアクティブで到達可能かどうかを確認します。
・ 遅延測定:パケットが宛先に到達してから戻ってくるまでのラウンドトリップ時間(RTT)をミリ秒単位で計算します。
・ パケット損失検出:戻ってこなかったパケットの割合を報告します。これは、ネットワークの輻輳または安定性の問題を特定するのに役立ちます。
このユーティリティは、APICで到達可能性の問題が特定されたときに使用できます。
APIC OOBアドレスからSNMP外部サーバ(例:10.31.125.144)に到達できることを確認します。
ping 10.31.125.144 -I oobmgmt
このように、-Iオプションは送信元インターフェイス(この例ではOOB管理アドレス)を指定するのに便利です。
-hオプションを使用すると、使用可能なすべてのオプションを表示できます。
一方、ipingコマンドは、シスコアプリケーションセントリックインフラストラクチャ(ACI)環境内の特殊な診断ツールです。
ipingは、Cisco ACI CLI内で使用される強力なネットワーク診断ユーティリティで、ファブリック内の特定のノードまたはコンテキストからの接続を確認します。ACIはマルチテナント環境なので、ipingを使用すると、管理者は、VRFとテナントによって提供される論理的な分離を考慮しながら、接続をテストできます。
仕組み:指定された送信元ノードまたはコンテキストから宛先IPへのICMPエコー要求を開始します。設定されたEPGとコントラクトに従って、パケットがファブリックを正しく通過することを保証する これを行うには、リーフスイッチが、ファブリックに入る場合に実稼働トラフィックがカプセル化されるのと同じ方法でICMPパケットをカプセル化する必要があります。 iVXLANヘッダーには、トラフィックを正しいVRFまたはEPGにマッピングするVNID(仮想ネットワーク識別子)が含まれています。これにより、パケットは実際の実稼働トラフィックと同じ転送ルールとセキュリティポリシーの対象となります。
主な機能
エンドポイントの到達可能性を確認し、ブリッジドメインサブジェクト(SVI)から導入されたSVIからpingを実行します。
iping 192.168.104.2 -V tenant_prod:VRF1
パラメータ-Vを使用して、少なくともVRFソースを選択する必要があります。
-V <tenant>:<vrf>フラグを指定すると、システムはそのVRFに関連付けられている特定のVNID(VXLANネットワーク識別子)を識別します。このVNIDは、パケットが正しい論理ルーティングテーブル内でルーティングされるようにするために重要です。
-hオプションを使用すると、使用可能なすべてのオプションを表示できます。
Triageは、ELAMの設定と解釈をエンドツーエンドで自動化することを目的としたAPIC CLIベースのツールです。このツールの前提は、ユーザが特定のフローと、そのフローが開始されるリーフを定義できることです。次に、このツールは各ノードでELAMを1つずつ実行し、フォワーディングフローを調べます。これは、パケットがどのパスを通るかが不明な大規模トポロジで特に役立ちます。
fTriageは、実行された各コマンドの出力を含む大きなログファイルを生成します。このファイルの名前は、fTriageの出力の最初の数行に表示されます。
トリアージが完了するまでに最大15分かかることがあります。
リーフ104以降の10.0.1.1と10.0.2.1の間のルーティングされた通信のフローをマッピングします。
ftriage route -ii LEAF:104 -dip 10.0.2.1 -sip 10.0.1.1
リーフ104から始まるレイヤ2フローをマップします。
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
APICでftriage —help を実行すると、すべてのfTriageヘルプを表示できます。
tcpdumpは、コントロールプレーンとの間で送受信されるトラフィックをキャプチャするためにACIスイッチで利用できます。tcpdumpキャプチャでは、スイッチCPUに送信されるコントロールプレーントラフィックだけが確認できることに注意してください。例としては、ルーティングプロトコル、LLDP/CDP、LACP、ARPなどがあります。データプレーン(およびコントロールプレーン)トラフィックをキャプチャするには、SPANまたはELAMを使用してください。
CPUでキャプチャするには、 kpm_inbインタフェースを指定します。 従来のtcpdumpオプションとフィルタのほとんどは使用できます。
リーフスイッチ上のSVI宛てのICMPをキャプチャする例:
leaf205# tcpdump -ni kpm_inb icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on kpm_inb, link-type EN10MB (Ethernet), capture size 65535 bytes
20:24:12.921981 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4096, length 64
20:24:12.922059 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4096, length 64
20:24:13.922064 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4352, length 64
20:24:13.922157 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4352, length 64
20:24:14.922231 IP 10.0.2.100 > 10.0.2.1: ICMP echo request, id 62762, seq 4608, length 64
20:24:14.922303 IP 10.0.2.1 > 10.0.2.100: ICMP echo reply, id 62762, seq 4608, length 64
また、-wオプションを使用すると、tcpdumpによってパケットキャプチャをPCAPファイルに書き込むことができ、Wiresharkなどのツールで開くことができます。
スイッチのアウトオブバンドインターフェイスであるeth0インターフェイスでtcpdumpを使用する。これは、スイッチのアウトオブバンド物理ポートを通過するすべてのトラフィックの接続のトラブルシューティングに役立ちます。これは主に、SSH、SNMPなどのコントロールプレーンベースのトラフィックです。
オンデマンドのアトミックカウンタは、特定のフロー内のパケットがリーフアップリンクに残され、別のリーフファブリックポートで受信されたときに、それらのパケットをカウントすることを目的としています。パケットが損失したか、過剰に受信されたかを細かく確認できます。
| 改定 | 発行日 | コメント |
|---|---|---|
3.0 |
01-Jul-2026
|
バージョン6.1(2)+で、ELAM AssistantがAPICに埋め込まれているコールアウトを追加 |
2.0 |
19-Aug-2024
|
コマンドのフォーマット。 |
1.0 |
10-Aug-2022
|
初版 |