目錄

簡介

背景資訊

交換器如何處理封包

流量通過N9K時，使用標籤的VLAN修改填充

解決方案

簡介

本檔案介紹如何在Cisco Nexus 9000上排除損壞的乙太網路封包的故障，因為填充資訊已損毀或格式不正確。

背景資訊

無論是否存在任何VLAN標籤，乙太網幀的最小大小都是64位元組。

最小乙太網負載大小為：

- 如果VLAN標籤不存在，則為46位元組。

- 如果存在VLAN標籤，則為42位元組。

您可以驗證以下事實：

- 在Wikipedia上，部分負載: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)中，第39頁3.1.1節中定義了MAC幀格式（無VLAN），第43頁3.5節定義了標籤MAC幀的元素。

無論是否存在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)。

使用帶有直接連線到N9K（無任何型別的虛擬化）的Linux主機（1000base-T連結）。

使用以下設定：

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)能夠標籤封包。

交換機將非零填充新增到通過的幀中。

例如：主機 — [中繼] N9K [中繼] — 主機

您可以使用netcat來傳送和接收封包。

如圖所示，它會傳送交換器上的Side（已標籤VLAN 100）連線埠e1/59。

它接收交換機上的端（VLAN 100標籤）埠e1/60，如下圖所示：

如圖所示，封包會傳輸。

系統收到封包，如下圖所示：

如圖所示，錯誤填充突出顯示。

這也會透過封包分析器顯示（在另一個封包中，資料與之前的截圖不同，但測試和錯誤相同），

解決方案

因應措施是在已連線此伺服器的介面上禁用buffer-boost。

C9396PX-1(config)# int et 1/7

C9396PX-1(config-if)# no buffer-boost

相關缺陷：

N9000上採用dot1q報頭L2交換的CSCva46849 60位元組幀