目录

简介

背景信息

ELAM挑战

ELAM基础知识

ELAM工作流程

集中式转发与分布式转发

数据总线(DBUS)和结果总线(RBUS)

本地目标逻辑(LTL)

泛洪位

ELAM示例

内部ASIC名称

使用ELAM的其他方法

相关信息

简介

本文档介绍嵌入式逻辑分析器模块(ELAM)的特点、其缺点以及如何最好地使用它。

背景信息

随着网络设备和协议的复杂性增加，发现网络问题的根源可能极其困难。通常，您必须确定帧是否在特定设备上正确接收和转发。有多种捕获工具、调试和技巧可帮助回答此问题。但是，并非所有设备都可行或可在生产网络中运行。

ELAM是一种工程工具，让您能够查看思科ASIC内部，并了解数据包的转发方式。它嵌入到转发管道中，并且可以实时捕获数据包，而不会中断性能或控制平面资源。它有助于回答以下问题：

- 数据包是否到达转发引擎(FE)?

- 数据包在哪个端口和VLAN上接收？

- 数据包如何显示(第2层(L2) — 第4层(L4)数据)?

- 数据包如何更改，以及它在何处发送？

ELAM功能非常强大、精细且无干扰。对于在硬件交换平台上工作的思科技术支持中心(TAC)工程师而言，它是一个宝贵的故障排除工具。

ELAM挑战

ELAM被设计为用于内部使用的诊断工具。CLI语法使用思科ASIC的内部代码名称，因此解释ELAM数据需要硬件特定架构和转发知识。许多细节无法解释，因为它们暴露了使思科设备成为同类最佳设备的内部思科专有功能。

因此，ELAM不是客户支持的功能，而且一直是内部使用的诊断工具。没有外部配置指南，语法和操作可能会从版本更改为版本，恕不另行通知。

鉴于这些挑战和免责声明，以下是ELAM现在描述的原因：

- 首先，TAC工程师使用ELAM来隔离问题非常常见。如果问题间歇性，TAC可能会请求您执行ELAM。了解这些步骤是非侵入性的，以及它们如何帮助提供根本原因分析，这一点非常重要。

- 此外，有时没有其他可用工具可以帮助隔离问题。例如，当在SPAN、ACL命中或入侵调试的生产时间内不允许更改配置时。可能没有时间联系TAC，而ELAM可能是极有帮助的工具，可作为最后手段。

ELAM基础知识

ELAM无需对每个平台进行完整的架构知识即可执行。本节介绍在Cisco Catalyst 6500和7600系列交换机平台(分别简称为6500和7600)以及Nexus 7000系列交换机平台上执行ELAM所需的基础知识。

ELAM工作流程

如前所述，ELAM依赖于基础硬件；因此，CLI语法取决于使用中的硬件。但是，每个平台遵循类似的工作流程，如下图所示：

注意：请参阅ELAM示例部分，了解此工作流程如何应用于不同平台。

以下四个步骤（本节稍后将进一步详细介绍）描述工作流：

1. 确定预期的入口FE。当平台有多个FE时，确定为要捕获的数据包做出转发决策的FE至关重要。在正确的FE上配置ELAM。

2. 配置ELAM触发器。您必须配置触发器，其中包含要捕获的数据包的特定详细信息。常见触发器包括源IP地址和目的IP地址或L4端口号。ELAM允许指定多个字段，并对配置的所有字段执行逻辑AND。

3. 启动ELAM。

4. 等待ELAM触发并显示结果。

集中式转发与分布式转发

要执行ELAM，您必须完成的第一步是确定正确的FE。带有经典或集中转发(CFC)线卡的6500使用集中转发，其中主用管理引擎做出转发决策。对于在传统或CFC线卡上进入的数据包，必须在活动管理引擎上执行ELAM。

在启用了分布式转发(DFC)的线卡中，转发决策由线路卡上的FE在本地做出，而无需管理引擎。对于入口DFC线卡的数据包，必须在线卡本身上执行ELAM。

对于Nexus 7000系列交换机平台，所有线卡都是全分布式的。此外，大多数线卡具有多个FE。设置ELAM时，您必须知道接收数据包的端口，并确定映射到该端口的FE。

有关硬件和转发架构的其他信息，请参阅以下Cisco Live 365文章：

- BRKARC-3465 Cisco Catalyst 6500交换机架构

- BRKARC-3470 - Cisco Nexus 7000交换机架构

数据总线(DBUS)和结果总线(RBUS)

DBUS包含FE用于做出转发决策的信息。它包含多个特定于平台的内部字段以及帧的报头信息。查看DBUS，以帮助确定数据包的接收位置和数据包L2-L4信息。

RBUS包含FE作出的转发决策。查看RBUS，以帮助确定帧是否被更改以及帧的发送位置。

本地目标逻辑(LTL)

LTL是用于表示端口或端口组的索引。源LTL索引和目标LTL索引显示帧的接收位置和发送位置。

注意：不同的平台和管理引擎使用不同的命令来解码LTL值。

泛洪位

LTL值显示为五个或更少的十六进制数（例如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示例

这些示例旨在说明如何使用ELAM来验证基本IPv4或IPV6单播流。如本文档的ELAM挑战部分所述，解释所有内部字段或数据包类型（如组播、隧道和MPLS的再循环）并不实际。

请按照以下链接查看ELAM与不同设备的使用示例：

- 带管理引擎720 ELAM程序的Catalyst 6500系列交换机

- 带管理引擎2T ELAM程序的Catalyst 6500系列交换机

- Nexus 7000 M系列模块ELAM程序

- Nexus 7000 M3模块ELAM程序

- Nexus 7000 F1模块ELAM程序

- Nexus 7000 F2模块ELAM程序

- Nexus 6000交换机ELAM概述

内部ASIC名称

作为参考，下表列出了为每种模块类型分配给ELAM的内部ASIC名称：

Platform

模块类型

内部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

Clipper

Nexus 7000

F3

弗兰克

Nexus 6000

不适用

比古尔

使用ELAM的其他方法

使用ELAM有一种更为客户友好的方式。在Cisco IOS®版本12.2(50)SY及更高版本中，思科为运行Supervisor Engine 2T(Sup2T)的6500添加了show platform datapath命令。 此命令使用ELAM来捕获和显示特定数据包的转发结果。

对于Nexus 7000系列交换机平台，Cisco IOS版本6.2(2)中添加了易于使用的脚本elame，以利用ELAM:

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)中的所有ELAM都已使用。

- [trace]表示系统在易失性(elame.log)中保留所有输出的记录。

请注意，此时F3模块和其他N77xx线卡不支持elame脚本。为了改进Elame脚本，已经提交了一些增强错误，业务部门仍在检查它。

- 思科漏洞ID CSCuy42559

- 思科漏洞ID CSCuw60869

注意：Elam是内部工具，只能在TAC/BU监督下使用。

相关信息

- BRKARC-2011 — 思科交换机和路由器故障排除工具概述 — Cisco Live 365

- 技术支持和文档 - Cisco Systems