简介
本文档介绍如何对nexus 7000上端口通道上的输入丢弃进行故障排除。
先决条件
思科建议您了解以下主题:
Nexus 7000 系列交换机
F系列线卡
链路聚合控制协议
背景信息
F3线卡在入口而不是出口上对数据包进行队列,并在所有入口接口上实施虚拟输出队列(VOQ),以便拥塞的出口端口不会影响流向其他出口端口的流量。VOQ在系统中的广泛使用有助于确保每个出口的最大吞吐量。一个出口端口上的拥塞不会影响发往其他出口接口的流量,这可避免线路头阻塞(HOLB),否则会导致拥塞扩散。
在突发优化模式下,如果IB耗尽,PL中应该出现丢包。在网状优化模式下,由于超出阈值,丢包会移至VQ。网状优化可避免HOLB丢弃。
VOQ还使用贷记和未贷记流量的概念。单播流量分类为贷记流量;广播、组播和未知单播流量被分类为未计入流量。未计入的流量不使用VOQ,并且流量在出口而不是入口处排队。如果入口端口没有信用将流量发送到出口端口,入口端口会缓冲,直到获得信用为止。由于入口端口缓冲区不深,因此可能会发生输入丢弃。
常见原因
输入丢弃
- 当交换端口分析器(SPAN)的目标端口位于F2线路卡上且SPAN流量超过线速时,最常见的输入丢弃原因就会发生。最终,入口端口会缓冲数据包,这会导致输入丢弃。
注意:下一代I/O模块(如F2E、F3和M3)不易受SPAN目标端口超订用场景的影响,导致入口端口上的丢弃和HOLB。SPAN的准则和限制中也注明了这一点
- 设计不当(例如10G的输入带宽和1G的输出带宽)会触发F2硬件限制(HOL阻塞)。
- 如果来自多个端口的流量从同一接口(1G到1G或10G到10G接口)流出,如果超过线速,则可能导致入口端口上的输入丢弃。
- VLAN不匹配可能导致输入丢弃。使用show interface trunk命令验证两台交换机是否转发了同一个VLAN。
LACP PDU丢失:
当端口通道未收到来自邻居的任何LACP PDU时,该端口通道将暂停。线卡在入口而不是出口上对数据包进行排队,并且输入丢弃指示由于拥塞而在输入队列中丢弃的数据包数。
- 端口逻辑(PL)是决策引擎之前的缓冲区,也是前面板端口之后的缓冲区。入口端口逻辑上的任何拥塞或流量控制都会阻止或延迟LACP PDU进一步导致接口挂起。VL是高优先级虚拟通道。如果存在高优先级VL 5流量从拥塞端口线头阻塞的情况,VL 5上的PL将产生背压,这可能导致LACP PDU丢弃。
故障排除
‘show module’
Mod Ports Module-Type Model Status
--- ----- ----------------------------------- ------------------ ----------
5 0 Supervisor Module-2 N7K-SUP2E active *
6 0 Supervisor Module-2 N7K-SUP2E ha-standby
7 6 100 Gbps Ethernet Module N7K-F306CK-25 ok
8 12 10/40 Gbps Ethernet Module N7K-F312FQ-25 ok
在本示例中,端口通道10(7/1,7/2和7/5)和端口通道20(7/3,7/4和7,6)上的输入丢弃由出口接口8/6上的拥塞引起。这些丢弃由HOL阻塞引起。
`show port-channel summary`
--------------------------------------------------------------------------------
Group Port- Type Protocol Member Ports
Channel
--------------------------------------------------------------------------------
10 Po10(RU) Eth LACP Eth7/1(P) Eth7/2(P) Eth7/5(P)
20 Po20(RU) Eth LACP Eth7/3(P) Eth7/4(P) Eth7/6(P)
switch# show interface counter errors
--------------------------------------------------------------------------------
Port InDiscards
--------------------------------------------------------------------------------
Eth7/1 253323164
Eth7/2 253682395
Eth7/3 66785160 >>>>> input discards on interfaces 7/1-6 are incrementing continuously. These interfaces belong to Po10 and Po20 which eventually goes into suspended state with reason “no LACP PDUs received”
Eth7/4 64770521
Eth7/5 258650104
Eth7/6 66533418
Eth8/6 0
Po10 765655663
Po20 198089099
要确定拥塞端口,请执行以下操作:
在VQI上,非零计数器不断移动。在拥塞的端口上,计数器通常在大多数时间都保持较高
。
switch# attach mod 7
Attaching to module 7 ...
To exit type 'exit', to abort type '$.'
module-7# show hardware internal qengine voq-status | ex "0 0 0 0 0 0 0 0 0 0 0 0"
+-------------------------------------------------------------------------------
| VOQ Status for Queue Driver
| ports 1-48
VQI:CCOS INST0 INST1 INST2 INST3 INST4 INST5
-------- ----- ----- ----- ----- ----- -----
0:0 0 0 0 0 0 0
0:1 0 0 0 0 0 0
145:6 0 0 0 0 0 0
145:7 0 0 0 0 0 0
146:0 0 0 0 0 0 0
146:1 14d 130 533 79b 258 447
146:2 5 44 7 12 1a 2
146:3 2325 2277 1ae8 1a39 27bc 1902
146:4 0 0 0 0 0 0
146:5 0 0 0 0 0 0
146:6 0 0 0 0 0 0
146:7 0 0 0 0 0 0
147:0 0 0 0 0 0 0
147:1 0 0 0 0 0 0
147:2 0 0 0 0 0 0
147:3 0 0 0 0 0 0
VQI是146
VQI === 146有一个非零计数器,并且不断递增
转换为十六进制:
switch# hex 146
0x92
switch# show system internal ethpm info module | egrep -i vqi
LTL(0x36), VQI(0x42), LDI(0), IOD(0x14c)
LTL(0x37), VQI(0x43), LDI(0x1), IOD(0x14d)
LTL(0x38), VQI(0x44), LDI(0x2), IOD(0x14e)
LTL(0x39), VQI(0x45), LDI(0x3), IOD(0x14f)
LTL(0x72), VQI(0x8a), LDI(0xc), IOD(0x62)
LTL(0x76), VQI(0x8e), LDI(0x10), IOD(0x63)
LTL(0x7a), VQI(0x92), LDI(0x14), IOD(0xe6) >>>>>>> VQI 0x92 maps to LTL 0x7a
LTL(0x7e), VQI(0x96), LDI(0x18), IOD(0xe7)
LTL(0x82), VQI(0x9a), LDI(0x1c), IOD(0xe8)
LTL(0x86), VQI(0x9e), LDI(0x20), IOD(0xe9)
使用pixm映射将LTL转换为物理接口
PIXM管理LTL和FPOE映射,以通过交换机构建硬件转发路径
switch# show system internal pixm info ltl 0x7a
Member info
------------------
Type LTL
---------------------------------
PHY_PORT Eth8/6 >>>> congested egress interface.
确定LACP PDU是否已丢弃
LACP PDU是高优先级流量,因此不应期望LACP PDU被丢弃,端口通道因为输入丢弃而关闭,除非有高优先级VL 5流量从拥塞端口进行线头阻塞。
要确认是否丢弃高优先级VL 5流量,请运行命令“show hardware queuing drops ingress”,这将在受影响接口上显示VL 5的PL丢弃
switch# show hardware queuing drops ingress
slot 7
=======
Device: Flanker Queue
PL drops:
SOURCE INTERFACE VL COUNT
-------------------- ----- --------------------------
Eth7/1 5 24437734
Eth7/2 5 24289997
Eth7/3 5 24449567
Eth7/4 5 26084373
Eth7/5 5 27840523
Eth7/6 5 21043740
通过为受影响模块运行命令“show hardware internal errors”,确认受影响接口上的VL 5丢弃
switch# show hardware internal errors
`show hardware internal errors`
|------------------------------------------------------------------------|
| Device:Flanker Eth Mac Driver Role:MAC Mod: 7 |
| Device Statistics Category :: ERROR
|------------------------------------------------------------------------|
5236 igr rx pl: cbl drops 0000000000069679 8 -
5282 egr in pl: total rcvd pkts with drop 0000000001951540 8 -
indication from eb
5321 egr out pl: total pkts dropped due to cbl 0000000000034829 8 -
5477 igr PL: bpdu drops(vl5) 0000000000004986 2 - <<<<<<<<<<<
5480 igr PL: nde drops(vl0) 0000000000098993 2 -
5485 igr PL: nde drops(vl5) 0000000002291236 2 - <<<<<<<<<<<
5496 igr PL: Q threshold drop bytecount (vl0) 0000000000344607 2 -
13453 [intr] IPL intr: parser truncated mlh error 0000000000002946 2 -
请注意,下列丢弃计数器递增
igr PL:bpdu丢弃(vl5)
igr PL:nde drops(vl5)
解决方案
要解决此问题,请确保没有拥塞,这可以通过增加出口拥塞端口的带宽或限制到拥塞端口的流量来实现。
已知的 Bug
CSCvn97534 此Bug导致出口缓冲区锁定,从而导致输入丢弃和端口通道摆动。
参考
排除Nexus 7000故障:F2/F2e输入丢弃