天天看點

VLAN原理詳解

1.為什麼需要VLAN

1.1 什麼是VLAN?

VLAN(Virtual LAN),翻譯成中文是“虛拟區域網路”。LAN可以是由少數幾台家用計算機構成的網絡,也可以是數以百計的計算機構成的企業網絡。VLAN所指的LAN特指使用路由器分割的網絡——也就是廣播域。

在此讓我們先複習一下廣播域的概念。廣播域,指的是廣播幀(目标MAC位址全部為1)所能傳遞到的範圍,亦即能夠直接通信的範圍。嚴格地說,并不僅僅是廣播幀,多點傳播幀(Multicast Frame)和目标不明的單點傳播幀(Unknown Unicast Frame)也能在同一個廣播域中暢行無阻。

本來,二層交換機隻能建構單一的廣播域,不過使用VLAN功能後,它能夠将網絡分割成多個廣播域。

1.2 未分割廣播域時……

那麼,為什麼需要分割廣播域呢?那是因為,如果僅有一個廣播域,有可能會影響到網絡整體的傳輸性能。具體原因,請參看附圖加深了解。
VLAN原理詳解

圖中,是一個由5台二層交換機(交換機1~5)連接配接了大量客戶機構成的網絡。假設這時,計算機A需要與計算機B通信。在基于以太網的通信中,必須在資料幀中指定目标MAC位址才能正常通信,是以計算機A必須先廣播“ARP請求(ARP Request)資訊”,來嘗試擷取計算機B的MAC位址。

交換機1收到廣播幀(ARP請求)後,會将它轉發給除接收端口外的其他所有端口,也就是Flooding了。接着,交換機2收到廣播幀後也會Flooding。交換機3、4、5也還會Flooding。最終ARP請求會被轉發到同一網絡中的所有客戶機上。

VLAN原理詳解
請大家注意一下,這個ARP請求原本是為了獲得計算機B的MAC位址而發出的。也就是說:隻要計算機B能收到就萬事大吉了。可是事實上,資料幀卻傳遍整個網絡,導緻所有的計算機都收到了它。如此一來,一方面廣播資訊消耗了網絡整體的帶寬,另一方面,收到廣播資訊的計算機還要消耗一部分CPU時間來對它進行處理。造成了網絡帶寬和CPU運算能力的大量無謂消耗。

1.3 廣播資訊是那麼經常發出的嗎?

讀到這裡,您也許會問:廣播資訊真是那麼頻繁出現的嗎?

答案是:是的!實際上廣播幀會非常頻繁地出現。利用TCP/IP協定棧通信時,除了前面出現的ARP外,還有可能需要發出DHCP、RIP等很多其他類型的廣播資訊。

ARP廣播,是在需要與其他主機通信時發出的。當客戶機請求DHCP伺服器配置設定IP位址時,就必須發出DHCP的廣播。而使用RIP作為路由協定時,每隔30秒路由器都會對鄰近的其他路由器廣播一次路由資訊。RIP以外的其他路由協定使用多點傳播傳輸路由資訊,這也會被交換機轉發(Flooding)。除了TCP/IP以外,NetBEUI、IPX和Apple Talk等協定也經常需要用到廣播。例如在Windows下輕按兩下打開“網絡計算機”時就會發出廣播(多點傳播)資訊。(Windows XP除外……)

總之,廣播就在我們身邊。下面是一些常見的廣播通信:

(1)ARP請求:建立IP位址和MAC位址的映射關系。

(2)RIP:一種路由協定。

(3)DHCP:用于自動設定IP位址的協定。

(4)NetBEUI:Windows下使用的網絡協定。

(5)IPX:NovellNetware使用的網絡協定。

(6)Apple Talk:蘋果公司的Macintosh計算機使用的網絡協定。

如果整個網絡隻有一個廣播域,那麼一旦發出廣播資訊,就會傳遍整個網絡,并且對網絡中的主機帶來額外的負擔。是以,在設計LAN時,需要注意如何才能有效地分割廣播域。

1.4 廣播域的分割與VLAN的必要性

分割廣播域時,一般都必須使用到路由器。使用路由器後,可以以路由器上的網絡接口(LAN Interface)為機關分割廣播域。

但是,通常情況下路由器上不會有太多的網絡接口,其數目多在1~4個左右。随着寬帶連接配接的普及,寬帶路由器(或者叫IP共享器)變得較為常見,但是需要注意的是,它們上面雖然帶着多個(一般為4個左右)連接配接LAN一側的網絡接口,但那實際上是路由器内置的交換機,并不能分割廣播域。

況且使用路由器分割廣播域的話,所能分割的個數完全取決于路由器的網絡接口個數,使得使用者無法自由地根據實際需要分割廣播域。

與路由器相比,二層交換機一般帶有多個網絡接口。是以如果能使用它分割廣播域,那麼無疑運用上的靈活性會大大提高。

用于在二層交換機上分割廣播域的技術,就是VLAN。通過利用VLAN,我們可以自由設計廣播域的構成,提高網絡設計的自由度。

2.實作VLAN的機制

2.1 實作VLAN的機制

在了解了“為什麼需要VLAN”之後,接下來讓我們來了解一下交換機是如何使用VLAN分割廣播域的。

首先,在一台未設定任何VLAN的二層交換機上,任何廣播幀都會被轉發給除接收端口外的所有其他端口(Flooding)。例如,計算機A發送廣播資訊後,會被轉發給端口2、3、4。

VLAN原理詳解

 這時,如果在交換機上生成紅、藍兩個VLAN;同時設定端口1、2屬于紅色VLAN、端口3、4屬于藍色VLAN。再從A發出廣播幀的話,交換機就隻會把它轉發給同屬于一個VLAN的其他端口——也就是同屬于紅色VLAN的端口2,不會再轉發給屬于藍色VLAN的端口。

同樣,C發送廣播資訊時,隻會被轉發給其他屬于藍色VLAN的端口,不會被轉發給屬于紅色VLAN的端口。

VLAN原理詳解
就這樣,VLAN通過限制廣播幀轉發的範圍分割了廣播域。上圖中為了便于說明,以紅、藍兩色識别不同的VLAN,在實際使用中則是用“VLAN ID”來區分的。

2.2 直覺地描述VLAN

如果要更為直覺地描述VLAN的話,我們可以把它了解為将一台交換機在邏輯上分割成了數台交換機。在一台交換機上生成紅、藍兩個VLAN,也可以看作是将一台交換機換做一紅一藍兩台虛拟的交換機。
VLAN原理詳解

在紅、藍兩個VLAN之外生成新的VLAN時,可以想象成又添加了新的交換機。

但是,VLAN生成的邏輯上的交換機是互不相通的。是以,在交換機上設定VLAN後,如果未做其他處理,VLAN間是無法通信的。

明明接在同一台交換機上,但卻偏偏無法通信——這個事實也許讓人難以接受。但它既是VLAN友善易用的特征,又是使VLAN令人難以了解的原因。

2.3 需要VLAN間通信時怎麼辦

那麼,當我們需要在不同的VLAN間通信時又該如何是好呢?

請大家再次回憶一下:VLAN是廣播域。而通常兩個廣播域之間由路由器連接配接,廣播域之間來往的資料包都是由路由器中繼的。是以,VLAN間的通信也需要路由器提供中繼服務,這被稱作“VLAN間路由”。

VLAN間路由,可以使用普通的路由器,也可以使用三層交換機。其中的具體内容,等有機會再細說吧。在這裡希望大家先記住不同VLAN間互相通信時需要用到路由功能。

3.VLAN的通路連結(Access Link)

3.1 交換機的端口類型

交換機的端口,可以分為以下兩種:

(1)通路連結(Access Link)

(2)彙聚連結(Trunk Link)

接下來就讓我們來依次學習這兩種不同端口的特征。這一講,首先學習“通路連結”。

3.2 通路連結

通路連結,指的是“隻屬于一個VLAN,且僅向該VLAN轉發資料幀”的端口。在大多數情況下,通路連結所連的是客戶機。

通常設定VLAN的順序是:

(1)生成VLAN

(2)設定通路連結(決定各端口屬于哪一個VLAN)

設定通路連結的手法,可以是事先固定的、也可以是根據所連的計算機而動态改變設定。前者被稱為“靜态VLAN”、後者自然就是“動态VLAN”了。

3.2.1 靜态VLAN——基于端口

靜态VLAN又被稱為基于端口的VLAN(PortBased VLAN)。顧名思義,就是明确指定各端口屬于哪個VLAN的設定方法。

VLAN原理詳解

由于需要一個個端口地指定,是以當網絡中的計算機數目超過一定數字(比如數百台)後,設定操作就會變得煩雜無比。并且,客戶機每次變更所連端口,都必須同時更改該端口所屬VLAN的設定——這顯然不适合那些需要頻繁改變拓補結構的網絡。

3.2.2 動态VLAN

另一方面,動态VLAN則是根據每個端口所連的計算機,随時改變端口所屬的VLAN。這就可以避免上述的更改設定之類的操作。動态VLAN可以大緻分為3類:

(1)基于MAC位址的VLAN(MAC Based VLAN)

(2)基于子網的VLAN(Subnet Based VLAN)

(3)基于使用者的VLAN(User Based VLAN)

其間的差異,主要在于根據OSI參照模型哪一層的資訊決定端口所屬的VLAN。

3.2.2.1 基于MAC位址的VLAN

基于MAC位址的VLAN,就是通過查詢并記錄端口所連計算機上網卡的MAC位址來決定端口的所屬。假定有一個MAC位址“A”被交換機設定為屬于VLAN “10”,那麼不論MAC位址為“A”的這台計算機連在交換機哪個端口,該端口都會被劃分到VLAN 10中去。計算機連在端口1時,端口1屬于VLAN 10;而計算機連在端口2時,則是端口2屬于VLAN 10。

VLAN原理詳解

由于是基于MAC位址決定所屬VLAN的,是以可以了解為這是一種在OSI的第二層設定通路連結的辦法。

但是,基于MAC位址的VLAN,在設定時必須調查所連接配接的所有計算機的MAC位址并加以登入。而且如果計算機交換了網卡,還是需要更改設定。

3.2.2.2 基于IP位址的VLAN

基于子網的VLAN,則是通過所連計算機的IP位址,來決定端口所屬VLAN的。不像基于MAC位址的VLAN,即使計算機因為交換了網卡或是其他原因導緻MAC位址改變,隻要它的IP位址不變,就仍可以加入原先設定的VLAN。

VLAN原理詳解

是以,與基于MAC位址的VLAN相比,能夠更為簡便地改變網絡結構。IP位址是OSI參照模型中第三層的資訊,是以我們可以了解為基于子網的VLAN是一種在OSI的第三層設定通路連結的方法。

基于使用者的VLAN,則是根據交換機各端口所連的計算機上目前登入的使用者,來決定該端口屬于哪個VLAN。這裡的使用者識别資訊,一般是計算機作業系統登入的使用者,比如可以是Windows域中使用的使用者名。這些使用者名資訊,屬于OSI第四層以上的資訊。

總的來說,決定端口所屬VLAN時利用的資訊在OSI中的層面越高,就越适于建構靈活多變的網絡。

4.VLAN的彙聚連結(Trunk Link)

4.1 需要設定跨越多台交換機的VLAN時……

到此為止,我們學習的都是使用單台交換機設定VLAN時的情況。那麼,如果需要設定跨越多台交換機的VLAN時又如何呢?

在規劃企業級網絡時,很有可能會遇到隸屬于同一部門的使用者分散在同一座建築物中的不同樓層的情況,這時可能就需要考慮到如何跨越多台交換機設定VLAN的問題了。假設有如下圖所示的網絡,且需要将不同樓層的A、C和B、D設定為同一個VLAN。

VLAN原理詳解

這時最關鍵的就是“交換機1和交換機2該如何連接配接才好呢?”

最簡單的方法,自然是在交換機1和交換機2上各設一個紅、藍VLAN專用的接口并互聯了。

VLAN原理詳解

但是,這個辦法從擴充性和管理效率來看都不好。例如,在現有網絡基礎上再建立VLAN時,為了讓這個VLAN能夠互通,就需要在交換機間連接配接新的網線。建築物樓層間的縱向布線是比較麻煩的,一般不能由基層管理人員随意進行。并且,VLAN越多,樓層間(嚴格地說是交換機間)互聯所需的端口也越來越多,交換機端口的利用效率低是對資源的一種浪費、也限制了網絡的擴充。

為了避免這種低效率的連接配接方式,人們想辦法讓交換機間互聯的網線集中到一根上,這時使用的就是彙聚連結(Trunk Link)。

4.2 何謂彙聚連結?

彙聚連結(Trunk Link)指的是能夠轉發多個不同VLAN的通信的端口。

彙聚鍊路上流通的資料幀,都被附加了用于識别分屬于哪個VLAN的特殊資訊。

現在再讓我們回過頭來考慮一下剛才那個網絡如果采用彙聚鍊路又會如何呢?使用者隻需要簡單地将交換機間互聯的端口設定為彙聚連結就可以了。這時使用的網線還是普通的UTP線,而不是什麼其他的特殊布線。圖例中是交換機間互聯,是以需要用交叉線來連接配接。

接下來,讓我們具體看看彙聚連結是如何實作跨越交換機間的VLAN的。

A發送的資料幀從交換機1經過彙聚鍊路到達交換機2時,在資料幀上附加了表示屬于紅色VLAN的标記。

交換機2收到資料幀後,經過檢查VLAN辨別發現這個資料幀是屬于紅色VLAN的,是以去除标記後根據需要将複原的資料幀隻轉發給其他屬于紅色VLAN的端口。這時的轉送,是指經過确認目标MAC位址并與MAC位址清單比對後隻轉發給目标MAC位址所連的端口。隻有當資料幀是一個廣播幀、多點傳播幀或是目标不明的幀時,它才會被轉發到所有屬于紅色VLAN的端口。

藍色VLAN發送資料幀時的情形也與此相同。

VLAN原理詳解

通過彙聚鍊路時附加的VLAN識别資訊,有可能支援标準的“IEEE 802.1Q”協定,也可能是Cisco産品獨有的“ISL(Inter Switch Link)”。如果交換機支援這些規格,那麼使用者就能夠高效率地構築橫跨多台交換機的VLAN。

另外,彙聚鍊路上流通着多個VLAN的資料,自然負載較重。是以,在設定彙聚連結時,有一個前提就是必須支援100Mbps以上的傳輸速度。

另外,預設條件下,彙聚連結會轉發交換機上存在的所有VLAN的資料。換一個角度看,可以認為彙聚連結(端口)同時屬于交換機上所有的VLAN。由于實際應用中很可能并不需要轉發所有VLAN的資料,是以為了減輕交換機的負載、也為了減少對帶寬的浪費,我們可以通過使用者設定限制能夠經由彙聚鍊路互聯的VLAN。

關于IEEE 802.1Q和ISL的具體内容,将在下一講中提到。

4.3 通路連結的總結

綜上所述,設定通路連結的手法有靜态VLAN和動态VLAN兩種,其中動态VLAN又可以繼續細分成幾個小類。

其中基于子網的VLAN和基于使用者的VLAN有可能是網絡裝置廠商使用獨有的協定實作的,不同廠商的裝置之間互聯有可能出現相容性問題;是以在選擇交換機時,一定要注意事先确認。

下表總結了靜态VLAN和動态VLAN的相關資訊。

種類 解說
靜态VLAN(基于端口的VLAN) 将交換機的各端口固定指派給VLAN
動态VLAN 基于MAC位址的VLAN 根據各端口所連計算機的MAC位址設定
基于子網的VLAN 根據各端口所連計算機的IP位址設定
基于使用者的VLAN 根據端口所連計算機上登入使用者設定

5.VLAN的彙聚方式——IEEE802.1Q與ISL

5.1 彙聚方式

在交換機的彙聚連結上,可以通過對資料幀附加VLAN資訊,建構跨越多台交換機的VLAN。

附加VLAN資訊的方法,最具有代表性的有:

(1)IEEE 802.1Q

(2)ISL

現在就讓我們看看這兩種協定分别如何對資料幀附加VLAN資訊。

5.2 IEEE 802.1Q

IEEE 802.1Q,俗稱“Dot One Q”,是經過IEEE認證的對資料幀附加VLAN識别資訊的協定。

在此,請大家先回憶一下以太網資料幀的标準格式。

IEEE 802.1Q所附加的VLAN識别資訊,位于資料幀中“發送源MAC位址”與“類别域”(Type Field)之間。具體内容為2位元組的TPID(Tag Protocol IDentifier)和2位元組的TCI(Tag Control Information),共計4位元組。

在資料幀中添加了4位元組的内容,那麼CRC值自然也會有所變化。這時資料幀上的CRC是插入TPID、TCI後,對包括它們在内的整個資料幀重新計算後所得的值。

VLAN原理詳解

而當資料幀離開彙聚鍊路時,TPID和TCI會被去除,這時還會進行一次CRC的重新計算。

TPID字段在以太網封包中所處位置與不帶VLAN Tag的封包中協定類型字段所處位置相同。TPID的值固定為0x8100,它标示網絡幀承載的802.1Q類型,交換機通過它來确定資料幀内附加了基于IEEE 802.1Q的VLAN資訊。而實質上的VLAN ID,是TCI中的12位元。由于總共有12位,是以最多可供識别4096個VLAN。

基于IEEE 802.1Q附加的VLAN資訊,就像在傳遞物品時附加的标簽。是以,它也被稱作“标簽型VLAN”(Tagging VLAN)。

5.3 ISL(Inter Switch Link)

ISL,是Cisco産品支援的一種與IEEE 802.1Q類似的、用于在彙聚鍊路上附加VLAN資訊的協定。

使用ISL後,每個資料幀頭部都會被附加26位元組的“ISL標頭(ISL Header)”,并且在幀尾帶上通過對包括ISL標頭在内的整個資料幀進行計算後得到的4位元組CRC值。換而言之,就是總共增加了30位元組的資訊。

在使用ISL的環境下,當資料幀離開彙聚鍊路時,隻要簡單地去除ISL標頭和新CRC就可以了。由于原先的資料幀及其CRC都被完整保留,是以無需重新計算CRC。

VLAN原理詳解

ISL有如用ISL標頭和新CRC将原資料幀整個包裹起來,是以也被稱為“封裝型VLAN”(Encapsulated VLAN)。

需要注意的是,不論是IEEE802.1Q的“Tagging VLAN”,還是ISL的“Encapsulated VLAN”,都不是很嚴密的稱謂。不同的書籍與參考資料中,上述詞語有可能被混合使用,是以需要大家在學習時格外注意。

并且由于ISL是Cisco獨有的協定,是以隻能用于Cisco網絡裝置之間的互聯。

6.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原理詳解

如果采用這個辦法,大家應該不難想象它的擴充性很成問題。每增加一個新的VLAN,都需要消耗路由器的端口和交換機上的通路連結,而且還需要重新布設一條網線。而路由器,通常不會帶有太多LAN接口的。建立VLAN時,為了對應增加的VLAN所需的端口,就必須将路由器更新成帶有多個LAN接口的高端産品,這部分成本、還有重新布線所帶來的開銷,都使得這種接線法成為一種不受歡迎的辦法。

那麼,第二種辦法“不論VLAN數目多少,都隻用一條網線連接配接路由器與交換機”呢?當使用一條網線連接配接路由器與交換機、進行VLAN間路由時,需要用到彙聚連結。

具體實作過程為:首先将用于連接配接路由器的交換機端口設為彙聚連結(Trunk Link),而路由器上的端口也必須支援彙聚鍊路。雙方用于彙聚鍊路的協定自然也必須相同。接着在路由器上定義對應各個VLAN的“子接口”(Sub Interface)。盡管實際與交換機連接配接的實體端口隻有一個,但在理論上我們可以把它分割為多個虛拟端口。

VLAN将交換機從邏輯上分割成了多台,因而用于VLAN間路由的路由器,也必須擁有分别對應各個VLAN的虛拟接口。

VLAN原理詳解
采用這種方法的話,即使之後在交換機上建立VLAN,仍隻需要一條網線連接配接交換機和路由器。使用者隻需要在路由器上新設一個對應新VLAN的子接口就可以了。與前面的方法相比,擴充性要強得多,也不用擔心需要更新LAN接口數不足的路由器或是重新布線。

6.3 同一VLAN内的通信

接下來,我們繼續學習使用彙聚鍊路連接配接交換機與路由器時,VLAN間路由是如何進行的。如下圖所示,為各台計算機以及路由器的子接口設定IP位址。
VLAN原理詳解
紅色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位址清單。
端口 MAC位址 VLAN
1 A 1
2 B 1
3 C 2
4 D 2
5
6 R 彙聚

首先考慮計算機A與同一VLAN内的計算機B之間通信時的情形。

計算機A發出ARP請求資訊,請求解析B的MAC位址。交換機收到資料幀後,檢索MAC位址清單中與收信端口同屬一個VLAN的表項。結果發現,計算機B連接配接在端口2上,于是交換機将資料幀轉發給端口2,最終計算機B收到該幀。收發信雙方同屬一個VLAN之内的通信,一切處理均在交換機内完成。

VLAN原理詳解

6.4 不同VLAN間的通信

接下來是這一講的核心内容,不同VLAN間的通信。讓我們來考慮一下計算機A與計算機C之間通信時的情況。
VLAN原理詳解

計算機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間通信時,即使通信雙方都連接配接在同一台交換機上,也必須經過:“發送方——交換機——路由器——交換機——接收方”這樣一個流程。

7.三層交換機

7.1 使用路由器進行VLAN間路由時的問題

現在,我們知道隻要能提供VLAN間路由,就能夠使分屬不同VLAN的計算機互相通信。但是,如果使用路由器進行VLAN間路由的話,随着VLAN之間流量的不斷增加,很可能導緻路由器成為整個網絡的瓶頸。

交換機使用被稱為ASIC(ApplicationSpecified Integrated Circuit)的專用硬體晶片處理資料幀的交換操作,在很多機型上都能實作以纜線速度(Wired Speed)交換。而路由器,則基本上是基于軟體處理的。即使以纜線速度接收到資料包,也無法在不限速的條件下轉發出去,是以會成為速度瓶頸。就VLAN間路由而言,流量會集中到路由器和交換機互聯的彙聚鍊路部分,這一部分尤其特别容易成為速度瓶頸。并且從硬體上看,由于需要分别設定路由器和交換機,在一些空間狹小的環境裡可能連設定的場所都成問題。

7.2 三層交換機(Layer 3 Switch)

為了解決上述問題,三層交換機應運而生。三層交換機,本質上就是“帶有路由功能的(二層)交換機”。路由屬于OSI參照模型中第三層網絡層的功能,是以帶有第三層路由功能的交換機才被稱為“三層交換機”。

關于三層交換機的内部結構,可以參照下面的簡圖。

VLAN原理詳解

在一台本體内,分别設定了交換機子產品和路由器子產品;而内置的路由子產品與交換子產品相同,使用ASIC硬體處理路由。是以,與傳統的路由器相比,可以實作高速路由。并且,路由與交換子產品是彙聚連結的,由于是内部連接配接,可以確定相當大的帶寬。

7.2.1 使用三層交換機進行VLAN間路由(VLAN内通信)

在三層交換機内部資料究竟是怎樣傳播的呢?基本上,它和使用彙聚鍊路連接配接路由器與交換機時的情形相同。

假設有如下圖所示的4台計算機與三層交換機互聯。當使用路由器連接配接時,一般需要在LAN接口上設定對應各VLAN的子接口;而三層交換機則是在内部生成“VLAN接口”(VLAN Interface)。VLAN接口,是用于各VLAN收發資料的接口。(注:在Cisco的Catalyst系列交換機上,VLAN Interface被稱為SVI——Switched Virtual Interface)

VLAN原理詳解

為了與使用路由器進行VLAN間路由對比,讓我們同樣來考慮一下計算機A與計算機B之間通信時的情況。首先是目标位址為B的資料幀被發到交換機;通過檢索同一VLAN的MAC位址清單發現計算機B連在交換機的端口2上;是以将資料幀轉發給端口2。

7.2.2 使用三層交換機進行VLAN間路由(VLAN間通信)

接下來設想一下計算機A與計算機C間通信時的情形。針對目标IP位址,計算機A可以判斷出通信對象不屬于同一個網絡,是以向預設網關發送資料(Frame 1)。

交換機通過檢索MAC位址清單後,經由内部彙聚連結,将資料幀轉發給路由子產品。在通過内部彙聚鍊路時,資料幀被附加了屬于紅色VLAN的VLAN識别資訊(Frame 2)。

路由子產品在收到資料幀時,先由資料幀附加的VLAN識别資訊分辨出它屬于紅色VLAN,據此判斷由紅色VLAN接口負責接收并進行路由處理。因為目标網絡192.168.2.0/24是直連路由器的網絡、且對應藍色VLAN;是以,接下來就會從藍色VLAN接口經由内部彙聚鍊路轉發回交換子產品。在通過彙聚鍊路時,這次資料幀被附加上屬于藍色VLAN的識别資訊(Frame 3)。

交換機收到這個幀後,檢索藍色VLAN的MAC位址清單,确認需要将它轉發給端口3。由于端口3是通常的通路連結,是以轉發前會先将VLAN識别資訊去除(Frame 4)。最終,計算機C成功地收到交換機轉發來的資料幀。

VLAN原理詳解
整體的流程,與使用外部路由器時的情況十分相似——都需要經過“發送方→交換子產品→路由子產品→交換子產品→接收方”。

8.加速VLAN間通信的手段

8.1 流(Flow)

根據到此為止的學習,我們已經知道VLAN間路由,必須經過外部的路由器或是三層交換機的内置路由子產品。但是,有時并不是所有的資料都需要經過路由器(或路由子產品)。

例如,使用FTP(File Transfer Protocol)傳輸容量為數MB以上的較大的檔案時,由于MTU的限制,IP協定會将資料分割成小塊後傳輸、并在接收方重新組合。這些被分割的資料,“發送的目标”是完全相同的。發送目标相同,也就意味着同樣的目标IP位址、目标端口号(注:特别強調一下,這裡指的是TCP/UDP端口)。自然,源IP位址、源端口号也應該相同。這樣一連串的資料流被稱為“流”(Flow)。

隻要将流最初的資料正确地路由以後,後繼的資料理應也會被同樣地路由。

據此,後繼的資料不再需要路由器進行路由處理;通過省略反複進行的路由操作,可以進一步提高VLAN間路由的速度。

VLAN原理詳解

8.2 加速VLAN間路由的機制

接下來,讓我們具體考慮一下該如何使用三層交換機進行高速VLAN間路由。

首先,整個流的第一塊資料,照常由交換機轉發→路由器路由→再次由交換機轉發到目标所連端口。這時,将第一塊資料路由的結果記錄到緩存裡儲存下來。需要記錄的資訊有:

(1)目标IP位址

(2)源IP位址

(3)目标TCP/UDP端口号

(4)源TCP/UDP端口号

(5)接收端口号(交換機)

(6)轉發端口号(交換機)

(7)轉發目标MAC位址

等等。

同一個流的第二塊以後的資料到達交換機後,直接通過查詢先前儲存在緩存中的資訊查出“轉發端口号”後就可以轉發給目标所連端口了。

這樣一來,就不需要再一次次經由内部路由子產品中繼,而僅憑交換機内部的緩存資訊就足以判斷應該轉發的端口。

這時,交換機會對資料幀進行由路由器中繼時相似的處理,例如改寫MAC位址、IP標頭中的TTL和Check Sum校驗碼資訊等。

VLAN原理詳解

通過在交換機上緩存路由結果,實作了以纜線速度(Wired Speed)接收發送方傳輸來資料的資料、并且能夠全速路由、轉發給接收方。

需要注意的是,類似的加速VLAN間路由的手法多由各廠商獨有的技術所實作,并且該功能的稱謂也因廠商而異。例如,在Cisco的Catalyst系列交換機上,這種功能被稱為“多層交換”(Multi Layer Switching)。另外,除了三層交換機的内部路由子產品,外部路由器中的某些機型也支援類似的高速VLAN間路由機制。

9.傳統型路由器存在的意義

9.1 路由器的必要性

三層交換機的價格,在問世之初非常昂貴,但是現在它們的價格已經下降了許多。目前國外一些廉價機型的售價,折合成人民币後僅為一萬多元,而且還在繼續下降中。

既然三層交換機能夠提供比傳統型路由器更為高速的路由處理,那麼網絡中還有使用路由器的必要嗎?

答案是:“是”。

使用路由器的必要性,主要表現在以下幾個方面:

(1)用于與WAN連接配接

三層交換機終究是“交換機”。也就是說,絕大多數機型隻配有LAN(以太網)接口。在少數高端交換機上也有用于連接配接WAN的串行接口或是ATM接口,但在大多數情況下,連接配接WAN還是需要用到路由器。

(2)保證網絡安全

在三層交換機上,通過資料包過濾也能確定一定程度的網絡安全。但是使用路由器所提供的各種網絡安全功能,使用者可以建構更為安全可靠的網絡。

路由器提供的網絡安全功能中,除了最基本的資料包過濾功能外,還能基于IPSec建構VPN(VirtualPrivate Network)、利用RADIUS進行使用者認證等等。

(3)支援除TCP/IP以外的異構網絡架構

盡管TCP/IP已經成為目前網絡協定架構的主流,但還有不少網絡利用Novell Netware下的IPX/SPX或Macintosh下的AppleTalk等網絡協定。三層交換機中,除了部分高端機型外基本上還隻支援TCP/IP。是以,在需要使用除TCP/IP之外其他網絡協定的環境下,路由器還是必不可少的。

注:在少數高端交換機上,也能支援上述路由器的功能。例如Cisco的Catalyst 6500系列,就可以選擇與WAN連接配接的接口子產品;還有可選的基于IPSec實作VPN的子產品;并且也能支援TCP/IP以外的其他網絡協定。

9.2 路由器和交換機配合建構LAN的執行個體

下面讓我們來看一個路由器和交換機搭配建構LAN的執行個體。
VLAN原理詳解

利用在各樓層配置的二層交換機定義VLAN,連接配接TCP/IP客戶計算機。各樓層間的VLAN間通信,利用三層交換機的高速路由加以實作。如果網絡環境要求高可靠性,還可以考慮備援配置三層交換機。

與WAN的連接配接,則通過帶有各種網絡接口的路由器進行。并且,通過路由器的資料包過濾和VPN等功能實作網絡安全。此外,使用路由器還能支援Novell Netware等TCP/IP之外的網絡。

隻有在充分掌握了二層、三層交換機以及傳統路由器的基礎上,才能做到物競其用,構築出高效率、高成本效益的網絡。

10.使用VLAN設計區域網路

10.1 使用VLAN設計區域網路的特點

通過使用VLAN建構區域網路,使用者能夠不受實體鍊路的限制而自由地分割廣播域。

另外,通過先前提到的路由器與三層交換機提供的VLAN間路由,能夠适應靈活多變的網絡構成。

但是,由于利用VLAN容易導緻網絡構成複雜化,是以也會造成整個網絡的組成難以把握。

可以這樣說,在利用VLAN時,除了有“網絡構成靈活多變”這個優點外,還搭配着“網絡構成複雜化”這個缺點。

下面,就讓我們來看看具體的執行個體。

10.2 不使用VLAN的區域網路中網絡構成的改變

假設有如圖所示的由1台路由器、2台交換機構成的“不使用VLAN建構”的網絡。
VLAN原理詳解

圖中的路由器,帶有2個LAN接口。左側的網絡是192.168.1.0/24,右側是192.168.2.0/24。

現在如果想将192.168.1.0/24這個網絡上的計算機A轉移到192.168.2.0/24上去,就需要改變實體連接配接、将A接到右側的交換機上。

并且,當需要新增一個位址為192.168.3.0/24的網絡時,還要在路由器上再占用一個LAN接口并添置一台交換機。而由于這台路由器上隻帶了2個LAN接口,是以為了新增網絡還必須将路由器更新為帶有3個以上LAN接口的産品。

10.3 使用VLAN的區域網路中網絡構成的改變

接下來再假設有一個由1台路由器、2台交換機構成的“使用VLAN”的區域網路。交換機與交換機、交換機與路由器之間均為彙聚鍊路;并且假設192.168.1.0/24對應紅色VLAN、192.168.2.0/24對應藍色VLAN。
VLAN原理詳解

需要将連接配接在交換機1上192.168.1.0/24這個網段的計算機A轉屬192.168.2.0/24時,無需更改實體布線。隻要在交換機上生成藍色VLAN,然後将計算機A所連的端口1加入到藍色VLAN中去,使它成為通路連結即可。

然後,根據需要設定計算機A的IP位址、預設網關等資訊就可以了。如果IP位址相關的設定是由DHCP擷取的,那麼在客戶機方面無需進行任何設定修改,就可以在不同網段間移動。

利用VLAN後,我們可以在免于改動任何實體布線的前提下,自由進行網絡的邏輯設計。如果所處的工作環境恰恰需要經常改變網絡布局,那麼利用VLAN的優勢就非常明顯了。

并且,當需要新增一個位址為192.168.3.0/24的網段時,也隻需要在交換機上建立一個對應192.168.3.0/24的VLAN,并将所需的端口加入它的通路鍊路就可以了。

如果網絡環境中還需要利用外部路由器,則隻要在路由器的彙聚端口上新增一個子接口的設定就可以完成全部操作,而不需要消耗更多的實體接口(LAN接口)。要使用的是三層交換機内部的路由子產品,則隻需要新設一個VLAN接口即可。

網絡環境的成長,往往是難以預測的,很可能經常會出現需要分割現有網絡或是增加新網絡的情況。而充分活用VLAN後,就可以輕易地解決這些問題。

10.4 利用VLAN而導緻的網絡結構複雜化

雖然利用VLAN可以靈活地建構網絡,但是同時,它也帶來了網絡結構複雜化的問題。

特别是由于資料流縱橫交錯,一旦發生故障時,準确定位并排除故障會比較困難。

為了便于了解資料流向的複雜化,假設有下圖所示的網絡。計算機A向計算機C發送資料時,資料流的整體走向如下:

計算機A→交換機1→路由器→交換機1→交換機2→計算機C

VLAN原理詳解
VLAN原理詳解

首先計算機A向交換機1送出資料(①),其後資料被轉發給路由器(②)進行VLAN間路由。路由後的資料,再從彙聚鍊路傳回交換機1(③)。由于通信目标計算機C并不直連在交換機1上,是以還需要經過彙聚鍊路轉發到交換機2(④)。在交換機2上,資料最終被轉發到C所連的端口2上,這才完成整個流程(⑤)。

在這個例子中,僅由2台交換機構成網絡,其資料流已經如此複雜,如果建構橫跨多台交換機的VLAN的話,每個資料流的流向顯然會更加難以把握。

10.5 網絡的邏輯結構與實體結構

為了對應日漸複雜化的資料流,管理者需要從“邏輯結構”與“實體結構”兩方面入手,把握好網絡的現狀。

實體結構,指的是從實體層和資料鍊路層觀察到的網絡的現狀,表示了網絡的實體布線形态和VLAN的設定等等。

而邏輯結構,則表示從網絡層以上的層面觀察到的網絡結構。下面我們就試着以路由器為中心分析一個IP網絡的邏輯結構。

還是先前的那個例子,描繪了布線形态和VLAN設定的“實體結構”如下圖所示。

VLAN原理詳解
分析這個實體結構并轉換成以路由器為中心的邏輯結構後,會得到如下的邏輯結構圖。當我們需要進行路由或是資料包過濾的設定時,都必須在邏輯結構的基礎上進行。
VLAN原理詳解
把握這兩種網絡結構圖的差別是十分重要的,特别是在VLAN和三層交換機大行其道的現代企業級網絡當中。

參考:

《跟着尚雲學VLAN》

《VLAN原理詳解》

《VLAN基本原理-ZTE》

《VLAN 技術原理-HW》

《VLAN/Trunk以及三層交換》

《虛拟區域網路(VLAN)中端口tagged和untagged在多種情況下的作用》

《Linux 下VLAN資料包格式及vconfig指令測試》

《Linux實作的IEEE 802.1Q VLAN》

《Linux VLAN知識總結》

《The LISA Project》

《WNR3500L+TOMATO網絡結構分析》

《WC7520如何配置多SSID對應不同VLAN》

《話說WAYOS中所謂利用IP VLAN來實作使用者隔離的作用分析》

《H618C刷OpenWrt并支援IPTV VLAN硬體處理的方法》

《無線IPTV無線連接配接以及無法看直播問題解決》

《TL-ER6520G某企業網絡配置執行個體》

《如何設定TP-LINK共享上網一體機(網線接入)》

《TL-SG5428應用——多網段網絡規劃配置指南》

繼續閱讀