简介
本文档介绍每种故障类型,以及发生此故障时的操作步骤。在思科以应用为中心的基础设施(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数据包被记录为转发丢弃。有关更多详情和固定版本,另请参阅CSCvo68407 和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。这将增加“转发丢弃”计数器。
“XLATE”或“Translate”的原因是,在ACI中,枝叶交换机将采用带有802.1Q封装的帧,并将其转换为新的VLAN,该VLAN将用于交换矩阵内的VXLAN和其他规范化。 如果帧在未部署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故障,相同的接口广播/泛洪帧。
缓冲区
当交换机收到帧,并且没有可用于入口或出口的缓冲区信用时,将使用“Buffer”丢弃该帧。 这通常提示网络中的某个位置存在拥塞。 表示故障的链路可能已满,或者包含目的地的链路可能已拥塞。
在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 should only be used for internal commands and exists
for legacy reasons. User should 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层数据包由于“转发丢弃”原因而被丢弃。原因有很多,但最常见的是:
在某些平台上(请参阅CSCvo68407 ),需要重定向到CPU的第2层数据包(即CDP/LLDP/UDLD/BFD等)被记录为“转发丢弃”并被复制到CPU是一种限制。这是由于这些型号中使用的ASIC的限制所致。
分辨率:
上述丢弃纯粹是表面性的,因此最佳实践建议是增加故障的阈值,如统计信息阈值部分所示。为此,请参阅统计信息阈值中的说明。
F100264 -入口缓冲区丢弃数据包速率(eqptIngrDropPkts5min:bufferRate)
描述:
当数据包由于“Buffer”原因在端口上丢弃时,此故障可能会增加。如上所述,当接口在入口或出口方向出现拥塞时,通常会发生此故障。
分辨率:
此故障表示因拥塞而实际丢弃的环境中数据包。 丢弃的数据包可能导致在ACI交换矩阵中运行的应用出现问题。网络管理员应该隔离数据包流,并确定拥塞是由意外流量、低效负载均衡等原因引起的,还是由这些端口的预期利用率引起的。
F100696 -入口转发丢弃数据包(eqptIngrDropPkts5min:forwardingRate)
注意:上述F11245 ASIC限制也可能导致这些故障增加。有关详细信息,请参阅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)
备注
非默认监控策略可能没有默认监控策略中存在的配置。如果需要保持这些配置与默认监控策略相同,用户需要检查默认监控策略配置,并在非默认监控策略上手动配置相同的策略。