簡介
本文檔介紹ACI中本地提供的可用於調試轉發問題的工具。
背景資訊
本文檔中的內容摘自故障排除思科以應用為中心的基礎設施,第二版一書,尤其是交換矩陣內轉發-工具一章。
此外,有關ELAM和Ftriage的深入說明,請參閱CiscoLive點播庫中的會話BRKDCN-3900b。
這些工具能提供哪些幫助?
為了從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助手應用。
本指南不涵蓋ELAM在第一代枝葉交換機(不帶EX、FX或FX2字尾的交換機)的使用。
在使用工具之前,瞭解命令語法的結構非常重要。
枝葉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之前,必須使用「報告」。
ASIC
在ELAM語法中,請注意必須指定ASIC。由於ASIC取決於交換機型號,請參閱下表確定要指定哪個ASIC:
ASIC表
交換器/線路卡系列 |
Elam專用的ASIC |
-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 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層報頭設定條件並檢視其詳細資訊。
最佳實務說明:
要捕獲下行鏈路埠上帶有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層條件。指定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報表
驗證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的兩個檔案。
- 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助理應用程式
本書中的故障排除示例還顯示了可透過思科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
透過運行ftriage — APIC上的help可以檢視完整的fTriage幫助。
tcpdump
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等。
隨選原子計數器
按需的原子計數器旨在對特定流內的資料包進行計數,因為它們從枝葉上行鏈路離開並在另一個枝葉交換矩陣埠上接收。它們可以對資料包是否丟失或超量接收進行細緻的分析。