简介
本文档介绍每种故障类型,以及发生此故障时的操作步骤。在思科以应用为中心的基础设施(ACI)交换矩阵的正常运行期间,管理员可以看到特定类型的数据包丢弃故障。
托管对象
在思科ACI中,所有故障均在托管对象(MO)下引发。例如,故障F11245 -入口丢弃数据包速率(l2IngrPktsAg15min:dropRate)与MO l2IngrPktsAg15min中的参数dropRate有关。
本节介绍一些与丢弃数据包故障相关的托管对象(MO)示例。
|
示例 |
描述 |
示例参数 |
MO示例 引起哪些故障 |
l2IngrPkts |
l2IngrPkts5min l2IngrPkts15min l2IngrPkts1h 等等。 |
这表示每个VLAN在每个时间段内的入口数据包统计信息。 |
dropRate floodRate multicastRate unicastRate |
vlanCktEp (VLAN) |
l2IngrPktsAg |
l2IngrPktsAg15min l2IngrPktsAg1h l2IngrPktsAg1d 等等。 |
这表示每个EPG、BD、VRF等的入口数据包统计信息。例如,EPG统计信息表示属于EPG的VLAN统计信息的汇聚。 |
dropRate floodRate multicastRate unicastRate |
fvAEPg (EPG) fvAp(应用配置文件) fvBD (BD) l3extOut (L3OUT) |
eqptIngrDropPkts |
eqptIngrDropPkts15min eqptIngrDropPkts1h eqptIngrDropPkts1d 等等。 |
这表示每个接口在每个时间段内的入口丢弃数据包统计信息。 |
*1 forwardingRate *1 errorRate *1 bufferRate
|
l1PhysIf(物理端口) pcAggrIf(端口通道) |
*1:由于Nexus 9000平台中的ASIC限制,eqptIngrDropPkts中的这些计数器可能会错误地引发,因为SUP_REDIRECT数据包被记录为转发丢弃。有关更多详细信息和修复的版本,另请参阅Cisco Bug ID CSCvo68407 和Cisco Bug ID CSCvn72699 。
硬件丢弃计数器类型
在以ACI模式运行的Nexus 9000交换机上,ASIC上有3个主要硬件计数器显示入口接口丢弃原因。
l2IngrPkts和l2IngrPktsAg中的dropRate包含这些计数器。表中用于eqptIngrDropPkts的三个参数(forwardingRate、errorRate、bufferRate)分别代表三个接口计数器。
转发
转发丢弃是在ASIC的查找块(LU)上丢弃的数据包。在LU块中,根据数据包报头信息做出数据包转发决策。如果决定丢弃数据包,则会计算转发丢弃。这有可能发生的原因有很多,但让我们谈谈主要原因:
SECURITY_GROUP_DENY
丢弃,因为缺少允许通信的合同。
当数据包进入交换矩阵时,交换机会查看源和目标EPG,查看是否存在允许此通信的合同。如果源和目标位于不同的EPG中,并且没有允许此数据包类型的合同,则交换机会丢弃该数据包并将其标记为SECURITY_GROUP_DENY。这会增加Forward Drop计数器。
VLAN_XLATE_MISS
由于VLAN不当而造成丢弃。
当数据包进入交换矩阵时,交换机查看该数据包,以确定端口上的配置是否允许该数据包。 例如,帧以802.1Q标记10进入交换矩阵。如果交换机在端口上有VLAN 10,它会检查内容,并根据目的MAC做出转发决策。但是,如果VLAN 10不在端口上,则会将其丢弃并将其标记为VLAN_XLATE_MISS。这会增加Forward Drop计数器。
使用XLATE或Translate的原因是,在ACI中,枝叶交换机采用带有802.1Q封装的帧,并将其转换为用于交换矩阵内部VXLAN和其他规范化的新VLAN。如果帧在未部署VLAN的情况下传入,则转换失败。
ACL_DROP
因为sup-tcam而下降。
aci交换机中的sup-tcam包含要在正常L2/L3转发决策之上应用的特殊规则。sup-tcam中的规则是内置的,不可由用户配置。Sup-tcam规则的目标主要是处理某些异常或控制平面流量,而不是由用户检查或监控。当数据包达到sup-tcam规则且规则为丢弃数据包时,丢弃的数据包将计为ACL_DROP,并递增Forward Drop计数器。发生这种情况时,通常意味着数据包将根据基本ACI转发原则进行转发。
即使丢弃名称为ACL_DROP,此ACL也不与可在独立NX-OS设备或任何其他路由/交换设备上配置的正常访问控制列表相同。
SUP_REDIRECT
这不是一滴一滴的血。
即使数据包被正确处理并转发到CPU,管理引擎重定向的数据包(例如,CDP/LLDP/UDLD/BFD等)也可以算作转发丢弃。
这发生在-EX、-FX和-FX2平台中,例如N9K-C93180YC-EX或N9K-C93180YC-FX。这些不能计为丢弃,但这是因为-EX/-FX/-FX2平台中的ASIC限制。
Error
当交换机在一个前面板接口上收到无效帧时,该帧会作为错误丢弃。 示例包括带有FCS或CRC错误的帧。查看上行链路/下行链路枝叶端口或主干端口时,最好使用show interface检查FCS/CRC错误。 但是,在正常操作下,预计会在枝叶的上行/下行链路端口或主干端口上看到错误数据包增加,因为此计数器还包括系统已修剪的帧,且预期不会从接口发送出去。
示例:路由数据包的TTL故障,相同的接口广播/泛洪帧。
缓冲区
当交换机收到帧,并且没有可用于入口或出口的缓冲区信用时,该帧将随缓冲区一起丢弃。 这通常提示网络中的某个位置存在拥塞。表示故障的链路可能已满,或者包含目的地的链路可能拥塞。
在CLI中查看丢弃统计信息
托管对象
使用安全外壳(SSH)连接到其中一个APIC并运行以下命令。
apic1# moquery -c l2IngrPktsAg15min
这提供了此类l2IngrPktsAg15min的所有对象实例。
以下是一个使用过滤器查询特定对象的示例。在本示例中,过滤器仅显示具有属性dn的对象,其中包括tn-TENANT1/ap-APP1/epg-EPG1。
此外,此示例使用egrep仅显示所需的属性。
示例输出1:租户TENANT1、应用配置文件APP1、epg EPG1的EPG计数器对象(l2IngrPktsAg15min)。
apic1# moquery -c l2IngrPktsAg15min -f 'l2.IngrPktsAg15min.dn*"tn-TENANT1/ap-APP1/epg-EPG1"' | egrep 'dn|drop[P,R]|rep'
dn : uni/tn-TENANT1/ap-APP1/epg-EPG1/CDl2IngrPktsAg15min
dropPer : 30 <--- number of drop packet in the current periodic interval (600sec)
dropRate : 0.050000 <--- drop packet rate = dropPer(30) / periodic interval(600s)
repIntvEnd : 2017-03-03T15:39:59.181-08:00 <--- periodic interval = repIntvEnd - repIntvStart
repIntvStart : 2017-03-03T15:29:58.016-08:00 = 15:39 - 15:29
= 10 min = 600 sec
或者,如果您知道对象dn,则可以使用其他选项-d代替-c获取特定对象。
示例输出2:租户TENANT1、应用配置文件APP1、epg EPG2的EPG计数器对象(l2IngrPktsAg15min)。
apic1# moquery -d uni/tn-TENANT1/ap-APP1/epg-EPG2/CDl2IngrPktsAg15min | egrep 'dn|drop[P,R]|rep'
dn : uni/tn-jw1/BD-jw1/CDl2IngrPktsAg15min
dropPer : 30
dropRate : 0.050000
repIntvEnd : 2017-03-03T15:54:58.021-08:00
repIntvStart : 2017-03-03T15:44:58.020-08:00
硬件计数器
如果发现故障,或者想要使用CLI检查交换机端口上的丢包,最好通过查看硬件中的平台计数器来检查。大多数(但并非所有)计数器是使用show interface显示的。 只能使用平台计数器查看3个主要丢弃原因。 要查看这些信息,请执行以下步骤:
枝叶
通过SSH连接到枝叶设备并运行以下命令。
ACI-LEAF# vsh_lc
module-1# show platform internal counters port <X>
* 其中X表示端口号
etherent 1/31的输出示例:
ACI-LEAF# vsh_lc
vsh_lc
module-1#
module-1# show platform internal counters port 31
Stats for port 31
(note: forward drops includes sup redirected packets too)
IF LPort Input Output
Packets Bytes Packets Bytes
eth-1/31 31 Total 400719 286628225 2302918 463380330
Unicast 306610 269471065 453831 40294786
Multicast 0 0 1849091 423087288
Flood 56783 8427482 0 0
Total Drops 37327 0
Buffer 0 0
Error 0 0
Forward 37327
LB 0
AFD RED 0
----- snip -----
主干
对于盒式主干(N9K-C9336PQ),它与枝叶完全相同。
对于模块化主干(N9K-C9504等),必须先连接特定线卡,然后才能查看平台计数器。 通过SSH连接到主干并运行以下命令:
ACI-SPINE# vsh
ACI-SPINE#连接模块<X>
module-2# show platform internal counters port <Y>。
* 其中X代表您要查看的板卡的模块号
Y表示端口号
以太网2/1的输出示例:
ACI-SPINE# vsh
Cisco iNX-OS Debug Shell
This shell can only be used for internal commands and exists
for legacy reasons. User can use ibash infrastructure as this
will be deprecated.
ACI-SPINE#
ACI-SPINE# attach module 2
Attaching to module 2 ...
To exit type 'exit', to abort type '$.'
Last login: Mon Feb 27 18:47:13 UTC 2017 from sup01-ins on pts/1
No directory, logging in with HOME=/
Bad terminal type: "xterm-256color". Will assume vt100.
module-2#
module-2# show platform internal counters port 1
Stats for port 1
(note: forward drops includes sup redirected packets too)
IF LPort Input Output
Packets Bytes Packets Bytes
eth-2/1 1 Total 85632884 32811563575 126611414 25868913406
Unicast 81449096 32273734109 104024872 23037696345
Multicast 3759719 487617769 22586542 2831217061
Flood 0 0 0 0
Total Drops 0 0
Buffer 0 0
Error 0 0
Forward 0
LB 0
AFD RED 0
----- snip -----
故障
F112425 -入口丢弃数据包速率(l2IngrPktsAg15min:dropRate)
描述:
此故障的常见原因之一是第2层数据包由于转发丢弃原因而被丢弃。原因有很多,但最常见的是:
在某些平台上(请参阅Cisco Bug ID CSCvo68407),存在需要重定向到CPU的L2数据包(例如,CDP/LLDP/UDLD/BFD等)、作为转发丢弃记录以及复制到CPU的限制。这是由于这些型号中使用的ASIC的限制所致。
分辨率:
描述的丢包纯属表面效果,因此最佳实践建议是增加故障的阈值,如“统计信息阈值”部分所示。为此,请参阅统计信息阈值中的说明。
F100264 -入口缓冲区丢弃数据包速率(eqptIngrDropPkts5min:bufferRate)
描述:
当数据包在带有原因缓冲区的端口上丢弃时,此故障可能会增加。 如前所述,当接口在入口或出口方向出现拥塞时,通常会发生这种情况。
分辨率:
此故障表示因拥塞而实际丢弃的环境中数据包。 丢弃的数据包可能导致在ACI交换矩阵中运行的应用出现问题。网络管理员可以隔离数据包流,并确定拥塞是由意外流量、低效负载均衡等原因还是由这些端口的预期利用率引起的。
F100696 -入口转发丢弃数据包(eqptIngrDropPkts5min:forwardingRate)
注意:之前提到的F11245 ASIC限制也可能导致这些故障增加。有关更多详细信息,请参阅Cisco Bug ID CSCvo68407。
此故障由几种情况引起。最常见的是:
说明1)脊柱丢弃
如果在主干接口上发现此故障,则可能是由于流向未知端点的流量。 当ARP或IP数据包转发到主干进行代理查找,并且终端在交换矩阵中未知时,将生成一个特殊的收集数据包,并将其发送到相应BD(内部)组播组地址上的所有枝叶。这会触发来自网桥域(BD)中每个枝叶的ARP请求以发现终端。 由于限制,枝叶接收的收集数据包也会再次反射回交换矩阵,并在连接到枝叶的主干链路上触发转发丢弃。此场景中的转发丢弃仅在第1代主干硬件上递增。
决议1)
由于已知问题是由向ACI交换矩阵发送不必要数量的未知单播流量导致的,因此需要确定导致此问题的设备,并查看是否可以阻止此问题。这通常是由于出于监控目的扫描或探测子网上IP地址的设备引起的。 要查找发送此流量的IP地址,请将SSH连接到主干接口的枝叶上,该枝叶将显示此故障。
从那里,您可以运行此命令以查看触发收集数据包的源IP地址(sip):
ACI-LEAF# show ip arp internal event-history event | grep glean | grep sip | more
[116] TID 11304:arp_handle_inband_glean:3035: log_collect_arp_glean;sip = 192.168.21.150;dip = 192.168.20.100;info = Received glean packet is an IP packet
[116] TID 11304:arp_handle_inband_glean:3035: log_collect_arp_glean;sip = 192.168.21.150;dip = 192.168.20.100;info = Received glean packet is an IP packet
在本示例输出中,收集数据包由192.168.21.150触发,建议查看是否能缓解此问题。
说明2)枝叶丢弃
如果在枝叶接口上发现此故障,最可能的原因是提到的SECURITY_GROUP_DENY丢包。
决议2)
ACI枝叶会保留由于违规而被拒绝的数据包日志。此日志不会捕获所有日志以保护CPU资源,但是,它仍会提供大量日志。
要获取所需日志,如果发生故障的接口是port-channel的一部分,则需要对port-channel使用此命令和grep。否则,物理接口可能会被损坏。
根据合同丢弃的数量,此日志可以快速滚动更新。
ACI-LEAF# show logging ip access-list internal packet-log deny | grep port-channel2 | more
[ Sun Feb 19 14:16:12 2017 503637 usecs]: CName: jr:sb(VXLAN: 2129921), VlanType: FD_VLAN, Vlan-Id: 59, SMac: 0x8c604f0288fc, DMac:0x0022bdf819ff, SIP: 192.168.21.150, DIP: 192.168.20.3, SPort: 0, DPort: 0, Src Intf: port-channel2, Pr
oto: 1, PktLen: 98
[ Sun Feb 19 14:16:12 2017 502547 usecs]: CName: jr:sb(VXLAN: 2129921), VlanType: FD_VLAN, Vlan-Id: 59, SMac: 0x8c604f0288fc, DMac:0x0022bdf819ff, SIP: 192.168.21.150, DIP: 192.168.20.3, SPort: 0, DPort: 0, Src Intf: port-channel2, Pr
oto: 1, PktLen: 98
在本例中,192.168.21.150尝试将ICMP消息(IP协议号1)发送到192.168.20.3。但是,两个EPG之间没有允许ICMP的合同,因此数据包被丢弃。如果允许ICMP,则可以在两个EPG之间添加合同。
统计信息阈值
本节介绍如何更改可能引发丢弃计数器故障的统计信息对象的阈值。
每个对象的统计信息(例如,l2IngrPkts、eqptIngrDropPkts)的阈值通过监控策略针对各种对象进行配置。
如开始处的表中所述,eqptIngrDropPkts在l1PhysIf对象下通过监控策略进行监控。
eqptIngrDropPkts中的转发丢弃数据包速率
这个有两个部分。
+访问策略(指向外部设备的端口,也称为前面板端口)
+交换矩阵策略(枝叶和主干之间的端口。又名交换矩阵端口)
可通过接口策略组为每个端口对象(l1PhysIf、pcAggrIf)分配自己的监控策略,如上图所示。
默认情况下,APIC GUI中的Fabric > Access Policies和Fabric > Fabric Policies下都有默认监控策略。这些默认监控策略将分别分配给所有端口。“访问策略”(Access Policies)下的默认监控策略用于前面板端口,而“交换矩阵策略”(Fabric Policies)下的默认监控策略用于交换矩阵端口。
除非要求更改每个端口的阈值,否则可以直接修改每个部分的默认监控策略,以将更改应用于所有前面板端口和/或交换矩阵端口。
本示例是更改交换矩阵端口(交换矩阵策略)上eqptIngrDropPkts中的转发丢弃阈值。在Fabric > Access Policies下为前面板端口执行相同操作。
1. 导航至交换矩阵>交换矩阵策略>监控策略。
2. 右键单击并选择创建监控策略。
(如果阈值更改可应用于所有交换矩阵端口,请导航到default,而不是创建新端口。)
3. 展开新的监控策略或默认值,然后导航到统计信息收集策略。
4. 在右窗格中单击Monitoring Object的铅笔图标,选择Layer 1 Physical Interface Configuration (l1.PhysIf)。
(使用默认策略时,可以跳过步骤4。)
5. 从右侧窗格中的Monitoring Object下拉菜单中选择Layer 1 Physical Interface Configuration (l1.PhysIf)和Stats Type,然后选择Ingress Drop Packets
6.单击“配置阈值”旁边的+。
7. 编辑转发丢弃的阈值。
8. 建议禁用递增阈值,以配置转发丢包率的“严重”、“主要”、“次要”和“警告”。
9. 将此新监控策略应用于所需端口的接口策略组。请勿忘记在交换矩阵策略中相应地配置接口配置文件、交换机配置文件等。
(使用默认策略时,可以跳过步骤9。)
10. 如果这是针对前面板端口(访问策略),请对聚合接口(pc.AggrIf)执行与第1层物理接口配置(l1.PhysIf)相同的操作,以便将此新的监控策略应用于端口通道以及物理端口。
(使用默认策略时,可以跳过步骤10。)
l2IngrPktsAg中的入口丢弃数据包速率
有多个部分。
如上图所示,l2IngrPktsAg在许多对象下受到监控。上图只显示一些示例,但并非所有l2IngrPktsAg的对象。但是,统计信息的阈值是通过监控策略以及l1PhysIf或pcAggrIf下的eqptIngrDropPkts配置的。
每个对象(EPG(fvAEPg)、网桥域(fvBD)等)都可以分配其自己的监控策略,如上图所示。
默认情况下,除非另有配置,否则租户下的所有这些对象都使用租户>通用>监控策略>默认下的默认监控策略。
除非要求更改每个组件的阈值,否则可以直接修改租户common下的默认监控策略,以将更改应用于所有相关组件。
本示例将更改桥接域上l2IngrPktsAg15min中的入口丢弃数据包速率的阈值。
1. 导航到租户> (租户名称) >监控策略。
(如果使用默认监控策略或需要在租户间应用新的监控策略,则租户需要通用)
2. 右键单击并选择创建监控策略。
(如果阈值更改可应用于所有组件,请导航到default,而不是创建新组件。)
3. 展开新的监控策略或默认值,然后导航到统计信息收集策略。
4. 在右侧窗格中单击监控对象的铅笔图标,选择网桥域(fv.BD)。
(使用默认策略时,可以跳过步骤4。)
5. 从右侧窗格中的Monitoring Object下拉菜单中选择Bridge Domain (fv.BD)和Stats Type,然后选择Aggregated ingress packets。
6.单击“配置阈值”旁边的+。
7. 编辑转发丢弃的阈值。
8. 建议禁用递增阈值,以配置转发丢包率的“严重”、“主要”、“次要”和“警告”。
9. 将此新监控策略应用于需要更改阈值的网桥域。
(使用默认策略时,可以跳过步骤9。)
NOTE:
非默认监控策略不能具有默认监控策略中存在的配置。如果需要保持这些配置与默认监控策略相同,用户需要检查默认监控策略配置,并在非默认监控策略上手动配置相同的策略。