IETF于1997年成立了MPLS工作组,开发出一种新的协议——多协议标记交换MPLS(MultiProtocol Label Switching)。 “多协议”表示在MPLS的上层可以采用多种协议, 例如:IP,IPX;可以使用多种数据链路层协议, 例如:PPP,以太网,ATM以及帧中继等。“标记”是指每个分组被打上一个标记,根据该标记对分组进行转发。

为了实现交换,可以利用面向连接的概念, 使每个分组携带一个叫做标记(label) 的小整数。 当分组到达交换机(即标记交换路由器)时,交换机读取分组的标记, 并用标记值来检索分组转发表。 这样就比查找路由表来转发分组要快得多。

                  

MPLS协议中的三张表 mpls多协议_首部

 MPLS并没有取代IP,而是作为一种IP增强技术, 被广泛地应用在互联网中。MPLS具有以下三个方面的特点: (1) 支持面向连接的服务质量;(2) 支持流量工程,平衡网络负载;(3) 有效地支持虚拟专用网VPN。

1、MPLS的工作原理 

1、基本工作过程

IP 分组的转发:在传统的IP网络中,分组每到达一个路由器后,都必须提取出其目的地址,按目的地址查找路由表,并按照 “最长前缀匹配”的原则找到下一跳的IP地址(请注意, 前缀的长度是不确定的)。

当网络很大时,查找含有大量项目的路由表要花费很多的时间。在出现突发性的通信量时,往往还会使缓存溢出,这就会引起分组丢失、传输时延增大和服务质量下降。

                 

MPLS协议中的三张表 mpls多协议_MPLS协议中的三张表_02

在MPLS域的入口处,给每一个IP 数据报打上固定长度“标记”,然后对打上标记的IP数据报用硬 件进行转发。

采用硬件技术对打上标记的IP数据报进行转发就称为标记交换。

“交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(链路层)用硬件进行转发。

MPLS域(MPLS domain) 是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持MPLS技 术的标记交换路由器LSR (Label Switching Router)。LSR同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,但在这之前LSR 需要使用路由选择功能构造转发表。

MPLS 的基本工作过程

(1) MPLS域中的各LSR 使用专门的标记分配协议LDP交换报文,并找出标记交换路径LSP。各LSR根据这些路径构造出分组转发表。

(2) 分组进入到MPLS域时,MPLS入口结点把分组打上标记,并按照转发表将分组转发给下一个 LSR。给IP数据报打标记的过程叫做分类 (classification)。

(3) 一个标记仅仅在两个标记交换路由器LSR 之间才有意义。分组每经过一个LSR,LSR就要做两件事:一是转发,二是更换新的标记,即把入标记更换成为出标记。这就叫做标记对换 (label swapping)。

MPLS协议中的三张表 mpls多协议_IP_03

项目含义:从入接口0收到一个入标记为3的IP数据报,转发时,应当把该IP数据报从出接口1转发出去 ,同时把标记对换为1。

(4) 当分组离开MPLS 域时,MPLS 出口结点把分组的标记去除。再以后就按照一般分组的转发方法进行转发。

上述的这种“由入口LSR确定进入MPLS域以后的转发路径”称为显式路由选择 (explicit routing),它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大的区别。

2、转发等价类FEC 

 MPLS有个很重要的概念就是转发等价类FEC(Forwarding Equivalence Class)。“转发等价类”就是路由器按照同样方式对待的分组的集合。

“按照同样方式对待”表示:从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。

划分FEC的方法不受什么限制,这都由网络管理员来控制,因此非常灵活。入口结点并不是给每一个分组指派一个不同的标记,而是将属于同样FEC的分组都指派同样的标记。

FEC 和标记是一一对应的关系。FEC划分举例:1、目的IP地址与某一个特定IP地址的前缀匹配的IP数据报; 2、所有源地址与目的地址都相同的IP数据报; 3、具有某种服务质量需求的IP数据报。

2、MPLS首部的位置与格式 

MPLS并不要求下层的网络都使用面向连接的技术。下层的网络并不提供打标记的手段,而IPv4 数据报首部也没有多余的位置存放MPLS 标记。这就需要使用一种封装技术:在把IP数据报封装成以太网帧之前,先要插入一个MPLS首部。

从层次的角度看,MPLS首部就处在第二层和第三层之间。 把加上MPLS首部的IP数据报封装成以太网帧时,以太网的类型字段在单播的情况下设置为884716,而在多播的情况下为884816。这就可以利用帧的类型来判决这个帧是携带了MPLS标记还是一个常规IP数据报。

                                           

MPLS协议中的三张表 mpls多协议_IP_04

MPLS协议中的三张表 mpls多协议_MPLS协议中的三张表_05

“给IP数据报打上标记”其实就是在以太网的帧首部和IP数据报的首部之间插入一个4字节的MPLS首部。

MPLS首部共包括以下四个字段:

(1) 标记值(占20 位)。可以同时容纳高达220个流(即 1048576 个流)。实际上几乎没有哪个MPLS实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。

(2) 试验(占3 位)。目前保留用作试验。

(3) 栈S(占1 位)。在有“标记栈”时使用。

(4) 生存时间TTL(占8 位)。用来防止MPLS分组在MPLS域中兜圈子。