MPLS的基础知识和工作原理

MPLS是一种在IP骨干网上利用标籤来指导资料包文高速转发的协议,由IETF (Internet Engineering Task Force,网际网路工程服务组)提出。相对于传统的IP路由方式,MPLS提供了一种新的网路交换方式,它将IP位址映射为简短且长度固定、只具有本地意义的标籤,以标籤交换替代IP查表,从而显著提升转发效率。

 

MPLS的定义

MPLS位于TCP/IP协定栈中的链路层和网路层之间,用于向IP层提供连接服务,同时又从链路层得到服务。MPLS以标籤交换替代IP转发,标籤是一个短而定长的、只具有本地意义的连接识别字,与ATM的VPI/VCI以及Frame Relay的DLCI类似。

MPLS不局限于任何特定的链路层协定,能够使用任意二层介质传输网路分组。MPLS起源于IPv4(Internet Protocol version 4),其核心技术可扩展到多种网路通讯协定,包括IPv6(Internet Protocol version 6)、IPX(Internet Packet Exchange)、Appletalk、DECnet、CLNP(Connectionless Network Protocol)等。MPLS中的“Multiprotocol”指的就是支持多种网路通讯协定。

由此可见,MPLS并不是一种业务或者应用,它实际上是一种隧道技术,在一定程度上可以保证资讯传输的安全性。

 

MPLS的工作原理

MPLS个工作原理主要包含两部分内容:

1:MPLS的体系结构是指运行MPLS的单个设备内部的独立工作原理。
1:MPLS的网路结构是指运行MPLS的多个设备互连的联合工作原理。

MPLS的体系结构:
MPLS的体系结构由控制平面(Control Plane)和转发平面(Forwarding Plane)组成:
1:控制平面是不需连线的,主要功能是负责标籤的分配、LFIB(标籤转发表,Lable Forwarding Information Base)的建立、 LSP(标籤交换路径,Label Switched Path)的建立、拆除等工作。
2:转发平面也称为资料平面(Data Plane),是连线导向的,可以使用ATM、Ethernet等二层网路承载,主要功能是对IP包进行标籤的添加和删除,同时依据标籤转发表对收到的分组进行转发。

MPLS的体系结构如图1-1所示。

A:IP路由式通讯协定建立邻居,交互路由资讯,生成IP路由表。
B:标籤切换式通讯协定从IP路由表中获取路由资讯。IP路由表中的路由首码匹配了FEC(转发等价类,Forwarding Equivalence Class),在传统的採用最长匹配演算法的IP转发中,到同一条路由的所有报文就是一个FEC。
C:IP路由表中启动的最优路由生成IP转发表。
D:标籤转换协定建立邻居,为FEC分配标籤并发佈给邻居,同时获取邻居发佈的标籤,生成标籤转发表。

MPLS转发平面建立以后,设备中已经生成了IP转发表和标籤转发表,就可以对于接收到的资料包进行转发,
其过程如图1-2所示。

图1-1 MPLS体系结构示意图使用

图1-2 MPLS转发资料包过程示意图

 

MPLS的网路结构

MPLS网路的典型结构如图1-3所示:
MPLS网路的基本组成单元是标籤交换路由器LSR(Label Switching Router):

位于MPLS域边缘、连接其它网路的LSR称为边沿路由器LER(Label Edge Router),如果一个LSR有一个或多个不运行MPLS的相邻节点,那麽该LSR就是LER。

区域内部的LSR称为核心LSR(Core LSR),如果一个LSR的相邻节点都运行MPLS,则该LSR就是核心LSR。

图1-3 MPLS网路结构示意图


 

MPLS的实现原理

MPLS的实现原理是指:为FEC(转发等价类,Forwarding Equivalence Class)分配标籤来建立LSP(标籤交换路径,Label Switched Path)。

MPLS LSP
IP包在MPLS网路中经过的路径称为MPLS的LSP,即标籤交换的路径,如图1-4所示。

图1-4 MPLS LSP

MPLS LSP是一个单向路径,与资料流程的方向一致。

LSP的起始节点称为入节点(Ingress):LSP的起始节点,一条LSP只能有一个Ingress。
Ingress的主要功能是给报文压入一个新的标籤,封装成MPLS报文进行转发。

位于LSP中间的节点称为中间节点(Transit):LSP的中间节点,一条LSP可能有0个或多个Transit。
Transit的主要功能是查找标籤转发资讯表,通过标籤交换完成MPLS报文的转发。

LSP的末节点称为出节点(Egress):LSP的末节点,一条LSP只能有一个Egress。
Egress的主要功能是弹出标籤,恢复成原来的报文进行相应的转发。
其中Ingress和Egress既是LSR,又是LER;Transit是LSR。

根据资料传送的方向,LSR可以分为上游和下游。
上游:以指定的LSR为视角,根据资料传送的方向,所有往本LSR发送MPLS报文的LSR都可以称为上游LSR。

下游:以指定的LSR为视角,根据资料传送的方向,本LSR将MPLS报文发送到的所有下一跳LSR都可以称为下游LSR。

 

MPLS标籤

标籤是一个短而定长的、只具有本地意义的识别字,用于唯一标识一个分组所属的FEC。在某些情况下,例如要进行负载分担,对应一个FEC可能会有多个入标籤,但是一台LSR上,一个标籤只能代表一个FEC。

标籤长度为4个位元组,封装结构如图1-5所示。

图1-5 MPLS报文首部结构


标籤共有4个域:
1:Label:20bit,标籤值域。
2:Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),其作用与Ethernet802.1p的作用类似。
3:BoS:1bit,栈底标识。MPLS支持多层标籤,即标籤嵌套。S值为1时表明为最底层标籤。
4:TTL:8bit,和IP分组中的TTL(Time To Live)意义相同。

标籤封装在链路层和网路层之间。这样,标籤能够被任意的链路层所支持。标籤
在分组中的封装位置如图1-6所示。

 

图1-6 标籤在分组中的封装位置


标籤栈(Label stack)也称为多层标籤,是指标籤的排序集合,如图1-7所示。靠近二层首部的标籤称为栈顶标籤或外层标籤;靠近IP首部的标籤称为栈底标籤,或内层标籤。理论上,MPLS标籤可以无限嵌套。

 

图1-7 标籤栈

标籤栈按后进先出(Last In First Out)方式组织标籤,从栈顶开始处理标籤。

标籤的操作类型包括标籤压入(Push)、标籤交换(Swap)和标籤弹出(Pop),它们是标籤转发的基本动作,是标籤转发资讯表的组成部分。

· Push:指当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标籤;或者MPLS中继装置根据需要,在标籤栈顶增加一个新的标籤(即标籤嵌套封装)。

· Swap:当报文在MPLS域内转发时,根据标籤转发表,用下一跳分配的标籤,替换MPLS报文的栈顶标籤。

· Pop:当报文离开MPLS域时,将MPLS报文的标籤去掉;或者MPLS倒数第二跳节点处去掉栈顶标籤,减少标籤栈中的标籤数目。

在最后一跳节点,标籤已经没有使用价值。这种情况下,可以利用倒数第二跳弹出特性PHP(Penultimate Hop Popping),在倒数第二跳节点处将标籤弹出,减少最后一跳的负担。最后一跳节点直接进行IP转发或者下一层标籤转发。PHP在Egress节点上配置,通过分配特殊的标籤值3来实现。标籤值3表示隐式空标籤(implicit-null),这个值不会出现在标籤栈中。当一个LSR发现自己被分配了隐式空标籤时,它并不用这个值替代栈顶原来的标籤,而是直接执行Pop操作。Egress节点直接进行IP转发或下一层标籤转发。

 

分配标籤来建立LSP

MPLS需要为报文事先分配好标籤,建立一条MPLS LSP,才能进行报文转发。标籤由下游分配,按从下游到上游的方向分发。

如图1-8所示,由下游LSR在IP路由表的基础上进行FEC的划分,并将标籤分配给特定FEC,再通过标籤发佈协议通知上游LSR,以便建立标籤转发表和LSP。

图1-8 MPLS LSP的建立

LSP分为静态LSP和动态LSP两种:静态LSP由手工配置,动态LSP则利用路由式通讯协定和标籤发佈协定动态建立。

LDP是专为标籤发佈而制定的协定,也是其中使用较广的一种。LDP规定了标籤分发过程中的各种消息以及相关的处理过程。LSR之间将依据转发表中对应于一个特定FEC的入标籤、下一跳节点、出标籤等资讯联繫在一起,从而形成标籤交换路径LSP。

MPLS可以使用多种标籤发佈协定,例如LDP(Label Distribution Protocol)、RSVP-TE(Resource Reservation Protocol Traffic Engineering)和MP-BGP(Multiprotocol Border Gateway Protocol)。