簡介
本文檔介紹ACI中原生包含的用於調試轉發問題的工具。
背景資訊
本文中的資料摘自 思科以應用為中心的基礎設施第二版故障排除 書,特別是 交換矩陣內轉發 — 工具 章節。
此外,有關ELAM和Ftriage的更多說明,請參閱會話BRKDCN-3900b中的CiscoLive點播庫。
這些工具可以為您提供什麼幫助?
為了從ACI的角度解決轉發問題,請理解:
- 哪台交換機正在接收流?
- 該交換機做出何種轉發決策?
- 開關掉了嗎?
ACI包括多種工具,使使用者能夠深入瞭解特定流發生的情況。接下來的幾節將詳細演示這些工具,因此此處僅作簡要介紹。
SPAN和ERSPAN
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]
將條件設定為觸發
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」。
ASIC
在ELAM語法中,請注意必須指定ASIC。由於ASIC取決於交換機型號,請參閱下表確定要指定哪個ASIC:
ASIC表
交換器/線路卡系列 |
Elam專用晶片 |
-EX交換器/LC |
TAH |
-FX(P)交換機/LC |
中華民國 |
-FX2交換機/LC |
中華民國 |
C交換機(9364C、9332C) |
中華民國 |
-GX交換機 |
應用 |
-GX2交換機 |
趙 |
-FX3交換機 |
中華民國 |
ELAM觸發器內選
從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層報頭設定條件並檢視其詳細資訊。
最佳實踐說明:
要捕獲下行鏈路埠上帶有VLAN封裝的資料包,請使用「in-select 6」
要使用VXLAN封裝捕獲資料包(從主幹或從VXLAN封裝的vleaf),請使用「in-select 14」
ELAM觸發器外選
「out-select」允許控制在ELAM報告中顯示的查詢結果。為了最實際的目的,可以使用「out-select 0」,因為它包含大多數資訊,包括「drop vector」,它將會判斷查詢的結果是丟棄資料包/幀。
請注意,當使用「report」而不是「ereport」或「report detail」獲取ELAM結果時,「drop vector」僅顯示在「out-select 1」中。 但是,您可以始終使用「out-select 0」執行「ereport」或「report detail」。
ELAM設定條件
ELAM支援要在資料包中查詢的大量第2、第3和第4層條件。指定「內部」與「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報告
確認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的兩個檔案。
- elam_<timestamp>.txt
- pretty_elam_<timestamp>.txt
完整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助理應用程式
本手冊中的故障排除示例還將顯示可通過Cisco DC應用中心(https://dcappcenter.cisco.com)下載的ELAM助理應用的使用情況。 此工具通過APIC上的GUI自動部署和解釋ELAM。
此示例顯示匹配節點–101下行鏈路埠上的特定源和目標IP的ELAM部署
ElamAssistant
ElamAssistant — 詳細資訊
ELAM Assistant還允許輕鬆使用更複雜的匹配引數,如源介面或VXLAN值。
分類
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
通過在APIC上運行「ftriage —help」,可以看到完整的fTriage幫助。
tcpdump
可以在ACI交換機上利用TCPDUMP捕獲進出控制平面的流量。請注意,在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等。
隨選原子計數器
按需原子計數器旨在對特定流中的資料包進行計數,當這些資料包離開枝葉上行鏈路並在另一個枝葉交換矩陣埠上接收時。它們允許對資料包是否丟失或過量接收進行一定程度的細分。