交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

前言git

上一章節咱們介紹了DHCP協議的工做原理 你知道你的電腦IP地址是如何獲取的嗎?一文帶你搞懂DHCP動態主機配置協議。安全

今天來介紹下一個二層的隔離技術——VLAN。那麼爲何會出現這種技術呢?網絡

咱們知道一個企業隨着業務發展網絡中的計算機愈來愈多,全部的主機在一個二層的以太網中會形成如下問題:ide

  • 網絡中的全部主機屬於同一個廣播域,容易形成廣播報文氾濫,浪費網絡帶寬,形成鏈路擁塞;學習

  • 廣播域太大,同一廣播域下的主機均可以互相通訊,容易帶來安全性問題。

VLAN技術能夠隔離廣播域,縮小廣播域的範圍,從而解決了上述問題。測試

正文code

1 什麼是VLAN?orm

VLAN(Virtual Local Area Network)即虛擬局域網,能夠將一個物理局域網在邏輯上劃分紅多個廣播域,也就是多個VLAN。blog

VLAN做用:接口

VLAN技術部署在數據鏈路層,用於隔離二層流量。

VLAN的通訊原則:

  • 同一個VLAN內的主機共享同一個廣播域,它們之間能夠直接進行二層通訊;

  • VLAN間的主機屬於不一樣的廣播域,不能直接實現二層互通。

VLAN優勢:

既可以隔離廣播域,又可以提高網絡的安全性。

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

如上圖所示:

本來屬於同一廣播域的主機被劃分到了兩個VLAN中,即,VLAN2和VLAN3。因爲PC1和PC4同屬於VLAN3,所以二層能夠互相通訊;PC1和PC2屬於不一樣的VLAN,不可以二層通訊。

2 VLAN報文格式:
帶有VLAN的數據幀比正常以太網數據幀多了Tag字段,VLAN Tag長4個字節,直接添加在以太網幀頭中。

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

Tag字段組成:

一、TPID:Tag Protocol Identifier,2字節,固定取值,0x8100,是IEEE定義的新類型,代表這是一個攜帶802.1Q標籤的幀。若是不支持802.1Q的設備收到這樣的幀,會將其丟棄。

二、TCI:Tag Control Information,2字節。幀的控制信息,詳細說明以下:

  • Priority:3比特,表示幀的優先級,取值範圍爲0~7,值越大優先級越高。當交換機阻塞時,優先發送優先級高的數據幀。

  • CFI:Canonical Format Indicator,1比特。CFI表示MAC地址是不是經典格式。CFI爲0說明是經典格式,CFI爲1表示爲非經典格式。用於區分以太網幀、FDDI(Fiber Distributed Digital Interface)幀和令牌環網幀。在以太網中,CFI的值爲0。

  • VLAN Identifier:VLAN ID,12比特,可配置的VLAN ID取值範圍爲0~4095,可是0和4095在協議中規定爲保留的VLAN ID,不能給用戶使用。

在Tag字段中,主要關注的就是VLAN Identifier, 這個字段表示該數據幀帶的vlan id是多少。

3 PVID
PVID即Port VLAN ID,表明端口的缺省VLAN。

爲何須要PVID?

交換機從對端設備收到的幀有多是Untagged的數據幀,但全部以太網幀在交換機中都是以Tagged的形式來被處理和轉發的,所以交換機必須給端口收到的Untagged數據幀添加上Tag。

爲了實現此目的,必須爲交換機配置端口的缺省VLAN。

交換機收到Untagged數據幀的處理方式:

當該端口收到Untagged數據幀時,交換機將給它加上該缺省VLAN的VLAN Tag。

缺省狀況下,交換機每一個端口的PVID是1。

以下圖所示:經過dis int g0/0/3能夠查看交換機二層端口的PVID爲1。

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

4 VLAN的劃分
咱們知道vlan能夠隔離廣播域,那麼如何去劃分vlan呢?下面介紹下5種vlan的劃分方法,重點關注基於端口的VLAN劃分方式。

  • 基於端口劃分:根據交換機的端口編號來劃分VLAN。

經過爲交換機的每一個端口配置不一樣的PVID,來將不一樣端口劃分到VLAN中。初始狀況下,交換機的端口處於VLAN1中。

優勢:此方法配置簡單,可是當主機移動位置時,須要從新配置VLAN。

  • 基於MAC地址劃分:根據主機網卡的MAC地址劃分VLAN。

此劃分方法須要網絡管理員提早配置網絡中的主機MAC地址和VLAN ID的映射關係。若是交換機收到不帶標籤的數據幀,會查找以前配置的MAC地址和VLAN映射表,根據數據幀中攜帶的MAC地址來添加相應的VLAN標籤。

優勢:在使用此方法配置VLAN時,即便主機移動位置也不須要從新配置VLAN。

  • 基於IP子網劃分:交換機在收到不帶標籤的數據幀時,根據報文攜帶的IP地址給數據幀添加VLAN標籤。

  • 基於協議劃分:根據數據幀的協議類型(或協議族類型)、封裝格式來分配VLAN ID。

網絡管理員須要首先配置協議類型和VLAN ID之間的映射關係。

  • 基於策略劃分:使用幾個條件的組合來分配VLAN標籤。這些條件包括IP子網、端口和IP地址等。只有當全部條件都匹配時,交換機才爲數據幀添加VLAN標籤。另外,針對每一條策略都是須要手工配置的。

5 VLAN工做原理:
在介紹VLAN工做原理以前,咱們先看下VLAN的2種鏈路類型和3種端口類型。

2種鏈路類型

VLAN鏈路分爲兩種類型:Access鏈路和Trunk鏈路。

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

  • 接入鏈路(Access Link):鏈接用戶主機和交換機的鏈路稱爲接入鏈路。如本例所示,圖中主機和交換機之間的鏈路都是接入鏈路。

  • 幹道鏈路(Trunk Link):鏈接交換機和交換機的鏈路稱爲幹道鏈路。如本例所示,圖中交換機之間的鏈路都是幹道鏈路。幹道鏈路上經過的幀通常爲帶Tag的VLAN幀。

3種端口類型

學習了vlan的概念,咱們知道網絡中的數據幀要麼是沒有加上VLAN標記的標準以太網幀(untagged frame),要麼是帶有VLAN標記的以太網幀(tagged frame)。

那麼不一樣類型的接口是如何發送和接收帶有vlan標記的以太網數據幀的呢?

Access接口:

Access端口是交換機上用來鏈接用戶主機的端口,它只能鏈接接入鏈路,而且只能容許惟一的VLAN ID經過本端口。

Access端口收發數據幀的規則以下:

  • 若是該端口收到對端設備發送的幀是untagged(不帶VLAN標籤),交換機將強制加上該端口的PVID。

若是該端口收到對端設備發送的幀是tagged(帶VLAN標籤),交換機會檢查該標籤內的VLAN ID。當VLAN ID與該端口的PVID相同時,接收該報文。當VLAN ID與該端口的PVID不一樣時,丟棄該報文。

  • Access端口發送數據幀時,老是先剝離幀的Tag,而後再發送。Access端口發往對端設備的以太網幀永遠是不帶標籤的幀。

Trunk端口:

Trunk端口是交換機上用來和其餘交換機鏈接的端口,它只能鏈接幹道鏈路。Trunk端口容許多個VLAN的幀(帶Tag標記)經過。

Trunk端口收發數據幀的規則以下:

  • 當接收到對端設備發送的不帶Tag的數據幀時,會添加該端口的PVID,若是PVID在容許經過的VLAN ID列表中,則接收該報文,不然丟棄該報文。

接收到對端設備發送的帶Tag的數據幀時,檢查VLAN ID是否在容許經過的VLAN ID列表中。若是VLAN ID在接口容許經過的VLAN ID列表中,則接收該報文。不然丟棄該報文。

  • 端口發送數據幀時,當VLAN ID與端口的PVID相同,且是該端口容許經過的VLAN ID時,去掉Tag,發送該報文。

當VLAN ID與端口的PVID不一樣,且是該端口容許經過的VLAN ID時,保持原有Tag,發送該報文。

Hybrid端口:

Access端口發往其餘設備的報文,都是Untagged數據幀,而Trunk端口僅在一種特定狀況下才能發出untagged數據幀,其它狀況發出的都是Tagged數據幀。

Hybrid端口是交換機上既能夠鏈接用戶主機,又能夠鏈接其餘交換機的端口。

Hybrid端口既能夠鏈接接入鏈路又能夠鏈接幹道鏈路。Hybrid端口容許多個VLAN的幀經過,並能夠在出端口方向將某些VLAN幀的Tag剝掉。華爲設備默認的端口類型是Hybrid。

Hybrid端口收發數據幀的規則以下:

  • 當接收到對端設備發送的不帶Tag的數據幀時,會添加該端口的PVID,若是PVID在容許經過的VLAN ID列表中,則接收該報文,不然丟棄該報文。

當接收到對端設備發送的帶Tag的數據幀時,檢查VLAN ID是否在容許經過的VLAN ID列表中。若是VLAN ID在接口容許經過的VLAN ID列表中,則接收該報文,不然丟棄該報文。

  • Hybrid端口發送數據幀時,將檢查該接口是否容許該VLAN數據幀經過。若是容許經過,則能夠經過命令配置發送時是否攜帶Tag。

VLAN的工做原理:

下一章節咱們一塊兒介紹下VLAN的工做原理:

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

結合VLAN的鏈路類型和端口類型,根據PC2和PC3互相通訊的過程介紹下VLAN的工做原理。

階段一:PC2 ARP廣播獲取PC3的MAC地址

一、咱們知道主機間是基於MAC地址進行二層通訊的,PC2和PC3因爲是首次通訊,PC2不知道PC3的MAC地址,所以會在廣播域中發送ARP廣播報文,詢問有誰知道PC3的MAC地址。

二、LSW1從接口g0/0/2 收到PC2發送的ARP廣播報文,因爲接口g0/0/2是access接口,端口屬於vlan 2,首先會在MAC地址表項中記錄下PC2 mac地址、所屬VLAN二、g0/0/2三者的對應關係,而後會給數據幀打上vlan2的標籤,並在vlan 2中泛洪該廣播報文。

三、LSW1將帶有vlan2標籤的廣播報文發送給LSW2。

四、LSW2從接口g0/0/1 收到PC2發送的ARP廣播報文,首先在MAC地址表項中記錄下PC2 mac地址、VLAN二、g0/0/1三者的對應關係,並在vlan 2中泛洪該廣播報文。

五、LSW2在發送廣播報文給PC3時會剝除vlan2的標籤。

六、PC3收到從LSW2發送的ARP廣播報文,會進行ARP單播迴應。

迴應的報文轉發流程和上述類型,不作講解。

階段二:數據轉發過程

一、PC2發送源MAC是PC2,目的MAC是PC3的以太網數據幀。

二、LSW1從接口g0/0/2 收到PC2發送的數據幀,因爲接口g0/0/2是access接口,端口屬於vlan 2,首先會給數據幀打上vlan2的標籤,而後在對應vlan中根據目的mac查找mac地址表,能夠找到PC3 MAC地址對應的接口是g0/0/1。

三、LSW1的g0/0/1端口類型是trunk,放通了vlan 2 和3,所以LSW1將帶有vlan2標籤的數據幀從g0/0/1發送給LSW2。

四、LSW1從接口g0/0/1 收到PC2發送的數據幀,因爲g0/0/1端口類型是trunk,放通了vlan 2 和3,所以接收該數據幀,在對應vlan中根據目的mac查找mac地址表,能夠找到PC3 MAC地址對應的接口是g0/0/2。

五、LSW2的g0/0/1端口類型是access接口,端口屬於vlan 2,所以LSW2剝除vlan2標籤將數據幀從g0/0/2發送給PC3。

六、PC3收到數據幀查看目的mac是發送給本身的接收下該數據幀。

6 VLAN配置:

建立VLAN:

VLAN ID的取值範圍是1到4094。在交換機上劃分VLAN時,須要首先建立VLAN。在交換機上執行vlan <vlan-id>命令,建立VLAN。

例如:執行vlan 10命令後,就建立了VLAN 10,並進入了VLAN 10視圖。

如需建立多個VLAN:

  • 能夠在交換機上執行vlan batch { vlan-id1 [ to vlan-id2 ] }命令,以建立多個連續的VLAN。

  • 也能夠執行vlan batch { vlan-id1 vlan-id2 }命令,建立多個不連續的VLAN,VLAN號之間須要有空格。

VLAN端口類型的配置:

華爲系列交換機上,默認的端口類型是hybrid。

配置端口類型的命令是port link-type <type>,type能夠配置爲Access,Trunk或Hybrid。

配置Access

一、使用port link-type access命令修改端口的類型爲Access;

二、添加端口到VLAN:可使用兩種方法把端口加入到VLAN。

  • 第一種方法是進入到VLAN視圖,執行port <interface>命令,把端口加入VLAN。

  • 第二種方法是進入到接口視圖,執行port default <vlan-id>命令,把端口加入VLAN。vlan-id是指端口要加入的VLAN。

配置Trunk

一、使用port link-type trunk命令修改端口的類型爲Trunk;

二、配置Trunk端口容許哪些VLAN的數據幀經過。執行port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }命令,能夠配置端口容許的VLAN,all表示容許全部VLAN的數據幀經過。

三、執行port trunk pvid vlan vlan-id命令,能夠修改Trunk端口的PVID。

修改Trunk端口的PVID以後,須要注意:

  • 缺省VLAN不必定是端口容許經過的VLAN。只有使用命令port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }容許缺省VLAN數據經過,才能轉發缺省VLAN的數據幀。

  • 交換機的全部端口默認容許VLAN1的數據經過。

配置Hybrid

一、port link-type hybrid命令的做用是將端口的類型配置爲Hybrid。默認狀況下,交換機的端口類型是Hybrid。所以,只有在把Access口或Trunk口配置成Hybrid時,才須要執行此命令。

二、port hybrid tagged vlan{ { vlan-id1 [ to vlan-id2 ] } | all }命令用來配置容許哪些VLAN的數據幀以Tagged方式經過該端口。

三、port hybrid untagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }命令用來配置容許哪些VLAN的數據幀以Untagged方式經過該端口。

配置檢查

執行display vlan命令,能夠確認端口是否已經加入到VLAN中。

7 實戰——vlan配置實例

如圖所示:PC1和PC4屬於vlan3,PC2和PC3屬於vlan2。經過配置實現PC1和PC4可以互通,PC1和PC2相互隔離;

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

配置以下:

[LSW1]

#

sysname LSW1

#

vlan batch 2 to 3

#

interface GigabitEthernet0/0/1

port link-type trunk

port trunk allow-pass vlan 2 to 3

#

interface GigabitEthernet0/0/2

port link-type access

port default vlan 2

#

interface GigabitEthernet0/0/3

port link-type access

port default vlan 3
[LSW2]

#

sysname LSW2

#

vlan batch 2 to 3

#

interface GigabitEthernet0/0/1

port link-type trunk

port trunk allow-pass vlan 2 to 3

#

interface GigabitEthernet0/0/2

port link-type access

port default vlan 2

#

interface GigabitEthernet0/0/3

port link-type access

port default vlan 3

#

在LSW1上查看:

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

在PC1上ping測試PC4和PC2,能夠發現相同vlan之間能夠通訊,不一樣vlan間不能夠通訊。

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

分別在LSW1的G0/0/3和G0/0/1抓取報文:

在G0/0/3抓取的報文是不帶標籤的

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

G0/0/1抓取報文是帶標籤的:

交換機是如何轉發帶有VLAN的數據幀的?一文帶你搞懂VLAN技術原理

根據type取值0x8100,代表這是一個攜帶802.1Q標籤的幀。能夠獲得如下信息:

  • Priority爲0,優先級最低。

  • CFI的值爲0代表是以太網

  • VLAN ID值爲3,表示這是一個帶有vlan3標籤的數據幀。
相關文章
相關標籤/搜索