이 문서에서는 포워딩 문제를 디버그하는 데 사용할 수 있는 ACI에 기본적으로 포함된 툴에 대해 설명합니다.
이 문서의 자료는 Troubleshooting Cisco Application Centric Infrastructure, Second Edition에서 발췌했습니다 특히패브릭 내 포워딩 - 툴장.
또한 ELAM과 Attribute에 대한 자세한 설명은 세션 BRKDCN-3900b의 CiscoLive 온디맨드 라이브러리에서 확인할 수 있습니다.
ACI 관점에서 포워딩 문제를 트러블슈팅하려면 다음을 이해합니다.
ACI에는 사용자가 특정 흐름에서 일어나는 일에 대한 심층적인 통찰을 얻을 수 있는 몇 가지 툴이 포함되어 있습니다. 다음 섹션에서는 이러한 툴에 대해 자세히 설명합니다. 따라서 여기서는 대략적인 소개만 제공합니다.
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에서 탐지되면 상태 출력이 트리거됨을 보여 줍니다. ELAM이 트리거되면 스위치 포워딩 결정에 대한 세부사항이 'ereport'로 표시될 수 있습니다. ACI 버전 4.2 이전에는 보고서를 사용해야 합니다.
ELAM 구문 내에서 ASIC를 지정해야 합니다. ASIC는 스위치 모델에 따라 달라지므로, 이 표를 참조하여 어떤 ASIC를 지정할 것인지 결정하십시오.
| 스위치/라인 카드 제품군 |
Elam용 Asic |
| -EX 스위치/LC |
타 |
| -FX(P) 스위치/LC |
ROC |
| -FX2 스위치/LC |
ROC |
| C 스위치(9364C,9332C) |
ROC |
| -GX 스위치 |
앱 |
| -GX2 스위치 |
조 |
| -FX3 스위치 |
ROC |
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 헤더의 세부사항을 확인하고 조건을 설정하는 옵션만 있습니다.
모범 사례 참고:
out-select 명령을 사용하면 어떤 조회 결과가 ELAM 보고서에 표시되는지 제어할 수 있습니다. 대부분의 실용적인 목적에서 삭제 벡터를 포함한 대부분의 정보가 포함되므로 out-select 0을 사용할 수 있습니다. 이 정보는 조회 결과가 패킷/프레임을 삭제하는 것인지 여부를 나타냅니다.
보고서 또는 보고서 세부사항 대신 보고서를 사용하여 ELAM 결과를 가져오는 경우 드롭 벡터는 out-select 1에만 표시됩니다. 그러나 항상 보고서 또는 보고서 세부사항을 out-select 0으로 수행할 수 있습니다(예:
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이 다음 상태로 트리거되었는지 확인합니다.
module-1(DBG-elam-insel6)# status
ELAM STATUS
===========
Asic 0 Slice 0 Status Armed
Asic 0 Slice 1 Status Triggered
보고서를 사용하여 ELAM의 결과를 이해하기 쉬운 형식으로 표시할 수 있습니다. ELAM 보고서는 스위치의 /var/log/dme/log/ 폴더에 저장됩니다. 폴더 아래에는 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)를 통해 다운로드할 수 있는 앱이었습니다. 그러나 ACI 버전 6.1(2)+부터는 ELAM Assistant가 APIC에 직접 통합되고 APIC UI의 Operations(작업) 탭을 통해 액세스합니다.

ELAM Assistant가 포함된 경우 읽기-쓰기 권한이 있는 APIC 사용자만 Elam Assistant를 사용할 수 있으며, 읽기-쓰기 권한이 없는 사용자의 경우 메뉴 옵션이 표시되지 않습니다.
이 툴은 APIC의 GUI를 통해 ELAM의 구축 및 해석을 자동화합니다.
다음 예에서는 node-101 다운링크 포트에서 특정 소스 및 목적지 IP와 일치하는 ELAM의 구축을 보여줍니다.
사용을 시작하려면 왼쪽 패널에서 Capture (Perform ELAM)(캡처(ELAM 수행))를 클릭한 다음 메인 화면에서 Add node(노드 추가)를 클릭하여 ELAM을 설정해야 하는 노드를 추가합니다. 이 예에서는 node-101이 추가됩니다.

일단 관심 노드가 추가되면 방향(다운링크/다운링크 VXLAN/업링크)을 구성해야 합니다.
또한 특정 인터페이스를 관찰해야 하는지 여부를 지정할 수 있습니다. 기본값은 any입니다.
마지막으로, CLI 버전과 유사하게 일련의 매개변수를 설정할 수 있습니다.


마지막으로 Set ELAM(s)(ELAM 설정)을 클릭하여 지정된 노드에서 ELAM을 필터링합니다.
ELAM이 트리거되었는지 확인하려면 Check Trigger 버튼을 클릭할 수 있으며 ELAM이 노드에서 트리거되면 노드 이름 옆에 있는 Status(상태)가 Report Ready(보고서 준비)로 변경됩니다.

이 Report Ready(보고서 준비됨) 버튼은 아래의 ELAM 보고서에 매우 다양한 형식으로 표시됩니다.

출력은 세 가지 유형으로 표시됩니다. Express, Detail 및 Raw입니다.
또한 ELAM Assistant를 사용하면 소스 인터페이스 또는 VXLAN 값과 같은 더 복잡한 일치 매개변수를 쉽게 사용할 수 있습니다.
ping 명령은 Linux에서 IP(인터넷 프로토콜) 네트워크에 있는 호스트의 연결 가능성을 테스트하는 데 사용되는 표준 네트워크 유틸리티입니다. 지정된 대상(IP 주소 또는 도메인 이름)에 ICMP 에코 요청 패킷을 전송하고 에코 응답을 수신합니다.
이 명령의 기본 기능은 다음을 수행하는 것입니다.
· 연결성 테스트: 원격 디바이스가 활성 상태이고 연결 가능한지 확인합니다.
· 레이턴시 측정: 패킷이 목적지로, 그리고 목적지로 이동하는 데 걸리는 RTT(왕복 시간)를 밀리초(밀리초) 단위로 계산합니다.
· 패킷 손실 감지: 반환에 실패한 패킷의 비율을 보고하여 네트워크 혼잡 또는 안정성 문제를 파악하는 데 도움이 됩니다.
이 유틸리티는 APIC에서 연결 문제가 확인될 때 사용할 수 있습니다.
APIC OOB 주소에서 SNMP 외부 서버(예: 10.31.125.144)의 연결 가능성을 확인합니다.
ping 10.31.125.144 -I oobmgmt
에서 볼 수 있듯이 -I 옵션은 소스 인터페이스(이 예에서는 OOB 관리 주소)를 지정하는 데 유용합니다.
사용 가능한 모든 옵션을 보려면 -h 옵션을 사용할 수 있습니다.
반면에 iping 명령은 Cisco ACI(Application Centric Infrastructure) 환경 내에서 특화된 진단 툴입니다.
iping은 Cisco ACI CLI 내에서 패브릭 내 특정 노드 또는 컨텍스트로부터의 연결을 확인하는 데 사용되는 강력한 네트워크 진단 유틸리티입니다. ACI는 다중 테넌트 환경이므로, iping을 통해 관리자는 연결을 테스트하면서 VRF 및 테넌트에서 제공하는 논리적 격리를 설명할 수 있습니다.
운영 방식: 지정된 소스 노드 또는 컨텍스트에서 목적지 IP로의 ICMP 에코 요청을 시작합니다. 패킷이 구성된 EPG 및 계약에 따라 패브릭을 올바르게 이동하도록 합니다. 이를 위해 리프 스위치는 패브릭에 들어가는 경우 프로덕션 트래픽이 캡슐화되는 것과 동일한 방식으로 ICMP 패킷을 캡슐화해야 합니다. iVXLAN 헤더에는 트래픽을 올바른 VRF 또는 EPG에 매핑하는 VNID(가상 네트워크 식별자)가 포함되어 있습니다. 그러면 패킷이 실제 프로덕션 트래픽과 동일한 포워딩 규칙 및 보안 정책을 적용받게 됩니다.
주요 기능:
SVI(Bridge Domain Subject)에서 구축된 SVI에서 ping을 수행하여 엔드포인트 연결 여부 확인
iping 192.168.104.2 -V tenant_prod:VRF1
적어도 VRF 소스를 선택해야 하며, 파라미터 -V가 필요합니다.
-V <tenant>:<vrf> 플래그가 제공되면 시스템은 해당 VRF와 연결된 특정 VNID(VXLAN 네트워크 식별자)를 식별합니다. 이 VNID는 패킷이 올바른 논리적 라우팅 테이블 내에서 라우팅되도록 하는 데 중요합니다.
사용 가능한 모든 옵션을 보려면 -h 옵션을 사용할 수 있습니다.
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
Leaf 104에서 시작하는 레이어 2 플로우를 매핑합니다.
ftriage bridge -ii LEAF:104 -dmac 02:02:02:02:02:02
전체 분류 도움말은 APIC에서 ftriage —help를 실행하여 확인할 수 있습니다.
tcpdump는 ACI 스위치에서 활용하여 제어 평면을 오가는 트래픽을 캡처할 수 있습니다. tcpdump 캡처에서는 스위치 CPU로 전송되는 컨트롤 플레인 트래픽만 관찰될 수 있습니다. 몇 가지 예를 들면 다음과 같습니다. 라우팅 프로토콜, LLDP/CDP, LACP, ARP 등 데이터 플레인(및 컨트롤 플레인) 트래픽을 캡처하려면 SPAN 및/또는 ELAM을 사용하십시오.
CPU에서 캡처하려면 kpm_inb 인터페이스를 지정합니다. 대부분의 기존 tcpdump 옵션과 필터를 사용할 수 있습니다.
Leaf 스위치에서 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 카운터는 leaf 업링크를 통해 나가고 다른 leaf 패브릭 포트에서 수신될 때 특정 흐름 내의 패킷을 카운트하기 위한 것입니다. 따라서 패킷이 누락되었는지 또는 초과 수신된 패킷인지 여부를 세부적으로 파악할 수 있습니다.
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
3.0 |
01-Jul-2026
|
버전 6.1(2)+의 APIC에 ELAM Assistant가 포함되어 있다는 콜아웃이 추가되었습니다. |
2.0 |
19-Aug-2024
|
명령의 형식 지정 |
1.0 |
10-Aug-2022
|
최초 릴리스 |