소개
이 문서에서는 ELAM(Embedded Logic Analyzer Module)의 특징, 결함 및 가장 효과적으로 사용하는 방법에 대해 설명합니다.
배경 정보
네트워킹 디바이스 및 프로토콜의 복잡성이 증가함에 따라 네트워킹 문제의 원인을 찾기가 매우 어려울 수 있습니다.특정 디바이스에서 프레임이 수신되고 올바르게 전달되는지 확인해야 하는 경우가 많습니다.이 질문에 답하는 데 도움이 되는 몇 가지 캡처 도구, 디버깅 및 트릭이 있습니다.그러나 모든 것이 실행 가능하거나 프로덕션 네트워크에서 실행할 수 있는 것은 아닙니다.
ELAM은 Cisco ASIC의 내부를 살펴보고 패킷이 어떻게 전달되는지 이해할 수 있는 엔지니어링 툴입니다.포워딩 파이프라인 내에 내장되어 있으며 성능 또는 컨트롤 플레인 리소스에 지장을 주지 않고 실시간으로 패킷을 캡처할 수 있습니다.다음과 같은 질문에 답하는 데 도움이 됩니다.
- 패킷이 FE(Forwarding Engine)에 도달했습니까?
- 패킷이 수신되는 포트 및 VLAN은 무엇입니까?
- 패킷은 어떻게 나타납니까(L2(Layer 2) - L4(Layer 4) 데이터)?
- 패킷은 어떻게 변경되며 어디로 전송됩니까?
ELAM은 매우 강력하고 세분화되고 비침해적입니다.하드웨어 스위칭 플랫폼에서 일하는 Cisco TAC(Technical Assistance Center) 엔지니어를 위한 유용한 문제 해결 툴입니다.
ELAM 과제
ELAM은 내부 사용을 위한 진단 도구로 설계되었습니다.CLI 구문은 Cisco ASIC에 내부 코드 이름을 사용하므로 ELAM 데이터를 해석하려면 하드웨어별 아키텍처와 포워딩 지식이 필요합니다.이러한 세부 사항 중 다수는 Cisco 장치가 동급 최고의 성능을 제공하는 Cisco의 내부 독점 기능을 노출하므로 설명할 수 없습니다.
이러한 이유로 ELAM은 고객이 지원하는 기능이 아니며, 내부용 진단 도구로 남아 있습니다.외부 컨피그레이션 가이드가 없으며, 구문 및 작업이 예고 없이 버전에서 버전으로 변경될 수 있습니다.
이러한 과제와 면책조항을 고려할 때, ELAM이 지금 설명되는 이유는 다음과 같습니다.
- 첫째, TAC 엔지니어가 문제를 격리하기 위해 ELAM을 사용하는 것이 일반적입니다.문제가 간헐적으로 발생하는 경우 TAC에서 ELAM을 수행하도록 요청할 수 있습니다.이러한 단계가 비침해적이며 근본 원인 분석을 제공하는 데 어떤 도움이 되는지 이해하는 것이 중요합니다.
- 또한 문제를 격리하는 데 도움이 되는 다른 툴도 없는 경우가 있습니다.예를 들어, SPAN, ACL 적중 또는 침입 디버그에 대해 프로덕션 시간 동안 컨피그레이션 변경이 허용되지 않는 경우TAC에 연락할 시간이 없을 수 있으며, ELAM은 마지막 수단으로 매우 유용한 툴이 될 수 있습니다.
ELAM 기본 사항
ELAM은 각 플랫폼에 대한 완전한 아키텍처 지식 없이 수행할 수 있습니다.이 섹션에서는 Cisco Catalyst 6500 및 7600 Series 스위치 플랫폼(간단히 6500 및 7600이라고 함)에서 ELAM을 수행하는 데 필요한 기본 사항과 Nexus 7000 Series 스위치 플랫폼을 설명합니다.
ELAM 워크플로
앞서 언급했듯이 ELAM은 기본 하드웨어에 따라 다릅니다.따라서 CLI 구문은 사용 중인 하드웨어에 따라 달라집니다.그러나 각 플랫폼은 이 이미지와 같이 유사한 워크플로를 따릅니다.
참고:이 워크플로가 다른 플랫폼에서 어떻게 적용되는지 확인하려면 ELAM 예 섹션을 참조하십시오.
이 섹션의 뒷부분에 자세히 설명되어 있는 이 4가지 단계는 워크플로를 설명합니다.
- 예상 인그레스 FE를 식별합니다.플랫폼에 둘 이상의 FE가 있는 경우 캡처할 패킷에 대해 전달 결정을 내리는 FE를 식별하는 것이 중요합니다.올바른 FE에서 ELAM을 구성합니다.
- ELAM 트리거를 구성합니다.캡처할 패킷에 대한 세부 정보로 트리거를 구성해야 합니다.일반적인 트리거는 소스 및 대상 IP 주소 또는 L4 포트 번호를 포함합니다.ELAM을 사용하면 여러 필드를 지정할 수 있으며 구성된 모든 필드에서 논리 AND를 수행합니다.
- ELAM을 시작합니다.
- ELAM이 트리거되고 결과를 표시할 때까지 기다립니다.
중앙 집중화와 분산 포워딩 비교
ELAM을 수행하기 위해 완료해야 하는 첫 번째 단계는 올바른 FE를 식별하는 것입니다.기존 또는 CFC(Centralized Forwarding) 라인 카드가 있는 6500은 중앙 집중식 포워딩을 사용하며, 이 경우 활성 수퍼바이저는 포워딩을 결정합니다.클래식 또는 CFC 라인 카드에서 인그레스(ingress)하는 패킷의 경우 활성 수퍼바이저에서 ELAM을 수행해야 합니다.
DFC(Distributed Forwarding) 지원 라인 카드를 사용하면 수퍼바이저 없이 라인 카드의 FE에서 로컬로 포워딩 결정을 내릴 수 있습니다.인그레스 DFC 라인 카드가 있는 패킷의 경우 라인 카드 자체에서 ELAM을 수행해야 합니다.
Nexus 7000 Series 스위치 플랫폼의 경우 모든 라인 카드가 완전히 분산됩니다.또한 대부분의 라인 카드에는 여러 FE가 있습니다.ELAM을 설정할 때 패킷이 수신되는 포트를 알고 해당 포트에 매핑되는 FE를 확인해야 합니다.
하드웨어 및 포워딩 아키텍처에 대한 자세한 내용은 다음 Cisco Live 365 문서를 참조하십시오.
데이터 버스(DBUS) 및 결과 버스(RBUS)
DBUS에는 전달 결정을 내리기 위해 FE에서 사용하는 정보가 포함되어 있습니다.여기에는 프레임에 대한 헤더 정보와 함께 여러 플랫폼별 내부 필드가 포함되어 있습니다.패킷이 수신되는 위치와 패킷 L2-L4 정보를 확인할 수 있도록 DBUS를 확인합니다.
RBUS에는 FE에서 결정한 전달 결정이 포함되어 있습니다.프레임이 변경되었는지, 그리고 어디로 전송되는지 확인하기 위해 RBUS를 확인합니다.
LTL(Local Target Logic)
LTL은 포트 또는 포트 그룹을 나타내기 위해 사용되는 인덱스입니다.소스 LTL 인덱스와 대상 LTL 인덱스는 프레임이 수신되는 위치 및 프레임이 전송되는 위치를 표시합니다.
참고:플랫폼과 수퍼바이저는 서로 다른 명령을 사용하여 LTL 값을 디코딩합니다.
플러드 비트
LTL 값은 5개 이하의 16진수(예: 0xa2c)로 표시됩니다. 플러드 비트는 LTL 결과의 16번째 비트입니다.RBUS는 대상 LTL 인덱스가 있는 필드를 표시하고 플러드 비트에 대해 별도의 필드를 갖는 경우가 많습니다.올바른 LTL에 대해 이러한 결과를 병합하는 것이 중요합니다.예:
RBUS:
FLOOD ........................... [1] = 1
DEST_INDEX ...................... [19] = 0x48
이 예에서 대상 LTL 인덱스는 0x48입니다. 플러드 비트가 1이므로 LTL의 16번째 비트를 1로 설정해야 합니다.
0x00048 = 0000 0000 0000 0100 1000
|
+---- Flood bit, set to 1 = 0x08048
플러드 비트를 계상하면 대상 인덱스는 0x8048이 됩니다.
ELAM 예
이 예제의 목적은 기본 IPv4 또는 IPV6 유니캐스트 플로우를 검증하기 위해 ELAM을 사용하는 방법을 설명하기 위한 것입니다.이 문서의 ELAM Challenges 섹션에 설명된 대로 멀티캐스트, 터널, MPLS에 대한 재회수와 같은 모든 내부 필드나 패킷 유형에 대해 설명하는 것은 현실적으로 불가능합니다.
다른 디바이스에서 ELAM을 사용하는 예를 보려면 다음 링크를 클릭하십시오.
내부 ASIC 이름
참조 사항으로, 각 모듈 유형에 대해 ELAM에 할당된 내부 ASIC 이름이 다음 표에 나열되어 있습니다.
플랫폼 |
모듈 유형 |
내부 ASIC 이름 |
Catalyst 6500/Cisco 7600 |
Sup720(PFC3, DFC3) |
슈퍼맨 |
Catalyst 6500 |
Sup2T(PFC4, DFC4) |
유레카 |
Nexus 7000 |
M 시리즈(M1 및 M2) |
유레카 |
Nexus 7000 |
M3 모듈 |
F4 |
Nexus 7000 |
F1 |
오리온 |
Nexus 7000 |
F2 |
클리퍼 |
Nexus 7000 |
F3 |
플란커 |
Nexus 6000 |
해당 없음 |
빅서 |
ELAM을 사용하는 추가 방법
ELAM을 보다 쉽게 사용할 수 있는 방법이 있습니다.Cisco IOS® 릴리스 12.2(50)SY 이상에서 Cisco는 Supervisor Engine 2T(Sup2T)를 실행하는 6500에 대해 show platform datapath 명령을 추가했습니다. 이 명령은 특정 패킷의 전달 결과를 캡처하고 표시하기 위해 ELAM을 사용합니다.
Nexus 7000 Series 스위치 플랫폼의 경우 ELAM을 활용하기 위해 Cisco IOS Release 6.2(2)에 사용하기 쉬운 스크립트 이름이 추가되었습니다.
N7KA# source sys/elame
elam helper, version 1.015
Usage:
elame [<src>] <dest> [vlan <vlan#>] [vrf <vrf_name>] [int <interface> | vdc] [trace]
출력에서
- <src> 및 <dest>는 1.2.3.4 형식의 IPV4 주소입니다.
- <vlan> 및 <interface>는 인그레스 VLAN/인터페이스를 나타냅니다.
- vdc는 현재 VDC(Virtual Device Contexts)의 모든 ELAM이 사용됨을 나타냅니다.
- [trace]는 시스템이 휘발성(elame.log)의 모든 출력을 기록함을 나타냅니다.
이 시점에서 F3 모듈과 기타 N77xx 라인 카드에서는 Elame 스크립트가 지원되지 않습니다.Elame 스크립트를 개선하기 위해 몇 가지 개선 버그가 제출되었으며 사업부에서 아직 검토 중입니다.
참고:Elam은 내부 툴이며 TAC/BU 감독에서만 사용해야 합니다.
관련 정보