VLAN間路由的必要性
根據目前為止學習的知識,我們已經知道兩臺計算機即使連接在同一臺交換機上,只要所屬的VLAN不同就無法直接通信。接下來我們將要學習的就是如何在不同的VLAN間進行路由,使分屬不同VLAN的主機能夠互相通信。
首先,先來復習一下為什么不同VLAN間不通過路由就無法通信。在LAN內的通信,必須在數據幀頭中指定通信目標的MAC地址。而為了獲取MAC地址,TCP/IP協議下使用的是ARP。ARP解析MAC地址的方法,則是通過廣播。也就是說,如果廣播報文無法到達,那么就無從解析MAC地址,亦即無法直接通信。
計算機分屬不同的VLAN,也就意味著分屬不同的廣播域,自然收不到彼此的廣播報文。因此,屬于不同VLAN的計算機之間無法直接互相通信。為了能夠在VLAN間通信,需要利用OSI參照模型中更高一層——網絡層的信息(IP地址)來進行路由。關于路由的具體內容,以后有機會再詳細解說吧。
路由功能,一般主要由路由器提供。但在今天的局域網里,我們也經常利用帶有路由功能的交換機——三層交換機(Layer 3 Switch)來實現。接下來就讓我們分別看看使用路由器和三層交換機進行VLAN間路由時的情況。
使用路由器進行VLAN間路由
在使用路由器進行VLAN間路由時,與構建橫跨多臺交換機的VLAN時的情況類似,我們還是會遇到“該如何連接路由器與交換機”這個問題。路由器和交換機的接線方式,大致有以下兩種:
l 將路由器與交換機上的每個VLAN分別連接
l 不論VLAN有多少個,路由器與交換機都只用一條網線連接
最容易想到的,當然還是“把路由器和交換機以VLAN為單位分別用網線連接”了。將交換機上用于和路由器互聯的每個端口設為訪問鏈接,然后分別用網線與路由器上的獨立端口互聯。如下圖所示,交換機上有2個VLAN,那么就需要在交換機上預留2個端口用于與路由器互聯;路由器上同樣需要有2個端口;兩者之間用2條網線分別連接。
如果采用這個辦法,大家應該不難想象它的擴展性很成問題。每增加一個新的VLAN,都需要消耗路由器的端口和交換機上的訪問鏈接,而且還需要重新布設一條網線。而路由器,通常不會帶有太多LAN接口的。新建VLAN時,為了對應增加的VLAN所需的端口,就必須將路由器升級成帶有多個LAN接口的高端產品,這部分成本、還有重新布線所帶來的開銷,都使得這種接線法成為一種不受歡迎的辦法。
那么,第二種辦法“不論VLAN數目多少,都只用一條網線連接路由器與交換機”呢?當使用一條網線連接路由器與交換機、進行VLAN間路由時,需要用到匯聚鏈接。
具體實現過程為:首先將用于連接路由器的交換機端口設為匯聚鏈接,而路由器上的端口也必須支持匯聚鏈路。雙方用于匯聚鏈路的協議自然也必須相同。接著在路由器上定義對應各個VLAN的“子接口(Sub Interface)”。盡管實際與交換機連接的物理端口只有一個,但在理論上我們可以把它分割為多個虛擬端口。
VLAN將交換機從邏輯上分割成了多臺,因而用于VLAN間路由的路由器,也必須擁有分別對應各個VLAN的虛擬接口。
采用這種方法的話,即使之后在交換機上新建VLAN,仍只需要一條網線連接交換機和路由器。用戶只需要在路由器上新設一個對應新VLAN的子接口就可以了。與前面的方法相比,擴展性要強得多,也不用擔心需要升級LAN接口數不足的路由器或是重新布線。
由于需要一個個端口地指定,因此當網絡中的計算機數目超過一定數字(比如數百臺)后,設定操作就會變得煩雜無比。并且,客戶機每次變更所連端口,都必須同時更改該端口所屬VLAN的設定——這顯然不適合那些需要頻繁改變拓補結構的網絡。
動態VLAN
另一方面,動態VLAN則是根據每個端口所連的計算機,隨時改變端口所屬的VLAN。這就可以避免上述的更改設定之類的操作。動態VLAN可以大致分為3類:
l 基于MAC地址的VLAN(MAC Based VLAN)
l 基于子網的VLAN(Subnet Based VLAN)
l 基于用戶的VLAN(User Based VLAN)
其間的差異,主要在于根據OSI參照模型哪一層的信息決定端口所屬的VLAN。
基于MAC地址的VLAN,就是通過查詢并記錄端口所連計算機上網卡的MAC地址來決定端口的所屬。假定有一個MAC地址“A”被交換機設定為屬于VLAN“10”,那么不論MAC地址為“A”的這臺計算機連在交換機哪個端口,該端口都會被劃分到VLAN10中去。計算機連在端口1時,端口1屬于VLAN10;而計算機連在端口2時,則是端口2屬于VLAN10。
由于是基于MAC地址決定所屬VLAN的,因此可以理解為這是一種在OSI的第二層設定訪問鏈接的辦法。
但是,基于MAC地址的VLAN,在設定時必須調查所連接的所有計算機的MAC地址并加以登錄。而且如果計算機交換了網卡,還是需要更改設定。
基于子網的VLAN,則是通過所連計算機的IP地址,來決定端口所屬VLAN的。不像基于MAC地址的VLAN,即使計算機因為交換了網卡或是其他原因導致MAC地址改變,只要它的IP地址不變,就仍可以加入原先設定的VLAN。
因此,與基于MAC地址的VLAN相比,能夠更為簡便地改變網絡結構。IP地址是OSI參照模型中第三層的信息,所以我們可以理解為基于子網的VLAN是一種在OSI的第三層設定訪問鏈接的方法。
基于用戶的VLAN,則是根據交換機各端口所連的計算機上當前登錄的用戶,來決定該端口屬于哪個VLAN。這里的用戶識別信息,一般是計算機操作系統登錄的用戶,比如可以是Windows域中使用的用戶名。這些用戶名信息,屬于OSI第四層以上的信息。
總的來說,決定端口所屬VLAN時利用的信息在OSI中的層面越高,就越適于構建靈活多變的網絡。
訪問鏈接的總結
綜上所述,設定訪問鏈接的手法有靜態VLAN和動態VLAN兩種,其中動態VLAN又可以繼續細分成幾個小類。
其中基于子網的VLAN和基于用戶的VLAN有可能是網絡設備廠商使用獨有的協議實現的,不同廠商的設備之間互聯有可能出現兼容性問題;因此在選擇交換機時,一定要注意事先確認。
下表總結了靜態VLAN和動態VLAN的相關信息。