VLAN(Virtual Local Area Network)的中文名為“虛擬局域網”。VLAN是一種將局域網設備從邏輯上劃分成一個個網段,從而實現虛擬工作組的數據交換技術。這一技術主要應用于交換機和路由器中,但主流應用還是在交換機之中。但又不是所有交換機都具有此功能,只有VLAN協議的第二層以上交換機才具有此功能。802.1Q的標準的出現打破了虛擬網依賴于單一廠商的僵局,從一個側面推動了VLAN的迅速發(fā)展。
1、交換機端口工作模式簡介
交換機端口有三種工作模式,分別是Access,Hybrid,Trunk。
Access類型的端口只能屬于1個VLAN,一般用于連接計算機的端口;
Trunk類型的端口可以允許多個VLAN通過,可以接收和發(fā)送多個VLAN的報文,一般用于交換機之間連接的端口;
Hybrid類型的端口可以允許多個VLAN通過,可以接收和發(fā)送多個VLAN的報文,可以用于交換機之間連接,也可以用于連接用戶的計算機。
Hybrid端口和Trunk端口在接收數據時,處理方法是一樣的,唯一不同之處在于發(fā)送數據時:Hybrid端口可以允許多個VLAN的報文發(fā)送時不打標簽,而Trunk端口只允許缺省VLAN的報文發(fā)送時不打標簽。
2、基本概念(tag,untag,802.1Q)
untag就是普通的ethernet報文,普通PC機的網卡是可以識別這樣的報文進行通訊;
tag報文結構的變化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag頭;一般來說這樣的報文普通PC機的網卡是不能識別的
下圖說明了802.1Q封裝tag報文幀結構
帶802.1Q的幀是在標準以太網幀上插入了4個字節(jié)的標識。其中包含:
2個字節(jié)的協議標識符(TPID),當前置0x8100的固定值,表明該幀帶有802.1Q的標記信息。
2個字節(jié)的標記控制信息(TCI),包含了三個域。
Priority域,占3bits,表示報文的優(yōu)先級,取值0到7,7為最高優(yōu)先級,0為最低優(yōu)先級。該域被802.1p采用。
規(guī)范格式指示符(CFI)域,占1bit,0表示規(guī)范格式,應用于以太網;1表示非規(guī)范格式,應用于Token Ring。
VLAN ID域,占12bit,用于標示VLAN的歸屬。
3、交換機接口出入數據處理過程
3-1、端口接收報文時的處理:
Acess端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發(fā),如果有則直接丟棄(缺?。?/p>
trunk端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發(fā),如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果允許則報文攜帶原有VLAN標記進行轉發(fā),否則丟棄該報文。
hybrid端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉發(fā),如果有則判斷該hybrid端口是否允許該VLAN的數據進入:如果可以則轉發(fā),否則丟棄。
備注:PVID為Port-base Vlan ID,也就是端口的虛擬局域網ID號,關系到端口收發(fā)數據幀時的VLAN TAG 標記。
3-2、端口發(fā)送報文時的處理
Acess端口發(fā)報文:
將報文的VLAN信息剝離,直接發(fā)送出去
trunk端口發(fā)報文:
比較端口的PVID和將要發(fā)送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發(fā)送,否則報文將攜帶原有的VLAN標記進行轉發(fā)。
hybrid端口發(fā)報文:
判斷該VLAN在本端口的屬性
如果是untag則剝離VLAN信息,再發(fā)送,如果是tag則比較端口的PVID和將要發(fā)送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發(fā)送,否則報文將攜帶原有的VLAN標記進行轉發(fā)。
4、示例講解
多交換機的情況下,VLAN是怎么工作的呢?下圖所示的這種情況,兩個交換機VLAN相同,都是默認VLAN 1,即兩個交換機之間的聯系同在VLAN 1之內。路由器是所有節(jié)點的出口。
這時單播,多播和廣播數據自由傳輸,所有節(jié)點屬于同一IP地址。這時節(jié)點之間的通信不會有問題,因為交換機的SAT顯示它們在同一VLAN。
而下面這種連接方式就會有問題。由于VLAN在連接端口的主機之間創(chuàng)建了三層邊界,它們將無法通信。
仔細看上圖,這里有很多問題。第一,所有主機都在同一IP網,盡管連接到不同的VLAN。第二,路由器在VLAN 1,因此與所有節(jié)點隔離。最后,兩臺交換機通過不同的VLAN互連。每一點都會造成通信阻礙,合在一起,網絡各元素之間會完全無法通信。
交換機用滿或同一管理單元物理上彼此分離的情形是很常見的。這種情況下,VLAN需要通過trunk延伸至相鄰交換機。trunk能夠連接交換機,在網絡間傳載VLAN信息。如下圖所示:
對之前的拓撲的改進包括:
PC 1和PC 2分配到192.168.1.0網段以及VLAN 2。
PC 3和PC 4分配到192.168.2.0網段以及VLAN 3。
路由器接口連接到VLAN 2和VLAN 3。
交換機間通過trunk線互連。
注意到trunk端口出現在VLAN 1,他們沒有用字母T來標識。trunk在任何VLAN都沒有成員?,F在VLAN跨越多交換機,同一VLAN下的節(jié)點可以物理上位于任何地方。
再次解釋下什么是Trunk:
Trunk是在兩個網絡設備之間承載多于一種VLAN的端到端的連接,將VLAN延伸至整個網絡。沒有VLAN Trunk,VLAN也不會非常有用。VLAN Trunk允許VLAN數據流在交換機間傳輸,所以設備在同一VLAN,但連接到不同交換機,能夠不通過路由器來進行通信。
一個VLAN trunk不屬于某一特定VLAN,而是交換機和路由器間多個VLAN的通道。如下圖所示,交換機S1和S2,以及S1和S3之間的鏈路,配置為傳輸從VLAN10,20,30以及90的數據流。該網絡沒有VLAN trunk就無法工作。
當安裝好trunk線之后,幀在trunk線傳輸是就可以使用trunk協議來修改以太網幀。這也意味著交換機端口有不止一種操作模式。缺省情況下,所有端口都稱為接入端口。當一個端口用于交換機間互連傳輸VLAN信息時,這種端口模式改變?yōu)閠runk,節(jié)點也路由器通常不知道VLAN的存在并使用標準以太網幀或“untagged”幀。trunk線能夠使用“tagged”幀來標記VLAN或優(yōu)先級。
因此,在trunk端口,運行trunk協議來允許幀中包含trunk信息。如下圖所示:
PC 1在經過路由表處理后向PC 2發(fā)送數據流。這兩個節(jié)點在同一VLAN但不同交換機。步驟如下:
以太網幀離開PC 1到達Switch 1。
Switch 1的SAT表明目的地是trunk線的另一端。
Switch 1使用trunk協議在以太網幀中添加VLAN id。
新幀離開Switch 1的trunk端口被Switch 2接收。
Switch 2讀取trunk id并解析trunk協議。
源幀按照Switch 2的SAT轉發(fā)至目的地(端口4)。
5、工程實踐
我們利用cisco packet trace工具來對上述描述的vlan的技術點進行工程實踐,內容包括通過四臺PC、兩臺交換機,通過一個trunk鏈路建立兩個vlan的過程。
1、通過cisco packet trace我們首先建立一個如下圖的網絡拓撲結果。pc1接switch1的0/1端口;pc2接switch1的0/2端口;laptop0接switch2的0/1端口;laptop1接switch2的0/2端口;trunk鏈路有兩臺交換機的普通端口0/3互聯。
2、分別為四臺PC分配靜態(tài)的IP。如圖所示PC3為192168.10.1;根據vlan規(guī)劃,PC2的IP為192.168.20.1;laptop0的IP192.168.20.1;laptop1的IP192.168.20.2;
3、配置switch1,命令如下
Switch》enable
Switch#configure terminal
Switch(config)#hostname SA
SA(config)#vlan 10
SA(config-vlan)#exit
SA(config)#vlan 20
SA(config-vlan)#exit
SA(config)#interface fa0/1
SA(config-if)#switchport access vlan 10
SA(config-if)#exit
SA(config)#interface fa0/2
SA(config-if)#switchport access vlan 20
SA(config-if)#exit
SA(config)#interface fa0/3
SA(config-if)#switchport mode trunk
SA(config-if)#switchport trunk allowed vlan all
通過測試
4、配置switch2,命令如下
Switch》enable
Switch#configure terminal
Switch(config)#hostname SB
SB(config)#vlan 10
SB(config-vlan)#exit
SB(config)#vlan 20
SB(config-vlan)#exit
SB(config)#interface fa0/1
SB(config-if)#switchport access vlan 10
SB(config-if)#exit
SB(config)#interface fa0/2
SB(config-if)#switchport access vlan 20
SB(config-if)#exit
SB(config)#interface fa0/3
SB(config-if)#switchport mode trunk
SB(config-if)#switchport trunk allowed vlan all
通過測試
5、檢查vlan間的互通性,從PC3(192.168.10.1)ping PClaptop0和laptop1情況如下: