本文档介绍在Cisco Nexus 7000(N7K)M系列模块上执行ELAM所用的步骤,说明最相关的输出,并说明如何解释结果。
在本示例中,VLAN 2500(10.0.5.101)上的主机端口Eth4/1向VLAN 55(10.0.3.101)上的主机端口Eth3/5发送Internet控制消息协议(ICMP)请求. ELAM用于捕获从10.0.5.101 10.0.3.101到10.0.3.101的单个数据包。请记住,ELAM允许您捕获单个帧。
要在N7K上执行ELAM,您必须首先连接到相应的模块(这需要网络管理员权限):
N7K# attach module 4
Attaching to module 4 ...
To exit type 'exit', to abort type '$.'
module-4#
流量预期会进入端口Eth4/1上的交换机。当您检查系统中的模块时,您会看到模块4是M系列模块。请务必记住,N7K是完全分布式的,并且模块(而不是管理引擎)会为数据平面流量做出转发决策。
N7K# show module
Mod Ports Module-Type Model Status
--- ----- ----------------------------------- ------------------ ----------
3 32 10 Gbps Ethernet Module N7K-M132XP-12 ok
4 48 10/100/1000 Mbps Ethernet Module N7K-M148GT-11 ok
5 0 Supervisor module-1X N7K-SUP1 active *
6 0 Supervisor module-1X N7K-SUP1 ha-standby
对于M系列模块,使用内部代号Eureka在第2层(L2)转发引擎(FE)上执行ELAM操作。请注意,L2 FE数据总线(DBUS)包含L2和L3(L3)查找之前的原始报头信息,而结果总线(RBUS)包含L3和L2查找之后的结果。L3查找由L3/第4层(L4)FE执行,内部代号为Lamira,与运行Supervisor引擎2T的Cisco Catalyst 6500系列交换机平台上使用的过程相同。
N7K M系列模块可以为每个模块使用多个FE,因此您必须确定用于端口Eth4/1上FE的Eureka ASIC。输入此命令以验证:
module-4# show hardware internal dev-port-map
(some output omitted)
--------------------------------------------------------------
CARD_TYPE: 48 port 1G
>Front Panel ports:48
--------------------------------------------------------------
Device name Dev role Abbr num_inst:
--------------------------------------------------------------
> Eureka DEV_LAYER_2_LOOKUP L2LKP 1
+--------------------------------------------------------------+
+-----------+++FRONT PANEL PORT TO ASIC INSTANCE MAP+++--------+
+--------------------------------------------------------------+
FP port|PHYS |SECUR |MAC_0 |RWR_0 |L2LKP |L3LKP |QUEUE |SWICHF
1 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0
在输出中,您可以看到端口Eth4/1位于Eureka(L2LKP)实例0上。
module-4# elam asic eureka instance 1
module-4(eureka-elam)#
Eureka ASIC支持IPv4、IPv6等的ELAM触发器。ELAM触发器必须与帧类型对齐。如果该帧是IPv4帧,则触发器也必须是IPv4。IPv4帧不会用其他触发器捕获。IPv6也适用同样的逻辑。
使用Nexus操作系统(NX-OS),您可以使用问号字符来分隔ELAM触发器:
module-4(eureka-elam)# trigger dbus dbi ingress ipv4 if ?
(some output omitted)
destination-flood Destination Flood
destination-index Destination Index
destination-ipv4-address Destination IP Address
destination-mac-address Destination MAC Address
ip-tos IP TOS
ip-total-len IP Total Length
ip-ttl IP TTL
source-mac-address Source MAC Address
vlan-id Vlan ID Number
在本例中,根据源IPv4地址和目的IPv4地址捕获帧,因此仅指定这些值。
尤利卡要求为DBUS和RBUS设置触发器。RBUS数据可驻留在两个不同的数据包缓冲区(PB)中。正确PB实例的确定取决于确切的模块类型和入口端口。通常,建议您配置PB1,如果RBUS未触发,则对PB2重复配置。
以下是DBUS触发器:
module-4(eureka-elam)# trigger dbus dbi ingress ipv4 if source-ipv4-address
10.0.5.101 destination-ipv4-address 10.0.3.101 rbi-corelate
以下是RBUS触发器:
module-4(eureka-elam)# trigger rbus rbi pb1 ip if cap2 1
现在,已选择入口FE并配置了触发器,您可以开始捕获:
module-4(eureka-elam)# start
要检查ELAM的状态,请输入status命令:
module-4(eureka-elam)# status
Instance: 1
EU-DBUS: Armed
trigger dbus dbi ingress ipv4 if source-ipv4-address 10.0.5.101
destination-ipv4-address 10.0.3.101 rbi-corelate
EU-RBUS: Armed
trigger rbus rbi pb1 ip if cap2 1
LM-DBUS: Dis-Armed
No configuration
LM-RBUS: Dis-Armed
No configuration
FE收到与触发器匹配的帧后,ELAM状态显示为“已触发:
module-4(eureka-elam)# status
Instance: 1
EU-DBUS: Triggered
trigger dbus dbi ingress ipv4 if source-ipv4-address 10.0.5.101
destination-ipv4-address 10.0.3.101 rbi-corelate
EU-RBUS: Triggered
trigger rbus rbi pb1 ip if cap2 1
LM-DBUS: Dis-Armed
No configuration
LM-RBUS: Dis-Armed
No configuration
要显示ELAM结果,请输入show dbus 和show rbus 命令。如果有大量流量与相同的触发器匹配,则DBUS和RBUS可能会在不同帧上触发。因此,检查DBUS和RBUS数据上的内部序列号以确保它们匹配非常重要:
module-4(eureka-elam)# show dbus | i seq
seq = 0x05
module-4(eureka-elam)# show rbus | i seq
seq = 0x05
以下是与本示例最相关的ELAM数据的摘要(省略部分输出):
module-4(eureka-elam)# show dbus
seq = 0x05
vlan = 2500
source_index = 0x00a21
l3_protocol = 0x0 (0:IPv4, 6:IPv6)
l3_protocol_type = 0x01, (1:ICMP, 2:IGMP, 4:IP, 6:TCP, 17:UDP)
dmac = 00.00.0c.07.ac.65
smac = d0.d0.fd.b7.3d.c2
ip_ttl = 0xff
ip_source = 010.000.005.101
ip_destination = 010.000.003.101
module-4(eureka-elam)# show rbus
seq = 0x05
flood = 0x0
dest_index = 0x009ed
vlan = 55
ttl = 0xfe
data(rit/dmac/recir) = 00.05.73.a9.55.41
data(rit/smac/recir) = 84.78.ac.0e.47.41
使用DBUS数据,您可以验证VLAN 2500上是否收到帧,其源MAC地址为d0d0.fdb7.3dc2,目的MAC地址为0000.0c07.ac65。您还可以看到这是IP源自10.0.5.101,并发往10.0.3.101的V4帧,V4 FRAME(VV4帧)从10.0.5.101发往10.0.3.101(VV4帧)发送到10.0.3.101(V),VVANANANANANANANANANANANANANANANANANANANANANANANANANANANANA(NANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANA
要验证帧在哪个端口上收到,请输入SRC_INDEX命令(源本地目标逻辑(LTL))。输入此命令可将LTL映射到N7K的端口或端口组:
N7K# show system internal pixm info ltl 0xa21
Member info
------------------
Type LTL
---------------------------------
PHY_PORT Eth4/1
FLOOD_W_FPOE 0x8014
输出显示0xa21的SRC_INDEX 映射到端口Eth4/1。这确认该帧在端口Eth4/1上收到。
使用RBUS数据,您可以验证帧是否路由到VLAN 55,以及DBUS数据中的TTL从0xff递减到RBUS数据中的0xfe。您可以看到源MAC地址和目的MAC地址被分别重写为8478.ac0e.4741和0005.73a9.5541。此外,您可以从DEST_INDEX(目标LTL)确认出口端口:
N7K# show system internal pixm info ltl 0x9ed
Member info
------------------
Type LTL
---------------------------------
PHY_PORT Eth3/5
FLOOD_W_FPOE 0x8017
FLOOD_W_FPOE 0x8016
输出显示0x9ed的DEST_INDEX映射到端口Eth3/5。这确认该帧是从端口Eth3/5发送的。
要验证交换机如何分配LTL池,请输入show system internal pixm info ltl-region命令。如果LTL与物理端口不匹配,此命令的输出对于了解其用途非常有用。Drop LTL就是一个很好的例子:
N7K# show system internal pixm info ltl 0x11a0
0x11a0 is not configured
N7K# show system internal pixm info ltl-region
LTL POOL TYPE SIZE RANGE
=====================================================================
DCE/FC Pool 1024 0x0000 to 0x03ff
SUP Inband LTL 32 0x0400 to 0x041f
MD Flood LTL 1 0x0420
Central R/W 1 0x0421
UCAST Pool 1536 0x0422 to 0x0a21
PC Pool 1720 0x0a22 to 0x10d9
LC CPU Pool 32 0x1152 to 0x1171
EARL Pool 72 0x10da to 0x1121
SPAN Pool 48 0x1122 to 0x1151
UCAST VDC Use Pool 16 0x1172 to 0x1181
UCAST Generic Pool 30 0x1182 to 0x119f
LISP Pool 4 0x1198 to 0x119b
Invalid SI 1 0x119c to 0x119c
ESPAN SI 1 0x119d to 0x119d
Recirc SI 1 0x119e to 0x119e
Drop DI 2 0x119f to 0x11a0
UCAST (L3_SVI_SI) Region 31 0x11a1 to 0x11bf
UCAST (Fex/GPC/SVI-ES) 3648 0x11c0 to 0x1fff
UCAST Reserved for Future Use Region 2048 0x2000 to 0x27ff
======================> UCAST MCAST BOUNDARY <======================
VDC OMF Pool 32 0x2800 to 0x281f