关键词:MPLS,VPN,QOS,流量工程
摘 要:本文详细介绍了MPLS的一些基本概念、MPLS VPN、MPLS 流量工程等。
缩略语清单:
缩略语 | 英文全名 | 中文解释 |
BGP | Border Gateway Protocol | 边界网关协议 |
CE | Custormer Edge | 用户边界路由器 |
COS | Class of Service | 服务等级 |
CR-LDP | Constraint-Based Route LDP | 基于受限路由的标签分发协议 |
DF | Default Forwarding | 缺省转发 |
DoD | Downstream On Demand | 下游按请求分配标签 |
DS | Differentiated Services | 差分业务 |
DU | Downstream Unsolicited | 下游未被请求标签 |
EBGP | External BGP | 外部边界网关协议 |
EF | Expedited Forwarding | 快速转发 |
FEC | Frowarding Equavalence Class | 转发等价类 |
IGP | Interior Gateway Protocol | 内部网关协议 |
LDP | Label Distribution Protocol | 标签分发协议 |
LER | Label Edge Router | 边缘标签交换机 |
LSP | Label-Switch Path | 标签交换路径 |
MP-BGP | Multiprotocol BGP | 多协议扩展BGP |
MPLS | Multiprotocol Label Switching | 多协议标签交换 |
PE | Provider Edge | 运营商边界路由器 |
P router | Provider Router | 骨干网核心路由器 |
QOS | Quality of Service | 服务质量 |
RD | Route Distinguisher |
|
RR | Router Reflector | 路由反射器 |
RSVP | Resource Reservation Protocol | 资源预留协议 |
SLA | Service Level Agreement | 业务等级协定 |
TE | Traffic Engineering | 流量工程 |
VPN | Virtual Private Network | 虚拟私有网 |
L3VPN | Layer 3 VPN | 三层VPN |
VPN Site | Virtual Private Network Site | VPN中的一个孤立的IP网络可以属于一个或几个VPN,每个Site通过RD标识 |
VPN Instance | Virtual Private Network | VPN实例,包含了同一个site相关的路由表、转发表、接口(子接口)、路由实例以及路由策略等。 |
L2VPN | Layer 2 VPN | 二层VPN |
VLL | Virtual Leased Line | 虚拟租用线路服务,是点对点方式的L2VPN |
VPLS | Virtual Private Lan Service | 虚拟私有Lan服务,是点对多点方式的L2VPN |
CCC | Circuit Cross Connect | 电路交叉连接 |
目 录
MPLS(Multiprotocol Label Switching)是多协议标签交换的简称,它用短而定长的标签来封装网络层分组。MPLS从各种链路层(如PPP、ATM、帧中继、以太网等)得到链路层服务,又为网络层提供面向连接的服务。MPLS能从IP路由协议和控制协议中得到支持,同时,还支持基于策略的约束路由,它路由功能强大、灵活,可以满足各种新应用对网络的要求。这种技术起源于IPv4,但其核心技术可扩展到多种网络协议(IPv6、IPX等)。
MPLS最初是为提高路由器的转发速度而提出一个协议,但是,它的用途已不仅仅局限于此,而是广泛地应用于流量工程(Traffic Engineering)、VPN、QoS等方面,从而日益成为大规模IP网络的重要标准,现在H3C系列交换机和路由器产品上已经实现MPLS特性。
Internet在近些年中的爆炸性增长为Internet服务提供商(ISP)提供了巨大的商业机会,同时也对其骨干网络提出了更高的要求。人们希望IP网络不仅能够提供E-Mail上网等服务,还能够提供宽带实时性业务。ATM曾经是被普遍看好的能够提供多种业务的交换技术,但是由于实际的网络中人们已经普遍采用IP技术,纯ATM网络已经不可能,现有ATM的使用也一般都是用来用来承载IP。如此人们就希望IP也能提供一些ATM一样多种类型的服务。
MPLS Multiprotocol Label Switch多协议标签交换就是在这种背景下产生的一种技术。它吸收了ATM的VPI/VCI交换的一些思想,无缝地集成了IP路由技术的灵活性和2层交换的简捷性,在面向无连接的IP网络中增加了MPLS这种面向连接的属性,通过采用MPLS建立虚连接的方法为IP网增加了一些管理和运营的手段。
MPLS的最早原型是90年代中期由Ipsilon公司率先推出的IP Switching协议,其目的主要是解决ATM交换机如何更好地支持IP。该协议使ATM交换机成为一台路由器,因而具有ATM交换机的高性能,突破了传统路由器的性能限制,一时间Ipsilon名声大震。当时路由器厂家实现标记交换的目的是为了解决IP路由查找不能达到线速的问题,因为IP路由查找采用的是最长地址匹配的方式,在路由器端口速度达到155M或622M时软件查找路由困难。这些早期不同厂家的标签交换的实现存在互通问题,所以在1997年IETF成立一个负责标记交换标准化的工作组——MPLS工作组,它独立于各个设备实现厂家。现有的MPLS相关协议和草案基本上来自于这个工作组和它后来派生出来的流量工程工作组和MPLS VPN工作组。随着网络处理器技术的迅速发展,2.5G甚至10G的端口的路由线速查找都已经不成问题,MPLS应用也逐步转向MPLS流量工程和MPLS VPN等。
在IP网中MPLS流量工程技术成为一种主要的管理网络流量、减少拥塞、一定程度上保证IP网络的QoS的重要工具。在解决企业互连提供各种新业务方面,MPLS VPN越来越被运营商看好,成为在IP网络运营商提供增值业务的重要手段。采用MPLS VPN技术可以把现有的IP网络分解成逻辑上隔离的网络,这种逻辑上隔离的网络的应用可以是千变万化的:可以是用在解决企业单独互连、政府相同/不同办事部门的单独互连、也可以是用来提供新的业务——如为IP电话业务专门开辟一个VPN、以此解决IP网络地址不足、QoS保证以及开展新业务等问题。
在MPLS越来越被看好的同时反对使用MPLS的声音同样越来越尖锐,主要的反对声音来自于AT&T的两位Internet研究者——安全权威Steve Bellovin和网络运行专家Randy Bush。MPLS的反对者认为MPLS尤其是MPLS VPN对IP网络来说是一个灾难,认为MPLS彻底破坏了IP网络的现有结构,在IP网上增加了复杂的难于管理和控制的VPN结构。在VPN数量很多的时候会严重影响骨干网的稳定性和可扩展性,另外象三层MPLS VPN的安全也是一个问题,在VPN配置错误时错被配进VPN的客户在VPN中没有任何阻难。MPLS的反对者认为MPLS是没有必要的,解决VPN采用IPSec是一种更好更安全对现有网络改动也最小的解决方案,MPLS的反对者认为给有拥塞的链路扩容也会是解决网络拥塞的更简单的办法。
以上观点虽然有些极端,但是MPLS技术确实给运营商提出了新的挑战,在实施MPLS时,整个网络管理的复杂度明显增加:如使用流量工程时需要对网络流量进行全面周期性测量;使用MPLS VPN需要针对每一个VPN管理一个VPN路由表,在有成千上万个VPN的时候管理成千上万个VPN路由表会是一个非常头痛的事。所以并不是所有的VPN(如Site很少端口速度又小的VPN)都要用MPLS/BGP VPN,能用IPSec或专线的不必一定要用MPLS/BGP VPN,MPLS/BGP VPN比较适用于Site较多端口速度大的VPN。
H3C提供全面的MPLS解决方案,支持MPLS VPN,支持MPLS流量工程,认为MPLS是IP网中解决网络QoS问题、VPN问题的一个重要手段。随着MPLS标准的不断完善,H3C将能够及时的、全面的、满足标准的MPLS解决方案。
FEC(Forwarding Equivalence Class)是MPLS中的一个重要概念。MPLS实际上是一种分类转发技术,它将具有相同转发处理方式(目的地相同、使用转发路径相同、具有相同的服务等级等)的分组归为一类,称为转发等价类。一般来说,划分分组的FEC是根据他的网络层目的地址。属于相同转发等价类的分组在MPLS网络中将获得完全相同的处理。
标签为一个长度固定、具有本地意义的短标识符,用于标识一个FEC(Forwarding Equivalence Class)。当分组到达MPLS网络入口时,它将按一定规则被划归不同的FEC,根据分组所属的FEC,将相应的标签封装在分组中,这样,在网络中,按标签进行分组转发即可。标签的结构如图1 所示。

标签位于链路层包头和网络层分组之间,长度为4个字节。标签共有4个域:
l Label:标签值字段,长度为20bits,用于转发的指针。
l Exp:3bits,保留,协议中没有明确规定,通常用于COS。
l S:1bit,MPLS支持标签的分层结构,即多重标签。值为1时表明为最底层标签。
l TTL:8bits,和IP分组中的TTL意义相同。
标签映射分为两种,一种是入口路由器处的标签映射,另一种是MPLS域内的标签映射。
入口路由器处的标签映射为ingress LSR依据一定的原则对输入分组进行划分,得到多个FEC,接着将有关标签与这些FEC进行映射,并记录在相应的数据库LIB(Label Information Base)中。简单地说,就是将一个标签指派给FEC,就称为“标签映射”。
MPLS域内的标签映射又称为输入标签映射ILM(Incoming Label Map),即将每个输入标签映射到一系列NHLFE(Next Hop Label Forwarding Entry)上,然后,根据映射结果,将分组沿各通路进行转发。
标签在各种介质中的封装如图2 所示。

对于以太网、PPP的分组,标签堆栈象“垫层”一样,位于二层报头与数据之间,对于ATM信元模式的分组,借用VPI/VCI来作为标签使用。
标签分发是为某FEC建立相应标签交换路径LSP的过程。为了便于说明我们称相对于一个报文转发过程来说,发送方的路由器是上游LSR,接收方是下游LSR。
在MPLS体系中,将特定标签分配给特定FEC(即标签绑定)的决定由下游LSR作出,下游LSR随后通知上游LSR。即标签由下游指定,分配的标签按照从下游到上游的方向分发。
MPLS中使用的标签分发方式有两种:下游自主标签分发方式(DU,Downstream Unsolicited)和下游按需标签分发方式(DoD,Downstream On Demand)。
对于一个特定的FEC,LSR无须从上游获得标签请求消息即进行标签分配与分发的方式,称为下游自主标签分配。
对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发的方式,称为下游按需标签分配。
具有标签分发邻接关系的上游LSR和下游LSR之间,必须对使用哪种标签分发方式达成一致。
LSR将标签分发给其对等体时,可以采用LDP消息进行传送,也可以将标签搭载在其他路由协议消息上。
标签分配控制方式分为两种:独立(Independent)标签分配控制方式和有序(ordered)标签分配控制方式。
当使用独立标签分配控制方式时,每个LSR可以在任意时间向和它连接的LSR通告标签映射。
当使用有序标签分配控制方式时,只有当LSR收到某一特定FEC下一跳的特定标签映射消息或者LSR是LSP的出口节点时,LSR才可以向上游发送标签映射消息。
标签保持方式分为两种:自由标签保持方式和保守标签保持方式。
假设两台路由器Ru和Rd,对于特定的一个FEC,如果LSR Ru收到了来自LSR Rd的标签绑定,当Rd不是Ru的下一跳时,如果Ru保存该绑定,则称Ru使用的是自由标签保持方式;如果Ru丢弃该绑定,则称Ru使用的是保守标签保持方式。
当要求LSR能够迅速适应路由变化时,可使用自由标签保持方式;当要求LSR中保存较少的标签数量时,可使用保守标签保持方式。
通常使用的建立MPLS标记交换路径的信令有LDP/CR-LDP,RSVP-TE,BGP扩展等。其中LDP/CR-LDP和RSVP-TE用来建立标签连接通路。LDP的标签分配模式有DoD(Downstream On Demand,下游按请求分配标签模式)和Du(Downstream Unsolicited,下游自主标签分配模式)两种方式。LDP能够建立到某个目的路由器或目的子网的LSP。它的路由的每一跳是根据路由表确定的,也就是说LDP建立的LSP只有把需要转发的IP报文打包成MPLS,实际走的路由还是和原来的IP包走的路由是一样的。LDP建立的LSP没有平衡流量的功能,只能起到建立虚连接的作用。
CR-LDP和RSVP-TE则能够携带带宽,部分明确路由,着色等约束参数,其中着色约束条件可以用来标识一个链路的性能——如是否支持Voip、还是只支持Best-Effort业务,也可以用来做为地域的标识。CR-LDP或RSVP-TE要建立满足这些约束条件的LSP,必须通过流量工程的约束路由计算。从完成的功能来说,两者是一样的,两种协议都可以做各种扩展满足QoS的要求,从内部实现机制来看,CR-LDP信令协议是基于TCP的,RSVP-TE是对原有的RSVP做扩展,是基于Raw IP的。由于Raw IP的传输是不可靠的,RSVP-TE需要对LSP的状态定期刷新,存在一定的可扩展性问题。
RSVP-TE的争论还在继续,现在大多数设备厂家都同时支持CR-LDP和RSVP-TE扩展。
BGP协议的各种扩展则可以为MPLS VPN建立跨AS域的外层承载隧道,或者是VPN应用分配VPN的内层标签。
MPLS的一个重要应用是VPN。根据扩展方式的不同,MPLS VPN可以分为BGP扩展实现的MPLS VPN和LDP扩展实现的VPN。根据PE Provider Edge设备是否参与VPN路由,又细分为二层VPN和三层VPN。三层MPLS BGP VPN相对来说比较成熟,一般用BGP扩展实现,二层VPN目前还在发展当中,可以用BGP扩展或者LDP扩展实现。整体来说MPLS VPN还是在发展和成型阶段。
BGP扩展实现的MPLS三层VPN包含下列组件:
l PE:Provider Edge Router,骨干网边缘路由器,存储VPN Instance,处理VPN-IPv4路由,是MPLS三层VPN的主要实现者。
l CE:Custom Edge Router,用户网边缘路由器,分布用户网络路由。
l P router:Provider Router,骨干网核心路由器,负责MPLS转发。
l RR:Route Reflector,BGP路由反射器。
l ASBR:自治系统边界路由器,当实现跨自治系统的VPN时,同其它自治系统交换VPN路由。
l MP-BGP:多协议扩展BGP,承载携带标签的IPv4/VPN路由,有MP-IBGP和MP-EBGP之分。
l PE-CE路由协议:在PE和CE之间传递用户网络路由,可以是静态路由,也可以是RIP、OSPF、ISIS或BGP。
l LDP:在PE之间建立Best-effort的LSP,经过P路由器所有PE和P路由器均需要支持。
l RSVP-TE:在PE之间建立具有QoS能力的ER-LSP,当VPN需要QoS时使用。
l VPN Instance:VPN实例,包含了同一个site相关的路由表、转发表、接口(子接口)、路由实例以及路由策略等。在PE设备上属于同一个VPN的物理端口或逻辑端口对应一个VPN Instance,VPN Instance通过命令行或网管工具来配置,主要的参数包括RD(Route Distinguish)、import route-targets、export route-targets、接口(子接口)表等。
l VPN用户站点site:是VPN中的一个孤立的IP网络,一般来说不通过骨干网不具有连通性,公司总部分支机构都是site的具体例子。CE路由器通常是VPN Site中的一个路由器或交换设备,Site是通过一个单独的物理端口或逻辑端口连接到PE设备上。
l 用户接入MPLS VPN的方式是每个site提供一个或多个CE,同骨干网的PE连接。在PE上为这个site配置VPN Instance,将连结PE-CE的物理接口、逻辑接口、甚至L2TP/IPSec隧道绑定到VPN Instance上,但不可以是多跳的3层连接。
l BGP扩展实现的MPLS VPN,扩展了BGP NLRI中的IPv4地址,在其前增加了一个8字节的RD(Route Distinguisher)。RD是用来标识VPN的成员---即Site的,每个VPN Instance配置了一些策略,规定一个VPN可以接收哪些Site来的路由信息,可以向外发布哪些Site的路由信息。每个PE根据BGP扩展发布的信息进行路由计算,生成每个相关VPN的路由表。
l PE-CE之间要交换路由信息可以是通过静态路由,也可以通过RIP、OSPF、BGP等。PE-CE之间采用静态路由的好处是可以减少CE设备可能会因为管理不善等原因造成对骨干网BGP路由产生震荡,影响骨干网的稳定性。
l MPLS BGP三层VPN适用于固定的Intranet/Extranet用户,每个site代表了Intranet/Extranet中的总部分支机构等。
l MPLS三层VPN的CE设备与PE设备之间只需要一条物理或逻辑的链路,但PE设备需要保存多个路由表。在CE与PE之间如果运行动态路由协议时,PE还要支持多实例,对PE性能要求较高。PE与PE之间需要运行BGP协议,存在可扩展性问题,现在一般通过一个或多个路由反射器方式解决。对于同一个AS域VPN,需要建立运营商间路由器IBGP连接的PE,与路由反射器建立IBGP连接即可。
l MPLS BGP三层VPN通过和Internet路由之间配置一些静态路由的方式,可以实现VPN的Internet上网服务。MPLS BGP VPN还可以为跨不同地域的属于同一个AS的但是没有自己的骨干网的运营商提供VPN互连,即提供“运营商的运营商”模式的VPN网络互连。
由于现有城域网或地区网有时会自成一个自治域(AS),通过BGP扩展实现的三层VPN需要解决跨域的问题。现有的跨域解决方案有VPN Instance-to-VPN Instance,MP-EBGP,Multi-Hop MP-EBGP三种方式。
VPN Instance to VPN Instance方式:要求两个域的ASBR能够做PE,两个AS域各自运行自己的VPN,对于每一个需要跨域的VPN,需要在本端跨域的PE设备上配置对应于这个VPN的VPN Instance,把对端的PE设备做为本域VPN的CE,PE-CE之间运行EBGP协议,携带对端的VPN路由信息。这个方法的优点是在ASBR之间不需要运行MPLS,但缺点是每个跨域的VPN需要与一个子接口绑定,子接口的数量至少要和跨域的VPN的数量相当,跨域的PE路由器需要维护跨域VPN的路由,因而存在可扩展性问题。
MP-EBGP方式:通过直连的ASBR传播VPN路由,并且为给相应的VPN路由分配一个标签。这种方法的优点是不需要在ASBR处为每个VPN的用户站点分配一个子接口,但缺点是需要在ASBR处维护VPN路由,从PE ingress到PE egress需要一条完整的LSP,ASBR之间需要互相信任。
Multi-hop MP-EBGP方式:这种方式是首先路由扩散在ingress与egress之间通过LDP或MP-BGP+LDP的方式建立LSP,然后不同AS域之间的PE通过EBGP方式传播VPN路由信息。这种方式有较好的可扩展性,不需要在ASBR上维护具体用户的VPN路由信息。
对于MPLS L2VPN,网络运营商负责给二层VPN用户提供二层的连通性,不需要参与VPN用户的路由计算。由于与用户的路由无关,所以MPLS L2VPN的可扩展性也只与连接的VPN用户数目相关。MPLS L2VPN可以按照用户Site的连接方式分成两种:VLL(Virtual Leased Line)和VPLS(Virtual Leased Line)。
VLL方式的MPLS L2VPN在提供全连接的二层VPN时和传统的二层VPN一样(如ATM PVC提供的VPN)存在N方问题。每个VPN的CE到其它的CE都需要在CE与PE之间分配一条连接,对于PE设备来说在一个VPN有N个Site的时候,CE-PE必需有N-1个物理或逻辑端口连接。
VPLS方式的MPLS L2VPN向用户提供了虚拟的局域网服务,从用户角度看整个提供VPLS的MPLS骨干网就象一个巨大的以太网交换机,将不同地理位置上的同一个VPN中的用户连接到了一起。每个VPN的CE只需要在CE和PE之间分配一条连接,就可以与本VPN中的多个CE设备相连;对于PE设备来说在一个VPN有N个Site的时候,CE-PE只需有一个物理或逻辑端口连接,而不是象VLL方式的L2VPN那样需要有N-1个物理或逻辑端口连接。
在MPLS标记交换连接建立好了以后,理论上通过它可以承载任何的二层三层数据报文,其中二层数据报文可以是ATM、帧中继、以太网/VLAN、PPP等,三层可以是IPv4、IPv6、IPX等。电路交叉连接就是在IP网上实现的一种ATM、帧中继、以太网/VLAN或PPP在IP网络中点到点地透传的技术,原理上CCC就是把ATM、VLAN等直接粘和到电路,交叉连接也可以用来粘和不同的LSP。
MPLS流量工程包含四个组成部分:ISIS或OSPF流量工程扩展;MPLS信令;约束路由计算Constraint Shortest Path First或简称CSPF;BGP/IGP横切。
ISIS/OSPF流量工程扩展对现有的ISIS或OSPF协议进行扩展,在链路状态中增加流量工程需要的链路的带宽等流量工程相关的属性。具体来说这些属性包括:
l 链路的本端IP地址
l 对端IP地址
l 链路的带宽
l 链路的最大可预留
l 链路的着色
l 链路的8个优先级的未被预留带宽
其中最重要的是链路的最大可预留带宽和每个优先级的链路未被预留带宽,它们携带了链路的主要带宽信息。每一个路由器都收集本区域的所有路由器的链路的流量工程相关信息,产生流量工程数据库TED。
约束路由计算的输入有两个,一个是需要建立的LSP的带宽、着色、抢占/保持优先级、部分明确路由等约束条件,这些都是在LSP的入口处进行配置(手工配置或网管配置)实现的,另外一个就是通过ISIS或OSPF流量工程扩展产生的TED。
有了以上两个输入,约束路由计算从逻辑上来说就是针对LSP的要求,对比流量工程数据库中的每一个链路进行剪切,把不满足带宽要求的链路剪掉,把不满足颜色要求的链路也剪掉,在剪切以后的拓扑中采用OSPF或ISIS的最短路径算法(SPF算法),得到一条满足LSP的约束条件的最短路径。这里需要注意的是ISIS或OSPF的SPF计算出来的下一跳就是直接的下一跳,每一个路由器都需要运行SPF算法。CSPF计算的结果是一条满足约束条件的完全明确的路径,它通常只在需要建立的LSP的入口点进行计算。这条路径要起作用必须通过MPLS信令建立起LSP,MPLS信令把CSPF计算出来的完全明确路径通过信令中的明确路径传到下游接点,LSP建立成功以后,把需要进入这个LSP的IP包在LSP的入口打上相应的MPLS标签,剩下的过程就是MPLS包就沿着这个LSP进行MPLS转发,直到到达LSP的出口。
流量工程采用的MPLS信令可以是CR-LDP或RSVP-TE,两者只要有一个就足够了,但是要求一个支持流量工程的Area或Level里的所有路由器支持相同的信令协议。CR-LDP或RSVP-TE把带宽、着色、抢占/保持优先级和CSPF计算的完全明确路由打包到信令中,信令根据完全明确路由确定LSP的下一跳并且逐跳检测带宽、着色等资源是否符合或够用。
带约束条件的LSP在建立成功以后,需要能够把一些流量映射到这条LSP上去。流量工程通常采用的方法是BGP/IGP横切的方法,他们都是把建好的LSP当做一个虚端口来使用,但是不向网络发布这个虚端口的存在。BGP横切时要求建立好的LSP是从ASBR到ASBR的,在LSP入口的ASBR进行BGP路由迭代的时候,如果有LSP建到对端的ASBR,就首选这个LSP为下一跳而不用在查IGP路由表确定下一跳了。在IGP横切的时候只要求LSP两端的端口属于同一个OSPF的AREA或ISIS的LEVEL,IGP横切的时候需要对现有的SPF算法做一些改进,在OSPF或ISIS进行SPF计算时如果有LSP存在,也首选这个LSP做为IGP的下一跳。
人们希望IP网络能够提供高带宽、低延时的服务,这就要求在IP网上实现一定的QoS功能。IP网中的QoS不可能实现成和ATM一样,因为IP网是一种面向无连接的网络,IP QoS的一个基本要求就是对现有网络结构改变要求尽量的小,适合这个要求的IP QoS机制现在有流量工程和Diffserv/CoS。