vlan工作原理(vlan的原理和作用)
6.1 VLAN間路由的必要性
根據目前為止學習的知識,我們已經知道兩臺計算機即使連線在同一臺交換機上,只要所屬的VLAN不同就無法直接通訊。接下來我們將要學習的就是如何在不同的VLAN間進行路由,使分屬不同VLAN的主機能夠互相通訊。
首先,先來複習一下為什麼不同VLAN間不通過路由就無法通訊。在LAN內的通訊,必須在資料幀頭中指定通訊目標的MAC地址。而為了獲取MAC地址,TCP/IP協議下使用的是ARP。ARP解析MAC地址的方法,則是通過廣播。也就是說,如果廣播報文無法到達,那麼就無從解析MAC地址,亦即無法直接通訊。
計算機分屬不同的VLAN,也就意味著分屬不同的廣播域,自然收不到彼此的廣播報文。因此,屬於不同VLAN的計算機之間無法直接互相通訊。為了能夠在VLAN間通訊,需要利用OSI參照模型中更高一層——網路層的資訊(IP地址)來進行路由。關於路由的具體內容,以後有機會再詳細解說吧。
路由功能,一般主要由路由器提供。但在今天的區域網裡,我們也經常利用帶有路由功能的交換機——三層交換機(Layer 3 Switch)來實現。接下來就讓我們分別看看使用路由器和三層交換機進行VLAN間路由時的情況。
6.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介面數不足的路由器或是重新佈線。
6.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之內的通訊,一切處理均在交換機內完成。
6.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間通訊時,即使通訊雙方都連線在同一臺交換機上,也必須經過:“傳送方——交換機——路由器——交換機——接收方”這樣一個流程。