徐 蓓,肖萍萍
(武漢郵電科學研究院,湖北 武漢 430074)
隨著NGN/3G的大規模部署,運營商開始希望能夠在數據接入網上承載更加多樣化的業務,來降低運營成本。但是隨著用戶數量的大規模增加和業務類型的多樣化,傳統的VLAN技術由于受VLAN數量的影響,已經不能滿足業務發展的需求,為了滿足在傳統的接入網上承載具有不同QoS需求的業務,實現數據接入網具有有效的業務識別和業務隔離,QinQ技術應運而生,該技術對VLAN(Virtual Local Area Network)數量進行了有效擴展,可以支持4096×4096的規模,進而有效解決現階段VLAN技術中遇到的瓶頸[1]。
MSAP(多業務接入平臺)是定位于城域網邊緣接入層,基于成熟的SDH技術,融合其他各種接入技術的綜合平臺,汲取了SDH傳輸平臺中組網靈活、維護方便、保護可靠等優點,通過EOS(Ethernet Over SDH)將成熟的SDH技術滲透到以太網應用中,從而實現以太網業務安全可靠的傳送并有效保證運營商接入層網絡具備較強的可持續發展能力和IP業務支撐能力。MSAP可以通過點對點透傳、L2匯聚+透傳和以太共享環這3種方式處理以太網業務,其中匯聚加透傳是指MSAP可以在系統內部提供2層交換功能,即在用戶的業務接口與傳輸網鏈路之間,提供基于以太網數據鏈路層的交換,并可以通過對各個用戶接口劃分VLAN的方式實現業務隔離,再將不同類型業務匯聚后的數據流通過點到點透傳至MSTP網的終結點,從而實現數據業務的轉發。
VLAN(虛擬局域網)可以根據用戶不同需求將局域網設備從邏輯上劃分為一個個功能相對獨立的網段,而與設備的物理位置無關[2]。VLAN的規范由IEEE 802.1Q(后簡稱802.1Q)協議規定,它在普通的以太網幀格式(如圖1所示)的基礎上增加了4 byte用來表示IEEE 802.1Q的標簽,如圖2所示,802.1Q標簽中的前2 byte表示標簽協議標識(Tag Protocol Identifier,TPID),由于幀長度和類型小于0x8100,所以當MAC目的地址后面的字節是8100就能表明此數據包并非普通的以太網數據幀,而是帶802.1Q標簽的數據幀。后2 byte表示標簽控制信息(Tag Control Information TCI),其中priorityzhe3位表示幀的優先級,一共有23種優先級,用戶可以針對不同業務的重要性設置不同的優先級別[3]。VLAN Identified(vlanid)是一個12位域,一共212個[4]。QinQ的數據幀有固定的格式,在802.1Q的標簽之上再打一層標簽,QinQ的數據幀比802.1Q的標簽幀多4 byte,如圖3所示。在雙層VLAN標簽的以太網幀中,內層VLAN標簽的TPID根據不同廠家,有不同的取值。



802.1 Q協議定義了基于端口的VLAN模型,根據對數據包標簽的不同處理將端口的鏈路類型分為3種,即Access,Trunk 和 Hybrid[7]。
Access類型的端口只能屬于1個VLAN,一般定義它的pvid值就是該端口的vlanid,當該端口接收到不帶VLAN標示的數據包后,則在該數據包打上pvid的標簽,當端口轉發數據包時,剝離標簽,因此從Access端口出去的數據包都是不帶外層標簽的,由于計算機端口不能識別標簽,所以一般用于連接計算機的端口。
Trunk類型的端口可以屬于多個VLAN,其默認的pvid為1,其pvid也可設置為端口所在VLAN的vlanid。當接收不帶VLAN的數據包時,將數據包打上默認pvid標簽,在Trunk端口發送數據包時,不剝離標簽,直接進行轉發;當接收到帶VLAN的數據包時,會識別數據包中帶的VLAN是否跟該端口所標示的VLAN一致,如果是一致的則進行數據轉發,如果不一致將丟棄該數據包。由于從Trunk端口出去的數據包都是帶標簽的,一般用于交換機之間的連接端口。
Hybrid類型的端口可以屬于多個VLAN,可以接收和發送多個VLAN的數據包,其默認的pvid為1,當接收不帶標簽的數據包時,將數據包打上默認pvid標簽,其與Trunk端口的區別在于,當Hybrid端口發送數據包時,可以通過不同的設置選擇是否解標簽,所以Hybrid端口既可以接計算機也可以接交換機。
在MSAP中業務卡由于本身局限性無法實現QinQ技術的情況下,通過對匯聚卡實現QinQ,將業務卡向匯聚卡匯聚,在匯聚卡的千兆網口實現雙層標簽的輸出。由于業務卡無法識別雙層標簽數據包,所以必須保證雙標簽經過匯聚卡后,解掉外層標簽。
本文主要是基于Marvell6095來驅動和實現靈活的QinQ。QinQ技術的封裝大致分為兩類,一類是基于端口的QinQ,通過對交換芯片端口的設置,完成不同的端口選擇加標或者去標;另一類是基于數據流的QinQ,顧名思義就是不局限于端口的設置,而是根據不同業務的數據包進行不同的設置[8]。本文是業務卡通過端口向GE卡匯聚實現QinQ,因此采用的是基于端口的QinQ。
業務卡通過機框的背板總線向匯聚卡作向上匯聚(如圖4所示),不同槽號業務卡的MII口匯聚到Marvell6095不同的百兆口,最后匯聚業務通過Marvell6095的千兆口輸出。業務卡通過交叉連接盤配置業務、接SDH設備,再經過E1協轉和光纖收發器將2M業務接到用戶端,用戶端接電腦時業務端口模式用Access,接交換機時端口模式用Trunk。具體實現步驟如圖5所示。


1)針對匯聚卡的兩個千兆口設置QinQ使能。由于匯聚卡的千兆口是與MSTP設備對接,針對不同的需求,用戶可能需要兩個千兆口對應不同的業務,一個是雙層標簽,一個是單層標簽。
2)設置端口保護,千兆口業務量大,一旦鏈路發生問題,后果較嚴重,用戶可以根據需要設置端口保護,一旦設置保護后,當一個端口的業務出現問題,另外一個端口仍然可以正常工作,設置端口保護后,兩個千兆口的VLAN設置和QinQ設置自動保持一致。
3)業務盤的MII上聯口加入內層標簽,匯聚盤的百兆口和千兆口既要加入內層標簽又要加入外層標簽,且百兆口和千兆口加入外層標簽時的模式不同,以保證從千兆口輸出的數據包是雙層標簽,從百兆口出去的數據包是單層標簽。
調用Marvell6095提供的API函數根據用戶設置外層標簽還是外層標簽,對端口做不同設置。
調用Marvell6095芯片的API函數設置內層標簽:

調用Marvell6095的API函數設置外層標簽:

以太網測試儀抓包驗證截圖如圖6~圖11所示。






QinQ技術的出現,不僅解決了傳統802.1Q VLAN數量緊缺的問題,而且大大減少VLAN規劃復雜性和標簽的占用,通過對內層標簽和外層標簽的設置,對業務進行區分并分流,最終保證不同業務的QoS[4]。本實現方案已成功運用在作者所屬單位的MSAP_622設備中。
本文的創新點:1)在設備本身不具備QinQ功能的情況下,通過創新設計實現QinQ;2)在實現QinQ的基礎上,通過提供QinQ使能和端口保護,保證滿足不同用戶的多樣需求。
[1]胡逾峰.QinQ技術的原理及在上海電信的應用[J].計算機與信息技術,2007(3):27-28.
[2]王軍,林其偉.基于以太網的寬帶接入技術[J].電視技術,2003,27(5):23-25.
[3]邊永濤.靈活QinQ技術在校園網中的設計與實現[J].微計算機信息,2010(4):125-126.
[4]董喜明.QinQ技術在城域以太網組網中的應用[J].計算機工程與科學,2005(6):18-20.
[5]IEEE802.1Q,Local and metropolitan area network virtual bridged local area network[S].1998.
[6]IEEE802.1Q,Local and metropolitan area network virtual bridged local area network[S].2006.
[7]邊永濤,左明.QinQ模式下標簽透傳的設計與實現[J].計算機工程與設計,2010(19):4158-4160.
[8]劉琪.基于Marvell芯片的全靈活QinQ的驅動及研究[J].計算機與現代化,2011(3):92-94.