1. 传统的VPN
传统的基于ATM或Frame Relay(帧中继,以下简称FR)的VPN(Virtual Private Network,虚拟专用网)应用非常广泛,它们能在不同VPN间共享运营商的网络结构。这种VPN的不足在于:
l 依赖于专用的介质(如ATM或FR):为提供基于ATM的VPN服务,运营商必须建立覆盖全部服务范围的ATM网络;为提供基于FR的VPN服务,又需要建立覆盖全部服务范围的FR网络,在网络建设上造成浪费。
l 部署复杂:尤其是向已有的VPN加入新的Site(站点)时,需要同时修改所有接入此VPN站点的边缘节点的配置。
由于以上缺点,新的VPN替代方案应运而生,MPLS L2VPN就是其中的一种。
2. MPLS L2VPN
MPLS L2VPN提供基于MPLS(Multiprotocol Label Switching,多协议标签交换)网络的二层VPN服务,使运营商可以在统一的MPLS网络上提供基于不同数据链路层的二层VPN,包括ATM、FR、VLAN、Ethernet、PPP等。
简单来说,MPLS L2VPN就是在MPLS网络上透明传输用户二层数据。从用户的角度来看,MPLS网络是一个二层交换网络,可以在不同节点间建立二层连接。
以ATM为例,每个用户边缘设备(Customer Edge,CE)配置一条ATM虚电路(Virtual Circuit,VC),通过MPLS网络与远端CE相连,这与通过ATM网络实现互联类似。
图 1 MPLS L2VPN组网示意图
3. 与MPLS L3VPN相比
相对于MPLS L3VPN,MPLS L2VPN具有以下优点:
l 可扩展性强:MPLS L2VPN只建立二层连接关系,不引入和管理用户的路由信息。这大大减轻了PE(Provider Edge,服务提供商边缘设备)甚至整个SP(Service Provider,服务提供商)网络的负担,使服务提供商能支持更多的VPN和接入更多的用户。
l 可靠性和私网路由的安全性得到保证:由于不引入用户的路由信息,MPLS L2VPN不能获得和处理用户路由,保证了用户VPN路由的安全。
l 支持多种网络层协议:包括IP、IPX、SNA等。4. MPLS L2VPN的基本概念
在MPLS L2VPN中,CE、PE、P的概念与MPLS L3VPN一样,原理也相似。
l CE(Customer Edge)设备:用户网络边缘设备,有接口直接与SP相连。CE可以是路由器或交换机,也可以是一台主机。CE“感知”不到VPN的存在,也不需要必须支持MPLS。
l PE(Provider Edge)路由器:服务提供商边缘路由器,是服务提供商网络的边缘设备,与用户的CE直接相连。在MPLS网络中,对VPN的所有处理都发生在PE上。
l P(Provider)路由器:服务提供商网络中的骨干路由器,不与CE直接相连。P设备只需要具备基本MPLS转发能力。
MPLS L2VPN通过标签栈实现用户报文在MPLS网络中的透明传送:
l 外层标签(称为Tunnel标签)用于将报文从一个PE传递到另一个PE;
l 内层标签(称为VC标签)用于区分不同VPN中的不同连接;
l 接收方PE根据VC标签决定将报文转发给哪个CE。
图 2 是MPLS L2VPN转发过程中报文标签栈变化的示意图。
图 2 MPLS L2VPN标签栈处理
(1)L2PDU是链路层报文,PDU即Protocol Data Unit,协议数据单元 |
(2)T是Tunnel标签;V是VC标签;T’表示转发过程中外层标签被替换 |
5. MPLS L2VPN的实现方式
当前MPLS L2VPN还没有形成正式的标准。IETF的PPVPN(Provider-provisioned Virtual Private Network)工作组制订了多个框架草案,其中最主要的两种称为Martini草案和Kompella草案:
l draft-martini-l2circuit-trans-mpls
l draft-kompella-ppvpn-l2vpn
Martini草案定义了通过建立点到点的链路来实现MPLS L2VPN的方法。它以LDP(Label Distribution Protocol,标记分发协议)为信令协议来传递双方的VC标签,称为Martini方式MPLS L2VPN。
Kompella草案则定义了在MPLS网络上以端到端(CE到CE)的方式建立MPLS L2VPN。目前它采用扩展了的BGP(Border Gateway Protocol,边界网关协议)为信令协议来发布二层可达信息和VC标签,称为Kompella方式MPLS L2VPN。
另外,可以采用静态配置VC标签的方式来实现MPLS L2VPN服务。CCC(Circuit Cross Connect,电路交叉连接)和SVC(Static Virtual Circuit,静态虚拟电路)就是两种静态配置MPLS L2VPN的实现方式。
下面分别介绍这几种MPLS L2VPN的特点和实现方式。
CCC方式MPLS L2VPN
与普通MPLS L2VPN不同,CCC采用一层标签传送用户数据,因此,CCC对LSP(Label Switched Path,标签交换路径)的使用是独占性的。CCC的LSP只用于传递这个CCC连接的数据,不能用于其他MPLS L2VPN连接,也不能用于MPLS L3VPN或承载普通的IP报文。
这种方式的最大优点是:不需要任何标签信令传递二层VPN信息,只要能支持MPLS转发即可,保证在任何情况下,运营商之间可以进行互连。此外,由于LSP是专用的,可以提供QoS保证。
CCC连接有两种:本地连接和远程连接。
l 本地连接:在两个本地CE之间建立的连接,即两个CE连在同一个PE上。PE的作用类似二层交换机,可以直接完成交换,不需要配置静态LSP。
l 远程连接:在本地CE和远程CE之间建立的连接,即两个CE连在不同的PE上,需要配置静态LSP来把报文从一个PE传递到另一个PE。
SVC方式MPLS L2VPN
SVC(Static Virtual Circuit,静态虚拟电路)也是一种静态的MPLS L2VPN,在L2VPN信息传递中不使用信令协议。
SVC方式与Martini方式的MPLS L2PVN非常类似,但它不使用LDP传递二层VC和链路信息,手工配置VC标签信息即可,其实是Martini方式的一种静态实现。
Martini方式MPLS L2VPN着重于在两个CE之间建立VC(Virtual Circuit,虚电路)。
Martini方式采用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类型。此外,由于交换VC标签的两个PE可能不是直接相连的,所以LDP必须使用remote peer来建立会话(Session),并在这个会话上传递VC FEC和VC标签。
在Martini方式中,由于在运营商网络中,只有PE设备需要保存少量的VC label与LSP的映射等信息,P设备不 包含任何二层VPN信息,所以扩展性很好。此外,当需要新增加一条VC时,只在相关的两端PE设备上各配置一个单方向VC连接即可,不影响网络的运行。
Martini方式适合稀疏的二层连接,例如星型连接。
与Martini方式不同,Kompella方式的MPLS L2VPN不直接对CE与CE之间的连接进行操作,而是在整个运营商网络中划分不同的VPN,在VPN内部对CE进行编号。要建立两个CE之间的连接,只需在PE上设置本地CE和远程CE的CE ID,并指定本地CE为这个连接分配的Circuit ID(例如ATM的VPI/VCI)。
Kompella方式MPLS L2VPN以BGP扩展为信令协议来分发VC标签。在分配标签时,Kompella方式采用标签块(Label block)的方式,一次为多个连接分配标签。
用户可以指定一个VPN的CE的范围(CE range),表明当前VPN上最多可连接的CE数。系统一次为这个CE分配一个标签块,标签块的大小等于CE range。这种方式允许用户为VPN分配一些额外的标签,留待以后使用。这样短期来看会造成标签资源的浪费,但是却带来一个很大的好处,即可以减少VPN部署和扩容时的配置工作量。
假设一个企业的VPN包括10个CE,但是考虑到企业会扩展业务,将来可能会有20个CE。这样可以把每个CE的CE range设置为20,系统会预先为未来的10个CE分配标签。以后VPN添加CE节点时,配置的修改仅限于与新CE直接相连的PE,其他PE不需要作任何修改。这使得VPN的扩容变得非常简单。
类似于MPLS L3VPN,Kompella方式MPLS L2VPN也使用VPN Target来区分不同的VPN,这使得VPN组网具有极大的灵活性。