목차

소개

배경 정보

이러한 툴이 제공하는 이점

SPAN 및 ERSPAN

엘람

개요

ASIC

ASIC 테이블

ELAM 트리거 선택

ELAM 트리거 out-select

ELAM 설정 조건

ELAM 보고서 보기

전체 ELAM 예

ELAM Assistant 애플리케이션

ElamAssistant

ElamAssistant - 세부 정보

분류

예

Tcpdump

온디맨드 atomic 카운터

소개

이 문서에서는 포워딩 문제를 디버그하는 데 사용할 수 있는 ACI에 기본적으로 포함된 툴에 대해 설명합니다.

배경 정보

이 문서의 자료는 Cisco Application Centric Infrastructure, Second Edition 트러블슈팅 특히 패브릭 내 포워딩 - 툴 장.

또한 ELAM과 Attribute에 대한 자세한 설명은 세션 BRKDCN-3900b의 CiscoLive 온디맨드 라이브러리에서 확인할 수 있습니다.

이러한 툴이 제공하는 이점

ACI 관점에서 포워딩 문제를 트러블슈팅하려면 다음을 이해합니다.

1. 어떤 스위치에서 플로우를 수신합니까?

2. 해당 스위치는 어떤 포워딩 결정을 내립니까?

3. 스위치가 그것을 떨어뜨리고 있습니까?

ACI에는 사용자가 특정 흐름에서 일어나는 일에 대한 심층적인 통찰을 얻을 수 있는 몇 가지 도구가 포함되어 있습니다. 다음 섹션에서는 이러한 툴에 대해 자세히 설명하므로 여기서는 대략적인 소개만 제공합니다.

SPAN 및 ERSPAN

SPAN과 ERSPAN은 모두 특정 위치에서 수신된 모든 트래픽 또는 일부 트래픽을 다른 위치로 복제할 수 있는 툴입니다. 복제된 트래픽을 전송하는 최종 디바이스는 일부 유형의 패킷 스니퍼/분석기 애플리케이션을 실행하고 있어야 합니다. 기존 SPAN에서는 한 포트에서 수신 중인 트래픽을 복제한 다음 다른 포트를 통해 전달하는 작업을 수행합니다. ACI는 ERSPAN 외에도 이 작업을 지원합니다.

ERSPAN은 로컬 포트에서 트래픽을 복제하는 것을 제외하고 동일한 개념을 따릅니다. 복제된 트래픽은 GRE에서 캡슐화되어 원격 대상으로 전송됩니다. ACI에서는 이 ERSPAN 대상을 레이어 3 엔드포인트로만 학습해야 하며 모든 VRF의 모든 EPG가 될 수 있습니다.

문제 해결 중에 준비 시간을 최소화하고 ERSPAN 세션 구성 및 캡처를 신속하게 수행할 수 있도록 항상 SPAN 대상을 패브릭에 연결하는 것이 좋습니다.

엘람

개요

ELAM(Embedded Logic Analyzer Module)은 사용자가 하드웨어에서 조건을 설정하고 설정된 조건과 일치하는 첫 번째 패킷 또는 프레임을 캡처할 수 있도록 하는 툴입니다. 캡처에 성공하면 ELAM 상태가 '트리거됨'으로 표시됩니다. 일단 트리거되면 ELAM이 비활성화되고 덤프를 수집하여 스위치 ASIC가 해당 패킷/프레임으로 내리는 수많은 포워딩 결정을 분석할 수 있습니다. ELAM은 ASIC 레벨에서 구현되며 스위치의 CPU 또는 기타 리소스에 영향을 주지 않습니다.

이 설명서의 포워딩 예에서는 플로우의 현재 상황을 확인하기 위한 수단으로 ELAM을 사용합니다. 예에는 leaf CLI 버전 및 ELAM Assistant App이 모두 표시됩니다.

이 가이드에서는 1세대 리프 스위치(EX, FX 또는 FX2 접미사가 없는 스위치)에서 ELAM을 사용하는 경우를 다루지 않습니다.

도구를 사용하기 전에 명령 구문의 구조를 이해하는 것이 중요합니다.

리프 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 이전에는 'report'를 사용해야 합니다.

ASIC

ELAM 구문 내에서 ASIC를 지정해야 합니다. ASIC는 스위치 모델에 따라 달라지므로, 이 표를 참조하여 어떤 ASIC를 지정할 것인지 결정하십시오.

ASIC 테이블

스위치/라인 카드 제품군

Elam용 Asic

-EX 스위치/LC

타

-FX(P) 스위치/LC

ROC

-FX2 스위치/LC

ROC

C 스위치(9364C,9332C)

ROC

-GX 스위치

앱

-GX2 스위치

조

-FX3 스위치

ROC

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 캡슐화를 통해) 패킷을 캡처하려면 'in-select 14'를 사용합니다

ELAM 트리거 out-select

'out-select'를 사용하면 어떤 조회 결과가 ELAM 보고서에 표시되는지 제어할 수 있습니다. 대부분의 실용적인 목적에서 'out-select 0'은 조회의 결과가 패킷/프레임을 삭제하는 것인지 여부를 알려 주는 'drop vector'를 포함한 대부분의 정보를 포함하고 있으므로 사용할 수 있습니다.

ELAM 결과를 얻는 데 'report' 대신 'report'나 'report detail'을 사용하는 경우 'drop vector'는 'out-select 1'에만 표시됩니다. 그러나 항상 'out-select 0'을 사용하여 'ereport' 또는 'report detail'을 수행할 수 있습니다.

ELAM 설정 조건

ELAM은 패킷에서 검색할 대규모 레이어 2, 3 및 4 조건을 지원합니다. '내부' 대 '외부'는 내부 헤더(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이 다음 상태로 트리거되었는지 확인합니다.

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 Assistant 애플리케이션

이 설명서의 트러블슈팅 예시에는 Cisco DC App Center(https://dcappcenter.cisco.com)를 통해 다운로드할 수 있는 ELAM Assistant 앱의 사용법도 나와 있습니다. 이 툴은 APIC의 GUI를 통해 ELAM의 구축 및 해석을 자동화합니다.

이 예에서는 node-101 다운링크 포트에서 특정 소스 및 목적지 IP와 일치하는 ELAM의 구축을 보여줍니다

ElamAssistant

ElamAssistant - 세부 정보

또한 ELAM Assistant를 사용하면 소스 인터페이스 또는 VXLAN 값과 같은 더 복잡한 일치 매개변수를 쉽게 사용할 수 있습니다.

분류

Triage는 ELAM 구성 및 해석의 엔드 투 엔드 자동화를 제공하기 위한 APIC CLI 기반 툴입니다. 이 툴의 전제는 사용자가 특정 플로우뿐만 아니라 플로우가 시작될 것으로 예상되는 리프를 정의할 수 있다는 것입니다. 그런 다음 툴이 각 노드에서 ELAM을 하나씩 실행하여 포워딩 플로우를 검토합니다. 이 기능은 패킷이 어떤 경로로 이동할지 확실하지 않은 대규모 토폴로지에서 특히 유용합니다.

트리거는 실행된 각 명령의 출력을 포함하는 큰 로그 파일을 생성합니다. 이 파일의 이름은 Triage 출력의 처음 몇 줄에 표시됩니다.

분류 완료에는 최대 15분이 소요될 수 있습니다.

예

Leaf 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

전체 분류 도움말은 APIC에서 'ftriage —help'를 실행하여 확인할 수 있습니다.

Tcpdump

ACI 스위치에서 Tcpdump를 활용하여 컨트롤 플레인을 오가는 트래픽을 캡처할 수 있습니다. 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를 사용합니다. 이는 스위치의 OOB(Out of Band) 물리적 포트를 통과하는 트래픽의 연결 문제를 해결하는 데 유용합니다. 이는 주로 SSH, SNMP 등과 같은 컨트롤 플레인 기반 트래픽입니다.

온디맨드 atomic 카운터

온디맨드 atomic 카운터는 리프 업링크를 통해 나가고 다른 리프 패브릭 포트에서 수신될 때 특정 흐름 내의 패킷을 카운트하기 위한 것입니다. 따라서 패킷이 누락되었는지 또는 초과 수신된 패킷인지 여부를 세부적으로 파악할 수 있습니다.