在此篇文章(http://blog.csdn.net/lycb_gz/article/details/7035133 )中,筆者介紹了H3C交換機Spuer VLAN的聚合原理,本節接着要介紹Super VLAN中的Sub VLAN(從VLAN)間主機的三層通訊原理。網絡
咱們在前面已說到,Super VLAN(也就是VLAN聚合)方案中,在實現不一樣Sub VLAN間共用同一子網網段地址的同時也帶來了Sub VLAN間的三層轉發問題。由於在普通VLAN中,VLAN間的主機能夠經過各自不一樣的網關(也就是它們本身的VLAN接口IP地址)進行三層轉發來達到互通的目的。可是在Super VLAN方案中下,各Sub VLAN是不容許配置VLAN接口IP地址的,同一個Super VLAN內的全部主機使用的是同一個網段的地址和共用同一個網關地址,即便是屬於不一樣的Sub VLAN的主機。因爲它們同屬一個子網,彼此通訊時只會作二層轉發,而不會經過網關進行三層轉發。而實際上不一樣的Sub VLAN的主機在二層又是相互隔離的(這是繼承普通VLAN的屬性),這就形成了Sub VLAN間沒法通訊(包括二層通訊和三層通訊)的問題。ide
解決這一問題的方法就是使用ARP代理。下面具體進行介紹。spa
例如,如圖20-7所示的網絡中,Super VLAN(VLAN 10)包含Sub VLAN(VLAN 2和VLAN 3)。VLANIF10:1.1.1.1/24表示Super VLAN 10的VLAN接口IP地址爲1.1.1.1/24。.net
VLAN 2內的主機A與VLAN 3內的主機B的通訊過程以下:(假設主機A的ARP表中沒有主機B的對應ARP表項,而且在擔當網關的交換機上啓用了Sub VLAN間的ARP代理功能)。代理
圖20-7 經過ARP代理實現不一樣Sub VLAN間三層互通的示例orm
(1)主機A將主機B的IP地址(1.1.1.3)和本身所在網段1.1.1.0/24進行比較,發現主機B和本身在同一個子網,可是主機A的ARP表中沒有主機B的對應表項,因而主機A發送ARP廣播,請求主機B的MAC地址。blog
(2)因爲主機B並不在VLAN 2的廣播域內,沒法接收到主機A的這個ARP請求。但因爲在網關上啓用了Sub VLAN間的ARP代理功能,並且網關是在Sub VLAN中,是容許接收其下面各Sub VLAN報文的,因此當網關收到主機A的ARP請求後,開始在路由表中查找,發現ARP請求中的主機B的IP地址(1.1.1.3)爲直鏈接口路由,則網關向全部其餘Sub VLAN接口發送一個ARP廣播,請求主機B的MAC地址。繼承
(3)當主機B收到網關發送的ARP廣播後,對此請求進行ARP應答。接口
(4)在網關收到主機B的應答後,就把本身的MAC地看成B的MAC地址迴應給主機A。路由
(5)主機A收到網關發來的響應後就認爲主機B的MAC地址就是網關的MAC地址,於時主機A以後要發給B的報文都先發送給網關,由網關作三層轉發。
主機B發送報文給主機A的過程和上述的A到B的報文流程相似,再也不贅述。
在基於端口的VLAN二層通訊中,不管是數據幀進入接口,仍是從接口發出都不會有針對Super VLAN的報文,也不會把報文的VLAN ID改成Super VLAN對應的VLAN ID,而是保持報文中原來的VLAN ID不變,由於在Super VLAN中根本沒有端口(這是關鍵)。現以如圖20-8所示的例子進行說明。
從Host A側GE0/0/1進入設備Switch1的幀會被打上VLAN2的標記,在設備Switch1中這個標記不會由於VLAN 2是VLAN 10的Sub VLAN而變爲VLAN 10的標記。這樣,該數據幀從Trunk類型的接口GE0/0/3出去時,依然是攜帶VLAN2的標記。也就是說,Switch1自己不會發出VLAN 10的報文,就算其餘設備有VLAN 10的報文發送到該設備上,這些報文也會由於Switch1上沒有VLAN 10對應物理端口而被丟棄。
【經驗之談】因爲Super VLAN中是不容許有物理端口的,因此在配置過程當中須要注意Super VLAN和Trunk鏈路的配置次序問題。若是先配置了Super VLAN,再配置Trunk接口時,Trunk的VLAN許可表項裏也會自動濾除了Super VLAN。如在如圖20-8中,雖然Switch1的GE0/0/3容許全部的VLAN經過,可是也不會有做爲Super VLAN的VLAN 10的報文從該接口進出。可是,若是先配好了Trunk端口,並容許全部VLAN經過,則在此設備上將沒法配置Super VLAN。本質緣由是有物理端口的VLAN都不能被配置爲Super VLAN。而容許全部VLAN經過的Trunk端口是全部VLAN的端口,這樣一來,任何VLAN都不能被配置爲Super VLAN。這一點必定要謹記。在本示例中,對於Switch1而言,有效的VLAN只有VLAN2和VLAN3,全部的數據幀都在這兩個VLAN中轉發的。
圖20-8 經過ARP代理實現Sub VLAN與外部網絡的二層通訊的示例
3. Sub VLAN與外部網絡的三層通訊
下面以圖20-9所示的例子介紹經過ARP代理實現Sub VLAN與外部網絡的三層通訊原理。在示例中,Switch1上配置了Super VLAN 10,Sub VLAN 2和Sub VLAN 3,並配置一個普通的VLAN 30;Switch2上配置兩個普通的VLAN 30和VLAN 20。假設Super VLAN 10中的Sub VLAN 2下的主機A想訪問與Switch2相連的主機C,則會通過如下下流程以下:(假設Swith1上已配置了去往1.1.3.0/24網段的路由,Swith2上已配置了去往1.1.1.0/24網段的路由):
圖20-9 經過ARP代理實現Sub VLAN與外部網絡的三層通訊的示例
(1)首先主機A將主機C的IP地址(1.1.3.2)和本身所在網段1.1.1.0/24進行比較,發現主機C和本身不在同一個子網。因而,主機A向本身的網關(Super VLAN 10接口)發送一個ARP請求(其實它不只是給網關發送了這個請求,而是向整個VLAN 2中節點發送了這個請求),請求網關的MAC地址。
(2)Switch1在收到該主機A發送的ARP請求後,查找Sub VLAN和Super VLAN的對應關係,以源MAC地址爲Super VLAN 10 對應的VLANIF10的MAC地址做爲目的主機C的目的MAC地址從Sub VLAN 2發送ARP應答給主機A。
(3)這樣主機A就以網關MAC地址做爲主機C的MAC地址記錄在MAC表項。而後主機A向網關發送以Super VLAN 10對應的VLANIF10的MAC地址做爲目的MAC地址,主機C的IP地址1.1.3.2做爲目的IP地址的報文。
(4)Switch1在收到主機A發送的報文後,根據所設置的路由進行三層轉發,下一跳地址爲1.1.2.2,出接口爲Switch2中的VLANIF30接口,把報文發送給Switch2。
(5)Switch2在收到該報文後經過直連出接口VLANIF20(注意,在同一臺交換機上直接的多個網段之間是不存在跳數的,可直接進行三層轉發),把報文發送給主機C。
(6)主機C在收到主機A發送的報文後,發送響應報文,通過Switch2上的VLANIF30接口進行三層轉發到達Switch1的VLANIF30接口。
(7)Switch1在收到該報文後再經過Super VLAN 10這個網關接口,把報文發送給主機A。
這樣就完成了Sub VLAN與外部網絡的整個三層通訊。