목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

ELAM이란 무엇입니까?

토폴로지

인그레스 포워딩 엔진 식별

예: ARP ELAM Capture

트리거 구성

결과 해석

예: IPv4 ELAM Capture

트리거 구성

결과 해석

추가 확인(F3 ltl-region)

느릅나무

소개

이 문서에서는 Cisco Nexus 7000/7700 F3 모듈에서 ELAM(Embedded Logic Analyzer Module)을 수행하는 데 사용되는 단계에 대해 설명합니다.

사전 요구 사항

요구 사항

이 문서에 설명된 정보를 계속 진행하기 전에 Cisco Nexus 운영 체제(NX-OS) 및 기본 Nexus 아키텍처에 대해 잘 아는 것이 좋습니다.

ELAM은 네트워크 관리자 역할로만 수행할 수 있습니다. 네트워크 관리자 권한이 있는 사용자로 로그인하십시오.

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- Cisco Nexus 7700 Series Switch

- Cisco N7700 F3 Series 모듈(N77-F324FQ-25, 24-Port 10/40 Gigabit Ethernet module)

- Cisco NX-OS 버전 8.4.9

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

ELAM이란 무엇입니까?

ELAM은 중단 없이 실시간 패킷을 캡처하여 네트워크 포워딩 문제를 해결하는 데 도움을 주며 성능이나 컨트롤 플레인 리소스에 영향을 주지 않습니다. ELAM은 Cisco TAC(Technical Assistance Center) 엔지니어가 가장 일반적으로 사용하는 강력하고 세분화된 비간섭 툴입니다. 그러나 ELAM 툴이 한 번에 하나의 패킷만 캡처한다는 것을 아는 것이 중요합니다. ELAM이 시작된 후 처음 수신하는 패킷입니다. 흐름의 모든 패킷을 캡처해야 하는 경우 SPAN 또는 ERSPAN을 사용하십시오.

ELAM은 다음과 같은 질문에 답할 수 있습니다.

- 관심 있는 프레임이 스위치에 입력됩니까?

- 패킷은 어떤 포트 및 VLAN에서 수신됩니까?

- 수신 패킷의 소스 및 목적지 MAC 주소는 무엇입니까?

- 패킷은 어떻게 재작성되고 어떤 포트로 전송됩니까?

토폴로지

이 문서에서는 N77-F3 포트 E5/23에 연결된 Host1이 Host2에 트래픽을 전송합니다. ELAM은 Host1에서 Host2로의 개별 프레임을 캡처하는 데 사용됩니다.

N7K에서 ELAM을 실행하려면 먼저 network-admin을 사용하는 사용자로 로그인한 다음 모듈에 연결해야 합니다.

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을 통한 스위치 인그레스(ingress)가 예상됩니다. 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(Forwarding Engine)에서 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 Capture

이 예에서는 포트 E5/23에 연결된 VLAN 100의 Host1(IP 주소가 192.168.1.1이고 MAC 주소가 8c60.4fc7.c5bc)이 ARP(Address Resolution Protocol) 요청을 보냅니다. 이 요청은 IP 주소가 192.168.1.2인 동일한 VLAN 100의 다른 호스트에 대한 MAC 주소를 확인하기 위한 것입니다.

트리거 구성

Flanker ASIC는 다양한 프레임 유형에 대한 ELAM 트리거를 지원합니다. ELAM 트리거는 프레임 유형과 일치해야 합니다. 프레임이 ARP 프레임이면 트리거도 ARP 옵션으로 설정해야 합니다. ARP 프레임은 Other L2 트리거에서 캡처할 수 없습니다. ELAM을 사용하여 MPLS 프레임을 캡처하는 경우 MPLS 대신 IPv4 또는 IPv6를 선택합니다. 자세한 내용은 버그 섹션을 참조하십시오.

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 주소 필드를 기반으로 프레임이 캡처되므로 이 값만 지정됩니다.

Flanker는 트리거가 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 상태가 Triggered(트리거됨)로 표시됩니다.

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 요청 프레임임을 식별할 수 있습니다.

프레임이 수신된 포트를 확인하려면 (Port Index Manager) 명령을PIXM사용합니다. 이 명령은 LTL(Local Target Logic)을 전면 포트 또는 전면 포트 그룹에 매핑하는 것을 표시합니다.

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 Capture

ipv4 l3 elam

이 예에서는 VLAN 100의 Host1(IP 주소 192.168.1.1/24, MAC 주소 8c60.4fc7.c5bc)이 E5/23 포트에 연결되어 Host2에 ICMP(Internet Control Message Protocol) 요청을 보냅니다. 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 패킷임을 식별할 수도 있습니다.

프레임이 수신된 포트를 확인하려면 (Port Index Manager) 명령을PIXM실행합니다. 이 명령은 LTL(Local Target Logic)을 전면 포트 또는 전면 포트 그룹에 매핑하는 것을 표시합니다.

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이 물리적 포트와 일치하지 않을 경우 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

느릅나무

Cisco 버그 ID

버그 제목

버전 수정

Cisco 버그 ID CSCux73273

F3에서 ELAM에 대한 MPLS 트리거가 작동하지 않음

고정 버전이 없으므로 해결 방법 사용

Cisco 버그 ID CSCvm65736

N7k: ELAM 릴리스 트리거 clp_elam 충돌/LC 다시 로드

7.3(3)D1(1), 8.2(3) 또는 8.3(2)