簡介
本檔案介紹如何在Cisco Nexus 9000上排除損壞的乙太網路封包的故障,因為填充資訊已損毀或格式不正確。
背景資訊
無論是否存在任何VLAN標籤,乙太網幀的最小大小都是64位元組。
最小乙太網負載大小為:
- 如果VLAN標籤不存在,則為46位元組。
- 如果存在VLAN標籤,則為42位元組。
您可以驗證以下事實:
無論是否存在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位元組幀