传统的基于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网络实现互联类似。
1 Martini方式 MPLS L2VPN
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)方式建立MPLS L2VPN。目前,它采用扩展了的边界网关协议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连接即可,不影响网络的运行。
2 Martini方式VLL主备链路备份模型
如果在两个CE之间只建立一条VC,则当该VC出现故障时,CE之间将无法通信。如图1所示,Martini方式的MPLS L2VPN支持VC冗余保护功能:在两个CE之间建立两条VC链路,正常情况下,CE只使用一条VC链路(主链路)与对端CE通信;当PE 1检测到主链路出现故障时,将启用备份VC链路,从而保证通信不会中断。