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