章芳芳 ,昂志敏 ,付志華
(1.合肥工業大學 計算機與信息學院,安徽 合肥 230009;2.杭州華三通信技術有限公司,浙江 杭州 310053)
傳統的基于ATM或幀中繼FR(Frame Relay)的虛擬專用網 VPN(Virtual Private Network)應用非常廣泛,能在不同VPN間共享運營商的網絡結構[1]。這種VPN的不足之處在于:
(1)依賴于專用的介質(如ATM或 FR)。為提供基于ATM的VPN服務,運營商必須建立覆蓋全部服務范圍的ATM網絡;為提供基于FR的VPN服務,又需要建立覆蓋全部服務范圍的FR網絡,致使在網絡建設上造成浪費;
(2)部署復雜。尤其是向已有的VPN加入新的Site(站點)時,需要同時修改所有接入此VPN站點的邊緣節點的配置。
鑒于以上缺點,新的VPN替代方案應運而生,MPLS L2VPN就是其中的一種。MPLS L2VPN提供基于多協議標簽交換 MPLS(Multiprotocol Label Switching)網絡的二層VPN服務,使運營商可以在統一的MPLS網絡上提供基于不同數據鏈路層的二層 VPN,包括 ATM、FR、VLAN、Ethernet、PPP 等[2]。 簡單來說,MPLS L2VPN 是在MPLS網絡上透明傳輸用戶二層數據[3]。從用戶的角度來看,MPLS網絡是一個二層交換網絡,可以在不同節點間建立二層連接。以ATM為例,每個用戶邊緣設備CE(Customer Edge)配置一條ATM虛電路VC(Virtual Circuit),通過MPLS網絡與遠端CE相連,這與通過ATM網絡實現互聯類似。
MPLS L2VPN主要有以下幾種實現方式[4]:
(1)電路交叉連接 CCC(Circuit Cross Connect)和靜態虛擬電路 SVC(Static Virtual Circuit):兩種采用靜態配置VC標簽的方式來實現MPLS L2VPN。
(2)Martini方式:通過建立點到點鏈路來實現MPLS L2VPN,它以標記分發協議 LDP(Label Distribution Protocol)為信令協議來傳遞雙方的VC標簽。
(3)Kompella方式:在 MPLS網絡上以端到端(CE到CE)方式建立MPLSL2VPN。目前,它采用擴展了的邊界網關協議 BGP(Border Gateway Protocol)為信令協議來發布二層可達信息和VC標簽[5]。
其中,Martini方式 MPLS L2VPN著重于在兩個 CE之間建立虛電路VC(Virtual Circuit),該方式用VC-TYPE結合VC ID來標識一個VC。VC-TYPE表明VC的封裝類型(ATM、VLAN或 PPP);VC ID則用于唯一標識一個VC。屬于同一個VC-TYPE的所有VC中,其VC ID必須在整個PE中是唯一的。連接兩個CE的PE通過LDP交換VC標簽,并通過VC ID綁定對應的CE。當連接兩個PE的LSP建立成功,雙方的標簽交換和綁定完成后,VC就建立起來了,CE之間可以通過此VC傳遞二層數據。為了在PE之間交換 VC標簽,Martini方式對LDP進行了擴展,增加了轉發等價類VC FEC(Forwarding Equivalence Class)的 FEC類型[6]。此外,由于交換VC標簽的兩個PE可能不是直接相連的,所以LDP必須使用remote peer來建立會話(Session),并在這個會話上傳遞VC FEC和VC標簽。
在Martini方式中,由于運營商網絡中只有PE設備需要保存少量的VC label與LSP的映射等信息,P設備不包含任何二層VPN信息,所以擴展性很好。此外,當需要新增加一條VC時,只需在相關的兩端PE設備上各配置一個單方向VC連接即可,不影響網絡的運行。
如果在兩個CE之間只建立一條VC,則當該VC出現故障時,CE之間將無法通信。如圖1所示,Martini方式的MPLS L2VPN支持VC冗余保護功能:在兩個CE之間建立兩條VC鏈路,正常情況下,CE只使用一條 VC鏈路(主鏈路)與對端 CE通信;當 PE 1檢測到主鏈路出現故障時,將啟用備份VC鏈路,從而保證通信不會中斷。

上文談到,當主鏈路發生故障后,將切換到備份VC鏈路。目前的網絡中一般采用比較慢的協議報文hello機制,LDP會話要檢測到鏈路失效,需要檢測到幾個周期的hello報文的丟失。通常這個檢測時間會很長,在幾百微秒級。當數據達到吉比特速率級時,故障檢測時間長表明大量數據的丟失,并且對于不允許路由協議的節點沒有辦法檢測鏈路狀態。現有的網絡中并不具備秒級以下的故障修復功能,而傳統的路由架構對現實應用如語音進行準確故障檢測方面能力有限。
BFD(Bidirectional Forwarding Detection)是一套全網統一的檢測機制,用于快速檢測、監控網絡中鏈路連通狀況。BFD的目標是對相鄰轉發引擎之間通道故障提供輕負荷、持續時間短的檢測[7]。由于BFD定義的確認分組可以用于任何協議層,這使BFD機制成為了一個通用的工具。BFD可以在多種類型的路徑和媒質(如物理鏈路、虛電路或一對網元之間的MPLS LSP)上實現失效檢測[8]。
在上述組網中,PE1和PE2之間、PE1和PE3之間均建立有遠程LDP會話。在這兩對遠程LDP會話上建立BFD會話,并且使BFD報文檢測周期為最小的10 ms,當BFD在3個周期后沒有檢測到對端發送的BFD報文時,即認為鏈路失效,從而發起VC的切換,切換到備用VC上,保證流量的最小流失。
BFD會話建立以及檢測通知過程如下:
(1)LDP遠程會話建立,主備VC均up,下發VC到數據層面;
(2)LDP通告BFD鄰居參數和BFD檢測參數;
(3)BFD根據收到的參數協商是否可以建立BFD鄰居來確定是否建立BFD會話。這里同時建立控制面和數據面的BFD會話;
(4)當BFD檢測到鏈路失效時,同時通知控制面和轉發面進行切換。通知轉發面切換是為了將VC快速由主切換到備,從而指導轉發。通知控制面是為了保持和轉發面數據一致。這樣就達到了快速切換的目的。如圖2所示。

普通方式下,使用協議報文本身的hello機制進行Martini方式MPLS L2VPN的主備VC切換網絡性能如圖3所示。
計算出的流量切換時間t1為:

圖3中端口1發送幀數=2 915 108幀,端口2接收幀數=1 613 388幀,端口3接收幀數=1 289 580幀,發送幀速率=84 345 f/s,則:


改用BFD檢測時,BFD發送報文周期設置為最小的10 ms,性能如圖 4所示。
此時的流量切換時間t2為:

由上述可見,利用BFD機制檢測VC鏈路故障,其切換時間一般在50 ms之內。
利用BFD技術實現MPLS L2VPN主備鏈路切換,大大減少了鏈路故障的檢測時間,并且主備VC的切換在數據平面完成,不需要通過控制平面下發備VC表項,減少了主備VC的切換時間。BFD的定位更多的是綁定到數據平面,從而脫離具體的網絡協議,使快速檢測缺陷實現電信級倒換成為可能,加上處理的低開銷使得BFD的推廣變得更加容易,并且具備更強的適用性,BFD必將成為網絡電信化重要的推動力量。
[1]陳山枝.IP與ATM的結合[J].現代電信科技,1998,7(2):33-47.
[2]吳江,趙慧玲.下一代的IP骨干網絡技術——多協議標記交換[M].北京:人民郵電出版社,2001.
[3]甘朝欽.VPN向下一代網絡演進最現實合理的選擇——MPLS L2VPN[J].電 信 技 術 ,2004(3):57-59.
[4]李勁松.BGP/MPLS VPN江湖恩仇錄[EB/OL].(2010-05-26).http://wenku.baidu.com/view.
[5]徐勁濤,余波.淺議高級BGP路由協議[J].江西通信科技,2009(03):89-91.
[6]MARTINI L,ROSEN E,AAWAR N E.Pseudowire Setup and Maintenance Using the Label Distribution Protocol(LDP)[S].2006.
[7]高鑫.雙向轉發檢測(BFD)協議研究[M].北京:北京郵電大學出版社,2007.
[8]陳利兵.BFD技術在IP承載網中的應用[J].現代電信科技,2008,38(1):54-58.