【轉】小白都能看明白的VLAN原理解釋
為什麼需要VLAN
1. 什麼是VLAN?
VLAN(Virtual LAN),翻譯成中文是“虛擬區域網”。LAN可以是由少數幾臺家用計算機構成的網路,也可以是數以百計的計算機構成的企業網路。VLAN所指的LAN特指使用路由器分割的網路——也就是廣播域。
在此讓我們先複習一下廣播域的概念。廣播域,指的是廣播幀(目標MAC地址全部為1)所能傳遞到的範圍,亦即能夠直接通訊的範圍。嚴格地說,並不僅僅是廣播幀,多播幀(Multicast Frame)和目標不明的單播幀(Unknown Unicast Frame)也能在同一個廣播域中暢行無阻。
本來,二層交換機只能構建單一的廣播域,不過使用VLAN功能後,它能夠將網路分割成多個廣播域。
2.未分割廣播域時……
那麼,為什麼需要分割廣播域呢?那是因為,如果僅有一個廣播域,有可能會影響到網路整體的傳輸效能。具體原因,請參看附圖加深理解。
圖中,是一個由5臺二層交換機(交換機1~5)連線了大量客戶機構成的網路。假設這時,計算機A需要與計算機B通訊。在基於乙太網的通訊中,必須在資料幀中指定目標MAC地址才能正常通訊,因此計算機A必須先廣播“ARP請求(ARP Request)資訊”,來嘗試獲取計算機B的MAC地址。
交換機1收到廣播幀(ARP請求)後,會將它轉發給除接收埠外的其他所有埠,也就是Flooding了。接著,交換機2收到廣播幀後也會Flooding。交換機3、4、5也還會Flooding。最終ARP請求會被轉發到同一網路中的所有客戶機上。
請大家注意一下,這個ARP請求原本是為了獲得計算機B的MAC地址而發出的。也就是說:只要計算機B能收到就萬事大吉了。可是事實上,資料幀卻傳遍整個網路,導致所有的計算機都收到了它。如此一來,一方面廣播資訊消耗了網路整體的頻寬,另一方面,收到廣播資訊的計算機還要消耗一部分CPU時間來對它進行處理。造成了網路頻寬和CPU運算能力的大量無謂消耗。
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時,需要注意如何才能有效地分割廣播域。
4.廣播域的分割與VLAN的必要性
分割廣播域時,一般都必須使用到路由器。使用路由器後,可以以路由器上的網路介面(LAN Interface)為單位分割廣播域。
但是,通常情況下路由器上不會有太多的網路介面,其數目多在1~4個左右。隨著寬頻連線的普及,寬頻路由器(或者叫IP共享器)變得較為常見,但是需要注意的是,它們上面雖然帶著多個(一般為4個左右)連線LAN一側的網路介面,但那實際上是路由器內建的交換機,並不能分割廣播域。
況且使用路由器分割廣播域的話,所能分割的個數完全取決於路由器的網路介面個數,使得使用者無法自由地根據實際需要分割廣播域。
與路由器相比,二層交換機一般帶有多個網路介面。因此如果能使用它分割廣播域,那麼無疑運用上的靈活性會大大提高。
用於在二層交換機上分割廣播域的技術,就是VLAN。通過利用VLAN,我們可以自由設計廣播域的構成,提高網路設計的自由度。
實現VLAN的機制
1. 實現VLAN的機制
在理解了“為什麼需要VLAN”之後,接下來讓我們來了解一下交換機是如何使用VLAN分割廣播域的。
首先,在一臺未設定任何VLAN的二層交換機上,任何廣播幀都會被轉發給除接收埠外的所有其他埠(Flooding)。例如,計算機A傳送廣播資訊後,會被轉發給埠2、3、4。
這時,如果在交換機上生成紅、藍兩個VLAN;同時設定埠1、2屬於紅色VLAN、埠3、4屬於藍色VLAN。再從A發出廣播幀的話,交換機就只會把它轉發給同屬於一個VLAN的其他埠——也就是同屬於紅色VLAN的埠2,不會再轉發給屬於藍色VLAN的埠。
同樣,C傳送廣播資訊時,只會被轉發給其他屬於藍色VLAN的埠,不會被轉發給屬於紅色VLAN的埠。
就這樣,VLAN通過限制廣播幀轉發的範圍分割了廣播域。上圖中為了便於說明,以紅、藍兩色識別不同的VLAN,在實際使用中則是用“VLAN ID”來區分的。
2.直觀地描述VLAN
如果要更為直觀地描述VLAN的話,我們可以把它理解為將一臺交換機在邏輯上分割成了數臺交換機。在一臺交換機上生成紅、藍兩個VLAN,也可以看作是將一臺交換機換做一紅一藍兩臺虛擬的交換機。
在紅、藍兩個VLAN之外生成新的VLAN時,可以想象成又新增了新的交換機。
但是,VLAN生成的邏輯上的交換機是互不相通的。因此,在交換機上設定VLAN後,如果未做其他處理,VLAN間是無法通訊的。
明明接在同一臺交換機上,但卻偏偏無法通訊——這個事實也許讓人難以接受。但它既是VLAN方便易用的特徵,又是使VLAN令人難以理解的原因。
3. 需要VLAN間通訊時怎麼辦
那麼,當我們需要在不同的VLAN間通訊時又該如何是好呢?
請大家再次回憶一下:VLAN是廣播域。而通常兩個廣播域之間由路由器連線,廣播域之間來往的資料包都是由路由器中繼的。因此,VLAN間的通訊也需要路由器提供中繼服務,這被稱作“VLAN間路由”。
VLAN間路由,可以使用普通的路由器,也可以使用三層交換機。其中的具體內容,等有機會再細說吧。在這裡希望大家先記住不同VLAN間互相通訊時需要用到路由功能。
VLAN的訪問連結(Access Link)
1.交換機的埠型別
交換機的埠,可以分為以下兩種:
(1)訪問連結(Access Link)
(2)匯聚連結(Trunk Link)
接下來就讓我們來依次學習這兩種不同埠的特徵。這一講,首先學習“訪問連結”。
2.訪問連結
訪問連結,指的是“只屬於一個VLAN,且僅向該VLAN轉發資料幀”的埠。在大多數情況下,訪問連結所連的是客戶機。
通常設定VLAN的順序是:
(1)生成VLAN
(2)設定訪問連結(決定各埠屬於哪一個VLAN)
設定訪問連結的手法,可以是事先固定的、也可以是根據所連的計算機而動態改變設定。前者被稱為“靜態VLAN”、後者自然就是“動態VLAN”了。
● 靜態VLAN——基於埠
靜態VLAN又被稱為基於埠的VLAN(PortBased VLAN)。顧名思義,就是明確指定各埠屬於哪個VLAN的設定方法。
由於需要一個個埠地指定,因此當網路中的計算機數目超過一定數字(比如數百臺)後,設定操作就會變得煩雜無比。並且,客戶機每次變更所連埠,都必須同時更改該埠所屬VLAN的設定——這顯然不適合那些需要頻繁改變拓補結構的網路。
● 動態VLAN
另一方面,動態VLAN則是根據每個埠所連的計算機,隨時改變埠所屬的VLAN。這就可以避免上述的更改設定之類的操作。動態VLAN可以大致分為3類:
(1)基於MAC地址的VLAN(MAC Based VLAN)
(2)基於子網的VLAN(Subnet Based VLAN)
(3)基於使用者的VLAN(User Based VLAN)
其間的差異,主要在於根據OSI參照模型哪一層的資訊決定埠所屬的VLAN。
● 基於MAC地址的VLAN
基於MAC地址的VLAN,就是通過查詢並記錄埠所連計算機上網路卡的MAC地址來決定埠的所屬。假定有一個MAC地址“A”被交換機設定為屬於VLAN “10”,那麼不論MAC地址為“A”的這臺計算機連在交換機哪個埠,該埠都會被劃分到VLAN 10中去。計算機連在埠1時,埠1屬於VLAN 10;而計算機連在埠2時,則是埠2屬於VLAN 10。
由於是基於MAC地址決定所屬VLAN的,因此可以理解為這是一種在OSI的第二層設定訪問連結的辦法。
但是,基於MAC地址的VLAN,在設定時必須調查所連線的所有計算機的MAC地址並加以登入。而且如果計算機交換了網路卡,還是需要更改設定。
● 基於IP地址的VLAN
基於子網的VLAN,則是通過所連計算機的IP地址,來決定埠所屬VLAN的。不像基於MAC地址的VLAN,即使計算機因為交換了網路卡或是其他原因導致MAC地址改變,只要它的IP地址不變,就仍可以加入原先設定的VLAN。
因此,與基於MAC地址的VLAN相比,能夠更為簡便地改變網路結構。IP地址是OSI參照模型中第三層的資訊,所以我們可以理解為基於子網的VLAN是一種在OSI的第三層設定訪問連結的方法。
基於使用者的VLAN,則是根據交換機各埠所連的計算機上當前登入的使用者,來決定該埠屬於哪個VLAN。這裡的使用者識別資訊,一般是計算機作業系統登入的使用者,比如可以是Windows域中使用的使用者名稱。這些使用者名稱資訊,屬於OSI第四層以上的資訊。
總的來說,決定埠所屬VLAN時利用的資訊在OSI中的層面越高,就越適於構建靈活多變的網路。
VLAN的匯聚連結(Trunk Link)
1.需要設定跨越多臺交換機的VLAN時……
到此為止,我們學習的都是使用單臺交換機設定VLAN時的情況。那麼,如果需要設定跨越多臺交換機的VLAN時又如何呢?
在規劃企業級網路時,很有可能會遇到隸屬於同一部門的使用者分散在同一座建築物中的不同樓層的情況,這時可能就需要考慮到如何跨越多臺交換機設定VLAN的問題了。假設有如下圖所示的網路,且需要將不同樓層的A、C和B、D設定為同一個VLAN。
這時最關鍵的就是“交換機1和交換機2該如何連線才好呢?”
最簡單的方法,自然是在交換機1和交換機2上各設一個紅、藍VLAN專用的介面並互聯了。
但是,這個辦法從擴充套件性和管理效率來看都不好。例如,在現有網路基礎上再新建VLAN時,為了讓這個VLAN能夠互通,就需要在交換機間連線新的網線。建築物樓層間的縱向佈線是比較麻煩的,一般不能由基層管理人員隨意進行。並且,VLAN越多,樓層間(嚴格地說是交換機間)互聯所需的埠也越來越多,交換機埠的利用效率低是對資源的一種浪費、也限制了網路的擴充套件。
為了避免這種低效率的連線方式,人們想辦法讓交換機間互聯的網線集中到一根上,這時使用的就是匯聚連結(Trunk Link)。
2.何謂匯聚連結?
匯聚連結(Trunk Link)指的是能夠轉發多個不同VLAN的通訊的埠。
匯聚鏈路上流通的資料幀,都被附加了用於識別分屬於哪個VLAN的特殊資訊。
現在再讓我們回過頭來考慮一下剛才那個網路如果採用匯聚鏈路又會如何呢?使用者只需要簡單地將交換機間互聯的埠設定為匯聚連結就可以了。這時使用的網線還是普通的UTP線,而不是什麼其他的特殊佈線。圖例中是交換機間互聯,因此需要用交叉線來連線。
接下來,讓我們具體看看匯聚連結是如何實現跨越交換機間的VLAN的。
A傳送的資料幀從交換機1經過匯聚鏈路到達交換機2時,在資料幀上附加了表示屬於紅色VLAN的標記。
交換機2收到資料幀後,經過檢查VLAN標識發現這個資料幀是屬於紅色VLAN的,因此去除標記後根據需要將復原的資料幀只轉發給其他屬於紅色VLAN的埠。這時的轉送,是指經過確認目標MAC地址並與MAC地址列表比對後只轉發給目標MAC地址所連的埠。只有當資料幀是一個廣播幀、多播幀或是目標不明的幀時,它才會被轉發到所有屬於紅色VLAN的埠。
藍色VLAN傳送資料幀時的情形也與此相同。
通過匯聚鏈路時附加的VLAN識別資訊,有可能支援標準的“IEEE 802.1Q”協議,也可能是Cisco產品獨有的“ISL(Inter Switch Link)”。如果交換機支援這些規格,那麼使用者就能夠高效率地構築橫跨多臺交換機的VLAN。
另外,匯聚鏈路上流通著多個VLAN的資料,自然負載較重。因此,在設定匯聚連結時,有一個前提就是必須支援100Mbps以上的傳輸速度。
另外,預設條件下,匯聚連結會轉發交換機上存在的所有VLAN的資料。換一個角度看,可以認為匯聚連結(埠)同時屬於交換機上所有的VLAN。由於實際應用中很可能並不需要轉發所有VLAN的資料,因此為了減輕交換機的負載、也為了減少對頻寬的浪費,我們可以通過使用者設定限制能夠經由匯聚鏈路互聯的VLAN。
關於IEEE 802.1Q和ISL的具體內容,將在下一講中提到。
3.訪問連結的總結
綜上所述,設定訪問連結的手法有靜態VLAN和動態VLAN兩種,其中動態VLAN又可以繼續細分成幾個小類。
其中基於子網的VLAN和基於使用者的VLAN有可能是網路裝置廠商使用獨有的協議實現的,不同廠商的裝置之間互聯有可能出現相容性問題;因此在選擇交換機時,一定要注意事先確認。
下表總結了靜態VLAN和動態VLAN的相關資訊。
種類解說
靜態VLAN(基於埠的VLAN)將交換機的各埠固定指派給VLAN
動態VLAN基於MAC地址的VLAN根據各埠所連計算機的MAC地址設定
基於子網的VLAN根據各埠所連計算機的IP地址設定
基於使用者的VLAN根據埠所連計算機上登入使用者設定
VLAN的匯聚方式——IEEE802.1Q與ISL
1.匯聚方式
在交換機的匯聚連結上,可以通過對資料幀附加VLAN資訊,構建跨越多臺交換機的VLAN。
附加VLAN資訊的方法,最具有代表性的有:
(1)IEEE 802.1Q
(2)ISL
現在就讓我們看看這兩種協議分別如何對資料幀附加VLAN資訊。
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後,對包括它們在內的整個資料幀重新計算後所得的值。
而當資料幀離開匯聚鏈路時,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)。
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。
ISL有如用ISL包頭和新CRC將原資料幀整個包裹起來,因此也被稱為“封裝型VLAN”(Encapsulated VLAN)。
需要注意的是,不論是IEEE802.1Q的“Tagging VLAN”,還是ISL的“Encapsulated VLAN”,都不是很嚴密的稱謂。不同的書籍與參考資料中,上述詞語有可能被混合使用,因此需要大家在學習時格外注意。
並且由於ISL是Cisco獨有的協議,因此只能用於Cisco網路裝置之間的互聯。
VLAN間路由
1.VLAN間路由的必要性
根據目前為止學習的知識,我們已經知道兩臺計算機即使連線在同一臺交換機上,只要所屬的VLAN不同就無法直接通訊。接下來我們將要學習的就是如何在不同的VLAN間進行路由,使分屬不同VLAN的主機能夠互相通訊。
首先,先來複習一下為什麼不同VLAN間不通過路由就無法通訊。在LAN內的通訊,必須在資料幀頭中指定通訊目標的MAC地址。而為了獲取MAC地址,TCP/IP協議下使用的是ARP。ARP解析MAC地址的方法,則是通過廣播。也就是說,如果廣播報文無法到達,那麼就無從解析MAC地址,亦即無法直接通訊。
計算機分屬不同的VLAN,也就意味著分屬不同的廣播域,自然收不到彼此的廣播報文。因此,屬於不同VLAN的計算機之間無法直接互相通訊。為了能夠在VLAN間通訊,需要利用OSI參照模型中更高一層——網路層的資訊(IP地址)來進行路由。關於路由的具體內容,以後有機會再詳細解說吧。
路由功能,一般主要由路由器提供。但在今天的區域網裡,我們也經常利用帶有路由功能的交換機——三層交換機(Layer 3 Switch)來實現。接下來就讓我們分別看看使用路由器和三層交換機進行VLAN間路由時的情況。
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介面數不足的路由器或是重新佈線。
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之內的通訊,一切處理均在交換機內完成。
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間通訊時,即使通訊雙方都連線在同一臺交換機上,也必須經過:“傳送方——交換機——路由器——交換機——接收方”這樣一個流程。
三層交換機
1.使用路由器進行VLAN間路由時的問題
現在,我們知道只要能提供VLAN間路由,就能夠使分屬不同VLAN的計算機互相通訊。但是,如果使用路由器進行VLAN間路由的話,隨著VLAN之間流量的不斷增加,很可能導致路由器成為整個網路的瓶頸。
交換機使用被稱為ASIC(ApplicationSpecified Integrated Circuit)的專用硬體晶片處理資料幀的交換操作,在很多機型上都能實現以纜線速度(Wired Speed)交換。而路由器,則基本上是基於軟體處理的。即使以纜線速度接收到資料包,也無法在不限速的條件下轉發出去,因此會成為速度瓶頸。就VLAN間路由而言,流量會集中到路由器和交換機互聯的匯聚鏈路部分,這一部分尤其特別容易成為速度瓶頸。並且從硬體上看,由於需要分別設定路由器和交換機,在一些空間狹小的環境裡可能連設定的場所都成問題。
2.三層交換機(Layer 3 Switch)
為了解決上述問題,三層交換機應運而生。三層交換機,本質上就是“帶有路由功能的(二層)交換機”。路由屬於OSI參照模型中第三層網路層的功能,因此帶有第三層路由功能的交換機才被稱為“三層交換機”。
關於三層交換機的內部結構,可以參照下面的簡圖。
在一臺本體內,分別設定了交換機模組和路由器模組;而內建的路由模組與交換模組相同,使用ASIC硬體處理路由。因此,與傳統的路由器相比,可以實現高速路由。並且,路由與交換模組是匯聚連結的,由於是內部連線,可以確保相當大的頻寬。
● 使用三層交換機進行VLAN間路由(VLAN內通訊)
在三層交換機內部資料究竟是怎樣傳播的呢?基本上,它和使用匯聚鏈路連線路由器與交換機時的情形相同。
假設有如下圖所示的4臺計算機與三層交換機互聯。當使用路由器連線時,一般需要在LAN介面上設定對應各VLAN的子介面;而三層交換機則是在內部生成“VLAN介面”(VLAN Interface)。VLAN介面,是用於各VLAN收發資料的介面。(注:在Cisco的Catalyst系列交換機上,VLAN Interface被稱為SVI——Switched Virtual Interface)
為了與使用路由器進行VLAN間路由對比,讓我們同樣來考慮一下計算機A與計算機B之間通訊時的情況。首先是目標地址為B的資料幀被髮到交換機;通過檢索同一VLAN的MAC地址列表發現計算機B連在交換機的埠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間通訊的手段
1.流(Flow)
根據到此為止的學習,我們已經知道VLAN間路由,必須經過外部的路由器或是三層交換機的內建路由模組。但是,有時並不是所有的資料都需要經過路由器(或路由模組)。
例如,使用FTP(File Transfer Protocol)傳輸容量為數MB以上的較大的檔案時,由於MTU的限制,IP協議會將資料分割成小塊後傳輸、並在接收方重新組合。這些被分割的資料,“傳送的目標”是完全相同的。傳送目標相同,也就意味著同樣的目標IP地址、目標埠號(注:特別強調一下,這裡指的是TCP/UDP埠)。自然,源IP地址、源埠號也應該相同。這樣一連串的資料流被稱為“流”(Flow)。
只要將流最初的資料正確地路由以後,後繼的資料理應也會被同樣地路由。
據此,後繼的資料不再需要路由器進行路由處理;通過省略反覆進行的路由操作,可以進一步提高VLAN間路由的速度。
2.加速VLAN間路由的機制
接下來,讓我們具體考慮一下該如何使用三層交換機進行高速VLAN間路由。
首先,整個流的第一塊資料,照常由交換機轉發→路由器路由→再次由交換機轉發到目標所連埠。這時,將第一塊資料路由的結果記錄到快取裡儲存下來。需要記錄的資訊有:
(1)目標IP地址
(2)源IP地址
(3)目標TCP/UDP埠號
(4)源TCP/UDP埠號
(5)接收埠號(交換機)
(6)轉發埠號(交換機)
(7)轉發目標MAC地址
等等。
同一個流的第二塊以後的資料到達交換機後,直接通過查詢先前儲存在快取中的資訊查出“轉發埠號”後就可以轉發給目標所連埠了。
這樣一來,就不需要再一次次經由內部路由模組中繼,而僅憑交換機內部的快取資訊就足以判斷應該轉發的埠。
這時,交換機會對資料幀進行由路由器中繼時相似的處理,例如改寫MAC地址、IP包頭中的TTL和Check Sum校驗碼資訊等。
通過在交換機上快取路由結果,實現了以纜線速度(Wired Speed)接收傳送方傳輸來資料的資料、並且能夠全速路由、轉發給接收方。
需要注意的是,類似的加速VLAN間路由的手法多由各廠商獨有的技術所實現,並且該功能的稱謂也因廠商而異。例如,在Cisco的Catalyst系列交換機上,這種功能被稱為“多層交換”(Multi Layer Switching)。另外,除了三層交換機的內部路由模組,外部路由器中的某些機型也支援類似的高速VLAN間路由機制。
傳統型路由器存在的意義
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以外的其他網路協議。
2.路由器和交換機配合構建LAN的例項
下面讓我們來看一個路由器和交換機搭配構建LAN的例項。
利用在各樓層配置的二層交換機定義VLAN,連線TCP/IP客戶計算機。各樓層間的VLAN間通訊,利用三層交換機的高速路由加以實現。如果網路環境要求高可靠性,還可以考慮冗餘配置三層交換機。
與WAN的連線,則通過帶有各種網路介面的路由器進行。並且,通過路由器的資料包過濾和VPN等功能實現網路安全。此外,使用路由器還能支援Novell Netware等TCP/IP之外的網路。
只有在充分掌握了二層、三層交換機以及傳統路由器的基礎上,才能做到物競其用,構築出高效率、高價效比的網路。
使用VLAN設計區域網
1.使用VLAN設計區域網的特點
通過使用VLAN構建區域網,使用者能夠不受物理鏈路的限制而自由地分割廣播域。
另外,通過先前提到的路由器與三層交換機提供的VLAN間路由,能夠適應靈活多變的網路構成。
但是,由於利用VLAN容易導致網路構成複雜化,因此也會造成整個網路的組成難以把握。
可以這樣說,在利用VLAN時,除了有“網路構成靈活多變”這個優點外,還搭配著“網路構成複雜化”這個缺點。
下面,就讓我們來看看具體的例項。
2.不使用VLAN的區域網中網路構成的改變
假設有如圖所示的由1臺路由器、2臺交換機構成的“不使用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介面的產品。
3.使用VLAN的區域網中網路構成的改變
接下來再假設有一個由1臺路由器、2臺交換機構成的“使用VLAN”的區域網。交換機與交換機、交換機與路由器之間均為匯聚鏈路;並且假設192.168.1.0/24對應紅色VLAN、192.168.2.0/24對應藍色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後,就可以輕易地解決這些問題。
4.利用VLAN而導致的網路結構複雜化
雖然利用VLAN可以靈活地構建網路,但是同時,它也帶來了網路結構複雜化的問題。
特別是由於資料流縱橫交錯,一旦發生故障時,準確定位並排除故障會比較困難。
為了便於理解資料流向的複雜化,假設有下圖所示的網路。計算機A向計算機C傳送資料時,資料流的整體走向如下:
計算機A→交換機1→路由器→交換機1→交換機2→計算機C
首先計算機A向交換機1送出資料(①),其後資料被轉發給路由器(②)進行VLAN間路由。路由後的資料,再從匯聚鏈路返回交換機1(③)。由於通訊目標計算機C並不直連在交換機1上,因此還需要經過匯聚鏈路轉發到交換機2(④)。在交換機2上,資料最終被轉發到C所連的埠2上,這才完成整個流程(⑤)。
在這個例子中,僅由2臺交換機構成網路,其資料流已經如此複雜,如果構建橫跨多臺交換機的VLAN的話,每個資料流的流向顯然會更加難以把握。
5. 網路的邏輯結構與物理結構
為了對應日漸複雜化的資料流,管理員需要從“邏輯結構”與“物理結構”兩方面入手,把握好網路的現狀。
物理結構,指的是從物理層和資料鏈路層觀察到的網路的現狀,表示了網路的物理佈線形態和VLAN的設定等等。
而邏輯結構,則表示從網路層以上的層面觀察到的網路結構。下面我們就試著以路由器為中心分析一個IP網路的邏輯結構。
還是先前的那個例子,描繪了佈線形態和VLAN設定的“物理結構”如下圖所示。
分析這個物理結構並轉換成以路由器為中心的邏輯結構後,會得到如下的邏輯結構圖。當我們需要進行路由或是資料包過濾的設定時,都必須在邏輯結構的基礎上進行。
把握這兩種網路結構圖的區別是十分重要的,特別是在VLAN和三層交換機大行其道的現代企業級網路當中。
轉載自:http://networking.ctocio.com.cn/470/13074470.shtml 感謝作者
相關文章
- 小白也能看懂的MySQLMySql
- 介面自動化測試要做什麼?8個步驟講的明明白白(小白也能看懂系列)
- 原來 PHP 8 都正式釋出了PHP
- 小白也能看懂的 AUC 曲線詳解
- 小白都能看懂的tcp三次握手TCP
- 小白也能看懂的Java記憶體模型Java記憶體模型
- 小白也能看懂的ArrayList的擴容機制
- promise初體驗,小白也能看懂Promise
- 小白也能看懂的JVM記憶體區域JVM記憶體
- 小白也能看懂的快取雪崩、穿透、擊穿快取穿透
- 從 0 到 1 理解 React redux 的設計思想 (5步分解, 保證小白都能看得懂)ReactRedux
- 外行人怎麼了,一樣能看明白加密與通訊加密
- 小白都能看懂的Linux系統下安裝配置ZabbixLinux
- 小白都能看懂的 Spring 原始碼揭祕之Spring MVCSpring原始碼MVC
- 乾貨!上古神器 sed 教程詳解,小白也能看的懂
- 小白都會的linux下安裝RedisLinuxRedis
- 小白都看得懂的Javadoc使用教程Java
- 保姆教程系列:小白也能看懂的 Linux 掛載磁碟實操Linux
- 小白也能看懂的JDK1.8前_HashMap的擴容機制原理JDKHashMap
- 用大白話告訴你小白都能看懂的Hadoop架構原理Hadoop架構
- 小白也能看懂的機器學習之整合演算法機器學習演算法
- 小白都能看得懂的java虛擬機器記憶體模型Java虛擬機記憶體模型
- VLAN技術和VLAN間路由路由
- VLAN技術和VLAN間 路由路由
- 小白也能看懂的,使用終端開啟macOS系統的隱藏功能Mac
- 彙編入門第一篇,小白也能看懂
- 兄弟,用大白話告訴你小白都能看懂的Hadoop架構原理Hadoop架構
- 小白都能看懂的AI安全診斷技術 阿里已經用上了AI阿里
- log4j漏洞的產生原因和解決方案,小白都能看懂!!!!
- 小白都能看懂的Spring原始碼揭祕之IOC容器原始碼分析Spring原始碼
- 小白也能看懂!教你如何快速搭建實用的爬蟲管理平臺爬蟲
- Docker小白到實戰之容器資料卷,整理的明明白白Docker
- 03、VLAN
- VLAN原理
- 配置VLAN
- 運維必會:基於 Ansible 的 Docker 自動化部署,小白也能看懂?運維Docker
- 【Go語言】小白也能看懂的context包詳解:從入門到精通GoContext
- CTQ難理解?這樣說你就明白了