1 為什么需要 VLAN(Virtual Local Area Network)
VLAN是一個邏輯網(wǎng)絡(luò),VLAN將設(shè)備/用戶進(jìn)行邏輯分組,VLAN需要在Switch上創(chuàng)建。為什么需要這樣呢?為何不能所有設(shè)備都在同一個網(wǎng)絡(luò)?
如下網(wǎng)絡(luò),如果設(shè)備過多,在同一個廣播域,必然會造成流量擁塞、線路性能低。同時,由于所有機(jī)器共用同一段網(wǎng)絡(luò),會導(dǎo)致性能問題。

如果要解決這個問題,有以下幾種解決辦法:
-
不同組群有各自的Switch,這樣一個廣播域就劃分為2個廣播域,并且相互獨立,然后通過三層路由器連接兩個網(wǎng)絡(luò)。
image.png
- 通過在 Switch 上配置VLAN,并且Switch和一個Router相連,從而實現(xiàn)兩個VLAN互通,Switch 和 Router之間的連線叫做 Trunking / Trunk。

-
通過多層交換機(jī)(Multilayer Switch)類似方法2中創(chuàng)建2個VLAN,通過多層交換機(jī)的內(nèi)部VLAN路由技術(shù),從而實現(xiàn)2個VLAN互通。
image.png
通過以上方案,我們可以看到 VLAN 可以簡化網(wǎng)絡(luò)設(shè)計和實現(xiàn),通過VLAN我們可以忽略物理位置限制,按照邏輯需求將設(shè)備劃分到不同網(wǎng)絡(luò)。
如果沒有VLAN,一旦設(shè)備需要重新劃分,就會涉及到重新連線配置,而通過VLAN,我們只需要調(diào)整配置。
一旦網(wǎng)絡(luò)出現(xiàn)問題,VLAN 又可以幫助我們縮小問題范圍,只需要關(guān)注發(fā)生問題的VLAN內(nèi)部網(wǎng)絡(luò)問題。
2 VLAN 實現(xiàn)機(jī)制
如圖所示,2個switch分別連了2臺電腦,A和C都是Vlan10, B和D都是Vlan20,如果想要A和C通信,B和D通信,且不同vlan的電腦不能通信,那么就要用到 Vlan,兩個switch之間的link叫做 Trunck。

一個Trunk可以連接 Switch,也可以鏈接 Switch 和 Router,默認(rèn)情況,一個trunk既可以處理switch 所有 vlan 的vlan流量,也可以配置為只允許傳遞某一個vlan的流量。
下面再來認(rèn)識一下Vlan用到的端口:

Trunk/Tagged Port: Trunk 和 普通物理連線并無區(qū)別,但是一條trunck兩端的接口需要經(jīng)過特殊的配置。兩端接口再Cisco設(shè)備上被稱為 trunk port,其他vendor的設(shè)備上則叫做 tagged port,圖中紅色圈。Trunk/Tagged Port 用于給數(shù)據(jù)包添加 Vlan Tag。
-
Access/Untagged Port: 橙色圈是客戶機(jī)連到switch上的端口,叫做 Access Port,這里應(yīng)該有4個,圈一個示例一下。Access Port用來發(fā)送和接受沒有 Vlan Tag 的數(shù)據(jù)包。也就是說,Access/Untagged Port只能用于一個Vlan。
image.png
- A向 switch 1 發(fā)送數(shù)據(jù)包 Ethernet Frame
- Trunk / Tagged Port 發(fā)送前會添加Tag信息,其中 VLAN Identifier標(biāo)識屬于哪個Vlan的流量
- Frame經(jīng)過Trunk到達(dá)switch 2,switch 2解析Tag之后,丟掉Tag發(fā)送到指定的 Access Port發(fā)給客戶機(jī)C


