标题：多协议标签交换
简介
多协议标签交换（MPLS）是一种用于快速数据包交换和路由的体系，它为网络数据流量提供了目标、路由、转发和交换等能力。更特殊的是，它具有管理各种不同形式通信流的机制。MPLS 独立于第二和第三层协议，诸如ATM 和IP。它提供了一种方式，将 IP地址映射为简单的具有固定长度的标签，用于不同的包转发和包交换技术。它是现有路由和交换协议的接口，如IP、ATM、帧中继、资源预留协议（RSVP）、开放最短路径优先（OSPF）等等。
在MPLS 中，数据传输发生在标签交换路径（LSP）上。LSP 是每一个沿着从源端到终端的路径上的结点的标签序列。现今使用着一些标签分发协议，如标签分发协议（LDP）、RSVP 或者建于路由协议之上的一些协议，如边界网关协议（BGP）及OSPF。因为固定长度标签被插入每一个包或信元的开始处，并且可被硬件用来在两个链接间快速交换包，所以使数据的快速交换成为可能。
MPLS 主要设计来解决网路问题，如网路速度、可扩展性、服务质量（QoS）管理以及流量工程，同时也为下一代IP 中枢网络解决宽带管理及服务请求等问题。
在这部分，我们主要关注通用MPLS 框架。有关LDP、CR-LDP 和RSVP-TE 的具体内容可以参考个别文件。
多协议标签交换MPLS最初是为了提高转发速度而提出的。与传统IP路由方式相比，它在数据转发时，只在网络边缘分析IP报文头，而不用在每一跳都分析IP报文头，从而节约了处理时间。
MPLS起源于IPv4（Internet Protocol version 4），其核心技术可扩展到多种网络协议，包括IPX（Internet Packet Exchange）、Appletalk、DECnet、CLNP（Connectionless Network Protocol）等。“MPLS”中的“Multiprotocol”指的就是支持多种网络协议。
MPLS 包头结构
  
协议结构
MPLS 标签结构：
20 23 24 32 bit 
Label Exp S TTL
Label ―Label 值传送标签实际值。当接收到一个标签数据包时，可以查出栈顶部的标签值，并且系统知道：A、数据包将被转发的下一跳；B、在转发之前标签栈上可能执行的操作，如返回到标签进栈顶入口同时将一个标签压出栈；或返回到标签进栈顶入口然后将一个或多个标签推进栈。
Exp ―试用。预留以备试用。 
S ―栈底。标签栈中最后进入的标签位置，该值为0，提供所有其它标签入栈。 正因为这个字段表明了
MPLS的标签理论上可以无限嵌套，从而提供无限的业务支持能力。这是MPLS技术最大魅力所在。
TTL ―生存期字段（Time to Live），用来对生存期值进行编码。与IP报文中的TTL值功能类似，同样
是提供一种防环机制
结构协议组
MPLS：相关信令协议，如OSPF、BGP、ATM PNNI等。
LDP：标签分发协议（Label Distribution Protocol）
CR-LDP：基于路由受限标签分发协议（Constraint-Based LDP）
RSVP-TE：基于流量工程扩展的资源预留协议（resource Reservation Protocol –Traffic Engineering）
基于MPLS的VPN
传统的VPN一般是通过GRE（Generic Routing Encapsulation）、L2TP（Layer 2 Tunneling Protocol）、PPTP（Point to Point Tunneling Protocol）、IPSec协议等隧道协议来实现私有网络间数据流在公网上的传送。而LSP本身就是公网上的隧道，所以用MPLS来实现VPN有天然的优势。
基于MPLS的VPN就是通过LSP将私有网络的不同分支联结起来，形成一个统一的网络。基于MPLS的VPN还支持对不同VPN间的互通控制。
CE（Customer Edge）是用户边缘设备，可以是路由器，也可以是交换机或主机。
PE（Provider Edge）是服务商边缘路由器，位于骨干网络。
在骨干网络中，还存在P（Provider），是服务提供商网络中的骨干路由器，不与CE直接相连。P设备只需要具备基本MPLS转发能力，可以将其配置为M-BGP的路由反射器，不维护VPN信息。
基于MPLS的VPN具有以下特点：
PE负责对VPN用户进行管理、建立各PE间LSP连接、同一VPN用户各分支间路由分派。
PE间的路由分派通常是用LDP或扩展的BGP协议实现。
支持不同分支间IP地址复用和不同VPN间互通。
减化了寻路步骤，提高了设备性能，加快了报文转发。
基于MPLS的QoS
NE80E支持基于MPLS的流量工程和差分服务Diff-Serv特性，在保证网络高利用率的同时，可以根据不同数据流的优先级实现差别服务，从而为语音，视频数据流提供有带宽保证的低延时、低丢包率的服务。
由于全网实施流量工程的难度比较大，因此，在实际的组网方案中往往通过差分服务模型来实施QoS。
Diff-Serv的基本机制是在网络边缘，根据业务的服务质量要求将该业务映射到一定的业务类别中，利用IP分组中的DS（Differentiated Service）字段（由ToS域而来）唯一的标记该类业务；然后，骨干网络中的各节点根据该字段对各种业务采取预先设定的服务策略，保证相应的服务质量。
Diff-Serv对服务质量的分类和标签机制与MPLS的标签分配十分相似，事实上，基于MPLS的Diff-Serv就是通过将DS的分配与MPLS的标签分配过程结合来实现的。
基本工作过程
1． LDP和传统路由协议（如OSPF、ISIS等）一起，在各个LSR中为有业务需求的FEC建立路由表和标签映射表
2． 入节点Ingress接收分组，完成第三层功能，判定分组所属的FEC，并给分组加上标签，形成MPLS标签分组，转发到中间节点Transit
3． Transit根据分组上的标签以及标签转发表进行转发，不对标签分组进行任何第三层处理
4． 在出节点Egress去掉分组中的标签，继续进行后面的转发。
由此可以看出，MPLS并不是一种业务或者应用，它实际上是一种隧道技术，也是一种将标签交换转发和网络层路由技术集于一身的路由与交换技术平台。这个平台不仅支持多种高层协议与业务，而且，在一定程度上可以保证信息传输的安全性。
体系结构
在MPLS的体系结构中：
控制平面（Control Plane）之间基于无连接服务，利用现有IP网络实现
转发平面（Forwarding Plane）也称为数据平面（Data Plane），是面向连接的，可以使用ATM、帧中继等二层网络。
MPLS使用短而定长的标签（label）封装分组，在数据平面实现快速转发。
在控制平面，MPLS拥有IP网络强大灵活的路由功能，可以满足各种新应用对网络的要求。
对于核心LSR，在转发平面只需要进行标签分组的转发。
对于LER，在转发平面不仅需要进行标签分组的转发，也需要进行IP分组的转发，前者使用标签转发表LFIB，后者使用传统转发表FIB（Forwarding Information Base）。
MPLS与路由协议
LDP利用路由转发表建立LSP
LDP通过逐跳方式建立LSP时，利用沿途各LSR路由转发表中的信息来确定下一跳，而路由转发表中的信息一般是通过IGP、BGP等路由协议收集的。LDP并不直接和各种路由协议关联，只是间接使用路由信息。
通过已有协议的扩展支持MPLS标签分发
虽然LDP是专门用来实现标签分发的协议，但LDP并不是唯一的标签分发协议。通过对BGP、RSVP（Resource Reservation Protocol）等已有协议进行扩展，也可以支持MPLS标签的分发。
通过某些路由协议的扩展支持MPLS应用
在MPLS的应用中，也可能需要对某些路由协议进行扩展。例如，基于MPLS的VPN应用需要对BGP进行扩展，使BGP能够传播VPN的路由信息；基于MPLS的流量工程TE（Traffic Engineering）需要对OSPF或IS-IS协议进行扩展，以携带链路状态信息。
LSPM: LSP Management
转发等价类
MPLS作为一种分类转发技术，将具有相同转发处理方式的分组归为一类，称为转发等价类FEC（Forwarding Equivalence Class）。相同转发等价类的分组在MPLS网络中将获得完全相同的处理。
转发等价类的划分方式非常灵活，可以是源地址、目的地址、源端口、目的端口、协议类型、VPN等的任意组合。例如，在传统的采用最长匹配算法的IP转发中，到同一个目的地址的所有报文就是一个转发等价类。
标签
标签是一个长度固定、只具有本地意义的短标识符，用于唯一标识一个分组所属的转发等价类FEC。在某些情况下，例如要进行负载分担，对应一个FEC可能会有多个标签，但是一个标签只能代表一个FEC。
标签由报文的头部所携带，不包含拓扑信息，只具有局部意义。标签的长度为4个字节，封装结构如图1-1所示。
标签共有4个域：
1. Label：20比特，标签值字段，用于转发的指针
2. Exp：3比特，保留，用于试验，现在通常用做CoS（Class of Service）
3. S：1比特，栈底标识。MPLS支持标签的分层结构，即多重标签，S值为1时表明为最底层标签
4.TTL：8比特，和IP分组中的TTL（Time To Live）意义相同。
标签与ATM的VPI/VCI以及Frame Relay的DLCI类似，是一种连接标识符。
如果链路层协议具有标签域，如ATM的VPI/VCI或Frame Relay的DLCI，则标签封装在这些域中
如果链路层协议没有标签域，则标签封装在链路层和IP层之间的一个垫层中
Frame mode：帧模式
Cell mode：信元模式
标签交换路由器
标签交换路由器LSR（Label Switching Router）是MPLS网络中的基本元素，所有LSR都支持MPLS协议。
LSR由两部分组成：控制单元和转发单元。
控制单元负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作
转发单元则依据标签转发表对收到的分组进行转发。
标签发布协议
标签发布协议是MPLS的控制协议，它相当于传统网络中的信令协议，负责FEC的分类、标签的分配以及LSP的建立和维护等一系列操作。
MPLS可以使用多种标签发布协议。
包括专为标签发布而制定的协议，例如：LDP（Label Distribution Protocol）、CR-LDP（Constraint-Routing Label Distribution Protocol）
也包括现有协议扩展后支持标签发布的，例如：BGP（Border Gateway Protocol）、RSVP（Resource Reservation Protocol）。
标签交换路径
一个转发等价类在MPLS网络中经过的路径称为标签交换路径LSP（Label Switched Path）。
LSP在功能上与ATM和Frame Relay的虚电路相同，是从入口到出口的一个单向路径。LSP中的每个节点由LSR组成，根据数据传送的方向，相邻的LSR分别称为上游LSR和下游LSR。
标签交换路径LSP分为静态LSP和动态LSP两种。静态LSP由管理员手工配置，动态LSP则利用路由协议和标签发布协议动态产生。
位于MPLS域边缘、连接其它用户网络的LSR称为边缘LSR，即LER（Label Edge Router），区域内部的LSR称为核心LSR。核心LSR可以是支持MPLS的路由器，也可以是由ATM交换机等升级而成的ATM-LSR。域内部的LSR之间使用MPLS通信，MPLS域的边缘由LER与传统IP技术进行适配。
分组被打上标签后，沿着由一系列LSR构成的标签交换路径LSP传送，其中，入节点LER被称为Ingress，出节点LER被称为Egress，中间的节点则称为Transit。
参考信息
如果要更详细了解MPLS的原理，请参考以下文档。
RFC3031：Multiprotocol Label Switching Architecture
MPLS的技术特点
1 充分采用原来的IP路由，在此基础上加以改进；保证了MPLS网络路由具有灵活性的特点
2 采用 ATM的高效传输交换方式，抛弃了复杂的ATM信令，无缝地将IP技术的有待年融合到ATM的高效硬件转发中
3 MPLS网络的数据传输和路由计算分开，是一种面向连接的传输技术，能够提供有效的QOS保证
4 MPLS不但支持多种网络层技术，而且是一种与链路层无关的技术，它同时支持X.25 帧中继 ATM PPP SDH DWDM 等 ，保证了多种网络的互连互通，使得各种不同的网络传输技术统一在同一各MPLS平台上
5 MPLS支持大规模层次化的网络拓扑结构，具有良好的网络扩展性
6 MPLS的标签合并机制支持不同数据流的合并传输
7 MPLS支持流量工程 COS QOS 和大规模的虚拟专用网
MPLS的工作原理
MPLS是基于标记的IP路由选择方法。这些标记可以被用来代表逐跳式或者显式路由，并指明服务质量(QoS)、虚拟专网以及影响一种特定类型的流量(或一个特殊用户的流量)在网络上的传输方式等各类信息。MPLS采用简化了的技术，来完成第三层和第二层的转换。它可以提供每个IP数据包一个标记，将之与IP数据包封装于新的MPLS数据包，由此决定IP数据包的传输路径以及优先顺序，而与MPLS兼容的路由器会在将IP数据包按相应路径转发之前仅读取该MPLS数据包的包头标记，无须再去读取每个IP数据包中的IP地址位等信息，因此数据包的交换转发速度大大加快。
目前的路由协议都是在一个指定源和目的地之间选择最短路径，而不论该路径的带宽、载荷等链路状态，对于缺乏安全保障的链路也没有一种显式方法来绕过它。利用显式路由选择，就可以灵活选择一条低延迟、安全的路径来传输数据。
MPLS协议实现了第三层的路由到第二层的交换的转换。MPLS可以使用各种第二层协议。MPLS工作组到目前为止已经把在帧中继、ATM和PPP链路以及IEEE802.3局域网上使用的标记实现了标准化。MPLS在帧中继和ATM上运行的一个好处是它为这些面向连接的技术
带来了IP的任意连通性。目前MPLS的主要发展方向是在ATM方面。这主要是因为ATM具有很强的流量管理功能，能提供QoS方面的服务，ATM和MPLS技术的结合能充分发挥在流量管理和QoS方面的作用。标记是用于转发数据包的报头，报头的格式则取决于网络特性。在路由器网络中，标记是单独的32位报头;在ATM中，标记置于虚电路标识符/虚通道标识符(VCI/VPI)信元报头中。对于MPLS可扩展性非常关键的一点是标记只在通信的两个设备之间有意义。在网络核心，路由器/交换机只解读标记并不去解析IP数据包。
IP包进入网络核心时，边界路由器给它分配一个标记。自此，MPLS设备就会自始至终查看这些标记信息，将这些有标记的包交换至其目的地。由于路由处理减少，网络的等待时间也就随之缩短，而可伸缩性却有所增加。MPLS数据包的服务质量类型可以由MPLS边界路由器根据IP包的各种参数来确定，如IP的源地址、目的地址、端口号、TOS值等参数。
对于到达同一目的地的IP包，可根据其TOS值的要求来建立不同的转发路径，以达到其对传输质量的要求。同时，通过对特殊路由的管理，还能有效地解决网络中的负载均衡和拥塞问题。当网络中出现拥塞时，MPLS可实时建立新的转发路由来分散流量以缓解网络拥塞。
MPLS的应用
随着ASIC技术的发展，路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势。
但由于MPLS结合了IP网络强大的三层路由功能和传统二层网络高效的转发机制，在转发平面采用面向连接方式，与现有二层网络转发方式非常相似，这些特点使得MPLS能够很容易地实现IP与ATM、帧中继等二层网络的无缝融合，并为流量工程TE（Traffic Engineering）、虚拟专用网VPN（Virtual Private Network）、服务质量QoS（Quality of Service）等应用提供更好的解决方案。
在云计算安全中的应用
基于MPLS技术的云架构IaaS层的安全机制通过接口技术描述了对云端与客户端的连接进行控制的必要性，但却没有定义一个子层对云中的两个双向通信的实体间的连接进行控制，这便导致实体间的通信并不可靠。所以本文通过在IaaS层中增加一个子层CaaS(Communication as a Service，通信服务)层来确保两个实体间通信的安全性，这个子层模型是建立在MPLS技术基础上的。通过将MPLS技术运用到CaaS层中则可以提高“云”中数据传输的安全性及可靠性，并且能够有效预防DDoS等攻击。CaaS层嵌入到IaaS层中的结构如图1所示。
  CaaS层嵌入到IaaS层中结构
图1 CaaS层嵌入到IaaS层中结构
CaaS子层中，主要包含以下功能：
初始化：初始化包含两个过程。首先会将虚拟逻辑分区内的CPU初始化得到一个32bit的随机数字，这个之后会通过AES(Advanced Encryption Standard，高级加密标准J形成一个l28bit的会话密钥。一个密钥将只对应一个逻辑分区。然后，再对网络进行初始化后开始CE(Customer Edge，用户边缘设备)之间的通信。
协议认证：在MPLS网络中的路由对相互之间传送的数据包进行校验。MPLS网络中的攻击一般发生在对数据包进行标签标记时，所以只有当数据包经过认证后才能进行标记。路由器通过认证协议来识别路由和路径。这为未知网络之间建立了可靠的识别机制，从未知网络传输过来的数据包一旦未通过验证就会被丢弃，这就大大减少了发生攻击的危险。
密钥交换：IKE(Internet Key，密钥交换)为两个需要进行通信的云用户间或云用户与云供应商间建立一种关联SA(SecurityAssociation，安全关联)，同时负责密钥的生成与管理。SA可对两个通信主体间的协议进行编码，以确认它们使用何种算法、密钥及密钥的长度。IKE建立SA分两阶段来完成：第一阶段先在两个通信主体之间建立一个通信信道并对该信道进行认证，第二阶段则通过已建立的通信信道建立SA.SA存在一个生命周期，当会话密钥超时，就会向对方主机发送一个第一阶段SA删除命令，然后双方重新进行SA协商。密钥的周期性决定了超过一定时间限制，一定会生成新的密钥，这便大大增强了密钥的健壮性与可靠性。这也是在云计算中使用密钥交换的一个重要原因。
建立通信：CE之间的连接通过标签边缘路由进行建立。在MPLS网络中，LSP(Labelb Switch Path，标签交换路径)是由两个端点间的标记所决定的，分为动态LSP和静态LSP两类。动态LSP是由路由信息生成的，而静态LSP是指定的。逻辑分区使用AES算法对数据进行加密这种加密是基于ECB(Electronic Code Book，电子源码书)模式的，通过这种模式，数据流会快速传送给云用户。加密使用的是一次性密钥，即使数据包被探测到也很难对其解密，使得数据的安全性得到充分保证。
会话终止：当云用户结束通信时，会话会自动终止，云供应商将根据云用户在会话期间使用的服务进行收费。同时，MPLS网络中的通信资源及虚拟处理器中的缓存数据将会释放。(图2)[1]
  缓存数据将会释放
MPLS环路处理
MPLS使用基于分布式计算的传统IP路由协议，在网络拓扑结构变化的瞬间，由这些协议计算得到的路由可能会瞬时产生环路。分组进入有环路的LSP传送时可能会导致两个基本问题（1）分组无法递交到正确的目的地址（2）拥塞。发生环路后。即使采用TTL减和环路分组丢弃的方式分组仍可能在环路中存活很长时间，并占用大量的网络资源。这对其他没有产生环路的数据分组的正确传输有很大影响。产生环路数据包造成的拥塞可能导致非环路数据包延迟加长或丢弃，严重时导致网络瘫痪。
在MPLS网络中有很多机制防止环路形成，在环路处理的方法上，一般要考虑使用该方法后环路可能发生的数量以及使用该方法对路由计算收敛性的影响。减少环路的发生意味着路由收敛时间更长。
MPLS网络的第二层环路处置有很多种方法，主要可以划分为三类：
1.环路幸存这种方法通过诸如限制环路所能使用的网络资源的大小来最小化环路对网络服务性能的影响。
2.环路检测允许环路的发生，但在随后的检测中发现环路时就删除它们。
3.环路防止避免在第二层转发路径时发生环路