《計算機網路微課堂》3-11 虛擬區域網 VLAN

peterjxl發表於2024-05-26

本節課我們介紹虛擬區域網 VLAN 的基本概念。

3.11.1 虛擬區域網 VLAN 概述

在之前課程中我們已經介紹過了乙太網交換機自學習和轉發幀的流程,‍‍以及為避免網路環路而產生的生成樹協議。

乙太網交換機工作在資料鏈路層,‍‍也包括物理層,使用一個或多個乙太網交換機互聯起來的交換式乙太網,其所有站點‍‍都屬於同一個廣播域。‍‍

隨著交換式乙太網規模的擴大,廣播域相應擴大,如圖所示,‍‍這是一個由多個乙太網交換機互聯而成的交換式乙太網。‍‍每個乙太網交換機上都連線了多個主機,‍‍形成了一個巨大的廣播域。

然而巨大的廣播域會帶來很多弊端,例如廣播風暴、‍‍難以管理和維護潛在的安全問題等。

‍‍我們來舉例說明廣播風暴的問題,‍‍假設網路中的某個主機‍‍要給另一個主機傳送一個資料幀,但是在自己的 ARP 快取記憶體表中,‍‍無法查到目的主機的 MAC 地址,於是首先要傳送 ARP 廣播請求來獲取目的主機的 MAC 地址。‍‍該 ARP 廣播請求會傳遍整個網路,網路中的其他所有主機都可以收到該廣播。‍‍這種情況就是所謂的廣播風暴,廣播風暴會浪費網路資源和網路中各主機的 CPU 資源,‍‍因此除非應用需求必須要使用廣播,否則網路中的主機應儘量不使用廣播。‍‍

也許有的同學會有這樣的想法,‍‍如果網路中只是偶爾出現廣播,那還是可以接受的,但事實上‍‍網路中會頻繁出現廣播資訊。‍‍目前使用最廣泛的 tcpip 協議當中的很多協議‍‍都會使用廣播,例如地址解析協議 ARP,路由資訊協議 rap‍‍,動態主機配置協議 dhcp 等。除此之外,其他一些協議站也會頻繁使用廣播。

那麼‍‍如何才能將較大的廣播域分割成更小的廣播域?使用路由器就可以隔離廣播域。如圖所示,這是由兩臺乙太網交換機互聯而成的交換式乙太網。‍‍網路中的各主機同屬於一個廣播域,使用路由器可以將該廣播域分割成兩個較小的廣播域。‍‍路由器工作在網路體系結構的第三層,也就是網路層。

由於路由器預設情況下,‍‍不對廣播資料包進行轉發,因此路由器很自然的就可以隔離廣播域。‍‍然而‍‍路由器的成本較高,區域網內部全部使用路由器來隔離廣播域是不現實的。‍‍

在這種情況下,‍‍虛擬區域網技術應運而生,‍‍虛擬區域網的英文縮寫詞為 VLAN,它是一種將區域網內的裝置‍‍劃分成與物理位置無關的邏輯組的技術。這些邏輯組具有某些共同的需求。‍‍如圖所示‍‍一樓、二樓、三樓分別有一個區域網,可將他們透過另外一個交換機互聯成一個更大的區域網,‍‍那麼原來每一個區域網成為現在區域網的一個網段,網路中的各主機屬於同一個廣播域,‍‍某個主機傳送到廣播資料包,其他所有主機都可以收到。

‍‍根據應用需求,‍‍我們將該區域網劃分成兩個 VLAN,VLAN1 和 VLAN1。此後‍‍VLAN1 中的廣播資料包不會傳送到 VLAN2,VLAN2 中的廣播資料包也不會傳送到 VLAN1,‍‍也就是說同一個 VLAN 內部可以廣播通訊,不同 VLAN 之間不能廣播通訊。

小結:

3.11.2 虛擬區域網 VLAN 的實現機制

本節課我們介紹虛擬區域網 VLAN 的實現機制,‍‍虛擬區域網 VLAN 是在交換機上實現的,需要交換機能夠實現以下兩大功能:

  • 一個是能夠處理帶有 VLAN 標記的幀,也就是 IEEE 802.1Q 幀
  • 另一個是交換機的各埠,‍‍可以支援不同的埠型別,不同埠型別的埠,對幀的處理方式有所不同

我們首先來看‍‍ IEEE802.1q 幀,‍‍也稱為 dot one q 幀。他對乙太網的 MAC 幀格式進行了擴充套件,插入了四位元組的 VLAN 標記,‍‍如圖所示,這是乙太網版本 2 的 MAC 格式,這是插入 VLAN 標記後的 802.1q 幀的格式:

VLAN 標記的最後 12 個位元稱為 VLAN 識別符號 vid,它唯一的標識了乙太網幀屬於哪一個 VLAN , ‍‍Vid 的取值範圍是 0~4095,其中 0 和 4095 都不用來表示 VLAN,因此‍‍用於表示 VLAN 的 vid 的有效取值範圍是 1~4094。

需要注意的是‍‍802.1q 幀是由交換機來處理的,而不是使用者主機來處理的。‍‍當交換機收到普通的乙太網幀時‍‍會將其插入四位元組的 VLAN 標記,將其轉變為 802.1q 幀,簡稱為打標籤。‍‍

當交換機轉發 802.1q 幀時,可能會刪除其 4 位元組 VLAN 標記,‍‍將其轉變為普通乙太網幀,簡稱為去標籤,VLAN 標記欄位的其他內容,‍‍對我們理解 VLAN 劃分機制來說,並沒有什麼幫助,因此就要不再贅述了。‍‍


接下來我們介紹交換機的埠型別,交換機的埠型別一般有以下三種,它們分別是 Access,Trunk,Hybrid。

總結:

Access 接受沒標籤的,只轉發同 ID 的,轉發前去標籤。

Trunk 總結:

  • 如果收到的幀 ID 值不相等,直接轉發
  • 如果收到的幀 ID 相等,傳送前去標籤
  • 如果沒有 ID,則打標籤

需要說明的是思科交換機沒有 Hybrid 埠。在介紹這三種交換機埠型別之前,我們首先需要了解一下埠的預設 VLAN ID 這個概念,在思科交換機上將其稱為本徵 VLAN。

例如思科交換機在使用者未配置 VLAN 時,所有埠都預設屬於 VLAN1,即所有埠的本幀 VLAN 都是 VLAN1,而在華為交換機上將其稱為埠 VLAN ID 剪輯為 PVID。 在我們接下來的介紹中,為了描述方便,我們採用 PVID 而不是本徵 VLAN。需要注意的是交換機的每個埠,有且僅有一個 PVID:


接下來我們首先介紹 Access 埠,Access 埠一般用於連線使用者計算機,只能屬於一個 VLAN,因此 Access 埠的 PVID 值與埠所屬 VLAN 的 ID 相同,如圖所示主機 ABCD 分別連線在交換機的一個埠上,交換機首次上電時,預設配置各埠屬於 VLAN1,也就是各埠的 PVID 值等於 1,預設配置各埠的型別為 Access,我們用大寫字母 A 來表示。

Access 埠的接收處理方法是一般只接受未打標籤的普通乙太網 MAC 幀,根據接收幀的埠的 PVID 給幀打標籤,即插入四位元組 VLAN 標記欄位,欄位中的 VID 取值與埠的 PVID 取值相等。

我們來舉例說明,假設主機 A 傳送了一個廣播幀,該幀從交換機的埠一進入交換機,由於埠一的型別是 Access,它會對接收到的未打標籤的普通乙太網 MAC 幀,打標籤,也就是插入四位元組的 VLAN 標記欄位,如圖所示,由於埠一的 PVID 值等於一,因此所插入的四位元組 VLAN 記欄位中的 VID 的值也等於 1。

Access 埠的傳送處理方法是若幀中的 VID 與埠的 PVID 相等,則去標籤後轉發該幀,否則不轉發。對於本例廣播幀中的 VID 的取值與埠 234 的 PVID 取值都等於 1,因此交換機會從這三個埠對幀進行去標籤轉發。

總結:接受沒標籤的,轉發同 ID 的


再來看這個例子,我們的應用需求是將主機 A 和 B 劃歸到 VLAN2,將 C 和 D 劃歸到 VLAN3,這樣 VLAN2 中的廣播幀不會傳送到 VLAN3,VLAN3 中的廣播幀也不會傳送到 VLAN2,為了實現這種應用,可以在交換機上建立 VLAN2 和 VLAN3,然後將交換機的埠一和二劃歸到 VLAN2,因此埠 1 和 2 的 PVID 值等於 2,將交換機的埠 3 和 4 劃歸到 VLAN3,因此埠 3 和 4 的 PVID 值等於 3。

我們來看主機 A 傳送廣播幀的情況,該幀從交換機的埠 1 進入交換機,由於埠 1 的型別是 Access,它會對接收到的未打標籤的普通乙太網 MAC 幀打標籤,也就是插入四位元組的 VLAN 標記欄位,如圖所示,由於埠 1 的 PVI D 值等於 2,因此所插入的四位元組 VLAN 標記欄位中的 VID 的值也等於 2,廣播幀中的 VID 的取值與埠二的 PVID 取值都等於 2,因此交換機會從埠二對幀進行去標籤轉發。


我們再來看主機 C 傳送廣播幀的情況,該幀從交換機的埠三進入交換機,由於埠三的型別是 Access,它會對接收到的未打標籤的普通乙太網 MAC 幀打標籤,也就是插入四位元組的 VLAN 標記欄位,如圖所示由於埠三的 PVID 值等於 3,因此所插入的四位元組 VLAN 標記欄位中的 VID 的值也等於 3,廣播幀中的 VID 的取值與埠 4 的 PVID 取值都等於 3,因此交換機會從埠 4 對幀進行去標籤轉發。


接下來我們介紹 Trunk 埠,Trunk 埠一般用於交換機之間 或交換機與路由器之間的互聯,使不同交換機的主機可以屬於同個 VLAN。

Trunk 埠可以屬於多個 VLAN,也就是說 Trunk 埠可以接收和傳送多個 VLAN 的幀,使用者可以設定 Trunk 埠的 PVID 值,預設情況下 Trunk 埠的 PVID 值為 1,

我們來舉例說明 Trunk 埠的功能,如圖所示,兩臺交換機互聯而成了一個交換式乙太網,我們的應用需求是將主機 ABEF 劃歸到 VLAN1,將主機 CDGH 劃歸到 VLAN2,由於交換機首次上電時預設配置各埠屬於 VLAN1,其相應的 PVID 值等於 1,並且埠的型別為 Access,因此我們需要對交換機進行相應的配置,才能滿足應用需求,分別在兩個交換機上建立 VLAN2,並將他們的埠 3 和 4 都劃歸到 VLAN2,其相應的 PVID 值=2,而兩個交換機的埠一和二保持預設配置即可,也就是屬於 VLAN1,其相應的 PVID 值等於 1。

特別需要注意的是兩個交換機互聯的埠 5,需要將他們的型別更改為 Trunk 型別,而他們的 PVID 值保持預設的 1 即可。Trunk 埠的傳送處理方法是對 VID 等於 PVID 的幀去標籤再轉發。假設主機 A 傳送了一個廣播幀,該幀從交換機一的埠 1 進入交換機,由於埠一的型別是 Access,它會對接收到的未打標籤的普通乙太網 MAC 幀打標籤,也就是插入四位元組的 VLAN 標記欄位,如圖所示。由於埠 1 的 PVID 值等於 1,因此所插入的四位元組 VLAN 標記欄位中的 VID 的值也等於 1。該廣播幀中的 VID 的取值與埠二的 PVID 值都等於 1,埠二的型別是 Access,因此交換機一會從埠 2 對幀進行去標籤轉發

該廣播幀中的 VID 的取值與埠 5 的 PVID 值都等於 1,埠 5 的型別是 Trunk,因此交換機一會從埠 5 對幀進行去標籤轉發,很顯然該廣播幀會從交換機 2 的埠 5 進入交換機二,Trunk 埠的接收處理方法是接收未打標籤的幀,根據接收幀的埠的 PVID 給幀打標籤,即插入四位元組 VLAN 標記欄位,欄位中的 VID 取值與埠的 PVID 取值相等。對於本例交換機 2 會對接收到的未打標籤的普通乙太網 MAC 幀打標籤,也就是插入 4 位元組的 VLAN 標記欄位。如圖所示,由於埠 5 的 PVID 值等於 1,因此所插入的 4 自位元組 VLAN 標記欄位中的 VIP 的值也等於 1

該廣播幀中的 VID 的取決與埠 1 和 2 的 PVID 值都等於 1,埠 1 和 2 的型別都是 Access,因此交換機 1 會從埠 1 和 2 對幀進行去標籤轉發。

總結:

  • 如果收到的幀 ID 值不相等,直接轉發
  • 如果收到的幀 ID 相等,傳送前去標籤
  • 如果沒有 ID,則打標籤

再來看主機 C 傳送廣播幀的情況,該幀從交換機 1 的埠 3 進入交換機,由於埠三的型別是 Access,它會對接收到的未打標籤的普通乙太網 MAC 幀打標籤,也就是插入四位元組的 VLAN 標記欄位。如圖所示,由於埠 3 的 PVID 值=2,因此所插入的 4 自位元組 VLAN 標標記欄位中的 VID 的值也等於 2,該廣播站中的 VID 的取值與埠 4 的 PVI D 值都等於 2,埠 4 的型別是 Access,因此交換機 1 會從埠 4 對幀進行去標籤轉發。

該廣播幀中的 VID 的取值與埠 5 的 PVID 值不相等,由於 Trunk 埠對 VID 不等於 PVID 的,幀是直接轉發的,因此交換機 1 會從埠 5 對幀直接轉發,也就是不去掉標籤,而帶著標籤直接轉發。很顯然該 802.1Q 廣播幀會從交換機 2 的埠 5 進入交換機 2 Trunk 埠,接收已打標籤的 802.1Q 幀,該廣播幀中的 VID 的取值與埠 3 和 4 的 PVID 值都等於 2,埠 3 和 4 的型別都是 Access 型別,因此交換機二會從埠 3 和 4 對幀進行去標籤轉發。透過本例可以看出,再由多個交換機互聯而成的交換式乙太網裝,劃分 VLAN 時,連線主機的交換機埠,應設定為 Access 型別,交換機之間互聯的埠應設定為 Trunk 型別。

接下來請同學們做一個練習題,以加深對 Access 埠和 Trunk、埠功能的理解。本題的答案如下所示,希望大家都能解答正確。

最後我們簡單介紹一下華為交換機私有的 Hybrid 埠型別,Hybrid 的埠即可用於交換機之間或交換機與路由器之間的互聯,這一點與 Trunk 埠相同,也可用於交換機與使用者計算機之間的互聯,這一點又與 Access 埠相同。

除此之外,Hybrid 埠的絕大部分功能與 Trunk 埠相同,不同點在於 Hybrid 埠的傳送處理方法,Hybrid 的埠會檢視幀的 VID 是否在埠的區域標籤列表中,若存在則去標籤後再轉發,若不存在則直接轉發。

接下來我們透過一個簡單的應用例項來說明 Hybrid 埠的功能。主機 ABC 連線在同一個交換機的不同介面上,請利用 Hybrid 埠的功能實現以下應用需求,A 和 B 都能與 C 相互通訊,但 A 與 B 不能相互通訊,如圖所示,

我們可以將這三臺主機所連線的交換機的三個埠劃分到不同的 VLAN,並且埠型別設定為 Hybrid。假設這三個 VLAN 分別是 VLAN10、VLAN20、VLAN30,相應的 PVID 分別為 10,20,30。

在埠一的區域標籤列表中,配置 VLAN10 和 VLAN30。

在埠二的去標籤列表中配置 VLAN20 和 VLAN30,在埠三的去標籤列表中配置 VLAN10,VLAN20,VLAN30,主機 A 給 C 傳送資料幀,該幀從交換機的埠 1 進入交換機,由於埠 1 的型別是 Hybrid 的,他會對接收到的未打標籤的普通乙太網 MAC 幀打標籤,也就是插入四位元組的 VLAN 標記欄位,如圖所示,由於埠一的 PVID 值等於 10,因此所插入的四位元組 VLAN 標記欄位中的 VID 的值也等於 10,該幀將從埠三轉發,由於幀中的 VID 的取值在埠 3 的區標籤列表中,因此該幀會被去標籤轉發,這樣主機 C 就可以收到主機 A 傳送的資料幀。

同理,主機 C 給 A 傳送資料幀,主機 A 同樣可以收到,我們就要不再演示了。

那麼主機 B 給 C 傳送資料幀的具體過程又如何呢?如圖所示。

同理,主機 C 給 B 傳送資料幀,主機 B 同樣可以收到,我們就要不再演示了。

再來看看主機 A 給 B 傳送資料幀的情況,該幀從交換機的埠一進入交換機,給該幀打標籤,其中 VIP 取值為 10,該幀將從埠 2 轉發,由於幀中的 VID 的取值,不在埠 2 的去標籤列表中,因此該幀被直接轉發,這樣主機 B 就會收到一個帶有 VLAN 標記的 802.1Q 幀,但是主機 B 可以識別普通乙太網 MAC 幀,而不能識別 802.1Q 幀,只能丟棄該幀。

同理,主機 B 給 A 傳送的普通乙太網 MAC 幀,主機 A 收到的卻是 802.1Q 幀,無法識別而丟棄。

本節課的內容小結如下:

相關文章