Este documento descreve as etapas usadas para executar um ELAM em um módulo F2 do Cisco Nexus 7000 (N7K), explica as saídas mais relevantes e descreve como interpretar os resultados.
Neste exemplo, um host na VLAN 10 (10.1.1.101 com endereço MAC 0050.56a1.1a01), a porta Eth6/4 envia uma solicitação do Internet Control Message Protocol (ICMP) a um host que também está na VLAN 10 (10.1.1.10 2 com endereço MAC 0050.56a1.1aef), porta Eth6/3. ELAM é usado para capturar esse único quadro de 10.1.1.101 a 10.1.1.102. É importante lembrar que o ELAM permite capturar apenas um único quadro.
Para executar um ELAM no N7K, você deve primeiro se conectar ao módulo apropriado (isso requer o privilégio de administrador de rede):
N7K# attach module 6
Attaching to module 6 ...
To exit type 'exit', to abort type '$.'
module-6#
Espera-se que o tráfego ingresse no switch na porta Eth6/4. Ao verificar os módulos no sistema, você verá que o Módulo 6 é um módulo F2. É importante lembrar que o N7K é totalmente distribuído e que os módulos, não o supervisor, tomam as decisões de encaminhamento para o tráfego de dataplane.
N7K# show module 6
Mod Ports Module-Type Model Status
--- ----- --------------------------- ------------------ -------
6 48 1/10 Gbps Ethernet Module N7K-F248XP-25E ok
Para os módulos F2, execute o ELAM no FE (L2) com Clipper de nome de código interno. Observe que o L2 FE Data Bus (DBUS) contém as informações originais do cabeçalho antes das pesquisas de L2 e Camada 3 (L3), e o RBUS (Result Bus) contém os resultados após as pesquisas de L3 e L2.
O N7K F2 tem 12 FEs por módulo, portanto você deve determinar o Clipper ASIC usado para o FE na porta Eth6/4. Insira este comando para verificar:
module-6# show hardware internal dev-port-map
--------------------------------------------------------------
CARD_TYPE: 48 port 10G
>Front Panel ports:48
--------------------------------------------------------------
Device name Dev role Abbr num_inst:
--------------------------------------------------------------
> Clipper FWD DEV_LAYER_2_LOOKUP L2LKP 12
+-----------------------------------------------------------------------+
+----------------+++FRONT PANEL PORT TO ASIC INSTANCE MAP+++------------+
+-----------------------------------------------------------------------+
FP port | PHYS | MAC_0 | L2LKP | L3LKP | QUEUE |SWICHF
...
3 0 0 0 0 0 0
4 0 0 0 0 0 0
Na saída, você pode ver que a porta Eth6/4 está na instância do Clipper (L2LKP)0.
module-6# elam asic clipper instance 0
module-6(clipper-elam)# layer2
module-6(clipper-l2-elam)#
O Clipper ASIC suporta acionadores ELAM para vários tipos de quadros. O gatilho ELAM deve ser alinhado com o tipo de quadro. Se o quadro for um quadro IPv4, o disparador também deve ser IPv4. Um quadro IPv4 não é capturado com um outro acionador. A mesma lógica se aplica ao IPv6.
O Clipper ASIC suporta estes tipos de quadro:
module-6(clipper-l2-elam)# trigger dbus ?
arp ARP Frame Format
fc Fc hdr Frame Format
ipv4 IPV4 Frame Format
ipv6 IPV6 Frame Format
other L2 hdr Frame Format
pup PUP Frame Format
rarp Rarp hdr Frame Format
valid On valid packet
Com o Nexus Operating Systems (NX-OS), você pode usar o caractere de ponto de interrogação para separar o disparador ELAM. Há várias opções disponíveis para ELAM no módulo F2:
module-6(clipper-l2-elam)# trigger dbus ipv4 ingress if ?
<CR>
destination-ipv4-address destination ipv4 address
destination-mac-address Inner destination mac address
source-index Source index
source-ipv4-address source ipv4 address
source-mac-address Inner source mac address
vlan Vlan
etc?
Para este exemplo, o quadro é capturado com base nos endereços IPv4 origem e destino, portanto, somente esses valores são especificados.
O cliente exige que os disparadores sejam definidos para o DBUS e o RBUS. Isso difere dos módulos M-Series, pois não há requisito para especificar uma instância de Buffer de Pacotes (PB). Isso simplifica o disparo RBUS.
Aqui está o gatilho do DBUS:
module-6(clipper-l2-elam)# trigger dbus ipv4 ingress if source-ipv4-address
10.1.1.101 destination-ipv4-address 10.1.1.102
Aqui está o gatilho do RBUS:
module-6(clipper-l2-elam)# trigger rbus ingress if trig
Agora que o FE de entrada está selecionado e você configurou o acionador, você pode iniciar a captura:
module-6(clipper-l2-elam)# start
Para verificar o status do ELAM, insira o comando status:
module-6(clipper-l2-elam)# status
ELAM instance 0: L2 DBUS Configuration: trigger dbus ipv4 ingress if
source-ipv4-address 10.1.1.101 destination-ipv4-address 10.1.1.102
L2 DBUS Armed
ELAM instance 0: L2 RBUS Configuration: trigger rbus ingress if trig
L2 RBUS Armed
Quando o quadro que corresponde ao disparador é recebido pelo FE, o status do ELAM é mostrado como Disparado:
module-6(clipper-l2-elam)# status
ELAM instance 0: L2 DBUS Configuration: trigger dbus ipv4 ingress if
source-ipv4-address 10.1.1.101 destination-ipv4-address 10.1.1.102
L2 DBUS Triggered
ELAM instance 0: L2 RBUS Configuration: trigger rbus ingress if trig
L2 RBUS Triggered
Para exibir os resultados do ELAM, insira os comandos show dbus e show rbus. Aqui está o trecho dos dados ELAM mais relevantes para este exemplo (alguns resultados são omitidos):
module-6(clipper-l2-elam)# show dbus
--------------------------------------------------------------------
L2 DBUS CONTENT - IPV4 PACKET
--------------------------------------------------------------------
...
vlan : 0xa destination-index : 0x0
source-index : 0x3 bundle-port : 0x0
sequence-number : 0x3f vl : 0x0
...
source-ipv4-address: 10.1.1.101
destination-ipv4-address: 10.1.1.102
destination-mac-address: 0050.56a1.1aef
source-mac-address: 0050.56a1.1a01
module-6(clipper-l2-elam)# show rbus
--------------------------------------------------------------------
L2 RBUS INGRESS CONTENT
--------------------------------------------------------------------
l2-rbus-trigger : 0x1 sequence-number : 0x3f
di-ltl-index : 0x2 l3-multicast-di : 0x0
source-index : 0x3 vlan-id : 0xa
Com os dados DBUS, você pode verificar se o quadro é recebido na VLAN 10 (vlan: 0xa) com um endereço MAC origem de 0050.56a1.1a01 e um endereço MAC destino de 0050.56a1.1aef. Você também pode ver que esse é um quadro IPv4 originado de 10.1.1.101 e destinado a 10.1.1.102.
Para verificar em que porta o quadro é recebido, insira o comando SRC_INDEX (a LTL (Local Target Logic) de origem). Insira este comando para mapear um LTL para uma porta ou grupo de portas para o N7K:
N7K# show system internal pixm info ltl 0x3
Type LTL
---------------------------------
PHY_PORT Eth6/4
A saída mostra que um índice de origem de 0x3 mapeia para a porta Eth6/4. Isso confirma que o quadro é recebido na porta Eth6/4.
Com os dados RBUS, você pode verificar se o quadro está comutado na VLAN 10 (vlan-id: 0xa). Além disso, você pode confirmar a porta de saída do diltl-index (LTL de destino):
N7K# show system internal pixm info ltl 0x2
Type LTL
---------------------------------
PHY_PORT Eth6/3
A saída mostra que um diltl-index de 0x2 mapeia para a porta Eth6/3. Isso confirma que o quadro é comutado da porta Eth6/3.
Para verificar como o switch aloca o pool LTL, insira o comando show system internal pixm info ltl-region. A saída desse comando é útil para entender a finalidade de um LTL se ele não for combinado a uma porta física. Um bom exemplo disso é um LTL Drop:
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