歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> Linux系統VLAN、三層交換和Trunk的區別

Linux系統VLAN、三層交換和Trunk的區別

日期:2017/3/2 10:24:32   编辑:Linux維護

在Linux系統中VLAN,三層交換和Trunk是三個容易混淆的概念。如果對這三個概念只是一知半解的,就會不可避免繞一些彎路,浪費不少時間。本文就來跟大家介紹一下Linux系統VLAN、三層交換和Trunk的區別。

1.VLAN和三層沒有任何關系

如果先不提Trunk而純粹的VLAN實際上就是將多個純二層的以太網交換機合並成了一個,用軟件進行控制。合並後的交換機就是支持VLAN的交換機,參與合並的多個物理交換機如今退化成了邏輯意義上的交換機。多個物理交換機並不是傻乎乎的合並後完事,VLAN交換機的另一個意義就是可以通過各種策略指定哪個物理port屬於哪個邏輯交換機,如果讓物理交換機實現這個,就不得不涉及購置,布線等問題,這就說明了軟件真的比硬件更加靈活,以軟件為基准,硬件其實就是固化了的軟件。

如果想明白VLAN的含義,在Linux上配置幾個Bridge就可以了。我們知道,Linux內置了一個軟Bridge實現,通過brctl可以進行配置,一個單獨的Linux物理主機配置了N塊以太網卡,就可以簡單的模擬VLAN的概念(注意,此時還沒有引入VLAN的本質-Trunk)了:

a.新增一個br0,將網卡1/2/3加進去;

b.新增一個br1,將網卡4/5/6加進去;

c....

d.網卡1連接一個純二層交換機1;

e.網卡4連接一個純二層交換機2;

f....

這樣Linux主機上就存在了多個Bridge,你可以將Linux主機這個物理的機器視為一個支持VLAN的機器了。

VLAN交換機是一個純二層的設備。然而,如果僅僅這樣,那就沒有必要推出VLAN的概念了,VLAN到底和上述的簡單配置有什麼不同呢?這就涉及到了IEEE802.1q標准,請看下節。

2.Trunk和三層沒有任何關系

如果一個VLAN交換機上配置了兩個VLAN,分別為VLAN1和VLAN2,另外幾台VLAN交換機上可能也需要配置VLAN1和VLAN2,畢竟單獨一台機器的口子有限,因此對於組網,不級聯的拓撲是很少見的,現在關鍵的問題就是需要讓處在不同VLAN交換機的口子可以屬於同一個VLAN,即屬於同一個廣播域。辦法很簡單,那就是每一個VLAN用一個線將兩個VLAN交換機上屬於同一個VLAN的口子連起來,如果兩台交換機上分別有3個VLAN,那就扯3根線。。。這不得不說是一個好方法,但決不是一個妙方法。對於硬件上的體力活兒,軟件一般都能很好的解決,這一次,又是軟件幫了忙,正如VLAN的概念提出時那樣。

Trunk標准提出來了,所謂的Trunk就是可以讓多個VLAN在兩個交換機級聯時復用一根線,因此軟件上需要對數據幀做一些文章,以便數據幀到達另一個交換機的時候知道自己屬於哪個VLAN從而限制幀的傳輸域,802.1q正是做這個的,從而這也成了VLAN的核心。Trunk只是簡化了布線,降低了硬件成本,這是一個通過軟件降低硬件成本的絕好的例子。

既然Trunk可以通過多個VLAN的數據,那麼實際上Trunk是將廣播域延伸到了另外一台交換機上,而對於LAN,其廣播域延伸到哪裡,LAN也就延伸到了那裡。事實上這並不與VLAN的初衷之一-限制廣播域相沖突,Trunk將廣播透傳的時候是打著VLAN id標記的,也就是說廣播除了可以在Trunk上或者在自己VLAN內部傳輸,是決不會到達其它VLAN裡面的,如果一個廣播到達了這樣一個交換機,其上既沒有別的Trunk口,也沒有廣播攜帶的VLAN id對應的VLAN,那麼廣播也就到此為止而消失了。

到此為止,絲毫沒有任何第三層的概念出現。

3.VLAN接口的概念

VLAN接口的概念和Linux上Bridge的實現十分相像,就是可以為一個VLAN配置一個或者多個接口,在該接口上可以指定三層的IP地址,在VLAN的某一個口子(物理二層接口)上配置這樣一個VLAN接口(三層接口)實際上就等同於在VLAN的該口子上插入了一台三層設備,只是這台設備是一台虛擬的設備罷了,另外和真正插一台設備不同的是,由於它是處在本機內部的,因此它所配置IP地址當然也就屬於本機IP地址了,處在路由表的Local域中。

理解了這一點就會明白,實際上配置了VLAN接口的VLAN交換機實際上是往純VLAN交換機裡面硬塞了一台三層設備,二者合而為一,因此更能加深對“VLAN交換機是一個純二層的設備”這個觀點的認識。

4.LAN交換機上可以配置IP地址

姑且先拋開VLAN的概念,說一下LAN交換機。一般以為LAN交換機是純二層的設備,可是知道了VLAN接口的概念後,我們發現即使沒有VLAN,也是可以將一台虛擬的三層設備插入到一個LAN交換機的口子上去的,其實Linux的軟Bridge就是這樣做的,那麼內置了三層虛擬設備的LAN交換機就有了三層的功能。這是什麼呢?還是以Linux為例,在Linux上配置兩個Bridge,分別為br0,br1,在br0上配置IP地址1.1.1.1/24,在br1上配置IP地址2.2.2.2/24,我們就可以看到br0標示的一個LAN上的流量可以通過br0的IP地址被路由到br1,反之,br1標示的LAN流量也可以通過br1的IP地址路由到br0,這是什麼?這就是三層交換機,一個將路由器接口變成交換機接口的路由器,這部三層交換機上擁有兩組LAN接口,雖然可以略見VLAN的概念,但是沒有任何標准說這個三層交換機上的兩組LAN就是兩個VLAN。

可見,三層交換機可以和VLAN沒有關系。

5.以太網三層交換機

從上述第4節可以看出,三層交換機可以和VLAN沒有關系,然而實際情況下,三層交換機一般都支持VLAN,為何設備廠商要如此做呢?這涉及到一個工業設計的問題,工業上的設計主要關注產品的使用而不是理論上的合理性,因此將VLAN引入第4節的“兩組LAN”是最合適不過的了。

另外,三層交換機本質上還是偏重於“交換機”而不是“三層”,交換機的特征就是交換,所謂的交換是一個快速轉發的概念,基本都是使用硬件芯片完成的,大量的存儲芯片以空間換時間完成快速交換,這得益於以太網幀頭的簡單易操作性以及LAN交換機設計時關注了基於源MAC的自動學習和基於目標MAC的轉發,之所以能如此還是因為以太網是一個BMA,即廣播網絡,到底數據應該由誰接收不是交換機決定的,而是各個端點主機決定的,這樣的話交換機就可以模糊的進行轉發,做到盡可能的精確-通過源MAC/端口學習,大不了就廣播。這就是以太網交換的特征,三層交換機可以利用以太網交換的大量存儲芯片用來存儲IP層的路由結果,利用以太網快速交換的思想用來進行三層轉發,數據包的第一次通過還是要走三層,這相當於一次學習的過程,類似以太網的MAC/端口學習,以後的結果就可以存儲於ASCI了,這樣就完成了快速轉發。

6.三層交換機和路由器的區別

這個問題的答案鋪天蓋地,然而內容也是千篇一律,很少有人研究其背後的原因。既然以太網三層交換機可以做到一次路由多次轉發,那麼為何不再WAN上使用呢?如果僅僅是因為WAN不一定是以太網的話,那大可為了性能在WAN上引入以太網技術,這並不是主要原因,實際上,如果再深入一點看一下WAN上的路由器和接入層路由器的路由表就會恍然大悟了,WAN路由器上的表項數量十分龐大,且在BGP的影響下雖不頻繁但是還是會有刷新,如果使用硬件來轉發的話,光是對存儲空間的需求就是一個挑戰,三層交換機的快速轉發實際上用到了cache的概念,有cache就會有沖突,特別在WAN環境下,IP地址的變動,可達性信息的變動會導致大量的cache沖突,因此三層交換機帶來的收益會被馬上抵消,另外WAN環境實際上用不到很多交換機口子,因此三層交換機內部背板芯片布線對於WAN環境是不合理的。其實用不著為WAN的性能擔心,WAN路由器早就使用了類似Cisco CEF的快速轉發技術了。

三層交換機的使用場合是單個小型機構內部,因為這種地方的特定IP地址幾乎不會變動,路由相對穩定,IP地址總量也不多,且路由基本都能匯聚,正好符合cache最優化使用的原則,三層交換機用武之地正在於此。

7.VLAN間的通信

這個問題的方案也是鋪天蓋地,答案同樣千篇一律。VLAN間的通信方式被總結出來有兩種:1.使用單臂路由方式;2.使用三層交換方式。這好像是從CCNP/CCIE或者華為的HCSE的考試指南中流出來的,如果背下來當然是有用的,當初我考HCSE的時候還背了呢。學習到了一定程度就應該拋棄答案,回歸本質。兩個VLAN間的通信其實就是兩個LAN間的通信,兩個LAN間的通信需要一個網關來路由,那麼VLAN間通信也就需要一個網關來路由了,這個網關的選擇就多樣了,可以選擇VLAN接口,可以選擇路由器等等,最終具體屬於一個VLAN的主機在訪問另一個VLAN的主機時如何能尋址到這個三層接口,那也有很多選擇,VLAN的access鏈路上幀保持原樣,流量若要跨越交換機的級聯線,那麼需要通過Trunk鏈路,最終總能找到這個下一跳三層接口。

以上就是Linux系統VLAN、三層交換和Trunk的區別了,雖然三層交換機理論上可以支持VLAN和Trunk,但是這種支持只是一種模仿,遠遠不能達到替代的效果。

Copyright © Linux教程網 All Rights Reserved