技术 > 多协议标签交换
  多协议标签交换
  (mpls:multi-protocol label switching)
  多协议标签交换(mpls)是一种用于快速数据包交换和路由的体系,它为网络数据流量提供了目标、路由、转发和交换等能力。更特殊的是,它具有管理各种不同形式通信流的机制。mpls 独立于第二和第三层协议,诸如 atm 和 ip。它提供了一种方式,将 ip 地址映射为简单的具有固定长度的标签,用于不同的包转发和包交换技术。它是现有路由和交换协议的接口,如 ip、atm、帧中继、资源预留协议(rsvp)、开放最短路径优先(osrf)等等。
  在 mpls 中,数据传输发生在标签交换路径(lsp)上。lsp 是每一个沿着从源端到终端的路径上的结点的标签序列。现今使用着一些标签分发协议,如标签分发协议(ldp)、rsvp 或者建于路由协议之上的一些协议,如边界网关协议(bgp)及 ospf。因为固定长度标签被插入每一个包或信元的开始处,并且可被硬件用来在两个链接间快速交换包,所以使数据的快速交换成为可能。
  mpls 主要设计来解决网路问题,如网路速度、可扩展性、服务质量(qos)管理以及流量工程,同时也为下一代 ip 中枢网络解决宽带管理及服务请求等问题。
  在这部分,我们主要关注通用 mpls 框架。有关 ldp、cr-ldp 和 rsvp-te 的具体内容可以参考个别文件。
  协议结构
  mpls 标签结构:
  20 23 24 32 bit
  label exp s ttl
  label ╠ label 值传送标签实际值。当接收到一个标签数据包时,可以查出栈顶部的标签值,并且系统知道:a、数据包将被转发的下一跳;b、在转发之前标签栈上可能执行的操作,如返回到标签进栈顶入口同时将一个标签压出栈;或返回到标签进栈顶入口然后将一个或多个标签推进栈。
  exp ╠ 试用。预留以备试用。
  s ╠ 栈底。标签栈中最后进入的标签位置,该值为0,提供所有其它标签入栈。
  ttl ╠ 生存期字段(time to live),用来对生存期值进行编码。
  mpls 结构协议组包括:
  mpls:相关信令协议,如 ospf、bgp、atm pnni等。
  ldp:标签分发协议(label distribution protocol)
  cr-ldp:基于路由受限标签分发协议(constraint-based ldp)
  rsvp-te:基于流量工程扩展的资源预留协议(resource reservation protocol ╟ traffic engineering)
  1.1.1 mpls基本概念
  多协议标签交换mpls最初是为了提高转发速度而提出的。与传统ip路由方式相比,它在数据转发时,只在网络边缘分析ip报文头,而不用在每一跳都分析ip报文头,从而节约了处理时间。
  mpls起源于ipv4(internet protocol version 4),其核心技术可扩展到多种网络协议,包括ipx(internet packet exchange)、appletalk、decnet、clnp(connectionless network protocol)等。“mpls”中的“multiprotocol”指的就是支持多种网络协议。
  有关mpls的详细介绍可参考rfc3031(multiprotocol label switching architecture)。
  转发等价类
  mpls作为一种分类转发技术,将具有相同转发处理方式的分组归为一类,称为转发等价类fec(forwarding equivalence class)。相同转发等价类的分组在mpls网络中将获得完全相同的处理。
  转发等价类的划分方式非常灵活,可以是源地址、目的地址、源端口、目的端口、协议类型、vpn等的任意组合。例如,在传统的采用最长匹配算法的ip转发中,到同一个目的地址的所有报文就是一个转发等价类。
  标签
  标签是一个长度固定、只具有本地意义的短标识符,用于唯一标识一个分组所属的转发等价类fec。在某些情况下,例如要进行负载分担,对应一个fec可能会有多个标签,但是一个标签只能代表一个fec。
  标签由报文的头部所携带,不包含拓扑信息,只具有局部意义。标签的长度为4个字节,封装结构如图1-1所示。
  标签共有4个域:
  l label:20比特,标签值字段,用于转发的指针;
  l exp:3比特,保留,用于试验,现在通常用做cos(class of service);
  l s:1比特,栈底标识。mpls支持标签的分层结构,即多重标签,s值为1时表明为最底层标签;
  l ttl:8比特,和ip分组中的ttl(time to live)意义相同。
  标签与atm的vpi/vci以及frame relay的dlci类似,是一种连接标识符。
  l 如果链路层协议具有标签域,如atm的vpi/vci或frame relay的dlci,则标签封装在这些域中;
  l 如果链路层协议没有标签域,则标签封装在链路层和ip层之间的一个垫层中
  frame mode:帧模式
  cell mode:信元模式
  标签交换路由器
  标签交换路由器lsr(label switching router)是mpls网络中的基本元素,所有lsr都支持mpls协议。
  lsr由两部分组成:控制单元和转发单元。
  l 控制单元负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作;
  l 转发单元则依据标签转发表对收到的分组进行转发。
  标签发布协议
  标签发布协议是mpls的控制协议,它相当于传统网络中的信令协议,负责fec的分类、标签的分配以及lsp的建立和维护等一系列操作。
  mpls可以使用多种标签发布协议。
  l 包括专为标签发布而制定的协议,例如:ldp(label distribution protocol)、cr-ldp(constraint-routing label distribution protocol);
  l 也包括现有协议扩展后支持标签发布的,例如:bgp(border gateway protocol)、rsvp(resource reservation protocol)。
  ne80e支持上述标签发布协议,并支持手工配置标签。
  标签交换路径
  一个转发等价类在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的基本工作过程:
  1. ldp和传统路由协议(如ospf、isis等)一起,在各个lsr中为有业务需求的fec建立路由表和标签映射表;
  2. 入节点ingress接收分组,完成第三层功能,判定分组所属的fec,并给分组加上标签,形成mpls标签分组,转发到中间节点transit;
  3. transit根据分组上的标签以及标签转发表进行转发,不对标签分组进行任何第三层处理;
  4. 在出节点egress去掉分组中的标签,继续进行后面的转发。
  由此可以看出,mpls并不是一种业务或者应用,它实际上是一种隧道技术,也是一种将标签交换转发和网络层路由技术集于一身的路由与交换技术平台。这个平台不仅支持多种高层协议与业务,而且,在一定程度上可以保证信息传输的安全性。
  1.1.3 mpls的体系结构
  在mpls的体系结构中:
  l 控制平面(control plane)之间基于无连接服务,利用现有ip网络实现;
  l 转发平面(forwarding plane)也称为数据平面(data plane),是面向连接的,可以使用atm、帧中继等二层网络。
  mpls使用短而定长的标签(label)封装分组,在数据平面实现快速转发。
  在控制平面,mpls拥有ip网络强大灵活的路由功能,可以满足各种新应用对网络的要求。
  对于核心lsr,在转发平面只需要进行标签分组的转发。
  对于ler,在转发平面不仅需要进行标签分组的转发,也需要进行ip分组的转发,前者使用标签转发表lfib,后者使用传统转发表fib(forwarding information base)。
  1.1.4 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
  1.1.5 参考信息
  如果要更详细了解mpls的原理,请参考以下文档。
  rfc3031:multiprotocol label switching architecture
  1.2 mpls的应用
  随着asic技术的发展,路由查找速度已经不是阻碍网络发展的瓶颈。这使得mpls在提高转发速度方面不再具备明显的优势。
  但由于mpls结合了ip网络强大的三层路由功能和传统二层网络高效的转发机制,在转发平面采用面向连接方式,与现有二层网络转发方式非常相似,这些特点使得mpls能够很容易地实现ip与atm、帧中继等二层网络的无缝融合,并为流量工程te(traffic engineering)、虚拟专用网vpn(virtual private network)、服务质量qos(quality of service)等应用提供更好的解决方案。
  1.2.1 基于mpls的vpn
  传统的vpn一般是通过gre(generic routing encapsulation)、l2tp(layer 2 tunneling protocol)、pptp(point to point tunneling protocol)等隧道协议来实现私有网络间数据流在公网上的传送。而lsp本身就是公网上的隧道,所以用mpls来实现vpn有天然的优势。
  基于mpls的vpn就是通过lsp将私有网络的不同分支联结起来,形成一个统一的网络,如图1-6所示。基于mpls的vpn还支持对不同vpn间的互通控制。图1-6中:
  l ce(customer edge)是用户边缘设备,可以是路由器,也可以是交换机或主机;
  l pe(provider edge)是服务商边缘路由器,位于骨干网络。
  在骨干网络中,还存在p(provider),是服务提供商网络中的骨干路由器,不与ce直接相连。p设备只需要具备基本mpls转发能力,不维护vpn信息。
  基于mpls的vpn具有以下特点:
  l pe负责对vpn用户进行管理、建立各pe间lsp连接、同一vpn用户各分支间路由分派。
  l pe间的路由分派通常是用ldp或扩展的bgp协议实现。
  l 支持不同分支间ip地址复用和不同vpn间互通。
  1.2.2 基于mpls的qos
  ne80e支持基于mpls的流量工程和差分服务diff-serv特性,在保证网络高利用率的同时,可以根据不同数据流的优先级实现差别服务,从而为语音,视频数据流提供有带宽保证的低延时、低丢包率的服务。
  由于全网实施流量工程的难度比较大,因此,在实际的组网方案中往往通过差分服务模型来实施qos。
  diff-serv的基本机制是在网络边缘,根据业务的服务质量要求将该业务映射到一定的业务类别中,利用ip分组中的ds(differentiated service)字段(由tos域而来)唯一的标记该类业务;然后,骨干网络中的各节点根据该字段对各种业务采取预先设定的服务策略,保证相应的服务质量。
  diff-serv对服务质量的分类和标签机制与mpls的标签分配十分相似,事实上,基于mpls的diff-serv就是通过将ds的分配与mpls的标签分配过程结合来实现的。