VLAN工作原理 - kummer話你知

什么是VLAN

VLAN(Virtual LAN),翻譯成中文是“虛擬局域網”??梢钥醋鍪窃谝粋€物理局域網絡上搭建出幾個邏輯上分離的幾個局域網。舉個例子來說,如果一個交換機劃分為兩個VLAN,則相當于這臺交換機邏輯上劃分為兩個交換機。


VLAN的一個簡單直觀說明:物理上一個交換機,分為邏輯上兩個分離的交換機

上面這個簡單例子是對一臺交換機上的VLAN劃分,實際上VLAN也可以跨越多臺交換機,本質上VLAN是一個網絡層次上的概念,將整個網絡劃分為多個邏輯上隔離的網絡(一個VLAN就是一個獨立的廣播域)比如下圖的VLAN2和VLAN5。

跨越多臺交換機的VLAN

那么我們為什么要引入VLAN的概念,VLAN究竟有哪些好處,總結起來主要有下面幾點:

  1. 更安全:數據包僅在本VLAN內傳遞。

由于配置了VLAN后,一個VLAN的數據包不會發送到另一個VLAN,這樣,其他VLAN的用戶的網絡上是收不到任何該VLAN的數據包,這樣就確保了該VLAN的信息不會被其他VLAN的人竊聽,從而實現了信息的保密。

  • 更高效:泛洪轉發僅在本VLAN內復制。

按照802.1D透明網橋的算法,如果一個數據包找不到MAC表,那么交換機就會將該數據包向除接收端口以外的其他所有端口發送,這就是橋的泛洪轉發。(典型的廣播方式包括組播報文,廣播報文,以及未知單播報文都會進行泛洪轉發)。這樣的結果,毫無疑問極大的浪費了帶寬,如果配置了VLAN,那么,當一個數據包需要泛洪轉發時,交換機只會將此數據包發送到所有屬于該VLAN的其他端口,而不是所有的交換機的端口,這樣,就將數據包限制到了一個VLAN內。在一定程度上可以節省帶寬。

  • 更方便:不改變物理組網的情況下,靈活進行邏輯網絡的變更。

使用VLAN的最終目標就是建立虛擬工作組模型,例如,在企業網中,同一個部門的就好象在同一個LAN上一樣,很容易的互相訪問,交流信息,同時,所有的廣播包也都限制在該虛擬LAN上,而不影響其他VLAN的人。一個人如果從一個辦公地點換到另外一個地點,而他仍然在該部門,那么,該用戶的配置無須改變;同時,如果一個人雖然辦公地點沒有變,但他更換了部門,那么,只需網絡管理員更改一下該用戶的配置即可。這個功能的目標就是建立一個動態的組織環境,當然,這只是一個理想的目標,要實現它,還需要一些其他方面的支持。

如何實現VLAN功能

1. 如何識別VLAN報文

要使網絡設備能夠分辨不同VLAN的報文,需要在報文中添加標識VLAN的字段。由于普通交換機工作在OSI模型的數據鏈路層,只能對報文的數據鏈路層封裝進行識別。因此,如果添加識別字段,也需要添加到數據鏈路層封裝中。
IEEE于1999年頒布了用以標準化VLAN實現方案的IEEE 802.1Q協議標準草案,對帶有VLAN標識的報文結構進行了統一規定。

  • 無VLAN的傳統的以太網數據幀格式:目的MAC地址和源MAC地址之后封裝的是上層協議的類型字段,
  • DA表示目的MAC地址
  • SA表示源MAC地址
  • Type表示報文所屬協議類型。


    傳統無VLAN的二層報文
  • 增加VLAN Tag支持的以太網幀格式:IEEE 802.1Q協議規定在目的MAC地址和源MAC地址之后封裝4個字節的VLAN Tag,用以標識VLAN的相關信息。VLAN Tag包含四個字段,分別是TPID(Tag Protocol Identifier,標簽協議標識符)、Priority、CFI(Canonical Format Indicator,標準格式指示位)和VLAN ID。
  • TPID用來判斷本數據幀是否帶有VLAN Tag,長度為16bit,缺省取值為0x8100。
  • Priority表示報文的802.1P優先級,長度為3bit,相關內容請參見“QoS分冊”中的“QoS配置”。
  • CFI字段標識MAC地址在不同的傳輸介質中是否以標準格式進行封裝,長度為1bit,取值為0表示MAC地址以標準格式進行封裝,為1表示以非標準格式封裝,缺省取值為0。
  • VLAN ID標識該報文所屬VLAN的編號,長度為12bit,取值范圍為0~4095。由于0和4095為協議保留取值,所以VLAN ID的取值范圍為1~4094。

網絡設備利用VLAN ID來識別報文所屬的VLAN,根據報文是否攜帶VLAN Tag以及攜帶的VLAN Tag值,來對報文進行處理。

支持VLAN字段以后的二層報文

2. 交換機如何轉發VLAN報文

要說明交換機如何轉發報文,先得說明一下交換機支持VLAN時用到的幾個專用術語:
端口類型:VLAN交換機的端口一般可以分為幾大類:

  1. Access端口:一般用于交換機與終端之間,該類端口僅歸屬于一個VLAN。Access鏈路上的報文沒有VLAN tag,與傳統報文保持兼容。但交換機的Access端口上回配置Vlan。這樣所有從該Access鏈路上收到的報文都歸屬于Access端口所歸屬的Vlan。(核心概念:報文兼容,沒有vlan-tag
  1. Trunk端口:一般交換機與交換機之間,該類型端口允許多個VLAN的報文通過。該端口所在的鏈路上的報文需要有VLAN tag。(核心概念:除默認Vlan外,其他VLAN報文有vlan-tag
  2. Hybrid端口:Hybrid類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,可以用于交換機之間連接,也可以用于連接用戶的計算機。Hybrid端口和Trunk端口在接收數據時,處理方法是一樣的,唯一不同之處在于發送數據時:Hybrid端口可以允許多個VLAN的報文發送時不打標簽,而Trunk端口只允許缺省VLAN的報文發送時不打標簽。(核心概念:哪些vlan打tag,哪些不打tag可以手工配置

術語:默認VLAN-ID(或者缺省VLAN-ID,PvidVlan,Native Vlan,都是一個意思):簡而言之,收報文:如果是沒有tag,則認為來自于默認vlan;發報文:如果是該vlan的報文則不打VLAN tag

  • Access端口只屬于1個VLAN,所以它的缺省VLAN就是它所在的VLAN,不用設置;
  • Hybrid端口和Trunk端口屬于多個VLAN,所以需要設置缺省VLAN ID。缺省情況下,Hybrid端口和Trunk端口的缺省VLAN為VLAN 1 。如果設置了端口的缺省VLAN ID,當端口接收到不帶VLAN Tag的報文后,則認為報文的VLAN ID是缺省VLAN-ID;當端口發送報文時,如果該報文的VLAN ID與端口缺省的VLAN ID相同,則系統將去掉報文的VLAN Tag,然后再發送該報文。

下面具體介紹著幾種端口的工作原理

2.1 Access端口

這一類端口只有一個唯一的VLAN。通常由于交換機與終端的連接。為了保持與已有終端的兼容性,在設計VLAN相關協議時有這樣一個約束:端口發送和接收的報文格式都不允許修改,也就是說,這一類接口上收發的報文都不帶VLAN信息。(Untagged)。
既然報文中不帶VLAN信息,又要滿足VLAN隔離性需求,則必然在端口上要進行VLAN-ID的設置(這個VLAN稱為端口的PVID)。

2.2 Access端口的報文轉發流程

  • Acess端口收報文:
  1. 收到個報文判斷是否有VLAN信息:
  1. 如果沒有則打上端口 PVID并進行交換、轉發,
  2. 如果有則直接丟棄(缺省)
  • Acess端口發報文:

Access端口發送非常簡單,將報文VLAN信息剝離,直接發送出去

2.2 Access端口如何劃分VLAN

為了方便用戶使用,各設備廠商實現了多種方式來進行VLAN劃分,總的來說,有靜態方式和動態方式兩大類:

  • 靜態方式:通過用戶手工配置方式,來指定某個端口屬于哪個VLAN,靜態方式也成為基于端口的VLAN。當網絡中的計算機數目超過一定數字(比如數百臺)后,這些配置操作就會變得煩雜無比。并且,客戶機每次變更所連端口,都必須同時更改該端口所屬VLAN的設定——這顯然不適合那些需要頻繁改變拓補結構的網絡。
  • 動態方式:動態VLAN則是根據每個端口所連的計算機,隨時改變端口所屬的VLAN。這可以減輕配置人員的負擔。動態VLAN又可以進一步分為下面3類:
  1. 基于MAC地址的VLAN(MAC Based VLAN)

基于MAC地址的VLAN,就是通過查詢并記錄端口所連計算機上網卡的MAC地址來決定端口的所屬。假定有一個MAC地址“A”被交換機設定為屬于VLAN “10”,那么不論MAC地址為“A”的這臺計算機連在交換機哪個端口,該端口都會被劃分到VLAN 10中去。

  • 基于子網的VLAN(Subnet Based VLAN)

基于子網的VLAN,則是通過所連計算機的IP地址,來決定端口所屬VLAN的。不像基于MAC地址的VLAN,即使計算機因為交換了網卡或是其他原因導致MAC地址改變,只要它的IP地址不變,就仍可以加入原先設定的VLAN。

  • 基于協議或用戶的VLAN(User Based VLAN)

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

2.4 Trunk端口

其實原則上,有了Access口,就可以完成VLAN所需要的完整功能了。比如:交換機上也使用Access口進行連接,每一個端口一個VLAN進行隔離。比如下面的例子,兩個VLAN,全部使用Access接口來構建。


全部使用ACCESS接口構建VLAN網絡

但這兒存在一個問題,因為一個Access口僅屬于一個VLAN,如果兩個交換機配置了成百上千個VLAN,這些VLAN需要跨交換機組網時,意味著兩個交換機之間需要連接成百上千根的Access口鏈路。這樣組網成本太高了。
為了解決這一問題,提出了Trunk端口的概念,Trunk端口允許接受和發送多個VLAN的報文,這些報文都打上VLAN-tag,用來標示每一個報文屬于哪個VLAN。這樣,交換機之間就只需要一個Trunk鏈路,就可以將多個VLAN連接起來。

Trunk端口,用于連接交換機,充當邏輯上的多個鏈路

2.5 Trunk端口的報文收發流程

  • Trunk端口收報文:

Trunk端口收到一個報文,判斷是否有VLAN信息:

  • 如果報文中沒有VLAN-tag,則打上端口的PVID,并進行交換轉發,

  • 如果報文中有Vlan-tag,進一步判斷trunk端口是否允許該 VLAN的數據進入:

    • 如果可以則轉發
    • 否則丟棄
  • Trunk端口發報文:

比較端口的PVID和將要發送報文的VLAN信息:

  • 如果兩者相等則剝離VLAN信息,再發送
  • 如果不相等則直接發送

2.6 Hybrid端口

Hybrid端口和Trunk端口的相同之處在于兩種鏈路類型的端口都可以允許多個VLAN的報文發送時打標簽;不同之處在于Hybrid端口可以允許多個VLAN的報文發送時不打標簽,而Trunk端口只允許缺省VLAN的報文發送時不打標簽。
對于Hybrid端口來說,可以同時屬于多個VLAN。這些VLAN分別是該Hybrid端口的PVID,以及手工配置的”untagged”及”tagged”方式的VLAN。

2.7 Hybrid端口的報文收發流程

  • Hybrid端口收報文: 與Trunk端口手報文流程完全相同。

Hybrid端口收到一個報文,判斷是否有VLAN信息:

  • 如果報文中沒有VLAN-tag,則打上端口的PVID,并進行交換轉發,

  • 如果報文中有Vlan-tag,進一步判斷trunk端口是否允許該 VLAN的數據進入:

    • 如果可以則轉發
    • 否則丟棄
  • Hybrid端口發報文:

判斷該VLAN在本端口屬性(哪些vlan需要打tag,哪些不需要打tag,是手工配置的):

  • 如果需要tag,則tag后直接發送(同Trunk端口)
  • 如果不需要tag,則剝離tag后發送(同Access端口)
    因為Hybrid端口的行為是access和trunk的混合模式,所以稱為Hybrid

2.8 Hybrid的應用場景:

通常,可以使用Hybrid對相同網段的主機進行訪問權限的控制。比如,通過配置Hybrid端口,可以讓改端口的主機同時歸屬于多個VLAN,并與多個VLAN的主機進行通訊。

應用場景1:PC間隔離

組網需求:

  • PC1和PC2之間可以互訪;
  • PC1和PC3之間可以互訪;
  • PC1、PC2和PC3都可以訪問服務器;

配置說明:

  • E0/1: Hybrid端口,歸屬V10, 同時untag加入V20,V30,V100
    (PC1訪問PC2,PC3,Server)
  • E0/2: Hybrid端口,歸屬V20, 同時untag加入V10,V100
    (PC2訪問PC1,Server)
  • E0/3: Hybrid端口,歸屬V30, 同時untag加入V10,V100
    (PC3訪問PC1,Server)
  • G2/1: Hybrid端口,歸屬V100, 同時untag加入V10,V20,V30
    (服務器訪問PC1,PC2,PC3)

應用場景2

組網需求

  1. PC1和PC3之間可以互訪;
  2. PC2和PC3之間可以互訪;
  3. PC1和PC4之間可以互訪;
  4. PC2和PC5之間可以互訪;
  5. 其余PC之間均禁止互相訪問。

配置說明:
SwitchA:
E0/1: Hybrid端口,加入V10,同時untag加入V30
E0/2: Hybrid端口,加入V20,同時untag加入V30
E0/3: Hybrid端口,加入V30,同時untag加入V10,V20.
G2/1: Hybrid端口,(不加入某個VLAN),tagged加入V10,V20。
SwitchB:
E0/1: Access端口,加入V10
E0/2: Access端口,加入V20
E0/1: Hybrid端口,(不加入某個VLAN),tagged加入V10,V20。
注:交換機間的Hybrid端口,等價于Trunk端口

注意事項

配置Trunk端口或Hybrid端口,并利用Trunk端口或Hybrid端口發送多個VLAN報文時一定要注意:本端端口和對端端口的缺省VLAN ID(端口的PVID)要保持一致。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容