在《交換機入門基本功 -上》提到,交換機在物理層面劃分通信區域并產生局域網(Local Area Network, LAN)。局域網具有一個特點:連線拓撲一旦確定,一定時間內不會發生通信區域的變動。在實際通信過程中,廣播報文和未知目的地址的單播報文,需要通知到所有設備。通信區域的大小,影響了這個過程中需要通知設備的多少。然而,對設備不加選擇的廣播會造成廣播泛濫。交換機此時并不具備設備選擇的功能,通信區域內的所有設備們此時別無選擇,只能不斷地被“打擾”(“i”設備表示:交換機這個“e人”好可怕,默默哭泣ㄒoㄒ~~)。而且,這種廣播泛濫還會占用帶寬,造成線路沖突和性能下降等問題,甚至可能造成網絡癱瘓。
要解決這個問題,一個簡單的想法是:改變局域網內的連線拓撲,這是否可行呢?答案是有用,但不多。理由很簡單,如果只需要偶爾改變連線拓撲,每次只改變一兩個設備,那就只是幾根網線的拔插工作。但如果需要頻繁改變通信區域,或者存在多個通信區域、且每次涉及的設備很多呢?千手觀音都得說:這活太累了……
圖 1 “千手觀音”哭泣
聰明的小伙伴可能會想到,如果不改變物理連線,而是限制報文的傳播路徑,讓它們只能在特定范圍內進行轉發呢?沒錯,天無絕人之路,既然改變不了物理世界,那就在虛擬世界里大展身手,就是虛擬局域網(Virtual Local Area Network, VLAN)的來源!
VLAN技術在邏輯層面上,將局域網劃分成多個區域,每個區域是獨立的廣播域,區域內可以進行廣播通信,區域間不能進行直接通信。這樣,無需修改實際的連線拓撲,就可以快速劃分和修改廣播域,可操作性和應變能力大大增強。設想一下,你一邊在小組群討論小組作業怎么寫,一邊在宿舍群討論晚上吃什么,要是兩個群的信息可以互相看到,那豈不是亂了套?!這種分群討論方式的好處還有:如果臨時加入了一名小組成員,那么只需要把這個人拉到小組群里就可以繼續討論,并不會影響之前的工作,簡直不要太方便!
那么,小伙伴可能又要問了:這么方便的VLAN,究竟是用了什么“魔法”做到的呢?
神秘的魔法就是:VLAN ID ,簡稱VID,即不同VLAN的編號。通過在報文內增加額外字段,標明報文的VID,說明報文要在哪個VLAN下進行傳輸。
VLAN報文結構
攜帶VID的報文結構遵循IEEE的802.1Q協議。IEEE(Institute of Electrical and Electronics Engineers)電氣電子工程師學會,在電氣及電子工程、計算機及其他技術領域做出卓越貢獻,引領新技術發展步伐,制定國際和行業標準。802.1Q協議在MAC(Media Access Control)報文的基礎上,定義了VLAN的標準化實現方案。
首先介紹下不帶VLAN的MAC報文,有兩種格式,分別是IEEE 802.3在1982年頒布的格式,和以太網V2在1983年頒布的格式,二者只在部分字段有所區別,格式如圖 2和圖 3:
圖 2 IEEE 802.3的MAC報文格式
圖 3 以太網V2的MAC報文格式
每個字段的含義如下:
- PRE:Preamble前導碼,長度為8個字節(一個字節有8位bit),用于時間同步,通常是連續的“10”值。
- DA:Destination Address目的地址,長度為6個字節,表明該報文要發送到特定的MAC地址。
- SA:Source Address源地址,長度為6個字節,表明發送該報文的MAC地址。
- L/T:Length/Type,表明報文的長度/類型,長度2個字節;L長度字段取值在0-1500之間,T類型字段取值大于1536,1500-1536之間的取值未定義。T類型字段可表明的協議類型有IPv4、IPv6、ARP等。
- DATA:數據,長度在46-1500字節之間。
- FCS:Frame Check Sequence幀檢測序列,使用CRC(Cyclic Redundancy Check)循環冗余校驗算法,對包括DA、SA、L/T、DATA字段在內計算校驗值,確保在傳輸過程中數據沒有被篡改。
進一步的,在上述MAC報文格式基礎上,增加VLAN的說明字段。具體格式如圖 4:
圖 4 攜帶VLAN的MAC報文格式
VLAN的說明字段介于SA和L/T之間,稱之為Tag字段。Tag字段長度為4個字節,包括TPID和TCI兩個部分:
- TPID:Tag Protocol Identifier,Tag協議標識位,該字段的位置和不帶tag報文的L/T字段重合,用于區分報文是否攜帶tag。
- TCI:Tag Control Information,Tag控制信息,包含具體的VLAN控制信息。
???????TCI字段又可分為三個部分:
- PCP:Priority Code Point優先級代碼位,長度為3bit,表明報文在同個VLAN內的優先轉發順序,需要和交換機隊列配合使用,后面會進行介紹。
- DEI:Drop Eligible Indicator丟棄使能位,長度為1bit,表明在傳輸過程中,如果數據過多影響傳輸效率,是否進行丟棄處理。取值為0表示不丟棄,1表示丟棄。
- VLAN ID:簡稱VID,長度為12bit,表明報文所屬的VLAN,這也是前文提到的任意劃分廣播域的“魔法”!
除了在報文內增加Tag字段表明報文所屬的VLAN,還需要依賴交換機進行實際轉發。其中,交換機的端口屬性在VLAN轉發過程中非常關鍵。在《交換機入門基本功-3》將介紹交換機端口屬性以及具體的轉發過程。
經緯恒潤作為OPEN聯盟會員和AUTOSAR聯盟的高級合作伙伴,長期為國內外各大OEM和供應商提供涵蓋TCP/IP、SOME/IP、DoIP、AVB、TSN、DDS等技術領域的設計和測試咨詢服務,積極研發和探索車載網絡前沿技術和工程應用。通過多個項目的實踐經驗,已建立了高質量、本土化的設計與測試一體化解決方案,為整車網絡架構提供可靠支持。