本文档介绍ACI中自带的、可用于调试转发问题的工具。
本文档中的材料摘自思科以应用为中心的基础设施故障排除,第二版 书,特别是交换矩阵内转发 — 工具第章。
此外,有关ELAM和Ftriage的更多说明,请参阅会话BRKDCN-3900b中的CiscoLive点播库。
要从ACI的角度对转发问题进行故障排除,请了解:
ACI包括多种工具,用户可通过这些工具深入了解特定流的变化。接下来的几个部分将详细演示这些工具,因此此处仅作简要介绍。
SPAN和ERSPAN都是允许将特定位置接收的所有或部分流量复制到其他位置的工具。发送复制流量的终端设备预期运行某种类型的数据包嗅探器/分析器应用。传统SPAN包括复制一个端口上接收的流量以及通过另一个端口传出的流量。除ERSPAN外,ACI还支持这样做。
ERSPAN将流量从本地端口复制出去;复制的流量将封装在GRE中并发送到远程目标。在ACI中,此ERSPAN目标必须作为第3层终端获取,并且它可以是任何VRF中的任何EPG。
最好始终将SPAN目标连接到交换矩阵,以在故障排除期间将准备时间降至最低,并允许快速进行ERSPAN会话配置和捕获。
嵌入式逻辑分析器模块(ELAM)是一个工具,允许用户在硬件中设置条件并捕获与设置条件相匹配的第一个数据包或帧。成功的捕获会导致ELAM状态显示为“已触发”。 一旦触发,ELAM就会被禁用,并且可以收集转储来分析交换机ASIC对该数据包/帧做出的大量转发决策。ELAM在ASIC级别实施,不会影响交换机上的CPU或其他资源。
本书中的转发示例使用ELAM作为验证流发生情况的手段。示例显示了枝叶CLI版本和ELAM Assistant应用。
本指南不介绍第一代枝叶交换机(无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的输出会显示已触发。触发ELAM后,交换机转发决策详细信息可显示为“ereport”。 在ACI版本4.2之前,必须使用报告。
在ELAM语法中,请注意必须指定ASIC。由于ASIC取决于交换机型号,请参阅下表确定要指定哪个ASIC:
| 交换机/线卡系列 |
面向Elam的Asic |
| -EX交换机/LC |
TAH |
| -FX(P)交换机/LC |
中华民国 |
| -FX2交换机/LC |
中华民国 |
| C交换机(9364C、9332C) |
中华民国 |
| -GX交换机 |
应用 |
| -GX2交换机 |
CHO |
| -FX3交换机 |
中华民国 |
从CLI运行时必须了解的ELAM的另一个组件是in-select。in-select定义数据包/帧应具有哪些报头,以及匹配哪些报头。
例如,来自非VXLAN封装的下行链路端口的数据包只会具有外部第2层、第3层和第4层报头。
来自前面板(下行链路)端口且采用VXLAN封装的数据包(例如VXLAN模式下的思科ACI虚拟边缘)或来自上游主干的数据包将采用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,因为它包含大多数信息,包括drop vector,它指示查找的结果是丢弃数据包/帧。
请注意,当使用报告而非ereport或report detail获取ELAM结果时,下拉矢量仅显示在未选择1中。但是,始终可以使用out-select 0执行ereport或report detail。
ELAM支持要在数据包中查找的大量第2、3和4层条件。指定inner与outer确定条件是否可以在内部报头(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
ereport可用于以易于理解的格式显示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的使用。
以前,它是一个可通过思科DC应用中心(https://dcappcenter.cisco.com)下载的应用。但是从ACI版本6.1(2)+开始,ELAM Assistant直接集成到APIC中,并通过APIC UI中的Operations选项卡进行访问。

对于嵌入的ELAM Assistant,只有具有读写权限的APIC用户能够使用Elam Assistant,菜单选项对于没有读写权限的用户不可见。
此工具通过APIC上的GUI自动部署和解释ELAM。
此示例显示匹配节点–101下行链路端口上特定源和目标IP的ELAM部署:
要开始使用它,需要在左侧面板中单击Capture(Perform ELAM),然后在主屏幕中单击Add node,开始添加需要设置ELAM的节点。在本示例中,添加了节点101:

一旦添加了感兴趣的节点,就需要配置方向(下行链路/下行链路VXLAN/上行链路)。
也可以指定是否需要观察任何特定接口,默认值为any。
最后,可以设置一系列参数(类似于CLI版本):


最后,点击设置ELAM以武装指定节点上的ELAM。
要确认ELAM是否触发,可点击Check Trigger按钮,如果ELAM在节点中触发,则节点名称旁边的Status将更改为Report Ready:

此Report Ready按钮以漂亮的格式显示下面的ELAM报告:

输出以三种形式显示:Express、Detail和Raw。
ELAM Assistant还允许使用更复杂的匹配参数,如源接口或VXLAN值。
ping命令是Linux中使用的标准网络实用程序,用于测试Internet协议(IP)网络上主机的连通性。它将ICMP回应请求数据包发送到指定目标(IP地址或域名)并侦听回应应答。
此命令的主要功能是执行:
·连通性测试:验证远程设备是否处于活动状态且是否可访问。
·延迟测量:计算数据包往返目的地的往返时间(RTT),以毫秒(ms)为测量单位。
·丢包检测:报告未能返回的数据包百分比,有助于确定网络拥塞或稳定性问题。
在APIC中发现可达性问题时,可以使用此实用程序。
确认可以从APIC OOB地址访问SNMP外部服务器(例如10.31.125.144):
ping 10.31.125.144 -I oobmgmt
如您所见,-I选项可用于指定源接口,在本例中为OOB管理地址。
可以使用选项 — h查看所有可用选项。
而iping命令是思科以应用为中心的基础设施(ACI)环境中的一种专用诊断工具。
iping是思科ACI CLI中使用的功能强大的网络诊断实用程序,用于验证交换矩阵中特定节点或情景的连接。由于ACI是多租户环境,因此iping允许管理员测试连接,同时考虑VRF和租户提供的逻辑隔离。
工作原理:它从指定的源节点或情景向目标IP发起ICMP回应请求。它确保数据包根据配置的EPG和合同正确通过交换矩阵。为此,枝叶交换机必须采用与生产流量进入交换矩阵时封装相同的方式封装ICMP数据包。iVXLAN标头包含将流量映射到正确的VRF或EPG的VNID(虚拟网络标识符)。这可确保数据包遵守与实际生产流量相同的转发规则和安全策略。
主要功能:
确认终端可达性,从从桥接域主题(SVI)部署的SVI ping
iping 192.168.104.2 -V tenant_prod:VRF1
需要至少选择VRF源,参数为-V。
当提供-V <tenant>:<vrf>标志时,系统识别与该VRF关联的特定VNID(VXLAN网络标识符)。此VNID对于确保数据包在正确的逻辑路由表中路由至关重要。
可以使用选项 — h查看所有可用选项。
fTriage是基于APIC CLI的工具,旨在提供ELAM配置和解释的端到端自动化。该工具的前提是用户可以定义特定流以及预期流开始的枝叶。然后,该工具逐个在每个节点上执行ELAM以检查转发流。在数据包采用哪条路径并不清楚的大型拓扑中,它尤其有用。
fTriage生成包含所执行的每个命令输出的大型日志文件。此文件的名称在fTriage输出的前几行中可见。
完成分类最多可能需要15分钟。
从枝叶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
通过运行ftriage — 有关APIC的帮助,可以查看完整的fTriage帮助。
在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。这对于排除通过交换机带外物理端口的任何流量的连接故障非常有用。这主要是基于控制平面的流量,例如SSH、SNMP等。
按需原子计数器旨在对特定流中的数据包进行计数,因为它们离开枝叶上行链路并在另一个枝叶交换矩阵端口上接收。它们允许对数据包是否丢失或过量接收进行一定程度的细分。
| 版本 | 发布日期 | 备注 |
|---|---|---|
3.0 |
01-Jul-2026
|
添加了标注,ELAM Assistant嵌入在版本6.1(2)+的APIC中 |
2.0 |
19-Aug-2024
|
命令格式。 |
1.0 |
10-Aug-2022
|
初始版本 |