Sub VLAN主機的三層通訊原理

2021-09-22 03:08:36 字數 3788 閱讀 7700

以下內容摘自今年元月

全新上市

《cisco/h3c交換機配置與管理完全手冊》(第2版)

,其姊妹篇——

cisco/h3c交換機高階配置與管理技術手冊》

也正在全國熱銷中。

在此篇文章(  )中,筆者介紹了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間無法通訊(包括二層通訊和三層通訊)的問題。

解決這一問題的方法就是使用arp**。下面具體進行介紹。

1.不同sub vlan間的三層互通

例如,如圖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。

vlan 2內的主機a與vlan 3內的主機b的通訊過程如下:(假設主機a的arp表中沒有主機b的對應arp表項,並且在擔當閘道器的交換機上啟用了sub vlan間的arp**功能)。

圖20-7 

通過arp

**實現不同

sub vlan

間三層互通的示例

(1)主機a將主機b的ip位址(1.1.1.3)和自己所在網段1.1.1.0/24進行比較,發現主機b和自己在同乙個子網,但是主機a的arp表中沒有主機b的對應表項,於是主機a傳送arp廣播,請求主機b的mac位址。

(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的報文流程類似,不再贅述。

2.sub vlan與外部網路的二層通訊

在基於埠的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

與外部網路的整個三層通訊。

茶鄉浪子

三層 我眼中的三層結構

從行為型模式命令模式引發的對三層的思考。記得 大話設計模式 中對命令模式的講解。燒烤攤和燒烤店之間的區別。由於客戶和烤羊肉串老闆的 緊耦合 所以容易出錯,容易混亂,也容易挑剔。這其實就是 行為請求者 與 行為實現者 的緊耦合。對請求排隊或記錄請求日誌,以及支援可撤銷的操作等行為時,行為請求者 與 行...

三層的困惑

這個問題困惑我已經很久了,從開始學習。net到現在 寫三層的時候,遇到這樣的情況怎麼辦?user article 用於儲存最後顯示於表示層的資料,相當於fascade。這是頁面上用於繫結在repeater等控制項上的最終資料 datatable dt new datatable dt.addcolu...

三層的困惑

這個問題困惑我已經很久了,從開始學習。net到現在 寫三層的時候,遇到這樣的情況怎麼辦?user article 用於儲存最後顯示於表示層的資料,相當於fascade。這是頁面上用於繫結在repeater等控制項上的最終資料 datatable dt new datatable dt.addcolu...