MPLS
(
Multiprotocol Label Switching
)最初是用来提高路由器的转发速度而提出的一个协议,但由于其在流量工程(
Traffic Engineering
)和
VPN
(
Virtual Private Network
)这两项目前在
IP
网络中非常关键的技术中的表现,
MPLS
已日益成为扩大
IP
网络规模的重要标准。
MPLS
协议的关键是引入了标签(
Label
)的概念。它是一种短的易于处理的、不包含拓扑信息、只具有局部意义的信息内容。在
MPLS
网络中,
IP
包在进入第一个
MPLS
设备时,
MPLS
边缘路由器就用这些标签封装起来,
MPLS
边缘路由器分析
IP
包的内容并且为这些
IP
包选择合适的标签。相对于传统的
IP
路由分析,
MPLS
不仅分析
IP
包头中的目的地址信息,它还分析
IP
包头中的其他信息,如
TOS
等;之后所有
MPLS
网络中的节点都是依据这个简短标签来作为转发判决依据。当该
IP
包最终离开
MPLS
网络时,标签被边缘路由器分离。
1.2
MPLS
原理
如图
1-1
所示,
MPLS
网络的基本构成单元是标签交换路由器
LSR
(
Label Switching Router
),由
LSR
构成的网络叫做
MPLS
域。位于
MPLS
域边缘和其它用户网络相连的
LSR
称为边缘
LSR
(
LER
,
Labeled Edge Router
),位于区域内部的
LSR
则称为核心
LSR
。标签分组沿着由一系列
LSR
构成的标签交换路径
LSP
(
Label Switched Path
)传送,其中入口
LSR
叫
Ingress
,出口
LSR
叫
Egress
。
图1-1
MPLS
基本原理
首先介绍几个
MPLS
中特有的基本概念。
1.
标签及其结构
标签(
label
)是一个短的、长度固定的数值,由报文的头部所携带,不包含拓扑信息,只具有局部意义。标签同
ATM
的
VPI/VCI
以及
Frame Relay
的
DLCI
类似,是一种连接的标识符。如果链路层协议具有标签域,如
ATM
的
VPI/VCI
和
Frame Relay
的
DLCI
,则标签封装在这些域中;如果不支持,则标签封装在链路层和
IP
层之间的一个垫层中。这样,标签能够被任意的链路层所支持。
标签的封装结构如图
1-2
所示,它位于链路层包头和网络层分组之间,长度为
4
个字节。标签共有
4
个域:
图1-2
标签的封装结构
Label
:标签值字段,长度为
20bits
,用于转发的指针。
Exp
:
3bits
,保留,用于试验。
S
:
1bit
,
MPLS
支持标签的分层结构,即多重标签。值为
1
时表明为最底层标签。
TTL
:
8bits
,和
IP
分组中的
TTL
意义相同。
2.
等价转发类
转发等价类(
FEC
——
Forwarding Equivalence Class
)是在网络中遵循相同转发路径的报文的集合。例如,在传统的最长匹配算法的
IP
转发中,到同一个目的地址的所有报文是一个转发等价类。实际上,转发等价类的划分方式是非常灵活的,可以是源地址、目的地址、源端口、目的端口、协议类型、
VPN
等信息的任意组合。在
MPLS
中,一个标签标识了一个转发等价类。
3.
标签交换路径
一个转发等价类在
MPLS
网络中走过的路径称为标签交换路径
(LSP
——
Label Switched Path)
。
LSP
在功能上同
ATM
和
Frame Relay
的虚电路是等价的,它是从入口到出口的一个单向路径。
LSP
中的每个节点称为标签转发路由器
(LSR)
,其中,入口和出口节点分别称为入口
LSR
(
Ingress
)和出口
LSR
(
Egress
)。
4.
标签分配和分发
在
MPLS
体系中,将特定标签分配给特定
FEC
的决定由下游
LSR
作出,下游
LSR
随后通知上游
LSR
。即标签由下游指定,分配的标签按照从下游到上游的方向分发。
MPLS
中使用的标签分发方式有两种:下游自主标签分发方式(
DU
,
Downstream Unsolicited
)和下游按需标签分发方式(
DoD
,
Downstream On Demand
)。
对于一个特定的
FEC
,
LSR
无须从上游获得标签请求消息即进行标签分配与分发的方式,称为下游自主标签分配。
对于一个特定的
FEC
,
LSR
获得标签请求消息之后才进行标签分配与分发的方式,称为下游按需标签分配。
具有标签分发邻接关系的上游
LSR
和下游
LSR
之间必须对使用哪种标签分发方式达成一致。
5.
标签控制方式
标签控制方式分为两种:独立(
Independent
)标签控制方式和有序(
ordered
)标签控制方式。
当使用独立标签控制方式时,每个
LSR
可以在任意时间向和它连接的
LSR
通告标签映射。
当使用有序标签控制方式时,只有当
LSR
收到某一特定
FEC
下一跳的特定标签映射消息或者
LSR
是
LSP
的出口节点时,
LSR
才可以向上游发送标签映射消息。
6.
标签保持方式
标签保持方式分为两种:自由标签保持方式和保守标签保持方式。
假设两台路由器
Ru
和
Rd
,对于一个特定的
FEC
,如果
LSR Ru
收到了来自
LSR Rd
的标签绑定:当
Rd
不是
Ru
的下一跳时,如果
Ru
保存该绑定,则称
Ru
使用的是自由标签保持方式;如果
Ru
丢弃该绑定,则称
Ru
使用的是保守标签保持方式。
当要求
LSR
能够迅速适应路由变化时可使用自由标签保持方式;当要求
LSR
中保存较少的标签数量时可使用保守标签保持方式。
在
Ingress
,将进入网络的分组根据其特征划分成转发等价类
FEC
(一般根据
IP
地址前缀或者主机地址来划分
FEC
)。这些具有相同
FEC
分组在
MPLS
区域中将经过相同的路径(即
LSP
)。
LSR
对到来的
FEC
分组分配一个短而定长的标签,然后从相应的接口转发出去。
在
LSP
沿途的
LSR
上都已建立了输入
/
输出标签的映射表(该表的元素叫下一跳标签转发条目,简称
NHLFE
,
Next Hop Label Forwarding Entry
)。对于接收到的标签分组,
LSR
只需根据标签从表中找到相应的
NHLFE
,并用新的标签来替换原来的标签,然后对标签分组进行转发,这个过程叫输入标签映射
ILM
(
Incoming Label Map
)。
MPLS
在网络入口处指定特定分组的
FEC
,后续路由器只需简单的转发即可,比常规的网络层转发要简单的多,转发速度得以提高。
TTL
处理:
标签化分组时必须将原
IP
分组中的
TTL
值拷贝到标签中的
TTL
域。
LSR
在转发标签化分组时,要对栈顶标签的
TTL
域作减一操作。标签出栈时,再将栈顶的
TTL
值拷贝回
IP
分组或下层标签。
但是,当
LSP
穿越由
ATM-LSR
或
FR-LSR
构成的非
TTL LSP
段时,域内的
LSR
无法处理
TTL
域。这时,需要在进入非
TTL LSP
段时对
TTL
进行统一处理,即一次性减去反映该非
TTL LSP
段长度的值。
LSP
的建立其实就是将
FEC
和标签进行绑定,并将这种绑定通告
LSP
上相邻
LSR
的过程。这个过程是通过标签分发协议
LDP
(
Label Distribution Protocol
)来实现的。
LDP
规定了
LSR
间的消息交互过程和消息结构,以及路由选择方式。
1.
LDP
的工作过程
LSR
通过周期性地发送
Hello
消息来发现
LSR
邻居,然后与新发现的相邻
LSR
间建立
LDP
会话。通过
LDP
会话,相邻
LSR
间通告标签交换方式、标签空间、会话保持定时器值等信息。
LDP
会话是
TCP
连接,需通过
LDP
消息来维护,如果在会话保持定时器值规定的时间内没有其它
LDP
消息,那么必须发送会话保持消息来维持
LDP
会话的存在。
图
1-3
为
LDP
标签分发示意图。
图1-3
标签分发过程
在一条
LSP
上,沿数据传送的方向,相邻的
LSR
分别叫上游
LSR
和下游
LSR
。如在
图
1-3
中的
LSP1
上,
LSR B
为
LSR C
的上游
LSR
。
前面提到,标签的分发过程有两种模式:
DoD
(
downstream-on-demand
)模式和
DU
(
downstream unsolicited
)模式。这两种模式的主要区别在于标签映射的发布是上游请求还是下游主动发布。
DoD
(
downstream-on-downstream
)模式下标签的分发过程是这样:上游
LSR
向下游
LSR
发送标签请求消息(包含
FEC
的描述信息),下游
LSR
为此
FEC
分配标签,并将绑定的标签通过标签映射消息反馈给上游
LSR
。下游
LSR
在何时反馈标签映射消息,取决于该
LSR
采用独立标签控制方式还是有序标签控制方式。当下游
LSR
采用有序标签控制方式时,只有收到它的下游返回的标签映射消息后才向其上游发送标签映射消息;当下游
LSR
采用独立标签控制方式时,则不管有没有收到它的下游返回的标签映射消息都立即向其上游发送标签映射消息。上游
LSR
一般是根据其路由表中信息来选择下游
LSR
的。图
1-4
中
LSP1
沿途的
LSR
都采用有序标签控制方式,
LSP2
上
LSR F
采用独立标签控制方式。
DU
(
downstream unsolicited
)模式下分发标签的过程:下游
LSR
在
LDP
会话建立成功,主动向其上游
LSR
发布标签映射消息。上游
LSR
保存标签映射信息,并根据路由表信息来处理收到的标签映射信息。
2.
基于约束路由的
LDP
MPLS
还支持基于约束路由的
LDP
机制(
CR-LDP
,
Constrain-based Routing LDP
)。所谓
CR-LDP
,就是入口节点在发起建立
LSP
时,在标签请求消息中对
LSP
路由附加了一定的约束信息。这些约束信息可以是对沿途
LSR
的精确指定,此时叫严格的显式路由;也可以是对选择下游
LSR
时的模糊限制,此时叫松散的显式路由。
3.
LSP
的环路控制
在
MPLS
域中建立
LSP
也要防止路径循环。防止
LSP
的路径循环有最大跳数和路径向量两种方式。
最大跳数方式是在传递标签绑定的消息中包含跳数信息,每经过一跳该值就加一,当该值超过规定的最大值时就认为出现了环路,从而终止
LSP
的建立过程。
路径向量方式是在传递标签绑定的消息中记录路径信息,每经过一跳,相应的路由器就检查自己的
ID
是否在此记录中,如果没有就将自己的
ID
添加到该记录中,若有就说明出现了环路,终止
LSP
的建立过程。
4.
RSVP
对
MPLS
的扩展
资源预留协议
RSVP
(
Resource Reservation Protocol
)经扩展后可以支持
MPLS
标签的分发,同时,在传送标签绑定消息时还能携带资源预留的信息。通过这种方法建立的
LSP
可以具有资源预留功能,即沿途的
LSR
可以为该
LSP
分配一定的资源,使在此
LSP
上传送的业务得到保证。
RSVP
协议的扩展主要是在其
Path
消息和
Resv
消息中增加新的对象,这些新对象除了可以携带标签绑定信息外,还可以携带对沿途
LSR
寻径时的限制信息,从而支持
LSP
约束路由的功能。扩展的
RSVP
协议还支持快速重路由,即在一定条件下
LSP
需要改变时,可以在不中断用户业务的同时,将原来的业务流重新路由到新建立的
LSP
上。
1.
LSP
隧道
MPLS
支持
LSP
隧道技术。在一条
LSP
路径上,
LSR Ru
和
LSR Rd
互为上下游,但
LSR Ru
和
LSR Rd
之间的路径可能并不是路由协议所提供路径的一部分,
MPLS
允许在
LSR Ru
和
LSR Rd
间建立一条新的
LSP
路径
<Ru R1...Rn Rd>
,
LSR Ru
和
LSR Rd
分别为这条
LSP
的起点和终点。
LSR Ru
和
LSR Rd
间的
LSP
就是
LSP
隧道,它避免了传统的网络层封装隧道。当隧道经由的路由和逐跳从路由协议取得的路由一致时,这种隧道叫逐跳路由隧道;若不一致,则这种隧道叫显式路由隧道。
图1-4
LSP
隧道
在
图
1-4
中,
LSP<R2 R21 R22 R3>
就是
R2
、
R3
间的一条隧道。
2.
多层标签栈
当分组在
LSP
隧道中传送时,分组的标签就会有多层。在每一隧道的入口和出口处要进行标签栈的入栈和出栈操作,每发生一次入栈操作标签就会增加一层。
MPLS
对标签栈的深度没有限制。
标签栈按照“后进先出”方式组织标签,
MPLS
从栈顶开始处理标签。
若一个分组的标签栈深度为
m
,则位于栈底的标签为
1
级标签,位于栈顶的标签为
m
级标签。未打标签的分组可看作标签栈为空(即标签栈深度为零)的分组。
传统的
VPN
一般是通过
GRE
、
L2TP
、
PPTP
等隧道协议来实现私有网络间数据流在公网上的传送,
LSP
本身就是公网上的隧道,用
MPLS
来实现
VPN
有天然的优势。基于
MPLS
的
VPN
就是通过
LSP
将私有网络在地域上的不同分支联结起来,形成一个统一的网络。基于
MPLS
的
VPN
还支持不同
VPN
间的互通。
图1-5
基于
MPLS
的
VPN
图
1-5
给出了基于
MPLS
的
VPN
的基本结构。
CE
是用户边缘设备,可以是路由器,也可以是交换机,甚至是一台主机;
PE
是服务商边缘路由器,位于骨干网络;
PE
负责对
VPN
用户进行管理、建立各
PE
间
LSP
连接、同一
VPN
用户各分支间路由分派。
PE
间的路由分派通常是用
LDP
或扩展的
BGP
协议实现的。基于
MPLS
的
VPN
支持不同分支间
IP
地址复用和不同
VPN
间互通,和传统的路由相比,
VPN
路由中需要增加分支和
VPN
的标识信息,这就需要对
BGP
协议进行扩展才能携带
VPN
的路由信息。
1.
流量工程的作用
网络拥塞是影响骨干网络性能的主要问题。拥塞的原因一般是网络资源不足,或者网络资源的负载不均衡,导致局部拥塞。流量工程用来解决由负载不均衡导致的拥塞。流量工程通过动态监控网络的流量和网络单元的负载,实时调整流量管理参数、路由参数和资源约束参数等,使网络运行状态迁移到理想状态,优化网络资源的使用,从而避免由于负载不均衡引起的拥塞。
2.
用
MPLS
来实现流量工程的优点
现有的
IGP
协议都是拓扑驱动的,只考虑网络静态的连接情况,不能反映带宽和流量特性等动态状况,这正是导致网络负载不均衡的主要原因。而
MPLS
具有的一系列不同于
IGP
的特性,正是实现流量工程所需要的:
MPLS
支持异于路由协议路径的显式
LSP
路由;
LSP
较传统单个
IP
分组转发更便于管理和维护;基于约束路由的
LDP
可以实现流量工程的各种策略;基于
MPLS
的流量工程的系统开销较其它实现方式更低等等。
3.
基于
MPLS
的流量工程的实现
用
MPLS
来实现流量工程时,先要根据物理网络的拓扑生成
MPLS
导出图,即由
LSR
、连接
LSR
的
LSP
、
LSP
属性这三种元素构成的派生拓扑图。同时,将通过
MPLS
域的数据划分成若干主干流(
Traffic Trunk
)。主干流一般定义为在
MPLS
域中经过相同
Ingress
和
Egress
的所有单向流量。主干流有许多属性,包括流量参数、路径选择和维护方式、优先级、可抢占性、资源亲和度等。对资源也定义了一些属性,如资源级别、最大分配复用度等。然后,以主干流的属性、资源的属性、网络的状态信息为生成约束路由的策略,来找出主干流的路径。主干流的路径可以根据网络状态的变化动态调整。
为了能够在
IP
网络上支持语音,视频等实时业务,需要有
QoS
的支持,以便保证重要的、敏感或者实时性较强的数据流在网络中得到优先处理。华为设备支持基于
MPLS
的流量工程和
Diff-serv
特性,在保证网络高效利用率的同时,又能根据不同数据流的优先级实现差别服务,从而为语音,视频数据流提供有带宽保证的低延时低丢包率的服务。由于目前全网实施流量工程的难度比较大,因此在实际的组网方案中往往倾向于使用差分服务模型来实施
QoS
。
Diff-Serv
的基本机制是在网络边缘,根据业务的服务质量要求将该业务映射到一定的业务类别中,利用
IP
分组中的
DS
字段(由
TOS
域而来)唯一的标记该类业务,然后,骨干网络中的各节点根据该字段对各种业务采取预先设定的服务策略,保证相应的服务质量。
Diff-Serv
的这种对服务质量的分类和标签机制和
MPLS
的标签分配十分相似,事实上,基于
MPLS
的
Diff-Serv
就是通过将
DS
的分配融入
MPLS
的标签分配过程来实现的。
Diff-Serv
对不同的服务类别规定了一致的处理方法,包括队列选择、排队、丢弃等操作,这些处理组合就叫
PHB
(
Per Hop Behavior
)。同时,属于同一
PHB
的分组又可以有不同的丢弃优先级。
PHB
和丢弃优先级信息通过为分组分配不同的
DS
编码来表示,这些
DS
编码又称
DSCP
(
Diff-Serv Code Point
)。关于
Diff-Serv
的详细介绍,请参见本手册的
QoS
配置
部分。
为了支持基于
Diffserv
模型的端到端的
QoS
服务,华为提供如下几种技术手段:
l
IP Precedence for Traffic Classification
IP precedence Classification
在网络边缘进行,利用
IPv4
包头的
Type-of-Service 3
个比特对每一个
IP
包依据其地址进行优先级分类。在核心利用不同的队列技术对不同等级的流量进行不同的处理,使得不同的服务级别得到体现。为实现语音、图象、数据数据流的差分服务,对不同的业务流在进行标签交换时,即
PE
在给报文加
Label
时,会把
IP
报文携带的
TOS
值影射到标签的
CoS
域,这样原来由
IP
携带的类型信息,现在由标签携带。在
PE
路由器之间,根据标签的
CoS
域,进行有差别的调度(
PQ
、
CQ
、
WFQ
、
CBQ
等)。
l
用
TP
实现承诺带宽及限制带宽的作用
在
PE
上与
CE
相连的链路上配置
TP
(
Traffic Policing
)可以实现该功能。同时
TP
还提供了承诺的带宽和限制带宽的功能。
l
用
WRED
进行拥塞避免
WRED
在网络的瓶颈处监视并缓解网络的拥塞。一般在接入层出现拥塞的概率比较大。
WRED
监视网络的负载,当拥塞开始刚出现时,它就开始有选择的丢弃一些包以降低流量。
WRED
丢包的策略为:低优先级的流先丢,以保证高优先级的流可以顺畅通过。在可能发生拥塞的端口运行
WRED
是避免拥塞的较好选择。
在具体实现中,为了达到最好的效率,需要对任务进行分工。因为
QoS
是一个需要消耗很多处理器资源的应用,所以这一任务分配在边缘和核心路由器上运行,以减少对单独路由器的压力。
综上所述,实现基于
CoS
的差分服务结构需要
4
个步骤:
l
MPLS
边缘路由器上实现入口的带宽限制完成入口流量的分类。
l
边缘设备也需要承担带宽管理的工作,采用
TP
。
l
MPLS
核心路由器完成
CoS
的管理工作,进行有差别的服务质量保证。
l
出口设备,像入口设备一样,完成带宽限制工作。入口、出口设备对带宽的限制保护了网络免于拥塞,使得网络具有很高的可扩展性。
本模块主要介绍
MPLS
和
MPLS TE
的配置方法,关于
BGP/MPLS VPN
和
MPLS L2 VPN
的具体配置以及组网应用请参考本手册
VPN
模块;关于
MPLS QoS
的具体配置请参考本手册
QoS
模块。