本文檔介紹ACI中原生包含的用於調試轉發問題的工具。
本文檔中的資料摘自對思科以應用為中心的基礎設施進行故障排除,第二版 書,特別是交換矩陣內轉發 — 工具章節。
此外,有關ELAM和Ftriage的更多說明,請參閱會話BRKDCN-3900b中的CiscoLive點播庫。
為了從ACI的角度對轉發問題進行故障排除,請理解:
ACI包括多種工具,使使用者能夠深入瞭解特定流發生的情況。接下來的幾節將詳細介紹這些工具,因此此處僅作簡要介紹。
SPAN和ERSPAN都是允許在特定位置接收的所有或部分流量複製到其他位置的工具。將複製流量傳送到的最終裝置預期將運行某種型別的資料包嗅探器/分析器應用程式。傳統SPAN涉及複製一個連線埠上接收的流量並通過另一個連線埠傳遞。除ERSPAN外,ACI還支援這樣做。
ERSPAN將流量從本地連線埠複製;複製的流量將封裝在GRE中並傳送到遠端目的地。在ACI中,此ERSPAN目的地只能獲知為第3層端點,且可以是任何VRF中的任何EPG。
最好始終將SPAN目的地連線到交換矩陣,以減少故障排除期間的準備時間,並允許快速進行ERSPAN作業階段設定和擷取。
嵌入式邏輯分析器模組(ELAM)是一種工具,允許使用者在硬體中設定條件並擷取與設定條件相符的第一個封包或訊框。成功的捕獲會使ELAM狀態顯示為「已觸發」。 一旦觸發,ELAM就會被禁用,並且可以收集轉儲來分析交換機ASIC對該資料包/幀做出的大量轉發決策。ELAM是在ASIC級別實施的,不會影響交換機上的CPU或其他資源。
本書中的轉發示例使用ELAM作為驗證流發生情況的方法。示例顯示了枝葉CLI版本和ELAM Assistant應用。
本指南不包括第一代枝葉交換機(沒有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]
將Conditions設定為觸發器:
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的輸出會顯示已觸發。觸發ELAM後,交換機轉發決策的詳細資訊可以顯示為「ereport」。 在ACI版本4.2之前,必須使用report。
在ELAM語法中,請注意必須指定ASIC。由於ASIC取決於交換機型號,因此請參閱下表確定要指定哪個ASIC:
| 交換器/線路卡系列 |
Elam專用晶片 |
| -EX交換器/LC |
TAH |
| -FX(P)交換機/LC |
中華民國 |
| -FX2交換機/LC |
中華民國 |
| C交換機(9364C、9332C) |
中華民國 |
| -GX交換機 |
應用 |
| -GX2交換機 |
趙 |
| -FX3交換機 |
中華民國 |
從CLI運行時必須瞭解的ELAM的另一個元件是in-select。in-select定義封包/訊框應具有哪些標頭,以及要配對哪些標頭。
例如,來自不進行VXLAN封裝的下行鏈路埠的資料包只會具有外部第2層、第3層和第4層報頭。
來自前面板(下行鏈路)埠且經過VXLAN封裝的資料包(例如處於VXLAN模式的Cisco ACI虛擬邊緣)或來自上遊主幹的資料包將具有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,因為它包含大多數資訊,包括drop vector,它告訴查詢的結果是丟棄資料包/幀。
請注意,當使用報表而不是ereport或report detail來獲取ELAM結果時,下拉向量僅顯示在外選1中。但是,始終可以使用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已觸發,狀態為:
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的兩個檔案:
此範例會擷取來自 — 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的使用情況。
以前,它是一個可通過思科DC應用中心(https://dcappcenter.cisco.com)下載的應用。但是從ACI 6.1(2)+版開始,ELAM Assistant直接整合到APIC中,並通過APIC UI中的Operations頁籤進行訪問。

對於嵌入的ELAM助手,只有具有讀寫許可權的APIC使用者才能使用ELAM助手,並且選單選項對於沒有讀寫許可權的使用者不可見。
此工具通過APIC上的GUI自動部署和解釋ELAM。
此範例顯示與節點101下行鏈路連線埠上的特定來源和目的地IP相匹配的ELAM的部署:
要開始使用它,需要在左側面板中按一下Capture(Perform ELAM)(捕獲(執行ELAM),然後在主螢幕中按一下Add node以開始新增需要設定ELAM的節點。在此範例中,新增節點101:

一旦新增了感興趣的節點,就需要配置Direction(下行鏈路/下行鏈路VXLAN/上行鏈路)。
也可以指定是否需要觀察任何特定介面,預設值為any。
最後,您可以設定一系列引數(類似於CLI版本):


最後,按一下設定ELAM以在指定節點上設定ELAM。
要確認ELAM是否觸發,可按一下Check Trigger按鈕,如果在節點中觸發ELAM,則節點名稱旁邊的Status將更改為Report Ready:

此Report Ready按鈕以漂亮的格式顯示下面的ELAM報告:

輸出以三種形式顯示:Express、Detail和Raw。
ELAM Assistant還允許輕鬆使用更複雜的匹配引數,如源介面或VXLAN值。
ping指令是用於Linux的標準網路公用程式,用於測試網際網路通訊協定(IP)網路上主機的連線能力。它將ICMP回應請求資料包傳送到指定的目的地(IP地址或域名),並偵聽回應回覆。
此命令的主要功能是執行:
·連線測試:驗證遠端裝置是否處於活動狀態且是否可訪問。
·延遲測量:計算資料包到達目的主機和返回主機的來回時間(RTT),以毫秒(ms)為測量單位。
·資料包丟失檢測:報告未能返回的資料包百分比,這有助於確定網路擁塞或穩定性問題。
在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(虛擬網路識別符號)。這可確保資料包遵守與實際生產流量相同的轉發規則和安全策略。
主要功能:
確認終端可達性,從Bridge Domain subject(SVI)部署的SVI執行ping
iping 192.168.104.2 -V tenant_prod:VRF1
需要至少選擇VRF源,引數為-V。
當提供-V <tenant>:<vrf>標誌時,系統識別與該VRF關聯的特定VNID(VXLAN網路識別符號)。此VNID對於確保資料包在正確的邏輯路由表中路由至關重要。
可以使用選項 — h檢視所有可用選項。
fTriage是一個基於APIC CLI的工具,旨在提供ELAM配置和解釋的端到端自動化。該工具的前提是使用者可以定義特定流以及預期流開始的枝葉。然後,該工具在每個節點上逐個執行ELAM以檢查轉發流。在資料包採用哪條路徑不明的大型拓撲中,它尤其有用。
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
通過運行ftriage — 有關APIC的幫助,可以檢視完整的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
|
新增了標註,ELAM Assistant嵌入在6.1(2)+版的APIC中 |
2.0 |
19-Aug-2024
|
命令的格式設定。 |
1.0 |
10-Aug-2022
|
初始版本 |