協定簡介
IEEE 802.1q協定為標識帶有VLAN成員信息的以太幀建立了一種標準方法。IEEE802.1q標準定義了VLAN網橋操作,從而允許在橋接區域網路結構中實現定義、運行以及管理VLAN拓樸結構等操作。IEEE 802.1q標準主要用來解決如何將大型網路劃分為多個小網路,如此廣播和組播流量就不會占據更多頻寬的問題。此外IEEE 802.1q標準還提供更高的網路段間安全性。IEEE802.1q完成這些功能的關鍵在於標籤。支持IEEE 802.1q的交換連線埠可被配置來傳輸標籤幀或無標籤幀。一個包含VLAN信息的標籤欄位可以插入到以太幀中。如果連線埠有支持IEEE 802.1q的設備(如另一個交換機)相連,那么這些標籤幀可以在交換機之間傳送VLAN成員信息,這樣VLAN就可以跨越多台交換機。但是,對於沒有支持IEEE 802.1q設備相連的連線埠我們必須確保它們用於傳輸無標籤幀,這一點非常重要。很多PC和印表機的NIC並不支持IEEE 802.1q,一旦它們收到一個標籤幀,它們會因為讀不懂標籤而丟棄該幀。在IEEE 802.1q中,用於標籤幀的最大合法以太幀大小已由1518位元組增加到1522位元組,這樣就會使網卡和舊式交換機由於幀“尺寸過大”而丟棄標籤幀。圖 6-16就是乙太網中的IEEE 802.1q標籤幀格式。
Preamble(Pre):前導欄位,7位元組。Pre欄位中1和0互動使用,接收站通過該欄位知道導入幀,並且該欄位提供了同步化接收物理層幀接收部分和導入比特流的方法。
Start-of-Frame Delimiter(SFD):幀起始分隔設定欄位,1位元組。欄位中1和0互動使用,結尾是兩個連續的1,表示下一位是利用目的地址的重複使用位元組的重複使用位。
Destination Address(DA):目的地址欄位,6位元組。DA欄位用於識別需要接收幀的站。
Source Addresses(SA):源地址欄位,6位元組。SA欄位用於識別傳送幀的站。
TPID:標記協定標識欄位,2個位元組,值為8100(hex)。當幀中的EtherType(乙太網類型)欄位值也為8100時,該幀傳送標籤IEEE 802.1q/802.1p。
TCI:標籤控制信息欄位,包括用戶優先權(User Priority)、規範格式指示器(Canonical Format Indicator,CFI)和VLAN ID。
說明:“User Priority”定義用戶優先權,包括8個(2^3)優先權別。IEEE 802.1p為3比特的用戶優先權位定義了操作。“CFI”,在乙太網交換機中,規範格式指示器總被設定為0。由於兼容特性,CFI常用於乙太網類網路和令牌環類網路之間,如果在乙太網連線埠接收的幀具有CFI,那么設定為1,表示該幀不進行轉發,這是因為乙太網連線埠是一個無標籤連線埠。“VID”(VLAN ID)是對VLAN的識別欄位,在標準IEEE 802.1q中常被使用。該欄位為12位。支持4096(2^12)VLAN的識別。在4096可能的VID中,VID=0用於識別幀優先權。 4095(FFF)作為預留值,所以VLAN配置的最大可能值為4094。
Length/Type:長度/類型欄位,2位元組。如果是採用可選格式組成幀結構時,該欄位既表示包含在幀數據欄位中的MAC客戶機數據大小,也表示幀類型ID。
Data:數據欄位,是一組n(46≤n≤1500)位元組的任意值序列。幀總值最小為64位元組。
Frame Check Sequence(FCS):幀校驗序列欄位,4位元組。該序列包括32位的循環冗餘校驗(CRC)值,由傳送MAC方生成,通過接收MAC方進行計算得出以校驗被破壞的幀。
VLAN簡介
“Virtual LANs”(虛擬區域網路)目前發展很快,世界上主要的大網路廠商在他們的交換機設備中都實現了VLAN協定。在一個支持VLAN技術的交換機中,可以將它的乙太網口劃分為幾個組,比如生產組,工程組,市場組等。這樣,組內的各個用戶就像在同一個區域網路內(可能各組的用戶位於很多的交換機上,而非一個交換機)一樣,同時,不是本組的用戶就無法訪問本組的成員,在一定程度上提高了各組的網路安全性。
實際上,VLAN成員的定義可以分為4種:
(1)根據連線埠劃分VLAN
這種劃分VLAN的方法是根據乙太網交換機的連線埠來劃分的,比如將某交換機的的1~4連線埠為VLAN A,5~17為VLAN B,18~24為VLAN C……
以上這些屬於同一VLAN組的連線埠可以不連續,如何配置,由管理員決定。另外,如果有多個交換機的話,例如,可以指定交換機1的1~6連線埠和交換機2的1~4連線埠為同一VLAN,即同一VLAN可以跨越數個乙太網交換機。
根據連線埠劃分是目前定義VLAN的最常用的方法,IEEE 802.1q協定規定的就是如何根據交換機的連線埠來劃分VLAN。這種劃分的方法的優點是定義VLAN成員時非常簡單,只要將所有的連線埠都定義一下就可以了。它的缺點是如果VLAN A的用戶離開了原來的連線埠,到了一個新的交換機的某個連線埠,那么就必須重新定義。
(2)根據MAC地址劃分VLAN
這種劃分VLAN的方法是根據每個主機的MAC地址來劃分的,即對每個MAC地址的主機都配置它屬於哪個組。這種劃分VLAN的方法的最大優點就是當用戶物理位置移動時,即從一個交換機換到其他的交換機時,VLAN不用重新配置。所以可以認為這種根據MAC地址的劃分方法是基於用戶的VLAN。這種方法的缺點是初始化時,所有的用戶都必須進行配置,如果有幾百個甚至上千個用戶的話,配置是非常累的。而且這種劃分的方法也導致了交換機執行效率的降低,因為在每一個交換機的連線埠都可能存在很多個VLAN組的成員,這樣就無法限制廣播包了。另外,對於使用筆記本電腦的用戶來說,他們的網卡可能經常更換,這樣,VLAN就必須不停地配置。
(3)根據網路層劃分VLAN
這種劃分VLAN的方法是根據每個主機的網路層地址或協定類型(如果支持多協定)劃分的。雖然這種劃分方法可能是根據網路地址,比如IP位址,子網掩碼,但它不是路由,不要與網路層的路由混淆。它雖然查看每個數據包的IP 地址,但由於不是路由,所以沒有RIP(Routing information Protocol,路由信息協定),OSPF(Open Shortest Path First,開放最短路徑優先)等路由協定,而是根據生成樹算法進行橋交換。
這種方法的優點是用戶的物理位置改變了,不需要重新配置他所屬的VLAN,而且可以根據協定類型來劃分VLAN,這對網路管理者來說很重要,還有,這種方法不需要附加的幀標籤來識別 VLAN,這樣可以減少網路的通信量。其缺點是效率低,因為檢查每一個數據包的網路層地址是很費時的(相對於前面兩種方法),一般的交換機晶片都可以自動檢查網路上數據包的乙太網幀頭,但要讓晶片能檢查IP幀頭,需要更高的技術,同時也更費時。當然,這也跟各個廠商的實現方法有關。
(4)根據IP組播劃分
IP 組播實際上也是一種VLAN的定義,即認為一個組播組就是一個VLAN組。這種劃分的方法將VLAN擴大到了廣域網,因此這種方法具有更大的靈活性,而且也很容易通過路由器進行擴展。當然這種方法不適合區域網路,主要是效率不高,對於區域網路的組播,有二層組播協定GMRP。
通過上面可以看出,各種不同的VLAN定義方法有各自的優缺點,所以很多廠商的交換機都實現了不只一種方法,這樣網路管理者可以根據自己的實際需要進行選擇。另外,許多廠商在實現VLAN的時候,考慮到VLAN配置的複雜性,還提供了一定程度的自動配置和方便的網路管理工具。
以前各個廠商都聲稱他們的交換機實現了VLAN,但各個廠商實現的方法都不相同,所以彼此是無法互連,這樣,用戶一旦買了某個廠商的交換機,就沒法買其他廠商的了。而現在,VLAN的標準是IEEE提出的802.1q協定,只有 支持相同的開放標準才能保證網路的互連互通,以及保護網路設備投資。
處理過程
儲備3個基本知識點。普通幀(最常見的是乙太網 版本2的幀,又叫乙太網 2幀),802.1Q幀 (添加了兩個欄位,通過這兩個字端引入了VLAN),access trunk的配置
IEEE802.1Q協定對TAG的處理:
1 、 PC電腦通過OSI層層封裝,對每一層的數據加上頭,最終成為比特流。也就是1 0 組成的比特流,通過模擬脈衝電信號發出。底層的電脈衝型號只要2個波,0和1,它們通過不同的組合,表現不同的意思。
PC 在封裝到2層的時候封裝的是乙太網 2 幀
2 、 集線器收到比特流:集線器我們通常說沒有vlan, 原因在於,他只是直接轉發比特流,並沒有對內容做修改。
3 、 2層交換機處理:我們這裡介紹主流的支持vlan的設備。
交換機其實是一個UNIX作業系統,針對收到比特流做操作。
拆掉比特流頭後,把數據傳入程式。
access口處理:
我們都知道每個連線埠配置成access 的時候只能劃入一個VLAN
比特流傳入交換機access物理口後,在拆出的2層 會加兩個欄位:ETYPE 2個位元組,TAG 2個位元組。
這個時候,802.1q 幀 封裝完成。
MAC表經過處理口,確認從某個access口傳出
傳出的口子做的處理是,扒掉ETYPE 和 TAG,這個時候802.1Q幀,變成了乙太網2 幀。
再次打上比特流頭,模擬成電信號,在傳輸到PC
PC收到拆出後,收到的是一個乙太網2幀,而不是802.1Q幀
trunk口處理:
進入trunk物理口,trunk口不大tag,因為數據在傳入access 已經打上TAG(ETYPE + TAG)
trunk 通過 命令: allow vlan xx , 核對TAG信息後,確認是否放行。
本徵vlan :還有一種特殊情況,就是沒有經過access口,而是直接來了乙太網2的幀,這個時候,市面上書上寫的都是在本徵VLAN中傳輸,但是沒有解釋怎么傳輸。
本徵vlan:要求trunk兩邊必須是相同的VLAN,為什麼 ?
入打上vlan 10 ,出扒掉vlan10 , 還原為乙太網2幀,也就是trunk進過後,要還原為初始進入時候的乙太網2幀。
示例,入口本徵為vlan10 , 出口本徵vlan 20 .
入口針對特殊的乙太網2幀 ,打上tag vlan 10 ,
出口 程式執行,扒掉vlan 20 ,但是發現不是20, 這個時候會丟棄 本徵vlan傳來的幀(打著vlan10)。
所以要求本徵VLAN 兩個交換機要配置成同一個VLAN