簡介
本檔案介紹用於在Cisco Nexus 7000/7700 F3模組上執行ELAM(嵌入式邏輯分析器模組)的步驟。
必要條件
需求
思科建議您先熟悉Cisco Nexus作業系統(NX-OS)和基本Nexus架構,然後再繼續處理本文檔中介紹的資訊。
ELAM只能由network-admin角色完成。請確保以具有網路管理員許可權的使用者身份登入。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- Cisco Nexus 7700 系列交換器
- 思科N7700 F3系列模組(N77-F324FQ-25,24埠10/40 Gigabit乙太網模組)
- Cisco NX-OS版本8.4.9
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
什麼是ELAM?
ELAM通過捕獲即時資料包而不中斷來協助排除網路轉發問題,並且不會影響效能或控制平面資源。ELAM是思科技術支援中心(TAC)工程師最常使用的強大、精細且無干擾的工具。但是,必須知道ELAM工具一次僅捕獲一個資料包,即ELAM啟動後收到的第一個資料包。如果需要擷取流量的所有封包,請使用SPAN或ERSPAN。
ELAM可以回答以下問題:
- 感興趣的幀是否進入交換機?
- 資料包是從哪個埠和VLAN接收的?
- 傳入資料包的源MAC地址和目的MAC地址是什麼?
- 資料包如何重寫,傳送到哪個埠?
拓撲
在本文中,連線到N77-F3埠E5/23的Host1將流量傳送到Host2。ELAM用於捕獲從Host1到Host2的單個幀。
要在N7K上運行ELAM,首先需要以具有網路管理員的使用者身份登入,然後需要連線到模組。
N77-F3# attach module 5
Attaching to module 5 ...
To exit type 'exit', to abort type '$.'
Last login: Thu Jan 18 05:31:04 pst 2024 from 127.1.1.3 on pts/0
識別輸入轉送引擎
Nexus 7000作為全分散式交換機運行,由入口線卡的轉發引擎做出轉發決策。
本文中,預期相關流量會透過連線埠5/23進入交換器。在N7K的示例中,模組5 是F3模組。
N77-F3# show module 5
Mod Ports Module-Type Model Status
--- ----- ----------------------------------- ------------------ ----------
5 24 10/40 Gbps Ethernet Module N77-F324FQ-25 ok
Mod Sw Hw
--- --------------- ------
5 8.4(9) 1.3
對於F3模組,請使用內部代號Flanker在第2層(L2)轉發引擎(FE)上執行ELAM。
module-5# show hardware internal dev-port-map
--------------------------------------------------------------
CARD_TYPE: 24 port 40G
>Front Panel ports:24
--------------------------------------------------------------
Device name Dev role Abbr num_inst:
--------------------------------------------------------------
> Flanker Fwd Driver DEV_LAYER_2_LOOKUP L2LKP 12
FP port | PHYS | MAC_0 | L2LKP | L3LKP | QUEUE |SWICHF
22 10 10 10 10 0,1
23 11 11 11 11 0,1 >>>Port 23 belongs to FE instance 11
24 11 11 11 11 0,1
+-----------------------------------------------------------------------+
在此輸出中,埠E5/23顯然屬於FE例項11。
第2層FE資料匯流排(DBUS)在第2層(L2)和第3層(L3)查詢之前承載原始報頭資訊,而結果匯流排(RBUS)包含L3和L2查詢的結果。對於大多數故障排除場景,第2層ELAM捕獲就足夠了。
N77-F3# attach module 5
Attaching to module 5 ...
To exit type 'exit', to abort type '$.'
Last login: Thu Jan 18 05:31:04 pst 2024 from 127.1.1.3 on pts/0
module-5# elam asic flanker instance 11
module-5(fln-elam)# ?
layer2 ELAMs for layer 2
layer3 ELAMs for layer 3
module-5(fln-elam)# layer2
示例:ARP ELAM捕獲
在本範例中,VLAN 100(IP位址為192.168.1.1,MAC位址為8c60.4fc7.c5bc)上連結到連線埠E5/23的主機1傳送位址解析通訊協定(ARP)要求。此請求用於解析同一VLAN 100上另一台主機的MAC地址,其IP地址為192.168.1.2。
配置觸發器
Flanker ASIC支援各種幀型別的ELAM觸發器。ELAM觸發器必須與幀型別相對應。如果該幀是ARP幀,則觸發器也必須設定為ARP選項。ARP幀無法被L2的其他觸發器捕獲。如果使用ELAM捕獲MPLS幀,請選擇IPv4或IPv6,而不是MPLS。如需更多詳細資訊,請參閱錯誤一節。
module-5(fln-l2-elam)# trigger dbus ?
arp ARP Frame Format >>>capture ARP packet. Other L2 does not work for ARP
fc Fc hdr Frame Format
ipv4 IPV4 Frame Format >>>capture IPv4 frame
ipv6 IPV6 Frame Format >>>capture IPv6 frame
mpls MPLS
other L2 hdr Frame Format >>>capture non-ip l2 frame
rarp RARP Frame Format
在本示例中,根據ARP幀的目標IP地址欄位捕獲該幀,因此僅指定此值。
側翼需要為DBUS和RBUS設定觸發器。簡化了RBUS觸發器trig
,匹配與DBUS觸發器相同的條件。
module-5(fln-l2-elam)# trigger dbus arp ingress if target-ip-address 192.168.1.2
module-5(fln-l2-elam)# trigger rbus ingress if trig
配置觸發器後,即可開始捕獲。
module-5(fln-l2-elam)# start
要驗證ELAM是否已捕獲任何資料包,可以運行status
命令。 「Armed」一詞表示尚未捕獲到匹配的資料包。
module-5(fln-l2-elam)# status
ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus arp ingress if target-ip-address 192.168.1.2
L2 DBUS: Armed >>>no matched packet
ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig
L2 RBUS: Armed >>>no matched packet
從Host1(192.168.1.1)對192.168.1.2執行ping操作。由於Host1上沒有ARP條目,因此Host1在廣播資料包中傳送ARP請求。FE收到ARP幀後,會檢查觸發器。如果存在匹配項,ELAM將捕獲此幀的轉發決策,然後將ELAM狀態顯示為觸發。
module-5(fln-l2-elam)# status
ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus arp ingress if target-ip-address 192.168.1.2
L2 DBUS: Triggered >>Packet hit
ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig
L2 RBUS: Triggered >>Packet hit
解釋結果
只有當DBUS和RBUS捕獲了同一資料包時,結果才有效。因此,有必要檢查DBUS和RBUS結果中的序列號。如果它們不匹配,可以重新啟動並再次捕獲它們,直到它們對齊。
module-5(fln-l2-elam)# show dbus | in seq
sequence-number : 0x7 vl : 0x0
module-5(fln-l2-elam)# show rbus | in seq
l2-rbus-trigger : 0x1 sequence-number : 0x7
建議首先檢查DBUS輸出,因為它包含任何重寫前的資料。以下是ARP ELAM捕獲的示例。請注意,某些輸出已被省略。
module-5(fln-l2-elam)# show dbus
cp = 0x20c6ad1c, buf = 0x20c6ad1c, end = 0x20c7706c
--------------------------------------------------------------------
Flanker Instance 11 - Capture Buffer On L2 DBUS:
<snip>
--------------------------------------------------------------------
L2 DBUS PRS MLH ARP/RARP
--------------------------------------------------------------------
valid : 0x1 requst-response : 0x1 >>>ARP request
(1:for ARP request,2: for ARP reply, 3:for RARP request, 4:for RARP reply)
port-id : 0x0 last-ethertype : 0x806 >>>Ethernet type, 0x0806 means ARP
packet-type : 0x0 l2-length-check : 0x0 >>>0 for ingress, 1 for egress
vqi : 0x0 packet-length : 0x40 >>>L2 ethernet frame totally length 64 byte
vlan : 0x64 destination-index : 0x0 >>>VLAN100
source-index : 0xb79 bundle-port : 0x0 >>>source port ltl index
status-is-1q : 0x0 trill-encap : 0x0 >>>0 means frame without vlan tag
sender-ip-address: 192.168.1.1 >>>sender-ip-address in ARP header
target-ip-address: 192.168.1.2 >>>target-ip-address in ARP header
sender-mac-address : 8c60.4fc7.c5bc >>>sender-mac-address in ARP header
target-mac-address : ffff.ffff.ffff >>>target-mac-address in ARP header
destination-mac-address : ffff.ffff.ffff >>>sestination mac in ethernet header
source-mac-address : 8c60.4fc7.c5bc >>>source mac in ethernet header
使用DBUS資料,您可以確認在VLAN100(vlan:0x64)上收到該幀,源MAC地址為8c60.4fc7.c5bc,目的MAC地址為ffff.ffff.ffff。您還可以確定這是源自IP 192.168.1.1的ARP請求幀。
要檢驗接收幀的埠,請使用PIXM
(埠索引管理器)命令。此命令顯示本地目標邏輯(LTL)到前埠或前埠組的對映。
N77-F3# show system internal pixm info ltl 0xb79
------------------
Type LTL
---------------------------------
PHY_PORT Eth5/23
FLOOD_W_FPOE 0xc031
輸出顯示,0xb79的來源索引映射到連線埠E5/23。這可驗證埠E5/23上是否接收到該幀。
在確認ELAM已捕獲到感興趣的幀後,您可以使用RBUS資料驗證轉發決策的結果(請注意,某些輸出已被省略)。
module-5(fln-l2-elam)# show rbus
--------------------------------------------------------------------
L2 RBUS INGRESS CONTENT
--------------------------------------------------------------------
di-ltl-index : 0xc031 l3-multicast-di : 0xc00 >>> destination ltl index
source-index : 0xb79 vlan : 0x64 >>> vlan id after rewritten
vqi : 0x0 di2-valid : 0x0 >>> use l3-multicast-di as di if this is 1
routed-frame : 0x0 copy-cause : 0x0 >>> 0x0 means N7K performs layer 2 switching
通過RBUS資料,您可以確認幀是否在VLAN 100(0x64)上交換。要通過di-ltl-index確定出口埠,請再次使用pixm命令。
N77-F3# show system internal pixm info ltl 0xc031
Member info
------------------
IFIDX LTL
---------------------------------
Eth5/24 0x0b78
Eth5/23 0x0b79
輸出顯示,埠E5/23和E5/24都屬於LTL 0xc031。ARP資料包會交換到這兩個埠。當從E5/23接收時,它只從E5/24發出。
示例:IPv4 ELAM捕獲
ipv4 l3 elam
在本範例中,VLAN 100上的Host1(IP位址為192.168.1.1/24,MAC位址為8c60.4fc7.c5bc)連線到連線埠E5/23,並向主機2傳送網際網路控制訊息通訊協定(ICMP)要求。Host2的IP地址為192.168.2.2/24,位於不同的VLAN VLAN200上。
配置觸發器
在本範例中,由於Host1和Host2位於不同的VLAN中,因此從Host1到Host2的ICMP封包會通過N77-F3上的第3層路由。第2層ELAM用於捕獲ICMP請求資料包。
來源IP(192.168.1.2)和目的地IP(192.168.2.2)都作為DBUS觸發器組合。ELAM僅捕獲與所有觸發器匹配的資料包。
N77-F3# attach module 5
Attaching to module 5 ...
To exit type 'exit', to abort type '$.'
Last login: Thu Jan 18 11:19:46 pst 2024 from 127.1.1.3 on pts/0
module-5# elam asic flanker instance 11
module-5(fln-elam)# layer2
module-5(fln-l2-elam)# trigger dbus ipv4 ingress if destination-ipv4-address 192.168.2.2 source-ipv4-address 192.168.1.2
module-5(fln-l2-elam)# trigger rbus ingress if trig
module-5(fln-l2-elam)# start
module-5(fln-l2-elam)# status
ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus ipv4 ingress if destination-ipv4-address 192.168.2.2 source-ipv4-address 192.168.1.2
L2 DBUS: Armed
ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig
L2 RBUS: Armed
開始從Host1(192.168.1.2)對Host2(192.168.2.2)執行ping。FE例項11收到與觸發器匹配的資料包後,ELAM狀態顯示為Triggered。
module-5(fln-l2-elam)# status
ELAM Slot 5 instance 11: L2 DBUS Configuration: trigger dbus ipv4 ingress if destination-ipv4-address 192.168.2.2 source-ipv4-address 192.168.1.2
L2 DBUS: Triggered
ELAM Slot 5 instance 11: L2 RBUS Configuration: trigger rbus ingress if trig
L2 RBUS: Triggered
解釋結果
確保RBUS和DBUS具有相同的序列號。每次捕獲時都需要執行此步驟。
module-5(fln-l2-elam)# show dbus | in seq
sequence-number : 0x74 vl : 0x0
module-5(fln-l2-elam)# show rbus | in seq
l2-rbus-trigger : 0x1 sequence-number : 0x74 >>same sequence number, valid elam result
以下是IPv4 ICMP ELAM擷取範例。請注意,某些輸出已被省略。
module-5(fln-l2-elam)# show dbus
--------------------------------------------------------------------
L2 DBUS PRS MLH IPV4
--------------------------------------------------------------------
l4-protocol : 0x1 df : 0x0 >>>L4 protocol id, 1 means icmp packet
ttl : 0xff l3-packet-length : 0x54 >>>ip total length is 84 in this packet, ttl is 255
port-id : 0x0 last-ethertype : 0x800 >>>Ethernet type, 0x0800 means IPv4
vqi : 0x0 packet-length : 0x66 >>>L2 frame length field
vlan : 0x64 destination-index : 0x0 >>>vlan id 100
source-index : 0xb79 bundle-port : 0x0 >>>source port ltl index
status-is-1q : 0x1 trill-encap : 0x0 >>>1 means frame with vlan tag
source-ipv4-address: 192.168.1.2 >>>Packet source IP
destination-ipv4-address: 192.168.2.2 >>>Packet destination IP
destination-mac-address : 003a.9c40.8ac3 >>>Packet destination mac
source-mac-address : 8c60.4fc7.c5bc >>>Packet source mac
透過DBUS資料,您可以確認在VLAN100(vlan:0x64)上收到封包,來源IP為192.168.1.2,目的地IP為192.168.2.2。您還可以識別這是IPv4 ICMP資料包。
要驗證接收幀的埠,請運行PIXM
(Port Index Manager)命令。此命令顯示本地目標邏輯(LTL)到前埠或前埠組的對映。
N77-F3# show system internal pixm info ltl 0xb79
------------------
Type LTL
---------------------------------
PHY_PORT Eth5/23
FLOOD_W_FPOE 0xc032
FLOOD_W_FPOE 0xc031
FLOOD_W_FPOE 0xc029
輸出顯示,0xb79的來源索引映射到連線埠E5/23。這確認埠E5/23上接收到該幀。
在確認ELAM已捕獲感興趣的ICMP資料包後,您可以使用RBUS資料驗證轉發決策的結果(請注意,某些輸出已被忽略)。從RBUS資料中,您可以看到幀從VLAN 100(0x64)路由到VLAN200。
module-5(fln-l2-elam)# show rbus
--------------------------------------------------------------------
L2 RBUS INGRESS CONTENT
--------------------------------------------------------------------
segment-id-valid : 0x0 ttl-out : 0xfe >>>TTL is 254
di-ltl-index : 0xb78 l3-multicast-di : 0x0 >>>destination port ltl
source-index : 0xb79 vlan : 0xc8 >>>vlan id is 200
routed-frame : 0x1 copy-cause : 0x0 >>>routed on N7K
要通過di-ltl-index確定出口埠,請運行PIXM
命令。輸出顯示輸出埠為E5/24。
N77-F3# show system internal pixm info ltl 0xb78
Member info
------------------
Type LTL
---------------------------------
PHY_PORT Eth5/24
FLOOD_W_FPOE 0xc032
FLOOD_W_FPOE 0xc031
FLOOD_W_FPOE 0xc029
其他驗證(F3 ltl-region)
如果LTL與物理埠不匹配,此命令的輸出有助於瞭解它的用途。示例包括Drop LTL和Inband LTL:
N77-F3# show system internal pixm info ltl-region
===========================================================
PIXM VDC 1 LTL MAP Version: 3
Description: LTL Map for Crossbow
===========================================================
LTL_TYPE SIZE START END
========================================================================
LIBLTLMAP_LTL_TYPE_SUP_ETH_INBAND 64 0xc00 0xc3f
-------------------------------------------------------------------
LIBLTLMAP_LTL_TYPE_DROP_DI_WO_HW_BITSET 0xcae
LIBLTLMAP_LTL_TYPE_DROP_DI 0xcad
ELAM錯誤
思科錯誤 ID |
錯誤標題 |
修復版本 |
思科錯誤ID CSCux73273 |
F3上ELAM的MPLS觸發器無法正常工作 |
沒有固定版本,請使用解決方法 |
思科錯誤ID CSCvm65736 |
N7k:ELAM發佈觸發clp_elam crash/LC重新載入 |
7.3(3)D1(1)或8.2(3)或8.3(2) |