MPLS L2VPN详解

1,808 阅读7分钟

MPLS L2VPN概述

MPLSL2VPN 提供基于MPLS(MultiprotocolLabelSwitching,多协议标签交换)网络的二层VPN 服务,使运营商可以在统一的MPLS网络上提供基于不同数据链路层的二层VPN,包括ATM、FR、VLAN、Ethernet、PPP等。

简单来说,MPLSL2VPN就是在MPLS网络上透明传输用户二层数据。从用户的角度来看,MPLS网络是一个二层交换网络,可以在不同节点间建立二层连接。

以ATM为例,每个用户边缘设备(CustomerEdge,CE)配置一条ATM虚电路(VirtualCircuit,VC),通过MPLS网络与远端CE相连,这与通过ATM网络实现互联类似。

图1 MPLS L2VPN 组网示意图

与MPLS L3VPN 比较

相对于MPLS L3VPN,MPLS L2VPN 具有以下优点: 可扩展性强:MPLSL2VPN只建立二层连接关系,不引入和管理用户的路由信息。这大大减轻了PE(Provider Edge,服务提供商边缘设备)甚至整个SP(Service Provider,服务提供商)网络的负担,使服务提供商能支持更多的 VPN和接入更多的用户。

可靠性和私网路由的安全性得到保证:由于不引入用户的路由信息,MPLSL2VPN 不能获得和处理用户路由,保证了用户VPN 路由的安全。 支持多种网络层协议:包括IP、IPX、SNA等。

MPLS L2VPN 的基本概念

在MPLS L2VPN中,CE、PE、P的概念与MPLS L3VPN 一样,原理也相似。

CE(Customer Edge)设备:用户网络边缘设备,有接口直接与SP相连。CE可以是 路由器或交换机,也可以是一台主机。CE“感知”不到VPN 的存在,也不需要必须支持MPLS。

PE(ProviderEdge)路由器:服务提供商边缘路由器,是服务提供商网络的边缘设备,与用户的CE直接相连。在MPLS网络中,对VPN的所有处理都发生在PE上。

P(Provider)路由器:服务提供商网络中的骨干路由器,不与CE 直接相连。P设备只需要具备基本MPLS转发能力。

MPLS L2VPN 通过标签栈实现用户报文在MPLS网络中的透明传送:

外层标签(称为Tunnel标签)用于将报文从一个PE传递到另一个PE;

内层标签(称为VC标签)用于区分不同VPN 中的不同连接; 接收方PE 根据VC标签决定将报文转发给哪个CE。

图2 MPLS L2VPN 标签栈处理

更多MPLS基本概念请参阅前作: 秒懂!超简单MPLS入门

MPLS L2VPN 的实现方式

MPLS L2VPN 主要有以下几种实现方式:

CCC(Circuit Cross Connect,电路交叉连接)和SVC(Static Virtual Circuit,静态 虚拟电路):两种采用静态配置VC标签的方式来实现MPLS L2VPN 的方法。

Martini方式:通过建立点到点链路来实现MPLS L2VPN 的方法,它以LDP(Label Distribution Protocol,标记分发协议)为信令协议来传递双方的 VC标签。

Kompella方式:在MPLS网络上以端到端(CE到CE)方式建立MPLSL2VPN 的方法。 目前,它采用扩展了的BGP(Border Gateway Protocol,边界网关协议)为信令协议来 发布二层可达信息和VC标签。

下面分别介绍这几种MPLS L2VPN实现方式。

  1. CCC方式MPLS L2VPN

与普通MPLSL2VPN 不同,CCC采用一层标签传送用户数据,因此,CCC对LSP(Label SwitchedPath,标签交换路径)的使用是独占性的。CCC的LSP只用于传递这个CCC连 接的数据,不能用于其他MPLS L2VPN连接,也不能用于MPLS L3VPN或承载普通的IP 报文。

这种方式的最大优点是:不需要任何标签信令传递二层VPN信息,只要能支持MPLS转发 即可,保证在任何情况下,运营商之间可以进行互连。此外,由于LSP是专用的,可以提 供QoS保证。

CCC连接有两种:本地连接和远程连接。

本地连接:在两个本地CE之间建立的连接,即两个CE连在同一个PE上。PE 的作用类 似二层交换机,可以直接完成交换,不需要配置静态LSP。

远程连接:在本地CE和远程CE之间建立的连接,即两个CE连在不同的PE上,需要 配置静态LSP来把报文从一个PE传递到另一个PE。 远程连接中的P设备上必须单独为每一个CCC连接手工配置两条不同方向的LSP。

  1. SVC方式MPLS L2VPN

SVC(Static Virtual Circuit,静态虚拟电路)也是一种静态的MPLS L2VPN,在L2VPN信息传递中不使用信令协议。

SVC方式与Martini方式的MPLS L2PVN 非常类似,但它不使用LDP传递二层VC和链路 信息,手工配置VC标签信息即可,其实是Martini方式的一种静态实现。

CCC和SVC使用的标签范围是16~1023,即保留给静态LSP使用的标签。

  1. Martini方式MPLS L2VPN

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标签,并通过VCID绑定对应的CE。当连接两个PE 的LSP建立成功,双方的标签交换和绑定完成后,一个VC就建立起来了,CE 之间可以通 过此VC传递二层数据。

为了在PE之间交换VC标签,Martini方式对LDP进行了扩展,增加了VCFEC(Forwarding Equivalence Class,转发等价类)的FEC类型。此外,由于交换VC标签的两个PE 可能 不是直接相连的,所以LDP必须使用remote peer来建立会话(Session),并在这个会 话上传递VC FEC和VC标签。

在Martini方式中,由于在运营商网络中,只有PE 设备需要保存少量的VC label与LSP 的映射等信息,P设备不包含任何二层VPN 信息,所以扩展性很好。此外,当需要新增加一条VC时,只在相关的两端PE 设备上各配置一个单方向VC连接即可,不影响网络的运 行。

Martini方式适合稀疏的二层连接,例如星型连接。

  1. Kompella方式MPLS L2VPN

与Martini方式不同,Kompella方式的MPLSL2VPN 不直接对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的范围(CErange),表明当前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 组网具有极大的灵活性。 Kompella支持本地连接。