最接地氣的VLAN介紹

前言:2年前公司分配我做一個VLAN的知識點普及,搜索幾篇文章後整理一下,摘取了相對簡單易懂的部分構成了這篇文章,通篇沒有太深入,並且盜圖也還算清晰明瞭。PS:其實就是把能看懂的摘出來~

小白都能看明白的VLAN原理解釋(超詳細):https://blog.csdn.net/cwm_meng_home/article/details/49762807

 

VLAN簡介

一張圖看懂VLAN的作用

 

什麼是VLAN?

VLAN(Virtual Local Area Network)即虛擬局域網,是將一個物理的LAN在邏輯上劃分成多個廣播域的通信技術。

 

什麼是廣播域?

廣播域,指的是廣播幀(目標MAC地址全部爲1)所能傳遞到的範圍,亦即能夠直接通信的範圍。嚴格地說,並不僅僅是廣播幀,多播幀(Multicast Frame)和目標不明的單播幀(Unknown Unicast Frame)也能在同一個廣播域中暢行無阻。

 

VLAN的數據幀和傳統的以太網數據幀有什麼區別呢?

其中,數據幀中的VID(VLAN ID)字段用於標示該數據幀所屬的VLAN,數據幀只能在所屬VLAN內進行傳輸。

 

小結:通過劃分不同的VLAN,VLAN內的主機間可以直接通信,而VLAN間不能直接互通,從而將廣播報文限制在一個VLAN內。

 

爲什麼需要VLAN?

1.未分割廣播域時……

那麼,爲什麼需要分割廣播域呢?那是因爲,如果僅有一個廣播域,有可能會影響到網絡整體的傳輸性能。具體原因,請參看附圖加深理解。

圖中,是一個由5臺二層交換機(交換機1~5)連接了大量客戶機構成的網絡。假設這時,計算機A需要與計算機B通信。在基於以太網的通信中,必須在數據幀中指定目標MAC地址才能正常通信,因此計算機A必須先廣播“ARP請求(ARP Request)信息”,來嘗試獲取計算機B的MAC地址。

交換機1收到廣播幀(ARP請求)後,會將它轉發給除接收端口外的其他所有端口,也就是Flooding了。接着,交換機2收到廣播幀後也會Flooding。交換機3、4、5也還會Flooding。最終ARP請求會被轉發到同一網絡中的所有客戶機上

請大家注意一下,這個ARP請求原本是爲了獲得計算機B的MAC地址而發出的。也就是說:只要計算機B能收到就萬事大吉了。可是事實上,數據幀卻傳遍整個網絡,導致所有的計算機都收到了它。如此一來,一方面廣播信息消耗了網絡整體的帶寬,另一方面,收到廣播信息的計算機還要消耗一部分CPU時間來對它進行處理。造成了網絡帶寬和CPU運算能力的大量無謂消耗。

 

2.廣播信息真是那麼頻繁的出現嗎?

答案是:是的!實際上廣播幀會非常頻繁地出現。利用TCP/IP協議棧通信時,除了前面出現的ARP外,還有可能需要發出DHCP、RIP等很多其他類型的廣播信息。

 

3.廣播域的分割與VLAN的必要性

分割廣播域時,一般都必須使用到路由器。使用路由器後,可以以路由器上的網絡接口(LAN Interface)爲單位分割廣播域

但是,通常情況下路由器上不會有太多的網絡接口,其數目多在1~4個左右。隨着寬帶連接的普及,寬帶路由器(或者叫IP共享器)變得較爲常見,但是需要注意的是,它們上面雖然帶着多個(一般爲4個左右)連接LAN一側的網絡接口,但那實際上是路由器內置的交換機,並不能分割廣播域

況且使用路由器分割廣播域的話,所能分割的個數完全取決於路由器的網絡接口個數,使得用戶無法自由地根據實際需要分割廣播域。

與路由器相比,二層交換機一般帶有多個網絡接口。因此如果能使用它分割廣播域,那麼無疑運用上的靈活性會大大提高。

用於在二層交換機上分割廣播域的技術,就是VLAN。通過利用VLAN,我們可以自由設計廣播域的構成,提高網絡設計的自由度。

 

4.VLAN技術的優勢

1)限制廣播域:廣播域被限制在一個VLAN內,節省了帶寬,提高了網絡處理能力。

2)增強局域網的安全性:不同VLAN內的報文在傳輸時是相互隔離的,即一個VLAN內的用戶不能和其它VLAN內的用戶直接通信。

3)提高網絡的健壯性:故障被限制在一個VLAN內,本VLAN內的故障不會影響其他VLAN的正常工作。

4)靈活構建虛擬工作組:用VLAN可以劃分不同的用戶到不同的工作組,同一工作組的用戶也不必侷限於某一固定的物理範圍,網絡構建和維護更方便靈活。

 

實現VLAN的機制

1.簡單的實現VLAN

在理解了“爲什麼需要VLAN”之後,接下來讓我們來了解一下交換機是如何使用VLAN分割廣播域的。

首先,在一臺未設置任何VLAN的二層交換機上,任何廣播幀都會被轉發給除接收端口外的所有其他端口(Flooding)。例如,計算機A發送廣播信息後,會被轉發給端口2、3、4。

這時,如果在交換機上生成紅、藍兩個VLAN;同時設置端口1、2屬於紅色VLAN、端口3、4屬於藍色VLAN。再從A發出廣播幀的話,交換機就只會把它轉發給同屬於一個VLAN的其他端口——也就是同屬於紅色VLAN的端口2,不會再轉發給屬於藍色VLAN的端口。

同樣,C發送廣播信息時,只會被轉發給其他屬於藍色VLAN的端口,不會被轉發給屬於紅色VLAN的端口。

就這樣,VLAN通過限制廣播幀轉發的範圍分割了廣播域。上圖中爲了便於說明,以紅、藍兩色識別不同的VLAN,在實際使用中則是用“VLAN ID”來區分的。

 

2.直觀的描述VLAN

如果要更爲直觀地描述VLAN的話,我們可以把它理解爲將一臺交換機在邏輯上分割成了數臺交換機。在一臺交換機上生成紅、藍兩個VLAN,也可以看作是將一臺交換機換做一紅一藍兩臺虛擬的交換機。

在紅、藍兩個VLAN之外生成新的VLAN時,可以想象成又添加了新的交換機。

但是,VLAN生成的邏輯上的交換機是互不相通的。因此,在交換機上設置VLAN後,如果未做其他處理,VLAN間是無法通信的。

明明接在同一臺交換機上,但卻偏偏無法通信——這個事實也許讓人難以接受。但它既是VLAN方便易用的特徵,又是使VLAN令人難以理解的原因。

 

3.需要VLAN間通信時怎麼辦?

那麼,當我們需要在不同的VLAN間通信時又該如何是好呢?

請大家再次回憶一下:VLAN是廣播域。而通常兩個廣播域之間由路由器連接,廣播域之間來往的數據包都是由路由器中繼的。因此,VLAN間的通信也需要路由器提供中繼服務,這被稱作“VLAN間路由”。

VLAN間路由,可以使用普通的路由器,也可以使用三層交換機。其中的具體內容,等有機會再細說吧。在這裏希望大家先記住不同VLAN間互相通信時需要用到路由功能。

 

交換機的端口,可以分爲以下兩種:

(1)訪問鏈接(Access Link)

(2)匯聚鏈接(Trunk Link)

靜態VLAN和動態VLAN的相關信息

靜態VLAN(基於端口的VLAN)將交換機的各端口固定指派給VLAN

動態VLAN基於MAC地址的VLAN根據各端口所連計算機的MAC地址設定

基於子網的VLAN根據各端口所連計算機的IP地址設定

基於用戶的VLAN根據端口所連計算機上登錄用戶設定

 

VLAN的訪問鏈接(Access Link)

訪問鏈接,指的是“只屬於一個VLAN,且僅向該VLAN轉發數據幀”的端口。在大多數情況下,訪問鏈接所連的是客戶機。

通常設置VLAN的順序是:

(1)生成VLAN

(2)設定訪問鏈接(決定各端口屬於哪一個VLAN)

設定訪問鏈接的手法,可以是事先固定的、也可以是根據所連的計算機而動態改變設定。前者被稱爲“靜態VLAN”、後者自然就是“動態VLAN”了。

● 靜態VLAN——基於端口

靜態VLAN又被稱爲基於端口的VLAN(PortBased VLAN)。顧名思義,就是明確指定各端口屬於哪個VLAN的設定方法。

● 動態VLAN

另一方面,動態VLAN則是根據每個端口所連的計算機,隨時改變端口所屬的VLAN。動態VLAN可以大致分爲3類:

(1)基於MAC地址的VLAN(MAC Based VLAN)

(2)基於子網的VLAN(Subnet Based VLAN)

(3)基於用戶的VLAN(User Based VLAN)

其間的差異,主要在於根據OSI參照模型哪一層的信息決定端口所屬的VLAN。

● 基於MAC地址的VLAN

● 基於IP地址的VLAN

● 基於用戶的VLAN

基於用戶的VLAN,則是根據交換機各端口所連的計算機上當前登錄的用戶,來決定該端口屬於哪個VLAN。這裏的用戶識別信息,一般是計算機操作系統登錄的用戶,比如可以是Windows域中使用的用戶名。這些用戶名信息,屬於OSI第四層以上的信息。

 

VLAN的匯聚鏈接(Trunk Link)

1.需要設置跨越多臺交換機的VLAN時……

到此爲止,我們學習的都是使用單臺交換機設置VLAN時的情況。那麼,如果需要設置跨越多臺交換機的VLAN時又如何呢?

在規劃企業級網絡時,很有可能會遇到隸屬於同一部門的用戶分散在同一座建築物中的不同樓層的情況,這時可能就需要考慮到如何跨越多臺交換機設置VLAN的問題了。假設有如下圖所示的網絡,且需要將不同樓層的A、C和B、D設置爲同一個VLAN。

這時最關鍵的就是“交換機1和交換機2該如何連接纔好呢?”

最簡單的方法,自然是在交換機1和交換機2上各設一個紅、藍VLAN專用的接口並互聯了。

但是,這個辦法從擴展性和管理效率來看都不好。例如,在現有網絡基礎上再新建VLAN時,爲了讓這個VLAN能夠互通,就需要在交換機間連接新的網線。建築物樓層間的縱向佈線是比較麻煩的,一般不能由基層管理人員隨意進行。並且,VLAN越多,樓層間(嚴格地說是交換機間)互聯所需的端口也越來越多,交換機端口的利用效率低是對資源的一種浪費、也限制了網絡的擴展。

爲了避免這種低效率的連接方式,人們想辦法讓交換機間互聯的網線集中到一根上,這時使用的就是匯聚鏈接(Trunk Link)

 

2.何謂匯聚連接?

匯聚鏈接(Trunk Link)指的是能夠轉發多個不同VLAN的通信的端口

匯聚鏈路上流通的數據幀,都被附加了用於識別分屬於哪個VLAN的特殊信息

現在再讓我們回過頭來考慮一下剛纔那個網絡如果採用匯聚鏈路又會如何呢?用戶只需要簡單地將交換機間互聯的端口設定爲匯聚鏈接就可以了。這時使用的網線還是普通的UTP線,而不是什麼其他的特殊佈線。圖例中是交換機間互聯,因此需要用交叉線來連接。

接下來,讓我們具體看看匯聚鏈接是如何實現跨越交換機間的VLAN的。

A發送的數據幀從交換機1經過匯聚鏈路到達交換機2時,在數據幀上附加了表示屬於紅色VLAN的標記。

交換機2收到數據幀後,經過檢查VLAN標識發現這個數據幀是屬於紅色VLAN的,因此去除標記後根據需要將復原的數據幀只轉發給其他屬於紅色VLAN的端口。這時的轉送,是指經過確認目標MAC地址並與MAC地址列表比對後只轉發給目標MAC地址所連的端口。只有當數據幀是一個廣播幀、多播幀或是目標不明的幀時,它纔會被轉發到所有屬於紅色VLAN的端口。

藍色VLAN發送數據幀時的情形也與此相同。

通過匯聚鏈路時附加的VLAN識別信息,有可能支持標準的“IEEE 802.1Q”協議,也可能是Cisco產品獨有的“ISL(Inter Switch Link)”。如果交換機支持這些規格,那麼用戶就能夠高效率地構築橫跨多臺交換機的VLAN。

另外,匯聚鏈路上流通着多個VLAN的數據,自然負載較重。因此,在設定匯聚鏈接時,有一個前提就是必須支持100Mbps以上的傳輸速度。

另外,默認條件下,匯聚鏈接會轉發交換機上存在的所有VLAN的數據。換一個角度看,可以認爲匯聚鏈接(端口)同時屬於交換機上所有的VLAN。由於實際應用中很可能並不需要轉發所有VLAN的數據,因此爲了減輕交換機的負載、也爲了減少對帶寬的浪費,我們可以通過用戶設定限制能夠經由匯聚鏈路互聯的VLAN。

 

VLAN間路由

1.VLAN間路由的必要性

根據目前爲止學習的知識,我們已經知道兩臺計算機即使連接在同一臺交換機上,只要所屬的VLAN不同就無法直接通信。接下來我們將要學習的就是如何在不同的VLAN間進行路由,使分屬不同VLAN的主機能夠互相通信。

首先,先來複習一下爲什麼不同VLAN間不通過路由就無法通信。在LAN內的通信,必須在數據幀頭中指定通信目標的MAC地址。而爲了獲取MAC地址,TCP/IP協議下使用的是ARP。ARP解析MAC地址的方法,則是通過廣播。也就是說,如果廣播報文無法到達,那麼就無從解析MAC地址,亦即無法直接通信。

計算機分屬不同的VLAN,也就意味着分屬不同的廣播域,自然收不到彼此的廣播報文。因此,屬於不同VLAN的計算機之間無法直接互相通信。爲了能夠在VLAN間通信,需要利用OSI參照模型中更高一層——網絡層的信息(IP地址)來進行路由。關於路由的具體內容,以後有機會再詳細解說吧。

路由功能,一般主要由路由器提供。但在今天的局域網裏,我們也經常利用帶有路由功能的交換機——三層交換機(Layer 3 Switch)來實現。接下來就讓我們分別看看使用路由器和三層交換機進行VLAN間路由時的情況。

 

2.使用路由器進行VLAN間路由

在使用路由器進行VLAN間路由時,與構建橫跨多臺交換機的VLAN時的情況類似,我們還是會遇到“該如何連接路由器與交換機”這個問題。路由器和交換機的接線方式,大致有以下兩種:

(1)將路由器與交換機上的每個VLAN分別連接

(2)不論VLAN有多少個,路由器與交換機都只用一條網線連接

最容易想到的,當然還是“把路由器和交換機以VLAN爲單位分別用網線連接”了。將交換機上用於和路由器互聯的每個端口設爲訪問鏈接(Access Link),然後分別用網線與路由器上的獨立端口互聯。如下圖所示,交換機上有2個VLAN,那麼就需要在交換機上預留2個端口用於與路由器互聯;路由器上同樣需要有2個端口;兩者之間用2條網線分別連接。

如果採用這個辦法,大家應該不難想象它的擴展性很成問題。每增加一個新的VLAN,都需要消耗路由器的端口和交換機上的訪問鏈接,而且還需要重新佈設一條網線。而路由器,通常不會帶有太多LAN接口的。新建VLAN時,爲了對應增加的VLAN所需的端口,就必須將路由器升級成帶有多個LAN接口的高端產品,這部分成本、還有重新佈線所帶來的開銷,都使得這種接線法成爲一種不受歡迎的辦法。

那麼,第二種辦法“不論VLAN數目多少,都只用一條網線連接路由器與交換機”呢?當使用一條網線連接路由器與交換機、進行VLAN間路由時,需要用到匯聚鏈接

具體實現過程爲:首先將用於連接路由器的交換機端口設爲匯聚鏈接(Trunk Link),而路由器上的端口也必須支持匯聚鏈路。雙方用於匯聚鏈路的協議自然也必須相同。接着在路由器上定義對應各個VLAN的“子接口”(Sub Interface)。儘管實際與交換機連接的物理端口只有一個,但在理論上我們可以把它分割爲多個虛擬端口。

VLAN將交換機從邏輯上分割成了多臺,因而用於VLAN間路由的路由器,也必須擁有分別對應各個VLAN的虛擬接口。

採用這種方法的話,即使之後在交換機上新建VLAN,仍只需要一條網線連接交換機和路由器。用戶只需要在路由器上新設一個對應新VLAN的子接口就可以了。與前面的方法相比,擴展性要強得多,也不用擔心需要升級LAN接口數不足的路由器或是重新佈線。

 

3.同一VLAN內的通信

接下來,我們繼續學習使用匯聚鏈路連接交換機與路由器時,VLAN間路由是如何進行的。如下圖所示,爲各臺計算機以及路由器的子接口設定IP地址。

紅色VLAN(VLAN ID=1)的網絡地址爲192.168.1.0/24,藍色VLAN(VLAN ID=2)的網絡地址爲192.168.2.0/24。各計算機的MAC地址分別爲A/B/C/D,路由器匯聚鏈接端口的MAC地址爲R。交換機通過對各端口所連計算機MAC地址的學習,生成如下的MAC地址列表。

首先考慮計算機A與同一VLAN內的計算機B之間通信時的情形。

計算機A發出ARP請求信息,請求解析B的MAC地址。交換機收到數據幀後,檢索MAC地址列表中與收信端口同屬一個VLAN的表項。結果發現,計算機B連接在端口2上,於是交換機將數據幀轉發給端口2,最終計算機B收到該幀。收發信雙方同屬一個VLAN之內的通信,一切處理均在交換機內完成

 

4.不同VLAN間的通信

接下來是這一講的核心內容,不同VLAN間的通信。讓我們來考慮一下計算機A與計算機C之間通信時的情況。

計算機A從通信目標的IP地址(192.168.2.1)得出C與本機不屬於同一個網段因此會向設定的默認網關(DefaultGateway,GW)轉發數據幀。在發送數據幀之前,需要先用ARP獲取路由器的MAC地址。

得到路由器的MAC地址R後,接下來就是按圖中所示的步驟發送往C去的數據幀。①的數據幀中,目標MAC地址是路由器的地址R、但內含的目標IP地址仍是最終要通信的對象C的地址。這一部分的內容,涉及到局域網內經過路由器轉發時的通信步驟,有機會再詳細解說吧。

交換機在端口1上收到①的數據幀後,檢索MAC地址列表中與端口1同屬一個VLAN的表項。由於匯聚鏈路會被看作屬於所有的VLAN,因此這時交換機的端口6也屬於被參照對象。這樣交換機就知道往MAC地址R發送數據幀,需要經過端口6轉發。

端口6發送數據幀時,由於它是匯聚鏈接,因此會被附加上VLAN識別信息。由於原先是來自紅色VLAN的數據幀,因此如圖中②所示,會被加上紅色VLAN的識別信息後進入匯聚鏈路。路由器收到②的數據幀後,確認其VLAN識別信息,由於它是屬於紅色VLAN的數據幀,因此交由負責紅色VLAN的子接口接收

接着,根據路由器內部的路由表,判斷該向哪裏中繼。

由於目標網絡192.168.2.0/24是藍色VLAN,且該網絡通過子接口與路由器直連,因此只要從負責藍色VLAN的子接口轉發就可以了。這時,數據幀的目標MAC地址被改寫成計算機C的目標地址;並且由於需要經過匯聚鏈路轉發,因此被附加了屬於藍色VLAN的識別信息。這就是圖中③的數據幀。

交換機收到③的數據幀後,根據VLAN標識信息從MAC地址列表中檢索屬於藍色VLAN的表項。由於通信目標——計算機C連接在端口3上、且端口3爲普通的訪問鏈接,因此交換機會將數據幀去除VLAN識別信息後(數據幀④)轉發給端口3,最終計算機C才能成功地收到這個數據幀

進行VLAN間通信時,即使通信雙方都連接在同一臺交換機上,也必須經過:“發送方——交換機——路由器——交換機——接收方”這樣一個流程。

 

5. 使用路由器進行VLAN間路由時的問題

現在,我們知道只要能提供VLAN間路由,就能夠使分屬不同VLAN的計算機互相通信。但是,如果使用路由器進行VLAN間路由的話,隨着VLAN之間流量的不斷增加,很可能導致路由器成爲整個網絡的瓶頸

交換機使用被稱爲ASIC(ApplicationSpecified Integrated Circuit)的專用硬件芯片處理數據幀的交換操作,在很多機型上都能實現以纜線速度(Wired Speed)交換。而路由器,則基本上是基於軟件處理的。即使以纜線速度接收到數據包,也無法在不限速的條件下轉發出去,因此會成爲速度瓶頸。就VLAN間路由而言,流量會集中到路由器和交換機互聯的匯聚鏈路部分,這一部分尤其特別容易成爲速度瓶頸。並且從硬件上看,由於需要分別設置路由器和交換機,在一些空間狹小的環境裏可能連設置的場所都成問題。

 

三層交換機

爲了解決上述問題,三層交換機應運而生。三層交換機,本質上就是“帶有路由功能的(二層)交換機”。路由屬於OSI參照模型中第三層網絡層的功能,因此帶有第三層路由功能的交換機才被稱爲“三層交換機”。

關於三層交換機的內部結構,可以參照下面的簡圖。

在一臺本體內,分別設置了交換機模塊和路由器模塊;而內置的路由模塊與交換模塊相同,使用ASIC硬件處理路由。因此,與傳統的路由器相比,可以實現高速路由。並且,路由與交換模塊是匯聚鏈接的,由於是內部連接,可以確保相當大的帶寬。

● 使用三層交換機進行VLAN間路由(VLAN內通信)

在三層交換機內部數據究竟是怎樣傳播的呢?基本上,它和使用匯聚鏈路連接路由器與交換機時的情形相同

假設有如下圖所示的4臺計算機與三層交換機互聯。當使用路由器連接時,一般需要在LAN接口上設置對應各VLAN的子接口;而三層交換機則是在內部生成“VLAN接口”(VLAN Interface)。VLAN接口,是用於各VLAN收發數據的接口。(注:在Cisco的Catalyst系列交換機上,VLAN Interface被稱爲SVI——Switched Virtual Interface)

爲了與使用路由器進行VLAN間路由對比,讓我們同樣來考慮一下計算機A與計算機B之間通信時的情況。首先是目標地址爲B的數據幀被髮到交換機;通過檢索同一VLAN的MAC地址列表發現計算機B連在交換機的端口2上;因此將數據幀轉發給端口2。

● 使用三層交換機進行VLAN間路由(VLAN間通信)

接下來設想一下計算機A與計算機C間通信時的情形。針對目標IP地址,計算機A可以判斷出通信對象不屬於同一個網絡,因此向默認網關發送數據(Frame 1)。

交換機通過檢索MAC地址列表後,經由內部匯聚鏈接,將數據幀轉發給路由模塊。在通過內部匯聚鏈路時,數據幀被附加了屬於紅色VLAN的VLAN識別信息(Frame 2)。

路由模塊在收到數據幀時,先由數據幀附加的VLAN識別信息分辨出它屬於紅色VLAN,據此判斷由紅色VLAN接口負責接收並進行路由處理因爲目標網絡192.168.2.0/24是直連路由器的網絡、且對應藍色VLAN;因此,接下來就會從藍色VLAN接口經由內部匯聚鏈路轉發回交換模塊在通過匯聚鏈路時,這次數據幀被附加上屬於藍色VLAN的識別信息(Frame 3)。

交換機收到這個幀後,檢索藍色VLAN的MAC地址列表,確認需要將它轉發給端口3。由於端口3是通常的訪問鏈接,因此轉發前會先將VLAN識別信息去除(Frame 4)。最終,計算機C成功地收到交換機轉發來的數據幀。

整體的流程,與使用外部路由器時的情況十分相似——都需要經過“發送方→交換模塊→路由模塊→交換模塊→接收方”。

 

傳統型路由器存在的意義

(1)用於與WAN連接

(2)保證網絡安全

(3)支持除TCP/IP以外的異構網絡架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章