简介
本文档介绍当填充信息损坏或格式错误时如何对Cisco Nexus 9000上损坏的以太网数据包进行故障排除。
背景信息
以太网帧的最小大小为64字节,无论是否存在VLAN标记。
最小以太网负载大小为:
- 46字节(如果VLAN标记不存在)。
- 42字节(如果存在VLAN标记)。
您可以验证以下事实:
无论VLAN报头是否存在,以太网数据包的最小大小都为64字节。允许服务器发送包含VLAN的64字节长数据包,您应该接受该数据包并正确处理该数据包。
注意:此行为由Catalyst 4500x正确处理,而不是由Nexus 9k处理。
交换机如何处理数据包
步骤1.接收一个有效的64字节以太网帧。
步骤2.删除帧校验序列(FCS),使数据包变长60字节。
步骤3.删除VLAN标记,使数据包长度变为56字节。
步骤4.添加填充以使数据包长度为60字节。
步骤5.添加FCS,使数据包长64字节。
当数据包通过直通交换机时,不应修改填充。
流量通过N9K时用标记VLAN修改填充
数据包不使用零填充,而是使用垃圾字符填充,在大多数情况下,由于校验和未修改,因此没有人使用这些数据,因此它没有影响。但是,如果客户有特殊用途,需要重新计算校验和,这些垃圾数据会导致最终校验和损坏(其他设备,如NAT/负载均衡器,也可能会发现问题)。
设备是N9K 93120TX(最初在9372TX上检测到),版本是最新的NXOS 7.0(3)I2(2a)。
在此处(1000base-T链路)使用硬件直接连接到N9K(无任何虚拟化)的Linux主机。
使用此配置:
interface Ethernet1/59
switchport mode trunk
!
interface Ethernet1/60
switchport mode trunk
linux configurations:
inet 10.2.1.1/24 brd 10.2.1.255 scope global eth1 <= native vlan
inet 10.1.1.1/24 brd 10.1.1.255 scope global eth1.100 <= taggued vlan 100
或
只需连接Windows主机并发送标记帧,它们就会触发问题。此外,确保网络接口卡(NIC)能够标记数据包。
交换机将非零填充添加到通过的帧。
例如:主机(Host)- [中继] N9K [中继] — 主机
您可以使用netcat发送和接收数据包。
如图所示,它在交换机上发送端(VLAN 100标记)端口e1/59。
它在交换机上接收端(VLAN 100标记)、端口e1/60,如图所示:
如图所示,数据包被传输。
收到数据包,如图所示:
如图所示,突出显示了错误的填充。
这也与数据包分析器一起显示(在另一个数据包中,数据与之前的屏幕截图不同,但测试和Bug相同),
解决方案
解决方法是在连接了此服务器的接口上禁用缓冲增强。
C9396PX-1(config)# int et 1/7
C9396PX-1(config-if)# no buffer-boost
相关缺陷:
CSCva46849 60字节帧,带N9k上的dot1q报头L2交换