VLAN(虛擬局域網(wǎng))是一種常見的二層交換技術,在局域網(wǎng)中用于實現(xiàn)縮小廣播域、減少廣播風暴、實現(xiàn)同一物理網(wǎng)絡的邏輯隔離、提高網(wǎng)絡的安全性等組網(wǎng)需求,在實際的網(wǎng)絡工程中有大量應用。
在單交換機中實現(xiàn)VLAN技術,對于很多的初學者而言應該是比較簡單的,但一涉及到多交換機間的VLAN通訊、不同網(wǎng)段及不同VLAN間的路由、Native VLAN、Private VLAN等稍為復雜些的應用,很多的學習者就有些模糊不清,究其原因,還是對VLAN的工作機制、相關協(xié)議特點不清楚。下面通過抓取不同設備間的協(xié)議包來分析VLAN的工作原理,以提供對VLAN技術更清晰的認識。

圖1 兩種協(xié)議的幀結構

圖2 VLAN配置
VLAN技術有兩種實現(xiàn)協(xié)議,分別是IEEE802.1Q和ISL。其中IEEE802.1Q是國際標準,所有廠商的設備都支持,而ISL是Cisco私有協(xié)議,僅Cisco的產品支持。VLAN的實現(xiàn)方式有多種,基于交換機端口、基于用戶的MAC等,而其中基于交換機端口劃分VLAN是最常見的一種實現(xiàn)形式,所以,下面以IEEE802.1Q協(xié)議、以基于交換機端口的VLAN為例來抓取相應的數(shù)據(jù)包。
首先我們來看看,從Ethernet協(xié)議到IEEE802.1Q協(xié)議數(shù)據(jù)幀的結構變化,如圖1所示。由圖可以看出,從Ethernet到IEEE802.1Q就是在幀中插入了一個四字節(jié)TAG標記,這個標記由TPID和TCI兩部分構成。TPID固定為0x8100,標識該幀是一個打了TAG標記的Ethernet幀,而TCI則是TAG控制信息,包括用戶優(yōu)先級、范式指示器、VLAN ID值等,CRC字段是把TPI、TCI與原幀進行重新運算而得。
下面通過一個拓撲的兩種配置來說明VLAN的工作原理,如圖2所示。
第一種配置,switch0的 f0/1、f0/2口和switch1的f0/1、f0/2口都是Access類型,且都在VLAN100中。這種情況下,不管是抓取PC機到交換機的數(shù)據(jù)包,還是抓取交換機到交換機的數(shù)據(jù)包,包的結構都如圖3所示。由數(shù)據(jù)的幀結構可以看出,這是一個典型的Ethernet幀,沒有任何TAG標簽,似乎跟創(chuàng)建的VLAN100無任何關系。
其實不然,這個結果正是VLAN的基本工作原理:來自PC機的數(shù)據(jù)是普通的Ethernet數(shù)據(jù),當這個數(shù)據(jù)進入到一個創(chuàng)建了VLAN的交換機后,交換機根據(jù)進入的接口所在的VLAN ID給數(shù)據(jù)打標簽,形成Ethernet802.1Q數(shù)據(jù)幀,這個打了標簽的數(shù)據(jù)幀會廣播到該交換機的所有同VLAN ID的接口中,不在同一VLAN ID的接口則不能收到這個數(shù)據(jù)幀,從而起到對物理接口的邏輯隔離作用。收到Ethernet802.1Q數(shù)據(jù)幀的Access接口在把數(shù)據(jù)往下轉發(fā)之前會去掉標簽,將數(shù)據(jù)還原成普通的Ethernet數(shù)據(jù)幀再送出去,所以抓到的數(shù)據(jù)幀看不到標簽。

圖3 未打標簽的數(shù)據(jù)幀

圖4 帶標簽的數(shù)據(jù)幀
如果一臺交換機上有多個VLAN,這種配置就滿足不了組網(wǎng)需求了,實際工程中也經常是一臺交換機上有多個不同VLAN。
第二種配置情況,其他不變,將switch0和switch1相連的接口由Access類型改為Trunk類型,允許所有VLAN或指定的某些VLAN通過,再來抓包。這時,抓取的PC機到交換機的包仍然還是普通的Ethernet包,但抓取的交換機到交換機的包,即兩個Trunk口之間的包,則變成如圖4所示的結構。圖中虛框內部分即IEEE802.1Q的 4字 節(jié) 標 簽,0x8100即TPID,TCI為 0x64,將其轉換成十進制為100,剛好就是交換機上VLAN100的ID值。這說明,交換機的Trunk口能保留VLAN的Tag信息,將其傳送到對端Trunk口后,對端Trunk口根據(jù)VLAN ID值將數(shù)據(jù)幀送到確定的VLAN。因為Trunk口能攜帶VLAN Tag,從而讓跨交換機相同VLAN間的通信成為可能,擴大了VLAN的范圍。
根據(jù)以上兩種情況得出結論,在配置了VLAN的環(huán)境中有兩種數(shù)據(jù)幀在流動——不帶標簽的Ethernet幀和帶標簽的IEEE802.1Q幀,不帶標簽的Ethernet幀從交換機的Access口流出,帶標簽的IEEE802.1Q幀用于交換機內部進行數(shù)據(jù)走向的判定及從Trunk口流出。把這種數(shù)據(jù)流的走向及特點弄清楚之后,對于各種類型的VLAN技術就比較好理解。
例如對于Native VLAN,作為Trunk口一個屬性,決定了兩個問題:一是Trunk口收到未打標的數(shù)據(jù)幀,會往該接口指定的Native VLAN發(fā)送;二是收到來自該接口Native VLAN的數(shù)據(jù)幀,會去掉IEEE802.1Q的標簽再往下轉發(fā)。對于用路由器實現(xiàn)VLAN間的路由,一定要將路由器的物理接口劃分成多個邏輯子接口,然后在子接口上封裝802.1Q協(xié)議,讓接口能識別打了標簽的數(shù)據(jù)幀才可。
所以,VLAN技術的本質就是數(shù)據(jù)包進入了VLAN環(huán)境后,通過加標簽來對數(shù)據(jù)幀進行邏輯隔離,加入的標簽什么時候帶著走,什么時候剝離,由交換機的端口類型來決定。路由器的端口要識別加了標簽的數(shù)據(jù)幀,必須通過在子接口上手工來封裝802.1Q協(xié)議來實現(xiàn)。