跳转至

MPLS


简介

多协议标签交换技术MPLS(Multiprotocol Label Switching) MPLS是一种在IP骨干网上利用标签来指导数据报文高速转发的协议,由IETF (Internet Engineering Task Force,因特网工程服务组)提出。相对于传统的IP路由方式,MPLS提供了一种新的网络交换方式,它将IP地址映射为简短且长度固定、只具有本地意义的标签,以标签交换替代IP查表,从而显著提升转发效率。同时,MPLS的标签机制可以在IP网络中构筑一条逻辑上的隧道,而且MPLS兼容不同的网络层和链路层协议,因此,MPLS可以很好的为各种L2VPN、L3VPN以及EVPN业务提供公网隧道服务。 MPLS位于TCP/IP协议栈中的链路层和网络层之间,用于向IP层提供连接服务,同时又从链路层得到服务。 MPLS以标签交换替代IP转发,标签是一个短而定长的、只具有本地意义的连接标识符。

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支持多层标签和转发平面面向连接的特性,使其在VPN(Virtual Private Network)、流量工程、QoS(Quality of Service)等方面得到广泛应用。

MPLS的工作原理

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

MPLS体系结构

MPLS的体系结构由控制平面(Control Plane)和转发平面(Forwarding Plane)组成:

控制平面是无连接的,主要功能是负责标签的分配、LFIB(标签转发表,Lable Forwarding Information Base)的建立、 LSP(标签交换路径,Label Switched Path)的建立、拆除等工作。

转发平面也称为数据平面(Data Plane),是面向连接的,可以使用ATM、Ethernet等二层网络承载,主要功能是对IP包进行标签的添加和删除,同时依据标签转发表对收到的分组进行转发。

mpls A:IP路由协议建立邻居,交互路由信息,生成IP路由表。
B:标签交换协议从IP路由表中获取路由信息。IP路由表中的路由前缀匹配了FEC(转发等价类,Forwarding Equivalence Class),在传统的采用最长匹配算法的IP转发中,到同一条路由的所有报文就是一个FEC。
C:IP路由表中激活的最优路由生成IP转发表。
D:标签转换协议建立邻居,为FEC分配标签并发布给邻居,同时获取邻居发布的标签,生成标签转发表。
mpls

MPLS网络结构

mpls MPLS网络的基本组成单元是标签交换路由器LSR(Label Switching Router):

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

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

MPLS实现原理

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

MPLS LSP

IP包在MPLS网络中经过的路径称为MPLS的LSP,即标签交换的路径, mpls
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个字节 mpls

标签共有4个域:

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

mpls 标签栈(Label stack)也称为多层标签,是指标签的排序集合,如图1-7所示。靠近二层首部的标签称为栈顶标签或外层标签;靠近IP首部的标签称为栈底标签,或内层标签。理论上,MPLS标签可以无限嵌套。 mpls 标签栈按后进先出(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。 mpls LSP分为静态LSP和动态LSP两种:静态LSP由手工配置,动态LSP则利用路由协议和标签发布协议动态建立。

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

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

参考

什么是MPLS-华为
IP知识百科-MPLS