VLAN 學習


一. VLAN 數據報文格式

IEEE 802.1Q標准對Ethernet幀格式進行了修改,在源MAC地址字段和協議類型字段之間加入4字節的802.1Q Tag。

VLAN幀最小幀長為64字節。

圖1 VLAN幀格式
 
 
·Type:長度為2 bytes,表示幀類型,802.1Q tag幀中Type字段取固定值0x8100,如果不支持802.1Q的設備收到802.1Q幀,則將其丟棄。
·PRI:priority字段,長度為3 bit,表示 以太網幀的優先級,取值范圍是0~7,數值越大,優先級越高。當交換機/路由器發生傳輸擁塞時,優先發送優先級高的數據幀。
·CFI:Canonical Format Indicator,長度為1bit,表示MAC地址是否是經典格式。CFI為0說明是經典格式,CFI為1表示為非經典格式。該字段用於區分以太網幀、FDDI幀和令牌環網幀,在以太網幀中,CFI取值為0
·VID:VLAN ID,長度為12 bit,取值范圍是0~4095,其中0和4095是保留值,不能給用戶使用。
 
字段 長度 含義
Destination address 6字節 目的MAC地址。
Source address 6字節 源MAC地址。
Type 2字節 長度為2字節,表示幀類型。取值為0x8100時表示802.1Q Tag幀。如果不支持802.1Q的設備收到這樣的幀,會將其丟棄。
PRI 3比特 Priority,長度為3比特,表示幀的優先級,取值范圍為0~7,值越大優先級越高。用於當阻塞時,優先發送優先級高的數據包。

如果設置用戶優先級,但是沒有VLANID,則VLANID必須設置為0x000。

CFI 1比特 CFI (Canonical Format Indicator),長度為1比特,表示MAC地址是否是經典格式。CFI為0說明是標准格式,CFI為1表示為非標准格式。用於區分以太網幀、FDDI(Fiber Distributed Digital Interface)幀和令牌環網幀。在以太網中,CFI的值為0。
VID 12比特 LAN ID,長度為12比特,表示該幀所屬的VLAN。在VRP中,可配置的VLAN ID取值范圍為1~4094。0和4095協議中規定為保留的VLAN ID。

三種類型:

  • Untagged幀:VID 不計
  • Priority-tagged幀:VID為 0x000
  • VLAN-tagged幀:VID范圍0~4095

三個特殊的VID:

  • 0x000:設置優先級但無VID
  • 0x001:缺省VID
  • 0xFFF:預留VID
Length/Type 2字節 指后續數據的字節長度,但不包括CRC檢驗碼。
Data 42~1500字節 負載(可能包含填充位)。
CRC 4字節 用於幀內后續字節差錯的循環冗余檢驗(也稱為FCS或幀檢驗序列)。
 
 VLAN幀 抓包:

 

二.  Vlan 內核源碼分析

VLAN網絡接口發出的網絡報文將由vlan_dev_hard_start_xmit函數處理

 

 

1) 所有經過橋接/路由轉發經由例:eth1.101 VLAN網絡接口發出的網絡報文將由vlan_dev_hard_start_xmit函數處理
2)通過例:eth1.101 VLAN網絡接口獲取VLAN配置信息,涉及VLAN配置VLANID、VLAN優先級
3)檢查網絡報文是否符合添加VLAN頭部信息,符合則在skb中更新VLAN頭部信息,由__vlan_hwaccel_put_tag根據vlan_tci更新skb VLAN信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM