章芳芳 ,昂志敏 ,付志华
(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.