一、VLAN簡介
定義:
VLAN(Virtual Local Area Network)即虛擬局域網,是將一個物理的LAN在邏輯上劃分成多個廣播域的通信技術。VLAN內的主機間可以直接通信,而VLAN間不能直接通信,從而將廣播報文限制在一個VLAN內。
在此讓我們先復習一下廣播域的概念。廣播域,指的是廣播幀(目標MAC地址全部為1)所能傳遞到的范圍,亦即能夠直接通信的范圍。嚴格地說,并不僅僅是廣播幀,多播幀(Multicast Frame)和目標不明的單播幀(Unknown Unicast Frame)也能在同一個廣播域中暢行無阻。
本來,二層交換機只能構建單一的廣播域,不過使用VLAN功能后,它能夠將網絡分割成多個廣播域。
未分割廣播域時……
那么,為什么需要分割廣播域呢?那是因為,如果僅有一個廣播域,有可能會影響到網絡整體的傳輸性能。具體原因,請參看附圖加深理解。
圖中,是一個由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運算能力的大量無謂消耗。
廣播信息是那么經常發出的嗎?
讀到這里,您也許會問:廣播信息真是那么頻繁出現的嗎?
答案是:是的!實際上廣播幀會非常頻繁地出現。利用TCP/IP協議棧通信時,除了前面出現的ARP外,還有可能需要發出DHCP、RIP等很多其他類型的廣播信息。
ARP廣播,是在需要與其他主機通信時發出的。當客戶機請求DHCP服務器分配IP地址時,就必須發出DHCP的廣播。而使用RIP作為路由協議時,每隔30秒路由器都會對鄰近的其他路由器廣播一次路由信息。RIP以外的其他路由協議使用多播傳輸路由信息,這也會被交換機轉發(Flooding)。除了TCP/IP以外,NetBEUI、IPX和Apple Talk等協議也經常需要用到廣播。例如在Windows下雙擊打開“網絡計算機”時就會發出廣播(多播)信息。(Windows XP除外……)
總之,廣播就在我們身邊。下面是一些常見的廣播通信:
ARP請求:建立IP地址和MAC地址的映射關系。RIP:一種路由協議。DHCP:用于自動設定IP地址的協議。NetBEUI:Windows下使用的網絡協議。IPX:NovellNetware使用的網絡協議。Apple Talk:蘋果公司的Macintosh計算機使用的網絡協議。
如果整個網絡只有一個廣播域,那么一旦發出廣播信息,就會傳遍整個網絡,并且對網絡中的主機帶來額外的負擔。因此,在設計LAN時,需要注意如何才能有效地分割廣播域。
目的:
以太網是一種基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通訊介質的數據網絡通訊技術。當主機數目較多時會導致沖突嚴重、廣播泛濫、性能顯著下降甚至造成網絡不可用等問題。通過交換機實現LAN互連雖然可以解決沖突嚴重的問題,但仍然不能隔離廣播報文和提升網絡質量。
在這種情況下出現了VLAN技術,這種技術可以把一個LAN劃分成多個邏輯的VLAN,每個VLAN是一個廣播域,VLAN內的主機間通信就和在一個LAN內一樣,而VLAN間則不能直接互通,這樣,廣播報文就被限制在一個VLAN內。
作用:
- 限制廣播域:廣播域被限制在一個VLAN內,節省了帶寬,提高了網絡處理能力。
- 增強局域網的安全性:不同VLAN內的報文在傳輸時是相互隔離的,即一個VLAN內的用戶不能和其它VLAN內的用戶直接通信。
- 提高了網絡的健壯性:故障被限制在一個VLAN內,本VLAN內的故障不會影響其他VLAN的正常工作。
- 靈活構建虛擬工作組:用VLAN可以劃分不同的用戶到不同的工作組,同一工作組的用戶也不必局限于某一固定的物理范圍,網絡構建和維護更方便靈活。
二、VLAN的基本概念
VLAN標簽:
要使設備能夠分辨不同VLAN的報文,需要在報文中添加標識VLAN信息的字段。IEEE 802.1Q協議規定,在以太網數據幀的目的MAC地址和源MAC地址字段之后、協議類型字段之前加入4個字節的VLAN標簽(又稱VLAN Tag,簡稱Tag),用以標識VLAN信息。
VLAN幀格式:
字段解釋:
字段長度含義取值TPID2ByteTag Protocol Identifier(標簽協議標識符),表示數據幀類型。表示幀類型,取值為0x8100時表示IEEE 802.1Q的VLAN數據幀。如果不支持802.1Q的設備收到這樣的幀,會將其丟棄。各設備廠商可以自定義該字段的值。當鄰居設備將TPID值配置為非0x8100時, 為了能夠識別這樣的報文,實現互通,必須在本設備上修改TPID值,確保和鄰居設備的TPID值配置一致。PRI3bitPriority,表示數據幀的802.1p優先級。取值范圍為0~7,值越大優先級越高。當網絡阻塞時,設備優先發送優先級高的數據幀。CFI1bitCanonical Format Indicator(標準格式指示位),表示MAC地址在不同的傳輸介質中是否以標準格式進行封裝,用于兼容以太網和令牌環網。CFI取值為0表示MAC地址以標準格式進行封裝,為1表示以非標準格式封裝。在以太網中,CFI的值為0。VID12bitVLAN ID,表示該數據幀所屬VLAN的編號。VLAN ID取值范圍是0~4095。由于0和4095為協議保留取值,所以VLAN ID的有效取值范圍是1~4094。
設備利用VLAN標簽中的VID來識別數據幀所屬的VLAN,廣播幀只在同一VLAN內轉發,這就將廣播域限制在一個VLAN內。
常用設備收發數據幀的VLAN標簽情況:
在一個VLAN交換網絡中,以太網幀主要有以下兩種格式:
- 有標記幀(Tagged幀):加入了4字節VLAN標簽的幀。
- 無標記幀(Untagged幀):原始的、未加入4字節VLAN標簽的幀。
常用設備中:
- 用戶主機、服務器、Hub只能收發Untagged幀。
- 交換機、路由器和AC既能收發Tagged幀,也能收發Untagged幀。
- 語音終端、AP等設備可以同時收發一個Tagged幀和一個Untagged幀。
為了提高處理效率,設備內部處理的數據幀一律都是Tagged幀。
鏈路類型和接口類型:
設備內部處理的數據幀一律都帶有VLAN標簽,而現網中的設備有些只會收發Untagged幀,要與這些設備交互,就需要接口能夠識別Untagged幀并在收發時給幀添加、剝除VLAN標簽。同時,現網中屬于同一個VLAN的用戶可能會被連接在不同的設備上,且跨越設備的VLAN可能不止一個,如果需要用戶間的互通,就需要設備間的接口能夠同時識別和發送多個VLAN的數據幀。
為了適應不同的連接和組網,設備定義了Access接口、Trunk接口和Hybrid接口3種接口類型,以及接入鏈路(Access Link)和干道鏈路(Trunk Link)兩種鏈路類型。
鏈路類型:
根據鏈路中需要承載的VLAN數目的不同,以太網鏈路分為:
- 接入鏈路
接入鏈路只可以承載1個VLAN的數據幀,用于連接設備和用戶終端(如用戶主機、服務器等)。通常情況下,用戶終端并不需要知道自己屬于哪個VLAN,也不能識別帶有Tag的幀,所以在接入鏈路上傳輸的幀都是Untagged幀。
- 干道鏈路
干道鏈路可以承載多個不同VLAN的數據幀,用于設備間互連。為了保證其它網絡設備能夠正確識別數據幀中的VLAN信息,在干道鏈路上傳輸的數據幀必須都打上Tag。
接口類型:
根據接口連接對象以及對收發數據幀處理的不同,以太網接口分為:
- Access接口
Access接口一般用于和不能識別Tag的用戶終端(如用戶主機、服務器等)相連,或者不需要區分不同VLAN成員時使用。它只能收發Untagged幀,且只能為Untagged幀添加唯一VLAN的Tag。
- Trunk接口
Trunk接口一般用于連接交換機、路由器、AP以及可同時收發Tagged幀和Untagged幀的語音終端。它可以允許多個VLAN的幀帶Tag通過,但只允許一個VLAN的幀從該類接口上發出時不帶Tag(即剝除Tag)。
- Hybrid接口
Hybrid接口既可以用于連接不能識別Tag的用戶終端(如用戶主機、服務器等)和網絡設備(如Hub),也可以用于連接交換機、路由器以及可同時收發Tagged幀和Untagged幀的語音終端、AP。它可以允許多個VLAN的幀帶Tag通過,且允許從該類接口發出的幀根據需要配置某些VLAN的幀帶Tag(即不剝除Tag)、某些VLAN的幀不帶Tag(即剝除Tag)。
Hybrid接口和Trunk接口在很多應用場景下可以通用,但在某些應用場景下,必須使用Hybrid接口。比如一個接口連接不同VLAN網段的場景中,因為一個接口需要給多個Untagged報文添加Tag,所以必須使用Hybrid接口。
缺省VLAN:
缺省VLAN又稱PVID(Port Default VLAN ID)。前面提到,設備處理的數據幀都帶Tag,當設備收到Untagged幀時,就需要給該幀添加Tag,添加什么Tag,就由接口上的缺省VLAN決定。
接口收發數據幀時,對Tag的添加或剝除過程。
- 對于Access接口,缺省VLAN就是它允許通過的VLAN,修改缺省VLAN即可更改接口允許通過的VLAN。
- 對于Trunk接口和Hybrid接口,一個接口可以允許多個VLAN通過,但是只能有一個缺省VLAN。接口的缺省VLAN和允許通過的VLAN需要分別配置,互不影響。
同類型接口添加或剝除VLAN標簽的比較:
接口類型對接收不帶Tag的報文處理對接收帶Tag的報文處理發送幀處理過程Access接口接收該報文,并打上缺省的VLAN ID。當VLAN ID與缺省VLAN ID相同時,接收該報文。當VLAN ID與缺省VLAN ID不同時,丟棄該報文。先剝離幀的PVID Tag,然后再發送。Trunk接口打上缺省的VLAN ID,當缺省VLAN ID在允許通過的VLAN ID列表里時,接收該報文。打上缺省的VLAN ID,當缺省VLAN ID不在允許通過的VLAN ID列表里時,丟棄該報文。當VLAN ID在接口允許通過的VLAN ID列表里時,接收該報文。當VLAN ID不在接口允許通過的VLAN ID列表里時,丟棄該報文。當VLAN ID與缺省VLAN ID相同,且是該接口允許通過的VLAN ID時,去掉Tag,發送該報文。當VLAN ID與缺省VLAN ID不同,且是該接口允許通過的VLAN ID時,保持原有Tag,發送該報文。Hybrid接口打上缺省的VLAN ID,當缺省VLAN ID在允許通過的VLAN ID列表里時,接收該報文。打上缺省的VLAN ID,當缺省VLAN ID不在允許通過的VLAN ID列表里時,丟棄該報文。當VLAN ID在接口允許通過的VLAN ID列表里時,接收該報文。當VLAN ID不在接口允許通過的VLAN ID列表里時,丟棄該報文。當VLAN ID是該接口允許通過的VLAN ID時,發送該報文。可以通過命令設置發送時是否攜帶Tag
- 當接收到不帶VLAN標簽的數據幀時,Access接口、Trunk接口、Hybrid接口都會給數據幀打上VLAN標簽,但Trunk接口、Hybrid接口會根據數據幀的VID是否為其允許通過的VLAN來判斷是否接收,而Access接口則無條件接收。
- 當接收到帶VLAN標簽的數據幀時,Access接口、Trunk接口、Hybrid接口都會根據數據幀的VID是否為其允許通過的VLAN(Access接口允許通過的VLAN就是缺省VLAN)來判斷是否接收。
- 當發送數據幀時:
- Access接口直接剝離數據幀中的VLAN標簽。
- Trunk接口只有在數據幀中的VID與接口的PVID相等時才會剝離數據幀中的VLAN標簽。
- Hybrid接口會根據接口上的配置判斷是否剝離數據幀中的VLAN標簽。
因此,Access接口發出的數據幀肯定不帶Tag,Trunk接口發出的數據幀只有一個VLAN的數據幀不帶Tag,其他都帶VLAN標簽,Hybrid接口發出的數據幀可根據需要設置某些VLAN的數據幀帶Tag,某些VLAN的數據幀不帶Tag。
三、VLAN通信
VLAN內互訪:
同一VLAN內用戶互訪(簡稱VLAN內互訪)會經過如下三個環節。
- 用戶主機的報文轉發
源主機在發起通信之前,會將自己的IP與目的主機的IP進行比較,如果兩者位于同一網段,會獲取目的主機的MAC地址,并將其作為目的MAC地址封裝進報文;如果兩者位于不同網段,源主機會將報文遞交給網關,獲取網關的MAC地址,并將其作為目的MAC地址封裝進報文。
- 設備內部的以太網交換
設備
- 如果目的MAC地址+VID匹配自己的MAC表且三層轉發標志置位,則進行三層交換,會根據報文的目的IP地址查找三層轉發表項,如果沒有找到會將報文上送CPU,由CPU查找路由表實現三層轉發。
- 如果目的MAC地址+VID匹配自己的MAC表但三層轉發標志未置位,則進行二層交換,會直接將報文根據MAC表的出接口發出去。
- 如果目的MAC地址+VID沒有匹配自己的MAC表,則進行二層交換,此時會向所有允許VID通過的接口廣播該報文,以獲取目的主機的MAC地址。
- 設備之間交互時,VLAN標簽的添加和剝離
設備內部的以太網交換都是帶Tag的,為了與不同設備進行成功交互,設備需要根據接口的設置添加或剝除Tag。不同接口VLAN標簽添加和剝離情況不同。
從以太網交換原理可以看出,劃分VLAN后,廣播報文只在同一VLAN內二層轉發,因此同一VLAN內的用戶可以直接二層互訪。根據屬于同一VLAN的主機是否連接在不同的設備,VLAN內互訪有兩種場景:同設備VLAN內互訪和跨設備VLAN內互訪。
同設備VLAN內互訪:
如下圖所示,用戶主機Host_1和Host_2連接在同臺設備上,屬于同一VLAN2,且位于相同網段,連接接口均設置為Access接口。(假設Router上還未建立任何轉發表項)。

- Host_1判斷目的IP地址跟自己的IP地址在同一網段,于是發送ARP廣播請求報文獲取目的主機Host_2的MAC地址,報文目的MAC填寫全F,目的IP為Host_2的IP地址10.1.1.3。
- 報文到達Router的接口IF_1,發現是Untagged幀,給報文添加VID=2的Tag(Tag的VID=接口的PVID),然后根據報文的源MAC地址、VID和報文入接口(1-1-1, 2, IF_1)生成MAC表。
- 根據報文目的MAC地址+VID查找Router的MAC表,沒有找到,于是在所有允許VLAN2通過的接口(本例中接口為IF_2)廣播該報文。
- Router的接口IF_2在發出ARP請求報文前,根據接口配置,剝離VID=2的Tag。
- Host_2收到該ARP請求報文,將Host_1的MAC地址和IP地址對應關系記錄ARP表。然后比較目的IP與自己的IP,發現跟自己的相同,就發送ARP響應報文,報文中封裝自己的MAC地址2-2-2,目的IP為Host_1的IP地址10.1.1.2。
- Router的接口IF_2收到ARP響應報文后,同樣給報文添加VID=2的Tag。
- Router根據報文的源MAC地址、VID和報文入接口(2-2-2, 2, IF_2)生成MAC表,然后根據報文的目的MAC地址+VID(1-1-1, 2)查找MAC地址表,由于前面已記錄,查找成功,向出接口IF_1轉發該ARP響應報文。
- Router向出接口IF_1轉發前,同樣根據接口配置剝離VID=2的Tag。
- Host_1收到Host_2的ARP響應報文,將Host_2的MAC地址和IP地址對應關系記錄ARP表。
后續Host_1與Host_2的互訪,由于彼此已學習到對方的MAC地址,報文中的目的MAC地址直接填寫對方的MAC地址。
此組網場景下,當同一VLAN的用戶處于不同網段時,主機將在報文中封裝網關的MAC地址,可借助VLANIF技術(需配置主從IP地址)實現互訪。
跨設備VLAN內互訪:
如下圖,用戶主機Host_1和Host_2連接在不同的設備上,屬于同一個VLAN2,且位于相同網段。為了識別和發送跨越設備的數據幀,設備間通過干道鏈路連接。

當用戶主機Host_1發送報文給用戶主機Host_2時,報文的發送過程如下(假設Router_1和Router_2上還未建立任何轉發表項)。
- 經過與 同設備VLAN內互訪的步驟1~2一樣的過程后,報文被廣播到Router_1的IF_2接口。
- Router_1的IF_2接口在發出ARP請求報文前,因為接口的PVID=1(缺省值),與報文的VID不相等,直接透傳該報文到Router_2的IF_2接口,不剝除報文的Tag。
- Router_2的IF_2接口收到該報文后,判斷報文的Tag中的VID=2是接口允許通過的VLAN,接收該報文。
- 經過與 同設備VLAN內互訪的步驟3~6一樣的過程后,Router_2將向其出接口IF_2轉發Host_2的ARP響應報文,轉發前,因為接口IF_2為Trunk接口且PVID=1(缺省值),與報文的VID不相等,直接透傳報文到Router_1的IF_2接口。
- Router_1的IF_2接口收到Host_2的ARP響應報文后,判斷報文的Tag中的VID=2是接口允許通過的VLAN,接收該報文。后續處理同 同設備VLAN內互訪的步驟7~9一樣。
可見,干道鏈路除可傳輸多個VLAN的數據幀外,還起到透傳VLAN的作用,即干道鏈路上,數據幀只會轉發,不會發生Tag的添加或剝離。
VLAN間互訪:
劃分VLAN后,由于廣播報文只在同VLAN內轉發,所以不同VLAN的用戶間不能二層互訪,這樣能起到隔離廣播的作用。但實際應用中,不同VLAN的用戶又常有互訪的需求,此時就需要實現不同VLAN的用戶互訪,簡稱VLAN間互訪。
同VLAN間互訪一樣,VLAN間互訪也會經過用戶主機的報文轉發、設備內部的以太網交換、設備之間交互時VLAN標簽的添加和剝離三個環節。同樣,根據以太網交換原理,廣播報文只在同一VLAN內轉發,不同VLAN內的用戶則不能直接二層互訪,需要借助三層路由技術或VLAN轉換技術才能實現互訪。
VLAN間互訪技術:
華為提供了多種技術實現VLAN間互訪,常用的兩種技術為VLANIF接口和Dot1q終結子接口。
- VLANIF接口
VLANIF接口是一種三層的邏輯接口。在VLANIF接口上配置IP地址后,設備會在MAC地址表中添加VLANIF接口的MAC地址+VID表項,并且為表項的三層轉發標志位置位。當報文的目的MAC地址匹配該表項后,會進行三層轉發,進而實現VLAN間的三層互通。
VLANIF配置簡單,是實現VLAN間互訪最常用的一種技術。但每個VLAN需要配置一個VLANIF,并在接口上指定一個IP子網網段,比較浪費IP地址。
- Dot1q終結子接口
子接口也是一種三層的邏輯接口。跟VLANIF接口一樣,在子接口上配置Dot1q終結功能和IP地址后,設備也會添加相應的MAC表項并置位三層轉發標志位,進而實現VLAN間的三層互通。
Dot1q終結子接口適用于通過一個三層以太網接口下接多個VLAN網絡的環境。由于不同VLAN的數據流會爭用同一個以太網主接口的帶寬,網絡繁忙時,會導致通信瓶頸。
通過VLANIF接口實現VLAN間互訪,必須要求VLAN間的用戶都只能處于不同的網段(因為相同網段,主機會封裝目的主機的MAC地址,設備判斷進行二層交換,二層交換只在同VLAN內,廣播報文無法到達不同的VLAN,獲取不到目的主機的MAC地址,也就無法實現互通)。現網中,也存在不同VLAN相同網段的組網需求,此時可通過VLAN聚合實現。
VLAN聚合(又稱Super VLAN)通過引入Super-VLAN和Sub-VLAN,將一個Super-VLAN和多個Sub-VLAN關聯,多個Sub-VLAN共享Super-VLAN的IP地址作為其網關IP,實現與外部網絡的三層互通;并通過在Sub-VLAN間啟用Proxy ARP,實現Sub-VLAN間的三層互通,進而即節約IP地址資源,又實現VLAN間的三層互通。
VLAN聚合通常用于多個VLAN共用一個網關的組網場景。
同設備VLAN間互訪:
如下圖:互訪的源主機Host_1和目的主機Host_2連接在同一臺設備Router上,分別屬于VLAN2和VLAN3,并位于不同的網段。在Router上分別創建VLANIF2和VLANIF3并配置其IP地址,然后將用戶主機的缺省網關設置為所屬VLAN對應VLANIF接口的IP地址。

當用戶主機Host_1發送報文給用戶主機Host_2時,報文的發送過程如下(假設Router上還未建立任何轉發表項)。
- Host_1判斷目的IP地址跟自己的IP地址不在同一網段,因此,它發出請求網關MAC地址的ARP請求報文,目的IP為網關IP 10.1.1.1,目的MAC為全F。
- 報文到達Router的接口IF_1,Router給報文添加VID=2的Tag(Tag的VID=接口的PVID),然后將報文的源MAC地址+VID與接口的對應關系(1-1-1, 2, IF_1)添加進MAC表。
- Router檢查報文是ARP請求報文,且目的IP是自己VLANIF2接口的IP地址,給Host_1應答,并將VLANIF2接口的MAC地址3-3-3封裝在應答報文中,應答報文從IF_1發出前,剝掉VID=2的Tag。同時,Router會將Host_1的IP地址與MAC地址的對應關系記錄到ARP表。
- Host_1收到Router的應答報文,將Router的VLANIF2接口的IP地址與MAC地址對應關系記錄到自己的ARP表中,并向Router發送目的MAC為3-3-3、目的IP為Host_2的IP地址 10.2.2.2的報文。
- 報文到達Router的接口IF_1,同樣給報文添加VID=2的Tag。
- Router根據報文的源MAC地址+VID與接口的對應關系更新MAC表,并比較報文的目的MAC地址與VLANIF2的MAC地址,發現兩者相等,進行三層轉發,根據目的IP查找三層轉發表,沒有找到匹配項,上送CPU查找路由表。
- CPU根據報文的目的IP去找路由表,發現匹配了一個直連網段(VLANIF3對應的網段),于是繼續查找ARP表,沒有找到,Router會在目的網段對應的VLAN3的所有接口發送ARP請求報文,目的IP是10.2.2.2。從接口IF_2發出前,根據接口配置,剝掉VID=2的Tag。
- Host_2收到ARP請求報文,發現請求IP是自己的IP地址,就發送ARP應答報文,將自己的MAC地址包含在其中。同時,將VLANIF3的MAC地址與IP地址的對應關系記錄到自己的ARP表中。
- Router的接口IF_2收到Host_2的ARP應答報文后,給報文添加VID=3的Tag,并將Host_2的MAC和IP的對應關系記錄到自己的ARP表中。然后,將Host_1的報文轉發給Host_2,發送前,同樣剝離報文中的Tag。同時,將Host_2的IP、MAC、VID及出接口的對應關系記錄到三層轉發表中。
至此,Host_1完成對Host_2的單向訪問。Host_2訪問Host_1的過程與此類似。這樣,后續Host_1與Host_2之間的往返報文,都先發送給網關Router,由Router查三層轉發表進行三層轉發。
跨設備VLAN間互訪:
由于VLANIF接口的IP地址只能在設備上生成直連路由,當不同VLAN的用戶跨多臺設備互訪時,除配置VLANIF接口的IP地址外,還需要配置靜態路由或運行動態路由協議。
如下圖所示,互訪的源主機Host_1和目的主機Host_2連接在不同的設備Router_1和Router_2上,分別屬于VLAN2和VLAN3,并位于不同的網段。在Router_1上分別創建VLANIF2和VLANIF4,配置其IP地址為10.1.1.1和10.1.4.1;在Router_2上分別創建VLANIF3和VLANIF4,配置其IP地址為10.1.2.1和10.1.4.2,并在Router_1和Router_2上分別配置靜態路由。Router_1上靜態路由的目的網段是10.1.2.0/24,下一跳是10.1.4.2;Router_2上靜態路由的目的網段是10.1.1.0/24,下一跳是10.1.4.1。

當用戶主機Host_1發送報文給用戶主機Host_2時,報文的發送過程如下(假設Router_1和Router_2上還未建立任何轉發表項)。
- 與 同設備VLAN間互訪的步驟1~6一樣,經過“Host_1比較目的IP地址—>Host_1查ARP表—>Host_1獲取網關MAC地址—>Host_1將發給Host_2的報文送到Router_1—>Router_1查MAC表—>Router_1查三層轉發表”的過程,Router_1上送CPU查找路由表。
- Router_1的CPU根據報文的目的IP 10.1.2.2去找路由表,發現匹配了一個路由網段10.1.2.0/24(VLANIF3對應的網段),下一跳IP地址為10.1.4.2,于是繼續查找ARP表,沒有找到,Router_1會在下一跳IP地址對應的VLAN4的所有接口發送ARP請求報文,目的IP是10.1.4.2。報文從Router_1的接口IF_2發出前,根據接口配置,直接透傳該報文到Router_2的IF_2接口,不剝除報文的Tag。
- ARP請求報文到達Router_2后,發現目的IP為VLANIF4接口的IP地址,給Router_1回應,填寫VLANIF4接口的MAC地址。
- Router_2的ARP響應報文從其IF_2接口直接透傳到Router_1,Router_1接收后,記錄VLANIF4的MAC地址與IP地址的對應關系到ARP表項。
- Router_1將Host_1的報文轉發給Router_2,報文的目的MAC修改為Router_2的VLANIF4接口的MAC地址,源MAC地址修改自己的VLANIF4接口的MAC地址,并將剛用到的轉發信息記錄在三層轉發表中(10.1.2.0/24,下一跳IP的MAC地址, 出口VLAN, 出接口)。同樣,報文是直接透傳到Router_2的IF_2接口。
- Router_2收到Router_1轉發的Host_1的報文后,與同設備VLAN間互訪的步驟6~9一樣,經過“查MAC表—>查三層轉發表—>送CPU—>匹配直連路由—>查ARP表并獲取Host_2的MAC地址—>將Host_1的報文轉發給Host_2”的過程,同時將Host_2的IP地址、MAC地址、出口VLAN、出接口記錄到三層轉發表項。
VLAN Damping:
VLAN抑制
如果指定VLAN已經創建對應的VLANIF接口,當VLAN中所有接口狀態變為Down而引起VLAN狀態變為Down時,VLAN會向VLANIF接口上報接口Down狀態,從而引起VLANIF接口狀態變化。
為避免由于VLANIF接口狀態變化引起的網絡震蕩,可以在VLANIF接口上啟動VLAN Damping功能,抑制VLANIF接口狀態變為Down的時間。
當使能VLAN Damping功能,VLAN中最后一個處于Up狀態的接口變為Down后,會抑制一定時間(抑制時間可配置)再上報給VLANIF接口。如果在抑制時間內VLAN中有接口Up,則VLANIF接口狀態保持Up狀態不變。即VLAN Damping功能可以適當延遲VLAN向VLANIF接口上報接口Down狀態的時間,從而抑制不必要的路由震蕩。
VLAN內二層隔離:
為了實現用戶之間的二層隔離,可以將不同的用戶加入不同的VLAN。但若企業規模很大,擁有大量的用戶,那么就要為不能互相訪問的用戶都分配VLAN,這不但需要耗費大量的VLAN,還增加了網絡管理者配置和維護的工作量。
為此,華為提供了一些VLAN內二層隔離技術,如端口隔離、MUX VLAN和基于MQC的VLAN內二層隔離等。
端口隔離:
端口隔離可實現同一VLAN內端口之間的隔離。用戶只需要將端口加入到隔離組中,就可以實現隔離組內端口之間的二層隔離,不同隔離組的端口之間或者不屬于任何隔離組的端口與其他端口之間都能進行正常的數據轉發。同時,用戶還可以通過配置實現端口的單向隔離,為用戶提供更安全、更靈活的組網方案。
MUX VLAN:
MUX VLAN( Multiplex VLAN)提供了一種通過VLAN進行網絡資源控制的機制。它既可實現VLAN間用戶通信,也可實現VLAN內的用戶相互隔離。
比如,企業有如下需求:
- 要求企業內部員工之間可以互相交流,而企業客戶之間是隔離的,不能夠互相訪問。
- 要求企業員工和企業客戶都可以訪問企業的服務器。
此種場景,通過部署MUX-VLAN就可以實現。
基于流策略的VLAN內二層隔離:
流策略是將流分類和流行為關聯后形成的完整的QoS策略。基于流策略的VLAN內二層隔離指用戶可以根據匹配規則對報文進行流分類,然后通過流策略將流分類與permit/deny動作相關聯,使符合流分類的報文被允許或被禁止通過,從而實現靈活的VLAN內單向或雙向隔離。
VLAN間三層隔離:
VLAN間實現三層互通后,兩VLAN內的所有用戶之間都可以互相訪問,但某些場景中,需要禁止部分用戶之間的互訪或者只允許用戶單向訪問,比如用戶主機和服務器之間一般是單向訪問、企業的訪客一般只允許上網和訪問部分服務器等。此時,就需要配置VLAN間互訪控制。
VLAN間互訪控制一般通過流策略實現。用戶可根據實際需求定義匹配規則對報文進行流分類,然后通過流策略將流分類與permit/deny動作相關聯,使符合流分類的報文被允許或禁止通過,從而實現靈活的VLAN間互訪控制。
管理VLAN:
當用戶通過遠端網管集中管理設備時,需要在設備上通過VLANIF接口配置IP地址作為設備管理IP,通過管理IP來STelnet到設備上進行管理。若設備上其他接口相連的用戶加入該VLAN,也可以訪問該設備,增加了設備的不安全因素。
這種情況下可以配置VLAN為管理VLAN(與管理VLAN對應,沒有指定為管理VLAN的VLAN稱為業務VLAN),不允許Access類型和Dot1q-tunnel類型接口加入該VLAN。由于Access類型和Dot1q-tunnel類型通常用于連接用戶,限制這兩種類型接口加入管理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成功地收到交換機轉發來的數據幀。

整體的流程,與使用外部路由器時的情況十分相似——都需要經過“發送方→交換模塊→路由模塊→交換模塊→接收方”。
五、傳統型路由器存在的意義
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和三層交換機大行其道的現代企業級網絡當中。
多網絡安全知識
嘶吼專業版
威努特工控安全
安全圈
看雪學苑
聚銘網絡
安全圈
安全牛
天億網絡安全
車小胖談網絡
安網城
黑白之道
LemonSec