網絡工程師(17):用路由器讓VLAN之間互通

在上一篇文章留的小問題中,如果兩臺電腦的IP地址在同一個網段,電腦會認為在同一個廣播域,所以,如果倆電腦加入相同的VLAN,必然可以互通;但如果加入了不同的VLAN,由於彼此"聽"不到對方的ARP廣播,自然也不會應答,所以無法互通。

如果倆電腦的IP地址不在同一個網段,電腦會認為不在同一個廣播域,會各自找自己網段的網關。現實生活中一個房間可能會有多個門,但一個廣播域只能有一個網關。所以,電腦的IP地址不在同一個網段,不論是否在一個VLAN,都不能互通。

一般地,在進行IP地址規劃時,一個VLAN規劃在一個網段,不同VLAN規劃在不同的網段。

也許有同學產生了疑問:VLAN雖然控制了廣播域,提高了網絡性能,但是不同VLAN間不能互訪也不成啊,難道電腦間要通信只能在同一個VLAN同一個網段?

當然不是了,VLAN只是在二層進行了隔離,目的是控制廣播幀。VLAN間要互通,可以通過三層來實現,即所謂的VLAN間路由。

提到路由,最先想到的就是路由器。不錯,用路由器的確可以實現VLAN間互通。

網絡工程師(17):用路由器讓VLAN之間互通

要在VLAN間互訪,那麼VLAN內的電腦必須填寫網關(gateway)地址,網關地址就是該VLAN連接的三層設備的接口地址。

圖中,PCA訪問PCC,由於PCA和路由器的端口1都在VLAN2內,所以可以通過ARP互相獲得對方的MAC地址;同理,PCC和路由器的端口3也可以得到對方的MAC地址。

PCA發出訪問PCC的標準幀,交換機端口1收到後打上tag變成802.1Q幀,VID為2,然後送到端口3。端口3拆去tag變成標準幀後發出。路由器端口1收到後拆除以太網封裝,查找路由表後送到端口3,端口3通過ARP獲取PCC的MAC地址後,封裝為標準以太網幀發出。交換機端口12收到後打上tag變成802.1Q幀,VID為4,然後送到端口9,端口9拆去tag變回標準幀發給了PCC。

看上去毫無問題,非常完美!可是,交換機上有3個VLAN,路由器就需要3個端口。如果交換機上有30個VLAN呢?

交換機上的端口數量通常很多,24口、48口甚至更多,由於交換機的所有端口僅支持以太網,所以交換機的全名叫"以太網交換機"。

但路由器就不同了,路由器的主要功能不僅是實現三層轉發,更重要的是實現不同鏈路層協議之間的互通,即所謂的"異種網絡"互通。鏈路層協議有很多,除了我們熟悉的以太網外,還有PPP、HDLC、幀中繼、ATM等等。所以路由器的接口一般都是由支持不同鏈路層協議的擴展板卡提供,實現不同鏈路層協議之間的互通。

所以,路由器實際上並沒有那麼多的以太網端口!即使有,一個VLAN佔一個端口,也顯得太浪費了。

不過,路由器的以太網口可以支持"子接口"!

子接口是一種邏輯接口,一個物理接口可以劃分出多個"子接口"。一條公路,中間劃條線就是雙車道,劃兩條線就是三車道,但實際上還是一條路。

路由器一個接口劃成多個子接口,每個子接口處理不同VLAN的幀,就可以節省大量的物理接口。

這種形式,叫做單臂路由。

網絡工程師(17):用路由器讓VLAN之間互通

圖中,路由器G0/0是物理接口,劃分了三個子接口G0/0.1、G0/0.2和G0/0.3,每個子接口綁定一個VID,專門負責處理攜帶此VID的802.1Q幀,同時配置一個IP地址作為該VLAN的網關。

交換機通過一個Trunk接口連接路由器G0/0接口。

PCA訪問PCB時,PCA發出的標準幀被交換機打上VID2,成為802.1Q幀後來到Trunk接口(Trunk接口一般默認PVID為1),Trunk接口發現此幀的VID與自己的PVID不同,把此802.1Q幀原樣發給路由器。路由器G0/0接口收到後,根據攜帶的VID交給子接口G0/0.1,G0/0.1一看VID,沒錯,是我的貨,拆除以太網封裝,送到路由器轉發進程查找路由表,路由器根據目的IP地址,把數據包送到子接口G0/0.2,G0/0.2封裝為以太網幀,並打上VID3變成802.1Q幀後發給交換機,交換機收到後根據VID送到連接PCB的端口,端口拆除tag變成標準幀後發給PCB。

在單臂路由中,路由器只需要一個接口就可以實現交換機上所有VLAN間的互通,為路由器節省了大量端口。不過我們發現,VLAN間互通的數據會在這條Trunk鏈路上跑個來回,如果交換機VLAN較多、數據量較大,這條鏈路很容易"堵車",導致網絡性能下降,但更重要的是,這對路由器的性能是一個巨大挑戰。與其說導致網絡性能下降的原因是鏈路"堵車"了,倒不如說是因為路由器拆tag、查路由、加tag,疲於奔命,太累了!

有沒有更好的辦法呢?


小Q:電腦的IP地址和網關必須在同一個網段嗎?

歡迎大家留言討論。


分享到:


相關文章: