天天看點

【轉】基于VLAN的二三層轉發原理

基于VLAN的二三層轉發原理

VLAN是為解決以太網的廣播問題和安全性而提出的一種協定,它在以太網幀的基礎上增加了VLAN頭,用VLAN ID把使用者劃分為更小的工作組,限制不同工作組間的使用者二層互訪,每個工作組就是一個虛拟區域網路。虛拟區域網路的好處是可以限制廣播範圍,并能夠形成虛拟工作組,動态管理網絡。

MAC位址

MAC(Media Access Control,媒體通路控制)位址是網絡裝置的硬體辨別,具有唯一性。MAC位址也稱為實體位址或硬體位址,由網絡裝置制造商生産時燒入NIC(網絡接口控制器)中。MAC位址長48比特,分成塊ID和裝置ID兩部分,前24位是OUI(Organizationally unique identifier,機構唯一辨別符),後24位由廠商自行配置設定。MAC位址采用點分十六進制表示,如圖1所示。

【轉】基于VLAN的二三層轉發原理

 MAC位址格式

MAC位址通常分為:

單點傳播MAC位址:單點傳播MAC位址唯一辨別以太網上的一個終端,該位址固化在硬體(如網卡)内部。

多點傳播MAC位址:首位元組最後一位為1(通常以0x01開頭)的MAC位址,标志一組裝置。

廣播MAC位址:48位全1的MAC位址,标志本網段内所有裝置。

網絡中按照大位元組序傳輸封包(即先傳輸高位元組),而位元組内先傳輸低位比特。是以,若發送的首位比特為0就是單點傳播,否則為多點傳播或廣播。

MAC位址按生存期也可分為:

動态MAC位址:交換機在網絡中通過資料幀學習到,有老化時間,MAC位址和端口的對應關系會随着裝置所連的交換機的端口的變化而變化。交換機關電重新開機後會消失,需重新學習。

靜态MAC位址:通過配置産生,不會被老化,MAC位址和端口的對應關系始終不變,但交換機關電重新開機後也會消失,需重新配置。

永久MAC位址:通過配置産生,不會被老化,MAC位址和端口的對應關系始終不變,且交換機關電重新開機後也不會消失。

沖突域和廣播域

沖突域(實體層):不同主機或裝置同時發出的幀可能會互相沖突的網絡區域。一條導線上所有工作站的集合,或一個實體網段上所有節點的集合,或以太網上競争同一帶寬的節點的集合都是一個沖突域。當沖突發生時,傳送的幀可能遭到破壞或幹擾,發生沖突的主機将根據802.3以太網的CSMA/CD規則在一段随機的時間内停止發送後續幀。其缺點是每台主機得到的可用帶寬很低,當沖突域内主機裝置數量增加時,網絡沖突将成倍增加,資訊傳輸安全得不到保證。集線器連接配接的各裝置就是一個典型沖突域,如圖2所示。

【轉】基于VLAN的二三層轉發原理

典型的HUB構成的沖突域

廣播域(資料鍊路層):網絡中能接收任一裝置發出的廣播幀的所有裝置集合。所有需要接收其他廣播的節點被劃分為同一廣播域或邏輯網段。連接配接在HUB和傳統交換機端口上的所有節點構成一個廣播域。當交換機收到廣播幀時,它将該幀轉發到自己除接收該幀的端口外的每一個端口,每個連接配接裝置都會接收并處理該幀。

随着網絡規模的擴大,廣播域中廣播封包相遇的次數也随之增加。所有這些廣播封包會嚴重影響網絡性能,若管理不當,甚至會導緻整個網絡的崩潰。

集線器、交換機、路由器

* 集線器

以太網集線器(HUB)從任一端口收到以太網資料幀後,都會将該幀廣播到其它所有端口。集線器對應實體層,不同端口所連接配接的裝置同時傳資料時會引起沖突,故其沖突域和廣播域是所有端口,既不能隔離沖突域也不能隔離廣播域。非交換式HUB不能劃分實體網段,因為它沒有劃分沖突域。

* 網橋和交換機

網橋和交換機位于資料鍊路層,基于MAC位址進行資料轉發。網橋和交換機的每個實體端口屬于一個沖突域,所有端口在一個廣播域。兩者均能隔離沖突域,但不能隔離廣播域,不能阻止廣播并對網絡進行邏輯分段。

網橋與交換機有以下不同之處:

網橋隻有少數幾個端口;交換機卻可有上百個端口。

網橋速度比交換機慢,交換機采用硬體ASIC晶片進行線速轉發交換,比網橋速度快。

網橋采取存儲轉發的機制,等收到全部資料後再進行轉發;而交換機除存儲機制外還有直接轉發機制,隻需幀頭到達處理後就可轉發,不必等到所有資料都到達,故交換機處理速度比網橋快些。

鑒于網橋的局限性,現代交換LAN中已很少使用網橋。

* 路由器

路由器位于網絡層,可以隔離沖突域和廣播域。每個子網(subnet)屬于一個廣播域,不同子網間不能發送廣播。是以,對廣播進行控制就必須使用路由器(或具有路由功能的三層交換機)。使用路由器後,可以路由器上的網絡接口(LAN Interface)為機關分割廣播域。

一般使用路由器和交換機把LAN分段為大量更小的沖突域和廣播域。傳統交換機對LAN分段的方法如圖3所示。

【轉】基于VLAN的二三層轉發原理

傳統LAN的分割

雖然交換機可縮小沖突域的規模(每個端口就是一個沖突域),但連接配接到交換機的所有端口的主機仍然處于一個廣播域中。傳統交換機相連構成的一個廣播域内廣播幀的轉發過程如圖4所示。

【轉】基于VLAN的二三層轉發原理

傳統交換機上的廣播

圖中是一個由5台二層交換機(SW1~5)連接配接了大量客戶主機構成的網絡。假設主機PC1要與主機PC2通信。以太網通信中必須在資料幀中指定目标MAC位址才能正常通信,故PC1必須先廣播ARP請求資訊,來嘗試擷取PC2的MAC位址。交換機SW1收到ARP廣播幀後,将其轉發到除入幀端口外的其他所有端口,于是SW2和SW3收到廣播幀,它們也将幀轉發到各自的所有端口……最終同一網絡中與交換機相連的所有主機(PC2-PC8)都接收到該ARP請求。可見,本應發往PC2的ARP請求擴散至整個網絡,不僅消耗了網絡整體帶寬,而且收到廣播幀的主機還要消耗一部分CPU時間對其進行處理。在網絡規模較大時,大量廣播幀将嚴重影響網絡性能,造成廣播風暴問題。此外,由于整個網絡在一個廣播域,所有使用者都能不受控制地直接通路和影響網絡所有部分,進而威脅到網絡安全性。

預設情況下,路由器不轉發廣播流量,是以可用于分割廣播域。用路由器建立廣播域将減少廣播流量,并為單點傳播通訊提供更多的帶寬,每個路由器端口都連接配接到單獨的網絡,廣播流量僅限于發出該廣播的LAN網段内。但通常路由器網絡接口較少(1~4個左右),所能分割的廣播域個數有限,且路由器相對交換機成本也較高。而二層交換機一般帶有多個網絡接口,若能用其分割廣播域,則會大大提高網絡設計的自由度。

VLAN

VLAN(Vitual Local Area Network,虛拟區域網路)是将實體網絡劃分成多個邏輯區域網路的技術。一個VLAN就是一個廣播域,亦即一個邏輯子網,在其内的站點可位于不同實體LAN上,但站點間像在同一個普通區域網路上那樣自由通信而不受實體位置的限制。利用VLAN技術,網絡管理者可根據實際應用需要,在二層交換機上把同一實體區域網路中的使用者邏輯劃分成不同廣播域,使具有相同需求或業務的使用者處于同一廣播域,不同需求或業務的使用者處于不同的廣播域。

在未設定任何Vlan的二層交換機上,任何廣播幀都會被轉發給除接收端口外的所有其他端口。配置Vlan後,當交換機屬于某Vlan的一個端口收到廣播幀後,為保證同屬一個Vlan的所有主機都收到該廣播幀,交換機必須按照如下原則轉發:

1) 發送給本交換機中同一個Vlan中的其它端口;

2) 發送給本交換機的包含該Vlan的所有彙聚鍊路,以便其它交換機上同一Vlan的端口也發送該幀。

圖5給出交換機上建立兩個Vlan後,主機發出的廣播幀被轉發的示例。為便于說明,以紅、藍兩色識别不同Vlan(實際使用中以Vlan ID來區分)。其中端口1、2屬于紅色Vlan,端口3、4屬于藍色Vlan。

【轉】基于VLAN的二三層轉發原理

Vlan分割廣播域

可見,從PC1發出的廣播幀僅被轉發給同一Vlan内的其他端口,即同屬于紅色Vlan的端口2,而不會再轉發給屬于藍色Vlan的端口。就這樣,Vlan通過限制廣播幀轉發的範圍分割廣播域,進而改善網絡效率和安全性。

Vlan可了解為在邏輯上将一台交換機分割成數台虛拟交換機,且這些虛拟交換機互不相通。Vlan是廣播域,而通常兩個廣播域間由路由器連接配接,廣播域間來往的資料幀由路由器中繼。是以,Vlan間的通信也需要路由器(或三層交換機)提供中繼服務,即“Vlan間路由”。在Vlan之間配置路由器,使Vlan内部流量仍通過原來Vlan的内部二層網絡進行,從一個Vlan到另一Vlan的通信流量通過路由進行三層轉發,轉發到目的網絡後再通過二層交換網絡把資料幀最終發送給目的主機。路由器不轉發以太網廣播幀,故Vlan間配置的路由器不會改變劃分Vlan所達到的隔離廣播的目的。

VLAN幀格式

* 以太網V2 MAC幀格式

以太網MAC幀格式有兩種标準,即DIX(DEC,Intel,Xerox) Ethernet V2标準(RFC894)和IEEE 802.3标準。圖6所示的是常用的以太網V2的MAC幀格式(事實标準):

【轉】基于VLAN的二三層轉發原理

以太網V2的MAC幀格式

以太網幀在鍊路層傳輸,故源和目的MAC位址又稱鍊路層位址(link layer address),也稱L2位址、二層位址或硬體位址。

類型(Type)字段表明上層使用什麼協定。常用協定類型值如表1所示:

表1 常用協定類型值

​​

【轉】基于VLAN的二三層轉發原理

​​

資料(Data)字段為幀承載的資料内容,由一個上層協定的協定資料單元PDU構成。資料長度在46~1500之間,若上層協定資料單元長度少于46 位元組,則必須填充該字段的其餘部分,以保證MAC幀長度不小于64位元組。

可見,一個以太網幀長範圍為64~1518位元組。

注意:發包工具如Testcenter設定發包長度時會将CRC考慮在内,即幀長包含CRC的4位元組;而抓包工具如Wireshark顯示的幀長不包括CRC字段。

* 帶VLAN的以太網幀格式

IEEE 802.1Q(俗稱Dot One Q)标準在以太網資料幀中“發送源MAC位址”與“類别域(Type Field)”之間附加4位元組的Vlan識别資訊(标簽),如圖7所示:

【轉】基于VLAN的二三層轉發原理

插入Vlan後的以太網幀格式

TPID(Tag Protocol Identifier,标簽協定辨別)值規定為0x8100。裝置預設采用協定規定的TPID值,交換機通過TPID來确定資料幀是否附加基于IEEE802.1Q的VLAN資訊。

TCI(Tag Control Information,标簽控制資訊)字段分為Pri、CFI和VLAN三部分。Pri表示封包優先級(也稱1p優先級、COS或1q優先級),CFI(Canonical Format Indicator)辨別MAC位址在不同傳輸媒體中是否以标準格式進行封裝,通常為0(标準格式)。Vlan ID辨別該封包所屬的VLAN編号,取值範圍為 0~4095,一般0和4095保留(中興裝置Vid=0表示priority-tagged幀)。

在交換網絡環境中,以太網幀有兩種格式:有些幀未附加四位元組标簽,稱為未标記幀(ungtagged frame),有些幀附加四位元組标簽,稱為帶标記幀(tagged frame)。

在基于端口劃分的Vlan中,每個802.1Q端口都會配置設定一個預設的Vlan ID,稱為PVID(Port Vlan ID)或端口預設Vlan ID(default Vid),CISCO稱之為native Vlan。端口接收到的所有untagged幀都認為屬于端口預設Vlan ID,并在端口預設Vlan ID内轉發。

注意,插入或剝除Vlan标簽時均會對資料幀重新計算CRC。

VLAN鍊路與端口

* VLAN鍊路類型

Vlan内的鍊路可分為:

接傳入連結路(Access Link,或稱通路鍊路):将沒有也無法識别Vlan标簽的裝置(如使用者主機)連接配接到配置Vlan的交換機端口。它隻能傳送不帶标簽(untagged)的以太網幀,且隻與一個Vlan關聯。

彙聚鍊路(Trunk Link,或稱幹道鍊路、中繼鍊路) :連接配接兩個能夠識别Vlan标簽的裝置(如交換機),可傳輸發往多個Vlan的帶标簽(tagged)幀,可與多個Vlan相關聯。

混合鍊路(Hybrid Link):既可傳送不帶标簽的幀,也可傳送帶标簽的幀。但對于一個特定Vlan,傳送的所有幀必須類型相同,即對于一個Vlan,傳送的幀要麼不帶标簽,要麼攜帶相同标簽。

顯示三種鍊路的差別:

【轉】基于VLAN的二三層轉發原理

Vlan鍊路類型

規劃企業級網絡時,很有可能會遇到隸屬同一部門的使用者分散在同一座建築中不同樓層的情況,此時可能需要考慮如何跨越多台交換機設定Vlan。如在下圖所示網絡中,通過彙聚鍊路将不同樓層的四台主機設定為同一Vlan。

【轉】基于VLAN的二三層轉發原理

彙聚鍊路

如圖所示,PC1發送的資料幀從SW1經過彙聚鍊路到達SW2時,幀内附加了表示屬于紅色Vlan的标簽。SW2收到資料幀後,檢查Vlan标簽發現該幀屬于紅色Vlan,故剝除标簽後根據需要(單點傳播、廣播或多點傳播)将複原的資料幀轉發給其他屬于紅色Vlan的端口。

若不使用彙聚鍊路,則需在兩台交換機上各設一個紅、藍Vlan專用接口并用網線互聯(接傳入連結路)。但建築樓層間的縱向布線比較麻煩,一般不能由基層管理人員随意進行。而且,VLAN越多,樓層間(嚴格地說是交換機間)互聯所需的端口越多,端口使用率低,也限制網絡的擴充。

彙聚鍊路承載多個Vlan的資料,負載較重,故彙聚鍊路必須支援100Mbps以上的傳輸速度。

預設情況下,彙聚鍊路會轉發交換機上所有Vlan的資料,亦即彙聚鍊路同時屬于交換機上所有的Vlan。實際應用中可能并不需要轉發所有Vlan資料,是以為減輕交換機負載并減少帶寬浪費,使用者可設定限制能經由彙聚鍊路互聯的Vlan。

VLAN端口類型

根據對Vlan幀的識别情況,交換機端口的類型(模式)分為Access端口、Trunk端口及Hybrid端口。

Access端口:交換機上連接配接使用者主機的端口,隻能連接配接接傳入連結路。Access端口隻屬于一個Vlan,且僅向該Vlan轉發資料幀。該Vlan的Vid = 端口PVid,故Vlan内所有端口都處于untagged狀态。Access端口在從主機接收幀時,給幀加上Tag标簽;在向主機發送幀時,将幀中的Tag标簽剝掉。

Trunk端口:交換機上與其他交換機或路由器連接配接的端口,隻能連接配接彙聚鍊路。Trunk端口允許多個Vlan的帶标簽幀通過,在收發幀時保留Tag标簽。在它所屬的這些Vlan中,對于Vid = 端口PVid的Vlan,它處于Untagged port狀态;對于Vid ≠ 端口PVid的Vlan,它處于Tagged port狀态。

Hybrid端口:交換機上既可連接配接使用者主機又可連接配接其他交換機的端口,它既可連接配接接傳入連結路又可連接配接彙聚鍊路。Hybrid 端口允許多個Vlan的幀通過,并可在出端口方向将某些Vlan幀的Tag标簽剝掉。

注意,Access、Trunk和Hybrid端口是廠家對某種端口的稱謂,并非IEEE802.1Q協定标準定義。

Access端口隻屬于一個Vlan,PVid就是其所在Vlan,故不用設定;Trunk和Hybrid端口屬于多個Vlan,故需要設定PVid(預設為1)。若設定端口PVid,則當端口收到不帶Vlan Tag的資料幀時,對該幀加上Tag标記(Vid設定為端口所屬的預設Vlan編号)并轉發到屬于PVid的端口;當端口發送Vlan Tag的資料幀時,若收幀的Vlan Tag和端口PVid相同,剝除Vlan Tag後再發送該幀。

Hybrid端口與Trunk端口在接收資料時處理方法相同,差別在于發送資料時:Hybrid端口允許多個Vlan的資料幀發送時不帶标簽,而Trunk端口隻允許預設Vlan的資料幀發送時不帶标簽。在同一交換機上Hybrid端口和Trunk端口不能并存,實際使用中可用Hybrid代替Trunk。

本Hybrid端口的PVid和相連的對端交換機Hybrid端口的PVid必須一緻。

由于端口類型不同,交換機對幀的處理過程也不同。下表根據不同的端口類型分别介紹。

表2 不同端口類型的Vlan幀處理方式

​​

【轉】基于VLAN的二三層轉發原理

​​

VLAN端口狀态

交換機端口可配置為屬于某個或某幾個Vlan。端口狀态指其在某個Vlan中的狀态,該狀态決定端口接收到tagged或untagged幀時對該幀的處理方式。針對每個Vlan,端口有兩種狀态,即Tagged port和Untagged port。同一端口可根據不同Vlan ID設定Tagged或Untagged。

當為該端口配置其所屬的Vlan時,若該Vlan的Vid = 端口PVid時,則端口在此Vlan中處于Untagged port狀态;若Vid ≠ 端口PVid,則端口在此Vlan中處于Tagged port狀态。

PVid隻與封包的入口方向有關,對于進入交換機的無标簽幀會打上進入端口的PVid标簽;交換機内每個資料幀都帶标簽。Tagged/Untagged隻與幀的出口方向有關,對于出端口為Untagged port的,轉發幀時要剝除幀中的标簽,否則保留标簽。

VLAN劃分方式

接傳入連結路可事先設定,稱為“靜态Vlan”;也可根據所連主機而動态設定,稱為“動态Vlan”。

* 靜态VLAN

靜态Vlan又稱基于端口的Vlan (Port Based Vlan),即明确指定各端口屬于哪個Vlan,如下圖所示。

【轉】基于VLAN的二三層轉發原理

基于端口劃分Vlan

根據端口劃分Vlan因其簡單而最為常用。但由于需要逐個端口地指定Vlan,是以當網絡中主機數目較多時,操作就變得非常煩雜。并且,主機每次變更所連端口時,必須同時更改該端口所屬Vlan的設定——這顯然不适合那些需要頻繁改變拓撲結構的網絡。

* 動态VLAN

動态Vlan主要有:

基于MAC位址的Vlan (MAC Based Vlan)

基于子網的Vlan (Subnet Based Vlan)

基于使用者的Vlan(User Based Vlan)

……

其差異主要在于根據OSI參照模型哪一層的資訊決定端口所屬的Vlan。決定端口所屬Vlan時利用的資訊在OSI中的層面越高,就越适于建構靈活多變的網絡。

網絡裝置廠商可能使用私有協定實作基于子網和基于使用者的Vlan,是以不同廠商的裝置間互聯時可能出現相容性問題。

* 基于MAC位址的VLAN

基于MAC位址的Vlan,就是通過查詢并記錄端口所連主機網卡的MAC位址來決定端口所屬Vlan。假定MAC-A位址被交換機設定為屬于Vlan10,則不論MAC-A位址的主機連在交換機哪個端口,該端口都會被劃分到Vlan10内,如下圖所示。

【轉】基于VLAN的二三層轉發原理

基于MAC位址劃分Vlan

基于MAC位址劃分Vlan,在初始設定時必須調查所連接配接的所有主機MAC位址并加以記錄,工作量很大。而且這種劃分方法會降低交換機執行效率,因為交換機每個端口都可能存在很多個Vlan組的成員,這樣就無法限制廣播包。此外,若主機(如筆記本電腦)經常更換網卡,則不得不經常更改Vlan設定。

* 基于子網的VLAN

基于子網的Vlan,就是通過所連主機的IP位址來決定端口所屬Vlan。同一子網的所有資料幀屬于同一Vlan,進而将同一子網内的使用者劃分在一個Vlan内(與路由器相似)。即使主機MAC位址改變,隻要其IP位址不變,就仍可加入原先設定的Vlan,如下圖所示。

【轉】基于VLAN的二三層轉發原理

基于子網劃分Vlan

基于IP子網劃分Vlan可按傳輸協定劃分網段,有利于針對具體應用的服務來組織使用者。再者,使用者可在網絡内部自由移動而不用重新配置主機,尤其是使用TCP/IP的使用者。

這種方法的缺點是效率,因為檢查每個資料包的網絡層位址比較費時。同時由于一個端口也可能存在多個Vlan的成員,對廣播封包也無法有效抑制。

* 基于使用者的VLAN

基于使用者的Vlan,則是根據交換機各端口所連的主機上目前登入的使用者,來決定該端口屬于哪個Vlan。使用者識别資訊一般是主機作業系統登入的使用者,如Windows域中使用的使用者名。

* 基于協定的VLAN

基于協定的Vlan将實體網絡劃分為基于協定的邏輯Vlan。在端口接收幀時,它的Vlan由幀中的協定類型決定。例如,IP、IPX和Appletalk可能有各自獨立的Vlan,IP 廣播幀隻被送到IP Vlan中的所有端口。

* 基于多點傳播位址的VLAN

基于多點傳播位址的Vlan由多點傳播分組動态建立的。如每個多點傳播分組對應一個不同Vlan,保證多點傳播資料幀隻被那些連接配接到相應多點傳播分組成員的端口接收到。這種劃分方式效率不高,不适合區域網路。但因其将Vlan擴大至廣域網,故靈活性更高,且易于通過路由器進行擴充。

* 基于政策的VLAN

基于政策的Vlan是Vlan的最基本的定義。每個輸入(無标簽)幀都在政策資料庫檢視,該資料庫決定該幀所屬的Vlan。如建立公司管理人員之間往來電子郵件的特别Vlan政策,以便不在其他地方被看見。

這種劃分方式最為靈活,具有自動配置能力,能夠把相關使用者連成一體,在邏輯劃分上稱為“關系網絡”。網絡管理者隻需在網管軟體中确定劃分Vlan的規則(或屬性),則站點加入網絡時将會被“感覺”,并被自動包含進正确的Vlan中。同時,也可自動識别和跟蹤站點的移動和改變。

基于VLAN的轉發與路由

Vlan内通信的主機同屬一個廣播域,主機之間的流量通過二層網絡直接轉發;Vlan間通信的主機位于不同廣播域,主機無法直接通過ARP廣播請求到對方的位址,此時必須借助三層路由器來完成通信。

路由器可視為各個Vlan的網關,是以通過路由器來互相通信的主機必須知道路由器的存在及其在本Vlan上的接口位址(預設網關)。在主機上配置預設網關後,對于跨Vlan的通信,主機會自動尋找預設網關,并把封包交給預設網關轉發而不是直接發給目的主機。

可見,當封包的目的MAC位址是網關位址(路由器或三層交換機MAC位址)時,該封包為三層封包。

*  二層轉發

基于Vlan的二層轉發流程主要包括:确定和查找Vlan、查找和學習源MAC、查找目的MAC并轉發資料幀。

1) 确定和查找Vlan:交換機端口接收到一個資料幀時,首先通過TPID值判斷該幀是否帶标簽[1]。

若是tagged幀,且Vid≠0,則在端口所屬的Vlan表中查找該幀标簽中的Vid是否存在,若存在,則進入下一步,否則丢棄該幀(或送出CPU處理);

若是tagged幀,且Vid=0(即priority幀[2]),則對該幀附加端口PVid使之成為tagged幀;

若是untagged幀,則對該幀附加端口PVid并指定優先級使之成為tagged幀。

注:①為提高處理效率,交換機内部所有資料幀均攜帶Vlan标簽,以統一方式處理。故需對輸入交換機的資料幀進行标簽檢查并按需加上标簽。

②802.1Q Vlan環境下,幀可分為tagged、untagged和priority-tagged三種。Tagged幀根據其攜帶的标簽Vid進行MAC學習轉發。Untagged和Priority-tagged幀進入交換機端口後根據PVid進行MAC學習轉發。

2) 查找和學習源MAC:交換機在MAC轉發表(Mac+Vid+Port)中查找收幀Vid對應的源MAC表項,未找到則學習收幀源MAC (将“源MAC+Vid+Port”添加到MAC表中);若找到則更新該表項的老化時間。

注:MAC位址學習隻學習單點傳播位址,對于廣播群組播位址不進行學習。多點傳播MAC表項通過CPU配置建立。

3) 查找目的MAC:若目的MAC是廣播或多點傳播,則在所屬的Vlan中廣播或多點傳播;否則在MAC表中查找是否存在Vid對應的目的MAC表項。

4) 轉發資料幀:若在MAC表中查找到完全比對的DMAC+Vid表項,則将該幀轉發到表項中的相應端口(若相應端口為收幀端口,則應丢棄該幀);否則向所屬Vlan内除收包端口外的其他所有端口洪泛該幀(洪泛廣播的是未知單點傳播幀而不是廣播幀)。

圖所示為二層轉發的一般流程。

【轉】基于VLAN的二三層轉發原理

二層轉發流程

【例】資料幀從PC1經過一台交換機轉發到與另一台交換機相連的PC2并得到響應,如下圖所示。

【轉】基于VLAN的二三層轉發原理

PC1向PC2發送資訊

假設兩台交換機剛剛開機(此時MAC位址表為空),其具體的轉發過程如下:

①PC1發出的資料幀進入交換機SW1的Access端口後,按照端口PVid加上Vid=100的标簽。交換機将該幀源MAC位址存入MAC位址表(學習),并将該幀洪泛到Vid=100的所有端口(除入端口外);

②SW1的Trunk端口屬于Vid=100的Vlan,故接受這個标記為100的Tagged資料幀;而該端口在Vid=100上為Tagged port,是以在發送資料幀出交換機SW1時,不改變Tagged幀的結構;

③Tagged幀到達交換機SW2的Trunk端口,由于Trunk端口擁有VID=100的Vlan,故接受該幀;該Trunk端口不改變Tagged幀的結構,而是學習源MAC位址後把該資料幀洪泛給所有Vid=100的端口(除入端口外);

④SW2的Access端口接收到該幀,剝除該幀的Tag标簽後發送給PC2。

⑤PC2收到PC1發送的資料幀,并發送響應幀給PC1。

⑥經過與前述過程類似的轉發,響應幀到達交換機SW1。交換機發現該幀的目的MAC位址已在MAC位址表中,則僅轉發給PC1。

可見,收發雙方同屬一個Vlan的通信,一切處理均在二層網絡内完成。

三層路由

* 路由器路由

使用路由器進行Vlan間路由時,大緻有以下兩種:

1) 用多個路由器端口分别與每個Vlan相連接配接。

2) 單個路由器接口與交換機的Trunk端口相連(稱為dot1Q連接配接),使多個Vlan共享同一條實體連接配接到路由器。

方式1将交換機上用于和路由器互聯的每個端口設為接傳入連結路,再分别用網線與路由器上的獨立端口互聯。如下圖所示,交換機上有兩個Vlan,需在交換機上預留兩個端口用于與路由器互聯;路由器上同樣需要有兩個端口;兩者之間用兩條網線分别連接配接。

【轉】基于VLAN的二三層轉發原理

每個Vlan一個實體連接配接

如圖,每個Vlan都要獨占一個交換機端口和一個路由器端口,并需重新布設一條網線。而路由器上通常LAN接口有限,這無疑帶來擴充性問題。

方式2将用于連接配接路由器的交換機端口設為彙聚端口,而路由器上的端口也必須支援彙聚鍊路。雙方用于彙聚鍊路的協定也必須相同。接着在路由器上定義對應各Vlan的“子接口(Sub Interface)”。盡管實際與交換機連接配接的實體端口隻有一個,但在理論上可将其分割為多個虛拟端口。如下圖所示。

【轉】基于VLAN的二三層轉發原理

Vlan Trunking

使用這種Vlan Trunking技術,可使多個Vlan的業務流共享相同的實體連接配接,通過在彙聚鍊路上傳遞帶标簽的幀來區分各Vlan的流量。通常情況下,Vlan間路由的流量不足以達到鍊路的線速度,使用Vlan Trunking的配置,可提高鍊路的帶寬使用率,節省端口資源以及簡化管理(網絡新增Vlan時隻需在路由器上新設一個對應新Vlan的子接口,無需重新布線)

【例】不同Vlan間通信時資料的流程,如下圖所示。

【轉】基于VLAN的二三層轉發原理

不同Vlan間通信流程

主機PC1通過通信目标IP位址(192.168.2.1) 與子網路遮罩計算比較發現PC2與本機不屬于同一網段,不能直接通路。根據IP通信規則,PC1查找本機路由表尋找相應的網關。在實際網絡中,主機通常隻配置預設網關(Default Gateway,GW),故PC1找到預設網關。然後,PC1在本機ARP高速緩存中查找預設網關(即路由器)的MAC位址,若沒有則向外廣播發送一個ARP請求幀,其目的MAC位址為全1,源MAC位址為本機MAC位址,請求的IP位址為網關192.168.1.100。從路由器傳回的ARP單點傳播應答幀中得到路由器MAC位址R後,接下來就按圖中所示的步驟向PC2發送資料幀①,其目的MAC位址是路由器位址R、但目的IP位址仍是最終要通信的對象PC2的位址。

交換機在端口1上收到資料幀①後,檢索MAC位址表中與端口1同屬一個Vlan的表項。彙聚鍊路被視為屬于所有的Vlan,是以端口6也屬于檢索對象。檢索後交換機得知往MAC位址R發送資料幀時,需經過端口6轉發。

從彙聚端口6發送資料幀時,會附加Vlan識别資訊。圖中資料幀②被加上原屬的紅色Vlan标簽後,進入彙聚鍊路。路由器收到資料幀②後,确認其Vlan标簽,交由負責紅色Vlan的子接口接收。

接着,根據路由器内部的路由表,判斷該向哪裡轉發。由于目标網絡192.168.2.0/24屬于藍色Vlan,且該網絡通過子接口與路由器直連,是以隻需從負責藍色Vlan的子接口轉發即可。此時資料幀的目的MAC位址被改成PC2的MAC位址;由于需要經過彙聚鍊路轉發,故附加屬于藍色Vlan的識别資訊(資料幀③)。

交換機收到資料幀③後,根據Vlan标簽從MAC位址表中檢索屬于藍色Vlan的表項。由于通信目标PC2連接配接在端口3上且該端口為接入端口,是以交換機剝除資料幀的Vlan标簽後(資料幀④)轉發給端口3,最終PC2成功收到PC1發來的資料幀。

可見,Vlan間通信時,即使雙方都連接配接在同一台交換機上,也必須經過“發送方→交換機→路由器→交換機→接收方”這樣一個流程。在進行三層路由轉發時,資料包IP位址保持不變,MAC位址則在每個節點都會改變。

* 三層交換機路由

使用VLAN Trunking後,用傳統路由器進行Vlan間路由在性能上存在一定的不足:由于路由器采用通用CPU,轉發完全依靠軟體處理,同時支援各種通信接口,給軟體帶來較大負擔。軟體要處理包括封包接收、校驗、查找路由、選項處理、封包分片等,導緻性能不可能很高。就Vlan間路由而言,流量會集中到路由器和交換機互聯的彙聚鍊路部分,該部分容易成為速度瓶頸。

由于Vlan間通信比較簡單,隻需查下路由表,是以可将交換機內建查路由表的專用晶片(ASIC),實作二層交換和三層路由的功能內建,即三層交換機(Layer 3 Switch)。

三層交換機的設計基于對IP路由的仔細分析,提取出IP路由中每個封包都必經的簡化過程:

IP路由中絕大多數封包不包含IP選項,是以多數情況下無需處理封包IP選項;

不同的網絡封包長度不同,為支援各種異構網絡的互連,IP實作了封包分片功能,但在全以太網環境中,資料幀(封包)長度固定,是以可裁減封包分片功能;

三層交換機采用與路由器最長位址掩碼比對不同的方法,使用精确位址比對的方式處理,有利于硬體實作快速查找;

三層交換機采用Cache方法,将最近經常使用的主機路由放入硬體查找表。隻有在該Cache中無法比對到的條項才通過軟體轉發。這樣,隻有每個流的第一個封包通過軟體轉發,其後的大量資料流則在硬體中得以完成,極大提升轉發性能。

三層交換機的内部結構可參照下面的簡圖。

【轉】基于VLAN的二三層轉發原理

三層交換機内部結構簡圖

如圖,内置的路由子產品與交換子產品相同,使用ASIC硬體處理路由。是以,與傳統的路由器相比,可實作高速路由。并且,路由與交換子產品由内部彙聚鍊路連接配接,可確定相當大的帶寬。

對應到IP網絡模型中,每個Vlan對應一個IP網段,三層交換機中的三層轉發引擎在各網段(Vlan)間轉發封包,實作Vlan之間的互通,是以三層交換機的路由功能通常叫做Vlan間路由(Inter-VLAN Routing)。

使用路由器連接配接時,一般需要在LAN接口上設定對應各Vlan的子接口;三層交換機則是在内部生成“VLAN接口(VLAN Interface)”,用于各Vlan收發資料。在Cisco的Catalyst系列交換機上,VLAN接口被稱為SVI(Switched Virtual Interface,交換虛拟接口)。三層交換機每建立一個Vlan就會自動生成一個SVI。在SVI接口設定預設網關後,并将主機網關配置成與交換機SVI相同,即可實作不同Vlan間的路由。

使用三層交換機進行Vlan間路由與使用彙聚鍊路連接配接路由器與交換機相似,即需經過“發送方→交換子產品→路由子產品→交換子產品→接收方”的流程。

【例】假設網絡按圖19連接配接好後,所有裝置均為初始狀态,也未向外發送過任何封包。若PC1已知PC2的IP位址,則可通過ping指令發送ICMP封包來獲知PC1能否到達PC2。以下分析該過程。

【轉】基于VLAN的二三層轉發原理

ping流程網絡拓撲

⑴ PC1将自身IP和子網路遮罩255.255.255.0相與得到網絡号1.1.1.0,将PC2的IP與子網路遮罩相與得到網絡号2.2.2.0,得知PC2與自己不在同一網段。于是PC1檢索路由表得到預設網關。PC1欲向網關傳遞資訊,但此時PC1中ARP表為空,是以向預設網關(交換機三層接口)發出ARP請求幀,請求網關MAC位址。該幀目的MAC位址為全1,源MAC位址為本機MAC位址,請求的IP位址為網關1.1.1.1;

⑵ SW收到ARP請求幀,對其附加端口PVid(10)的标簽;

⑶ SW用ARP請求幀的Mac1和Vid10查找MAC轉發表,發現沒有該項,則進行學習,即在表中添加“Mac1—Vid10—Port1”的記錄;并将源IP和MAC的對應關系(“1.1.1.2—Mac1”)記錄到ARP表,表明目的IP為1.1.1.2的資料幀轉發時目的MAC為Mac1,同時需路由到端口Port1;

⑷ ARP請求的目的位址是廣播位址,SW将其洪泛到該Vlan的每個端口(除入端口);同時SW自身截獲一份上送CPU(網關),發現是詢問自己的MAC,于是回複ARP單點傳播應答幀,目的MAC為PC1的Mac1,源MAC為網關的MAC位址GwMac1,源IP為1.1.1.1,目的IP為PC1的1.1.1.2;

⑸ PC1收到SW發來的ARP應答幀,得到SW三層網關MAC位址,将“1.1.1.1—GwMac1”記錄到ARP表。PC1向SW發送ICMP請求幀,目的IP為PC2的IP(2.2.2.2),目的MAC為網關MAC,源IP和源MAC為PC1的;

⑹ SW收到ICMP請求幀,對其附加端口PVid(10)的标簽,然後進行源MAC位址學習,發現二層轉發表有該條目,更新老化時間。因該幀目的MAC位址是網關,SW送交三層路由處理。

⑺ 在三層首先檢查IP封包的版本、IP首部檢驗和TTL是否正确,若不正确則标記丢棄并交由CPU處理;正确則在三層主機路由表(又稱L3表)中查找目的IP(即PC2的IP 2.2.2.2)。此時L3表中隻包含與自己直連的32位位址(包括自身接口)及步驟⑶中ARP表學習後下發的PC1資訊,而找不到PC2的資訊。進而按最長字首比對算法查找子網路由表(又稱Longest Prefix Match即LPM表)得到2.2.2.1目的網段的條目,下一跳的IP位址為 2.2.2.1;

⑻ 索引回L3表查找2.2.2.1,得到該條目,發現要送出CPU處理(CPU也需要看作是一個端口);

⑼ CPU沒有到PC2的路由,但PC2的目的IP屬于自己接口位址2.2.2.1的網段,故向接口Vlan20所包含的所有實體端口廣播一個ARP請求幀,源MAC位址為交換機接口的三層MAC位址GwMac2,源IP位址為2.2.2.1,請求IP位址2.2.2.2的MAC位址;

⑽ PC2收到ARP請求,學習“2.2.2.1—GwMac2”加入ARP表;并回複ARP應答幀,目的IP為交換機接口Vlan20的IP位址2.2.2.1,目的MAC為交換機接口Vlan20的MAC位址GwMac2;

⑾ SW收到PC2發送的ARP應答幀,附加端口PVid(20)後在MAC表中查找“Mac2+Vid20”,沒找到則學習源位址,在MAC轉發表中添加PC2相關記錄。因該幀目的MAC為網關位址,故送出三層處理;

⑿ 三層首先檢查封包正确性,無誤則在L3表中查找目的IP。由于目的IP為本機,故上送CPU處理。CPU對封包處理後得到“2.2.2.2—Mac2”将相關資訊加入ARP表(CPU下發給L3表進行記錄)。

⒀ PC1向SW發送的第一個ICMP請求幀存儲在記憶體中,此時交由CPU進行IP封包頭部修改(TTL減1,FCS重新計算封裝)和MAC封裝(目的MAC位址改為PC2的MAC位址,源MAC位址改為SW三層MAC位址)并發送給PC2,如果逾時則丢棄,CPU發送ICMP逾時給PC1;

⒁ PC2收到PC1發來的ICMP請求後,回複ICMP應答幀,目的IP為PC1的IP 1.1.1.2,同樣PC2發現該位址和自己不在同一子網,需要網關進行轉發。之前PC2已學習到交換機接口Vlan20的ARP,此時根據該ARP将ICMP應答幀目的MAC位址填為網關MAC位址GwMac2發送出去。交換機收到幀後,發現目的MAC位址是網關位址,取出幀中的目的IP位址1.1.1.1查找路由。之前交換機已學習到該IP的路由,是以會查找到主機路由表中相應的路由并将幀目的MAC位址換成Mac1,源MAC位址換成網關MAC位址GwMac2,發送到端口Port1上。最終,PC1就收到PC2的ICMP應答。

⒂ 經過以上流程後,PC1和PC2分别學到各自網關接口的ARP,交換機也有了分别到達PC1和PC2的路由。後續的封包不再通過路由,而直接由L3表中對應的表項進行硬體轉發。

注意,此例步驟說明相比“路由器路由”一節稍為詳細,所補充的部分并非差異。

* VLAN間通信加速

Vlan間路由時,并非所有資料都需要經過外部路由器或三層交換機的内置路由子產品。例如,使用FTP(File Transfer Protocol,檔案傳輸協定)傳輸容量為數兆位元組以上的較大檔案時,由于MTU(Maximum Transfer Unit,最大傳輸單元)的限制,IP協定會将資料分割成小塊後傳輸并在接收方重新組合。這些被分割的資料具有相同的源/目的IP位址和(TCP/UDP)端口号。這樣一連串資料流被稱為“流(Flow)”。隻要将流最初的資料正确地路由以後,後繼資料理應也會被同樣地路由,實際上無需路由器處理。

三層交換機進行高速Vlan間路由時,整個流的第一塊資料仍舊由交換子產品轉發→路由子產品路由→交換子產品轉發到目标所連端口。這時,将第一塊資料路由結果記錄到緩存裡儲存下來。需記錄的資訊有源/目的IP位址和(TCP/UDP)端口号、交換機收發端口号及轉發目标MAC位址等。

同一個流的第二塊及後續的資料到達交換機後,直接通過查詢先前儲存在緩存中的資訊查出轉發端口号後即可轉發給目标所連端口。這樣,就無需反複經由内部路由子產品中繼,而僅憑交換機内部的緩存資訊就足以判斷應該轉發的端口。這時,交換機對資料幀進行由路由器中繼時相似的處理,如改寫MAC位址、IP標頭中的TTL和Check Sum校驗碼資訊等。

若Vlan間路由資訊變化,路由子產品會發送控制資訊給交換子產品,交換機重建立立轉發路徑,按照正常方式轉發。

通過在交換機上緩存路由結果,可實作以纜線速度(Wired Speed)接收發送方傳輸來的資料、并且能夠全速路由、轉發給接收方。

* 路由器和交換機配合建構LAN

雖然三層交換機能提供比傳統型路由器更為高速的路由處理,但網絡中仍有使用路由器的必要性。其必要性主要表現在以下幾個方面:

用于與WAN連接配接。絕大多數三層交換機隻配有LAN(以太網)接口。少數高端交換機上也有用于連接配接WAN的串行接口或ATM接口,但大多數情況下連接配接WAN需要用到路由器。

保證網絡安全。在三層交換機上,通過資料包過濾也能確定一定程度的網絡安全。但使用路由器所提供的各種網絡安全功能(資料包過濾、基于IPSec建構VPN、利用RADIUS進行使用者認證等),使用者可建構更為安全可靠的網絡。

支援TCP/IP以外的網絡架構。盡管TCP/IP已成為目前主流的網絡協定架構,但還有不少網絡利用Novell Netware下的IPX/SPX或Macintosh下的Appletalk等網絡協定。三層交換機中,除部分高端機型外基本上隻支援TCP/IP。路由器對于需要其他網絡協定的環境必不可少。

注:少數高端交換機也能支援上述路由器的功能。例如Cisco的Catalyst6500系列就可選擇與WAN連接配接的接口子產品;還有可選的基于IPSec實作VPN的子產品;并且也能支援TCP/IP以外的其他網絡協定。

下圖是一個路由器和交換機搭配建構LAN的執行個體。

【轉】基于VLAN的二三層轉發原理

路由器和交換機搭配建構區域網路

利用在各樓層配置的二層交換機定義Vlan,連接配接TCP/IP客戶主機。各樓層間的Vlan間通信利用三層交換機的高速路由加以實作。若網絡環境要求高可靠性,還可考慮備援配置三層交換機。與WAN的連接配接,則通過帶有各種網絡接口的路由器進行,并通過路由器的資料包過濾和VPN等功能實作網絡安全。此外,使用路由器還能支援Novell Netware等TCP/IP之外的網絡。

通過使用Vlan建構區域網路,使用者能夠不受實體鍊路的限制而自由地分割廣播域。通過路由器與三層交換機提供的Vlan間路由,能夠适應靈活多變的網絡結構。但由于利用Vlan容易導緻網絡複雜化,是以也會造成整個網絡的組成難以把握。特别是由于資料流縱橫交錯,一旦發生故障時,準确定位并排除故障會比較困難。

VLAN擴充

* VLAN Translation

Vlan轉換又稱Vlan翻譯或Vlan映射,它允許用于邊緣接入的不同以太網交換機的Vlan ID設定互相重疊,通過以太網交換機的Vlan轉換功能,将不同交換機的重複Vlan ID修改為不同的Vlan ID,并從上聯端口發送出去,進而在二層核心交換機中也實作使用者的隔離,以簡化邊緣接入交換機的設定。

例如PON系統中,通過Vlan轉換模式,OLT或ONU裝置将上行以太網幀中使用者自行添加的Vlan标簽(Vid可能不是其獨用的,可能在同一個系統内有其他使用者使用相同的Vid)轉換為唯一的網絡側Vlan标簽;并在下行方向執行相反的操作。

* QinQ

随着以太網技術在營運商網絡中的大量部署(城域以太網),利用IEEE 802.1Q Vlan對使用者進行隔離和辨別受到很大限制。因為802.1Q定義的Vlan标簽域僅能表示4096個Vlan(12比特),對于城域網中需要辨別的大量使用者捉襟見肘,于是QinQ技術應運而生。

QinQ(也稱Stacked Vlan即Vlan堆疊或Double Vlan)技術出自IEEE 802.1ad标準,是對基于IEEE 802.1Q封裝的隧道協定的形象稱呼。QinQ實作在原有802.1Q Vlan标簽(内層标簽,也稱Customer Vlan,CVlan)之外再增加一個Vlan标簽(外層标簽,也稱Service Provider Vlan,SVlan),外層公網标簽将内層使用者私網标簽屏蔽起來,使封包攜帶兩層Vlan标簽穿越營運商骨幹網絡(公網),到達使用者另一端網絡邊緣交換機時再剝除外層公網Vlan标簽,還原出内層使用者标簽便于使用者進行下一步的通信。可見,QinQ技術不僅可有效拓展Vlan的數量空間(多達4096×4096個),而且可提供簡單的二層VPN(虛拟專用網)隧道,特别适合以三層交換機為骨幹的小型企業網或小型區域網路。

* QinQ封包格式

QinQ封包封裝格式如下圖所示。公網傳輸時内層Vlan标簽為使用者私網Vlan标簽,外層Vlan标簽由營運商配置設定給使用者。私網Vlan标簽被透明傳輸,故不同的使用者Vlan标簽可重複使用,隻需外層Vlan标簽在公網上唯一即可。

【轉】基于VLAN的二三層轉發原理

QinQ封包封裝格式

某些廠商将QinQ封包外層标簽的TPID值設定為0x9100或其他數值。為和這些裝置互通,使用者應可自行配置TPID值,使發送到公網中的QinQ幀攜帶的TPID值與其他廠商相同。由于TPID字段在以太網幀中所處位置與不帶Vlan标簽的幀中協定類型(Type)字段所處位置相同,為避免造成網絡中資料幀轉發和接收混亂,不允許使用者将TPID值配置為常用協定類型值。

* QinQ封裝方式

QinQ封裝是指如何把單層Q封包轉換為雙層Q封包, 封裝主要發生在城域網面向使用者的UPE裝置,一般在交換式的端口上進行。根據不同的封裝依據,QinQ可分為基于端口的QinQ、基于流的QinQ和路由子接口上進行的特殊QinQ封裝。

* 基于端口的QinQ封裝

基于端口封裝指進入一個端口的所有流量全部封裝一個外層Vlan。當端口收到封包時,無論封包是否帶有Vlan标簽,交換機都會為該封包附加本端口預設Vlan的标簽。若接收封包已帶标簽,則該封包成為雙标簽封包;若接收封包不帶标簽(untagged),則該封包将攜帶本端口預設Vlan标簽。基于端口的QinQ封裝容易實作,故業界主流廠家的三層交換機都支援。其缺點是外層Vlan标簽封裝方式死闆,當多個不同使用者或使用者網絡以不同的Vlan接入到同一個端口時無法區分使用者,即無法在一個端口上根據業務種類選擇多個外層标簽,進而很難有效支援單端口多業務的靈活營運。

此外,基于端口封裝需增加鍊路,組網複雜,不利于擴充維護。

* 基于流的QinQ封裝

基于流的QinQ封裝先對進入端口的資料進行流分類,然後對于不同的資料流選擇是否插入外層标簽以及插入何種外層标簽,是以也稱靈活QinQ(Smart QinQ或Selective QinQ)。當一些資料流(如多點傳播)出口不添加外層标簽,或單個端口根據内層Vlan添加不同的外層标簽時,就需要用到靈活QinQ。

靈活QinQ根據流分類方法又可細分如下:

1) 根據封包中的Vlan區間分流

當同一使用者的不同業務使用不同Vlan時,可根據Vlan區間進行分流,如PC上網Vlan範圍是101~200,IPTV的Vlan範圍是201~300,VoIP的Vlan範圍是301~400。面向使用者的裝置收到使用者資料後,根據Vlan範圍,對上網業務插入100的外層标簽,對IPTV插入300的外層标簽,對VoIP插入500的外層标簽。

2) 根據封包中的Vid+Priority分流

不同業務有不同優先級,當同一使用者的多種業務使用相同Vlan時,可根據不同業務的優先級進行區分,然後插入不同的外層标簽。

3) 根據封包的目的IP位址分流

當同一台PC既包括上網業務又包括語音業務時,不同業務目的IP不同,可利用ACL對目的IP位址進行分流,然後插入不同的外層标簽。

4) 根據ETYPE進行QinQ封裝

當同一使用者既包括PPPOE的上網業務,又包括IPOE的IPTV業務時,這些終端都通過一個Vlan上行,可根據PPPoE(0x8863/8864)和IPoE(0x0800)封包不同的ETYPE協定号作為QinQ的分流依據。

目前靈活QinQ主要應用于營運商接入網絡。在營運商網絡中給接入使用者配置設定一個Vlan,以便于追蹤問題和防止不同使用者間互訪,用外層标簽區分使用者應用;或在接入環境中用外層标簽區分不同的接入地點,用内外兩層标簽唯一辨別一個接入使用者。

* 路由子接口QinQ封裝

QinQ封裝一般在交換式端口上直接進行,但特殊情況下QinQ也可在路由子接口上進行封裝。

當核心網采用VLL/PWE3透傳使用者資料時,NPE裝置上的路由子接口可根據使用者Vlan ID封裝外層Vlan,通過外層Vlan接入VLL/PWE3。可通過一個QinQ Stacking子接口來透傳多個辨別使用者的Vlan ID。

該方式也是基于流的QinQ封裝,但QinQ Stacking子接口隻能與L2VPN(PWE3/VLL/VPLS)結合起來才有意義,不支援三層轉發功能。

* QinQ封包轉發

三層交換機連接配接使用者網絡的端口稱為Customer端口,連接配接骨幹網的端口稱為Uplink端口,骨幹網的邊緣接入裝置稱為PE(Provider Edge)。一般使用者側網絡通過Trunk方式接入骨幹邊緣交換機,骨幹網絡内Uplink端口通過Trunk方式對稱連接配接。

在通過QinQ實作簡單二層VPN的過程中,封包按如下方式轉發:

【轉】基于VLAN的二三層轉發原理

QinQ封包轉發過程

當封包從使用者側網絡1到達營運商骨幹網邊緣交換機Switch A的Customer端口時,無論該封包是否攜帶标簽,Switch A都基于端口PVid對其強行插入外層标簽(Vid=10)。在骨幹網絡内部,封包沿着Vlan10的Trunk端口傳播,使用者私網标簽在骨幹網絡中保持透明狀态,直至到達邊緣交換機Switch B。

Switch B發現與使用者網絡2相連的端口為Customer端口,按照傳統的802.1Q協定剝離外層标簽,恢複成使用者的原始封包,轉發到使用者側網絡2,進而實作一個簡單二層VPN功能。PE接入點用外層SVlan隔離,安全且節省Vlan。對使用者的管理可基于外層SVlan和内層CVlan唯一定位。

易知,若Vlan映射為C→S+C,則為Vlan堆疊;若Vlan映射為C→S,則為Vlan轉換。

注意,MAC位址學習、生成樹等均基于外層SVlan。

* QinQ優缺點

利用QinQ提供接入業務時具有以下優點:

Ÿ可解決日益緊缺的公網Vlan資源問題;

Ÿ使用者可規劃自己的私網Vlan ID,不會與公網Vlan ID沖突;

Ÿ提供一種較為簡單的二層VPN解決方案;

Ÿ使使用者網絡具有較高的獨立性,在服務提供商更新網絡時,使用者網絡不必更改原有配置;

Ÿ可按不同層次的Vlan ID區分不同的業務,以差別提供不同的管道、QoS政策;

ŸQinQ技術上可多層嵌套,僅受以太網幀長度的限制,具有很好的擴充性。

但随着使用者數量的增加,QinQ模型也會帶來可擴充性問題。某些使用者可能希望在分支機構間傳輸資料時可攜帶自己的Vlan ID,這就使采用QinQ技術的管理服務提供商面臨以下兩個問題:第一個客戶的Vlan辨別可能與其他客戶沖突;服務提供商将受到客戶可使用辨別數量的嚴重限制。若允許使用者按他們自己的方式使用各自的Vlan ID空間,則核心網絡仍存在4096個Vlan的限制。

* PVlan(Cisco)

PVLAN(Private VLAN,私有VLAN)即所有工作站在同一個子網中,但工作站隻能與自己的預設網關通信。PVlan采用兩層Vlan隔離技術,隻有上層Vlan全局可見,下層Vlan互相隔離。若将交換機的每個端口劃為一個(下層)Vlan,則實作所有端口的隔離。

每個Private Vlan包含兩種Vlan:主Vlan(Primary Vlan)和輔助Vlan(Secondary Vlan),後者又分為隔離Vlan(Isolated Vlan)和團體Vlan(Community Vlan)。

PVlan通信範圍:

主Vlan可與所有與之關聯的隔離Vlan、團體Vlan通信。不同主Vlan之間的任何端口都不能互相通信(此處“互相通信”指二層連通性)。

團體Vlan可與處于相同團體Vlan内的團體端口通信,也可與PVlan中的混雜端口通信。 每個PVlan可有多個團體Vlan。

隔離Vlan不可與處于相同隔離Vlan内的其它隔離端口通信,隻可與混雜端口通信。每個PVlan中隻能有一個隔離Vlan。

相應地,交換機實體端口有三種類型:

隔離端口(Isolated port),與使用者相連,屬于隔離Vlan。隻可與混雜端口通信,彼此不能通信。

團體端口(Community port),屬于團體Vlan。不僅可與混雜端口通信,也可與同一團體中的其它實體端口進行通信。

混雜端口(Promiscuous port),與路由器或三層交換機接口相連,屬于主Vlan。它收到的流量可發往隔離端口和團體端口。

【轉】基于VLAN的二三層轉發原理

PVlan端口類型

如圖,port1、port2和port3三者之間互相隔離,不允許通信,隻能與port6通信;port4和port5間可以通信,也可以與port6通信。所有端口隻需配置設定共享一個IP位址。

PVlan的應用對于保證接入網絡的資料通信安全性非常有效。所有使用者都接入PVlan,每個使用者一個Vlan,使用者間二層互相隔離。使用者隻需與自己的預設網關連接配接,一個PVlan不需要多個Vlan和IP子網就可提供具備二層資料通信安全性的連接配接。PVlan功能可保證同一個Vlan中的各個端口互相之間不能通信,但可穿過Trunk端口。這樣即使同一Vlan中的使用者,互相之間也不會受到廣播的影響。

對于上層交換機來說,可認為下層交換機中隻有幾個主Vlan,而不必關心主Vlan 中的端口實際所屬的Vlan,進而簡化配置并節省Vlan 資源。一個主Vlan中包含的所有Private Vlan處于同一個子網中,可節省子網數目和IP 位址資源。

PVlan通常用于企業内部網,用來阻斷連接配接到某些接口或接口組的網絡裝置間的互相通信,但卻允許與預設網關進行通信。盡管各裝置處于不同的PVlan中,但可使用相同的IP子網。

* SuperVlan

不同Vlan間通信需要通過三層路由進行轉發,而每個子網(Vlan)都需要設定一個路由位址。每配置設定一個子網,就有三個IP位址(子網的網絡号、廣播位址和預設網關)被占用。同時,這種位址配置設定的固有限制也嚴重降低編址的靈活性,使許多閑置位址被浪費。為提高IP位址的使用率,Super VLAN超網應運而生。

SuperVlan(又稱VLAN Aggregation,即Vlan聚合)把多個子Vlan(SubVlan)聚合成一個SuperVlan,這些SubVlan共同使用一個IP子網和預設網關。通過VLAN聚合可使所有在同一子網上的終端使用者通過統一的路由(同一子網網段位址)而使用不同的廣播域。

利用SuperVlan技術,隻需為SuperVlan配置設定一個子網位址,并為每個使用者或子網建立一個SubVlan。所有SubVlan可靈活配置設定SuperVlan子網中的IP位址,使用SuperVlan的預設網關。每個SubVlan都是一個獨立的廣播域,保證不同使用者之間的隔離;SubVlan間通信需要通過SuperVlan進行路由。由于各個SubVlan不需要真正的子網網段,可有效提高IP使用率。這樣的子網可配置設定足夠小且擴充友善,無需重新定義子網大小。

SuperVlan内的主機使用同一個網段的位址,共用同一個上行網關。即使是屬于不同SubVlan的主機,由于其位址同屬一個子網,裝置會認為它們是二層互通的,會做二層轉發,而不會送網關進行三層轉發。而實際上SubVlan間在二層互相隔離,是以需要采用ARP代理(Proxy)來實作SubVlan間的互通。Subvlan之間以及和外部通信通過ARP代理,所有Subvlan内主機發送的ARP請求都由SuperVlan的MAC位址作為ARP應答。

注意,SuperVlan并不包含實體端口,可将其視作邏輯的三層概念——若幹SubVlan的集合。對交換晶片來說SuperVlan是透明的,仍按晶片中的Vlan進行轉發。在基于端口的Vlan中,二層通信時,無論收發都不會有針對SuperVlan的封包。即進入SubVlan裝置的資料幀會附加該SubVlan的标簽,從Trunk端口發出時也不會改為SuperVlan的标簽。

* ARP Proxy原理

一個實體網絡子網(Subnet)中的源主機向另一個實體網絡子網中的目的主機發送ARP request請求,和源主機直連的網關用自己接口的MAC位址代替目的主機回複ARP reply應答,該過程稱為ARP代理。

ARP代理的基本過程如下:

源主機向另一實體網絡的子網中的目的主機發ARP請求;

與源主機網絡相連的網關已使能ARP代理功能,若存在到達目的主機的正常路由,則代替目的主機應答自己接口的MAC位址;

源主機向目的主機發送的IP封包都發給路由器;

路由器對封包做正常的IP路由轉發;

發往目的主機的IP封包通過網絡,最終到達目的主機。

*  SubVlan間的三層互通

【例】SuperVlan 2包含SubVlan 21和SubVlan 22,分析PC1與PC2的互通過程(假設PC1的ARP表中無PC2對應表項)。IP位址和MAC位址如下圖所示。

【轉】基于VLAN的二三層轉發原理

用ARP代理實作不同SubVlan間的三層互通

PC1要發送封包給PC2,則将PC2的IP位址(1.1.1.3)與自己所在網段1.1.1.0 /24進行比較。由于SubVlan 21和SubVlan 22同屬一個SuperVlan所在子網,于是發廣播ARP請求PC2的MAC位址;而PC2并不在SubVlan 21的廣播域内,無法接收到該ARP請求。當PC1在二層發出的ARP請求在其廣播域内沒有回應時,交換機網關運作ARP代理,查找路由表并發現下一跳為直連路由接口(SubVlan 22),則在該接口發送一個ARP請求PC2的MAC位址;得到PC2回應後,就把網關自己的MAC位址GwMac當作PC2的MAC位址(實際是Mac2 )回給PC1 (不同裝置實作略有不同)。之後,主機PC1要發給PC2的封包都發給交換機,由三層交換機做正常的三層轉發。

PC2回送給PC1的封包轉發過程和上述的PC1到PC2的封包流程類似。

* SuperVlan與外部的三層通信

【例】交換機1上配置SuperVlan 2、SubVlan 21和22,并有一個正常的Vlan 10。交換機2上配置兩個正常的Vlan 10和20。假設SuperVlan 2下SubVlan 21中的PC1想通路交換機2下連的PC3,分析其上下行封包的轉發流程。

【轉】基于VLAN的二三層轉發原理

Super VLAN與外部的三層通信圖例

* 封包上行流程

PC1 (1.1.1.2/24)要通路PC3(1.1.3.2/24),因為IP位址不在一個網段,故PC1發送ARP請求給自己的網關,請求網關的MAC位址。SubVlan21收到ARP封包後,将其上送CPU。CPU查找SubVlan和SuperVlan的對應關系,知道應回應SuperVlan2的MAC位址(不同裝置實作可能略有不同),且知道回應封包應從SubVlan21發送給PC1。

PC1學到網關MAC位址後,開始發送目的MAC為SuperVlan2、目的IP為1.1.3.2的封包。SubVlan21收到封包後,檢測目的MAC後得知應進行三層轉發,于是查找轉發路由表,發現下一跳位址為1.1.2.2,出接口為Vlan10,并通過ARP表項和MAC表項确定出端口,把封包發送給交換機2,交換機2根據正常的轉發流程把封包發送給PC3。

* 封包下行流程