目录

简介

背景信息

交换机如何处理数据包

流量通过N9K时用标记VLAN修改填充

解决方案

简介

本文档介绍当填充信息损坏或格式错误时如何对Cisco Nexus 9000上损坏的以太网数据包进行故障排除。

背景信息

以太网帧的最小大小为64字节，无论是否存在VLAN标记。

最小以太网负载大小为：

- 46字节（如果VLAN标记不存在）。

- 42字节（如果存在VLAN标记）。

您可以验证以下事实：

- 在维基百科上，节负载:https://en.wikipedia.org/wiki/Ethernet_frame

- 在IEEE 802.3标准(http://people.ee.duke.edu/~mbrooke/EE164.02/Spring_2004/group_2/index_files/8023.pdf)中，MAC帧格式（无VLAN）在第39页第3.1.1节中定义，标记MAC帧的元素在第43页第3.5节中定义。

无论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交换