硬核好文:什麼是Super VLAN?

Super VLAN

,也叫

VLAN聚合

VLAN Aggregation

)指在一個物理網路內,用多個VLAN(稱為Sub-VLAN)隔離廣播域,並將這些Sub-VLAN聚合成一個

邏輯的

VLAN(稱為Super-VLAN),這些Sub-VLAN使用同一個IP子網和預設閘道器,達到節約IP地址資源的目的。

為什麼需要Super VLAN?

交換網路中,VLAN技術以其對廣播域的靈活控制和部署方便而得到了廣泛的應用。

但是在一般的三層交換機中,通常是採用一個VLAN對應一個VLANIF介面的方式實現廣播域之間的互通,這在某些情況下導致了IP地址的浪費。

因為一個VLAN對應的子網中,子網號、子網定向廣播地址、子網預設閘道器地址不能用作VLAN內的主機IP地址,且子網中實際接入的主機可能少於編址數,多出來的IP地址也會因不能再被其他VLAN使用而被浪費掉。

如下圖所示的VLAN規劃中,VLAN2預計未來有10個主機地址的需求,但按編址方式,至少需要給其分配一個掩碼長度是28的子網10。1。1。0/28,其中10。1。1。0為子網號,10。1。1。15為子網定向廣播地址,10。1。1。1為子網預設閘道器地址,這三個地址都不能用作主機地址,剩下範圍在10。1。1。2~10。1。1。14的地址可以被主機使用,共13個。

這樣,VLAN2子網至少浪費3個IP地址,三個VLAN子網一起至少浪費9個IP地址。同時,VLAN2子網實際地址需求只有10個,剩餘的3個也不能再被其他VLAN使用。網路中的VLAN越多,浪費的IP地址也就越多。

硬核好文:什麼是Super VLAN?

普通VLAN網路示意圖

為了解決上述問題,

VLAN聚合

應運而生。它透過引入

Super-VLAN

Sub-VLAN

的概念,使每個Sub-VLAN對應一個廣播域,並讓多個Sub-VLAN和一個Super-VLAN關聯,只給Super-VLAN分配一個IP子網,所有Sub-VLAN都使用Super-VLAN的IP子網和預設閘道器進行三層通訊。

這樣,多個Sub-VLAN

共享一個閘道器地址

,節約了子網號、子網定向廣播地址、子網預設閘道器地址,且各Sub-VLAN間的界線也不再是從前的子網界線了,它們可以根據各自主機的需求數目在Super-VLAN對應子網內靈活的劃分地址範圍,從而即保證了各個Sub-VLAN作為一個獨立廣播域實現廣播隔離,又節省了IP地址資源,提高了編址的靈活性。

Super VLAN應用場景是什麼?

如下圖所示,某公司擁有多個部門,為了提升業務安全性,將不同部門劃分到不同VLAN中。各部門均有訪問Internet需求,且由於業務需要,部門1與部門2間需要互通,部門3與部門4間需要互通,但公司IP地址有限。

硬核好文:什麼是Super VLAN?

VLAN聚合應用組網圖

可透過部署VLAN聚合實現公司的需求,在Switch上部署Super VLAN 2和Super VLAN 3,將Sub VLAN 21和Sub VLAN 22聚合到Super VLAN 2中,將Sub VLAN 31和Sub VLAN 32聚合到Super VLAN 3中。這樣,只需在Switch上為Super VLAN 2和Super VLAN 3分配IP地址,部門1和部門2的使用者可透過Super VLAN 2的IP地址訪問Internet,部門3和部門4的使用者可透過Super VLAN 3的IP地址訪問Internet,既實現了各部門訪問Internet的需求,又節約了IP地址資源。

同時,分別在Switch的Super VLAN 2、Super VLAN 3上配置Proxy ARP,即可實現部門1和部門2間的互通、部門3和部門4間的互通。

Super VLAN是如何工作的?

VLAN聚合透過定義Super-VLAN和Sub-VLAN,使Sub-VLAN只包含物理介面,負責保留各自獨立的廣播域;Super-VLAN

不包含物理介面

,只用來建立三層VLANIF介面。然後再透過建立Super-VLAN和Sub-VLAN間的對映關係,把三層VLANIF介面和物理介面兩部分有機的結合起來,實現所有Sub-VLAN共用一個閘道器與外部網路通訊,並用Proxy ARP實現Sub-VLAN間的三層通訊,從而在實現普通VLAN的隔離廣播域的同時,達到節省IP地址的目的。

工作原理

相對每一個普通VLAN都有一個三層邏輯介面和若干物理介面,VLAN聚合定義的Super-VLAN和Sub-VLAN比較特殊:

Sub-VLAN

:只包含物理介面,不能建立三層VLANIF介面,用於隔離廣播域。每個Sub-VLAN內的主機與外部的三層通訊是靠Super-VLAN的三層VLANIF介面來實現的。

Super-VLAN

:只建立三層VLANIF介面,不包含物理介面,與子網閘道器對應。與普通VLAN不同的是,它的VLANIF介面的Up不依賴於自身物理介面的Up,而是隻要它所含Sub-VLAN中存在Up的物理介面就Up。

一個Super-VLAN可以包含一個或多個Sub-VLAN。Sub-VLAN不再佔用一個獨立的子網網段。在同一個Super-VLAN中,無論主機屬於哪一個Sub-VLAN,它的IP地址都在Super-VLAN對應的子網網段內。

這樣,Sub-VLAN間共用同一個閘道器,既減少了一部分子網號、子網預設閘道器地址和子網定向廣播地址的消耗,又實現了不同廣播域使用同一子網網段地址的目的,消除了子網差異,增加了編址的靈活性,減少了閒置地址浪費。

如下圖所示,按照VLAN聚合的實現方式,令VLAN10為Super-VLAN,分配子網10。1。1。0/24,VLAN2~VLAN4作為Super-VLAN10的Sub-VLAN。

硬核好文:什麼是Super VLAN?

VLAN聚合實現示意圖

可以看出,Sub-VLAN2、Sub-VLAN3和Sub-VLAN4共用一個子網10。1。1。0/24,這樣,該網路中就只有一個子網號10。1。1。0、一個子網預設閘道器地址10。1。1。1和一個子網定向廣播地址10。1。1。255共三個IP地址不能被主機使用,其餘都可以被主機使用。而且,各Sub-VLAN間的界線也不再是從前的子網界線了,它們可以根據其各自主機的需求數目在Super-VLAN對應子網內靈活的劃分地址範圍,比如Sub-VLAN2實際需要10個,就給它分配10。1。1。2~10。1。1。11的地址段。

Sub-VLAN之間的通訊

VLAN聚合在實現不同VLAN共用同一子網網段地址的同時,也給Sub-VLAN間的三層轉發帶來了問題。普通VLAN中,不同VLAN內的主機可以透過各自不同的閘道器進行三層互通。但是Super-VLAN中,所有Sub-VLAN內的主機使用的是同一個網段的地址,共用同一個閘道器地址,主機只會做二層轉發,而不會送閘道器進行三層轉發。即實際上,不同Sub-VLAN的主機在二層是相互隔離的,這就造成了Sub-VLAN間無法通訊的問題。

解決這一問題的方法就是使用

Proxy ARP

如下圖所示,假設Sub-VLAN2內的主機Host_1與Sub-VLAN3內的主機Host_2要通訊,在Super-VLAN10的VLANIF介面上啟用Proxy ARP。

硬核好文:什麼是Super VLAN?

Proxy ARP實現不同Sub-VLAN間的三層通訊組網圖

Host_1與Host_2的通訊過程如下(假設Host_1的ARP表中無Host_2的對應表項):

Host_1將Host_2的IP地址(10。1。1。12)和自己所在網段10。1。1。0/24進行比較,發現Host_2和自己在同一個子網,但是Host_1的ARP表中無Host_2的對應表項。

Host_1傳送ARP廣播報文,請求Host_2的MAC地址,目的IP為10。1。1。12。

閘道器L3 Switch收到Host_1的ARP請求,由於閘道器上使能Sub-VLAN間的Proxy ARP,開始使用報文中的目的IP地址在路由表中查詢,發現匹配了一條路由,下一跳為直連網段(VLANIF10的10。1。1。0/24),VLANIF10對應Super-VLAN10,則向Super-VLAN10的所有Sub-VLAN介面傳送一個ARP廣播,請求Host_2的MAC地址。

Host_2收到閘道器傳送的ARP廣播後,對此請求進行ARP應答。

閘道器收到Host_2的應答後,就把自己的MAC地址迴應給Host_1。

Host_1之後要發給Host_2的報文都先發送給閘道器,由閘道器做三層轉發。

Host_2傳送報文給Host_1的過程和上述的Host_1傳送報文給Host_2的過程類似,不再贅述。

Sub-VLAN與其他網路的三層通訊

如下圖所示,使用者主機與伺服器處於不同的網段中,Switch_1上配置了Sub-VLAN2、Sub-VLAN3、Super-VLAN4和VLAN10,Switch_2上配置了VLAN10和VLAN20。

硬核好文:什麼是Super VLAN?

Sub-VLAN與其他網路的三層通訊組網圖

假設Sub-VLAN2下的主機Host_1想訪問與Switch_2相連的Server,報文轉發流程如下(假設Switch_1上已配置了去往10。1。2。0/24網段的路由,Switch_2上已配置了去往10。1。1。0/24網段的路由,但兩交換機沒有任何三層轉發表項):

Host_1將Server的IP地址(10。1。2。2)和自己所在網段10。1。1。0/24進行比較,發現和自己不在同一個子網,傳送ARP請求給自己的閘道器,請求閘道器的MAC地址,目的MAC為全F,目的IP為10。1。1。1。

Switch_1收到該請求報文後,查詢Sub-VLAN和Super-VLAN的對應關係,知道應該回應Super-VLAN4對應的VLANIF4的MAC地址,並知道從Sub-VLAN2的介面迴應給Host_1。

Host_1學習到閘道器的MAC地址後,開始傳送目的MAC為Super-VLAN4對應的VLANIF4的MAC地址、目的IP為10。1。2。2的報文。

Switch_1收到該報文後,根據Sub-VLAN和Super-VLAN的對應關係以及目的MAC判斷進行三層轉發,查三層轉發表項沒有找到匹配項,上送CPU查詢路由表,得到下一跳地址為10。1。10。2,出介面為VLANIF10,並透過ARP表項和MAC表項確定出介面,把報文傳送給Switch_2。

Switch_2根據正常的三層轉發流程把報文傳送給Server。

Server收到Host_1的報文後給Host_1迴應,迴應報文的目的IP為10。1。1。2,目的MAC為Switch_2上VLANIF20介面的MAC地址,迴應報文的轉發流程如下:

Server給Host_1的迴應報文按照正常的三層轉發流程到達Switch_1。到達Switch_1時,報文的目的MAC地址為Switch_1上VLANIF10介面的MAC地址。

Switch_1收到該報文後根據目的MAC地址判斷進行三層轉發,查三層轉發表項沒有找到匹配項,上送CPU,CPU查路由表,發現目的IP為10。1。1。2對應的出介面為VLANIF4,查詢Sub-VLAN和Super-VLAN的對應關係,並透過ARP表項和MAC表項,知道報文應該從Sub-VLAN2的介面傳送給Host_1。

迴應報文到達Host_1。

Sub-VLAN與其他裝置的二層通訊

如下圖所示,Switch_1上配置了Sub-VLAN2、Sub-VLAN3和Super-VLAN4,Switch_1的IF_1和IF_2配置為Access介面,IF_3介面配置為Trunk介面,並允許VLAN2和VLAN3透過;Switch_2連線Switch_1的介面配置為Trunk介面,並允許VLAN2和VLAN3透過。

硬核好文:什麼是Super VLAN?

Sub-VLAN與其他裝置的二層通訊組網圖

從Host_1進入Switch_1的報文會被打上VLAN2的Tag。在Switch_1中這個Tag不會因為VLAN2是VLAN4的Sub-VLAN而變為VLAN4的Tag。該報文從Switch_1的Trunk介面IF_3出去時,依然是攜帶VLAN2的Tag。

也就是說,Switch_1本身不會發出VLAN4的報文。就算其他裝置有VLAN4的報文傳送到該裝置上,這些報文也會因為Switch_1上沒有VLAN4對應的物理介面而被丟棄。因為Switch_1的IF_3介面上根本就不允許Super-VLAN4透過。對於其他裝置而言,有效的VLAN只有Sub-VLAN2和Sub-VLAN3,所有的報文都是在這些VLAN中互動的。

這樣,Switch_1上雖然配置了VLAN聚合,但與其他裝置的二層通訊,不會涉及到Super-VLAN,與正常的二層通訊流程一樣,此處不再贅述。