目 录
(1) 流量工程的作用
网络拥塞是影响骨干网络性能的主要问题。拥塞的原因可能是网络资源不足,也可能网络资源负载不均衡导致的局部拥塞。TE(Traffic Engineering,流量工程)解决的是由于负载不均衡导致的拥塞。
流量工程通过实时监控网络的流量和网络单元的负载,动态调整流量管理参数、路由参数和资源约束参数等,使网络运行状态迁移到理想状态,优化网络资源的使用,避免负载不均衡导致的拥塞。
总的来说,流量工程的性能指标包括两个方面:
l 面向业务的性能指标:增强业务的QoS(Quality of Service,服务质量)性能,例如对分组丢失、时延、吞吐量以及SLA(Service Level Agreement,服务等级协定)的影响。
l 面向资源的性能指标:优化资源利用。带宽是一种重要的资源,对带宽资源进行高效管理是流量工程的一项中心任务。
(2) 流量工程的解决方案
现有的IGP协议都是拓扑驱动的,只考虑网络的连接情况,不能灵活反映带宽和流量特性这类动态状况。
解决IGP上述缺点的方法之一是使用重叠模型(Overlay),如IP over ATM、IP over FR等。重叠模型在网络的物理拓扑结构之上提供了一个虚拟拓扑结构,从而扩展了网络设计的空间,为支持流量与资源控制提供了许多重要功能,可以实现多种流量工程策略。然而,由于协议之间往往存在很大差异,重叠模型在可扩展性方面存在不足。
为了在大型骨干网络中部署流量工程,必须采用一种可扩展性好、简单的解决方案。MPLS TE就是为这一需求而提出的。
MPLS本身具有一些不同于IGP的特性,其中就有实现流量工程所需要的,例如:
l MPLS支持显式LSP路由;
l LSP较传统单个IP分组转发更便于管理和维护;
l 基于MPLS的流量工程的资源消耗较其它实现方式更低。
MPLS TE结合了MPLS技术与流量工程,通过建立到达指定路径的LSP隧道进行资源预留,使网络流量绕开拥塞节点,达到平衡网络流量的目的。
在资源紧张的情况下,MPLS TE能够抢占低优先级LSP隧道带宽资源,满足大带宽LSP或重要用户的需求。
同时,当LSP隧道故障或网络的某一节点发生拥塞时,MPLS TE可以通过备份路径和FRR(Fast ReRoute,快速重路由)提供保护。
使用MPLS TE,网络管理员只需要建立一些LSP和旁路拥塞节点,就可以消除网络拥塞。随着LSP数量的增长,还可以使用专门的离线工具进行业务量分析。
对于一条LSP,一旦在Ingress节点为报文分配了标签,流量的转发就完全由标签决定了。流量对LSP的中间节点是透明的,从这个意义上来说,一条LSP可以看作是一条LSP隧道。
在部署重路由(Reroute)或需要将流量通过多条路径传输时,可能需要用到多条LSP隧道。在TE中,这样的一组LSP隧道称为TE隧道(Traffic Engineered Tunnel)。
MPLS TE主要实现两类功能:
l 静态CR-LSP(Constraint-based Routed Label Switched Paths,基于约束路由的LSP)的处理:创建和删除静态CR-LSP。这些LSP有带宽需求,需要通过手工配置。
l 动态CR-LSP处理:包括对三种不同类型CR-LSP的处理:基本CR-LSP、备份CR-LSP和快速重路由CR-LSP。
静态CR-LSP的处理比较简单。对于动态CR-LSP,MPLS TE在实现上主要包括四个部分。
MPLS TE需要了解每条链路的动态TE相关属性,这可以通过对现有的使用链路状态算法的IGP协议进行扩展来实现,比如OSPF协议和IS-IS协议的扩展。
扩展后的OSPF和IS-IS协议在链路连接状态中增加了链路带宽、着色等TE相关属性,其中,链路的最大可预留带宽和每个优先级的链路未被预留带宽尤为重要。
每台设备收集本区域或本级别所有设备每条链路的TE相关信息,生成TEDB(TE DataBase,流量工程数据库)。
使用链路状态算法的路由协议通过SPF(Shortest Path First,最短路径优先)算法计算出到达网络各个节点的最短路径。
MPLS TE使用CSPF(Constraint-based Shortest Path First,基于约束的最短路径优先)算法计算出到达某个节点的最短路径。
CSPF算法是从SPF算法衍生来的,CSPF有两个输入条件:
l 需要建立的LSP的带宽、着色、抢占/保持优先级、显式路径等约束条件,这些都在LSP的入口处配置;
l 流量工程数据库TEDB。
CSPF的计算过程就是针对LSP要求,先对TEDB中的链路进行剪切,把不满足TE属性要求的链路剪掉;再采用SPF算法,寻找一条到LSP出口的最短路径。
支持建立LSP隧道的信令RSVP-TE。它们都能够携带LSP的带宽、部分显式路由、着色等约束参数,两者完成的功能是一样的。
从内部实现来看, RSVP-TE则通过Raw IP建立LSP连接。
RSVP技术经历了多年的发展,其体系结构、协议规程与对各种业务的支持机制相对比较成熟。
使用建立的隧道转发报文。
基于一定约束条件建立的LSP称为CR-LSP,与普通LSP不同,CR-LSP的建立不仅依赖路由信息,还需要满足其他一些条件,比如指定的带宽、选定的路径或QoS参数。
建立和管理约束条件的机制称为CR(Constraint-based Routing,基于约束的路由)。
下面对CR的主要内容进行简单介绍。
l 如果约束信息是对沿途LSR的精确指定,建立的LSP称为严格的显式路由(Strict Explicit Route);
l 如果约束信息是对选择下游LSR时的模糊限制,建立的LSP称为松散的显式路由(Loose Explicit Route)。
路径的流量参数有三个:峰值速率(peak rate)和承诺速率(committed rate),描述路径本身对带宽的约束;另外一个是服务粒度(service granularity)。
如果在建立CR-LSP的过程中,无法找到满足所需带宽要求的路径,一种解决方法是拆除另外一条已经建立的路径,占用为它分配的带宽资源,这种处理方式称为抢占(Preemption)。
CR-LSP使用两个优先级属性来决定是否可以进行抢占:建立优先级(Setup Priority)和保持优先级(Holding Priority)。建立优先级和保持优先级的取值范围都是0~7,数值越小则优先级越高。
抢占由RSVP-TE的Resv消息发起。当新建一条路径Path1时,如果需要与已建立的路径Path2争夺资源,只有当Path1的建立优先级高于Path2的保持优先级时,Path1才能抢占成功。
因此,为保证CR-LSP能够正确建立,建立优先级不能高于保持优先级,否则可能会导致LSP间无穷尽的互相抢占,造成振荡。
CR-LSP创建成功后,不随路由变化而变化的特性叫做路由固定。
当某个网络未运行IGP TE时,网络管理员不能确定网络上的哪些地方可以获得带宽,这时需要选择具有所需带宽的松散ER-hop(Explicit Route)来创建CR-LSP,但这些CR-LSP将会随路由变化而变化。当路由变化时,比如出现了一个更好的下一跳,已建立的CR-LSP也将会随之改变。
如果不希望使用松散路由建立的CR-LSP随路由变化而改变,网络管理员可以在CR-LSP创建成功时把这些CR-LSP配置成永久性的,不随路由变化而变化。
MPLS TE隧道的亲和属性决定隧道使用的链路属性,亲和属性与链路管理组配合,确定隧道可以使用哪些链路。
流量工程是系统规划网络资源使用的过程。根据用户需求可以配置流量工程,提供要求的QoS。
服务提供商通常利用一定的机制去优化CR-LSP,以优化网络资源使用。一种方法是人工配置,但是需要服务提供商进行测量和对CR-LSP微调。使用MPLS TE则能够动态优化CR-LSP,从而节省人力。
动态优化CR-LSP即定期重计算CR-LSP穿越的路由。如果重计算的路由优于当前路由,则创建一条新的CR-LSP,为之分配新路由,并将业务从旧的CR-LSP切换至新的CR-LSP,删除旧CR-LSP。
现在使用两种QoS体系:IntServ(Integrated Service,综合业务模型)和DiffServ(Differentiated Service,区分业务模型)。
RSVP(Resource Reservation Protocol,资源预留协议)是为IntServ(Integrated Service,综合业务模型)而设计的,用于在一条路径的各节点上进行资源预留。RSVP工作在传输层,但不参与应用数据的传送,是一种Internet上的控制协议,类似于ICMP。
简单来说,RSVP具有以下几个主要特点:
l 单向;
l 面向接收者,由接收者发起对资源预留的请求,并维护资源预留信息;
l 使用“软状态”(soft state)机制维护资源预留信息。
RSVP经扩展后可以支持MPLS标签的分发,并在传送标签绑定消息的同时携带资源预留信息,这种扩展后的RSVP称为RSVP-TE,作为一种信令协议用于在MPLS TE中建立LSP隧道。
(1) 软状态
“软状态”是指在RSVP-TE中,通过消息的定时刷新来维持节点上的资源预留状态。
资源预留状态包括由Path消息创建的路径状态(path state)和由Resv消息创建的预留状态(reservation state)。这两种状态分别由Path消息和Resv消息定时刷新。对于某个状态,如果连续没有收到刷新消息,这个状态将被删除。
(2) 资源预留类型
使用RSVP-TE建立的LSP都具有某种资源预留类型(reservation style),在建立RSVP会话时,由接收者决定此会话使用哪种预留类型,从而决定可以使用哪些LSP。
目前设备支持以下两种预留类型:
l FF(Fixed-Filter style):固定过滤器类型。为每个发送者单独预留资源,不能与同一会话中其他发送者共享资源。
l SE(Shared-Explicit style):共享显式类型。为同一个会话的发送者建立一个预留,可以共享资源。
make-before-break是指一种可以在尽可能不丢失数据,也不占用额外带宽的前提下改变MPLS TE隧道属性的机制。
在图 1中,假设需要建立一条Router A到Router D的路径,保留30M带宽,开始建立的路径是Router A→Router B→Router C→Router D。
现在希望将带宽增大为40M,Router A→Router B→Router C→Router D路径不能满足要求。而如果选择Router A→Router E→Router C→Router D,则Router C→Router D也存在带宽不够的问题。
采用make-before-break机制,新建立的路径在Router C→Router D可以共享原路径的带宽,新路径建立成功后,流量转到新路径上,之后拆除原路径,从而有效地避免了流量中断。
RSVP-TE使用RSVP的消息类型,并进行了扩展。RSVP使用以下消息类型:
l Path消息:由发送者沿数据报文传输的方向向下游发送,在沿途所有节点上保存路径状态(path state)。
l Resv消息:由接收者沿数据报文传输的方向逆向发送,在沿途所有节点上进行资源预留,并创建和维护预留状态(reservation state)。
l PathTear消息:此消息产生后马上向下游发送,并立即删除沿途节点的路径状态和相关的预留状态。
l ResvTear消息:此消息产生后马上向上游发送,并立即删除沿途节点的预留状态。
l PathErr消息:如果在处理Path消息的过程中发生了错误,就会向上游发送PathErr消息,PathErr消息不影响沿途节点的状态,只是把错误报告给发送者。
l ResvErr消息:如果在处理Resv消息的过程中发生了错误,或者由于抢占导致预留被破坏,就会向下游节点发送ResvErr消息。
l ResvConf消息:该消息发往接收者,用于对预留消息进行确认。
l Hello消息:在两个直连的RSVP邻居之间建立和维持链路局部的邻居关系。
RSVP的TE扩展主要是在其Path消息和Resv消息中增加新的对象,新增对象除了可以携带标签绑定信息外,还可以携带对LSR在沿途寻找路径时的限制信息,从而支持CR-LSP的功能,并支持FRR。
l Path消息新增的对象包括:LABEL_REQUEST、EXPLICIT_ROUTE、RECORD_ROUTE和SESSION_ATTRIBUTE。
l Resv消息新增的对象包括:LABEL和RECORD_ROUTE。
LABEL_REQUEST对象包含在Path消息中,为LSP请求标签绑定,该对象也保存在路径状态块PSB(Path State Block)中。接收到该对象的节点将分配的标签通过Resv消息中的LABEL对象通知上游节点,从而完成标签的发布和传递。
图 2是使用RSVP建立LSP隧道的示意图。
使用RSVP建立LSP隧道的过程可以简单描述为:
(1) Ingress LSR产生携带标签请求信息的Path消息,沿着通过CSPF计算出的路径逐跳发送给Egress LSR;
(2) Egress LSR收到Path消息后,产生携带预留信息和标签的Resv消息,沿着Path消息发送的相反路径逐跳返回Ingress LSR,同时,Resv消息在沿途的LSR上进行资源预留;
(3) 当Ingress LSR收到Resv消息时,LSP建立成功。
采用RSVP-TE建立的LSP具有资源预留功能,沿途的LSR可以为该LSP分配一定的资源,使在此LSP上传送的业务得到保证。
RSVP通过Refresh消息来维护路径和预留状态,Refresh消息不仅用于在RSVP邻居节点进行状态同步,也用于恢复丢失的RSVP消息。
Refresh消息并不是一种新的消息,它是以前发布过的消息的再次传送,Refresh消息中携带的主要信息和传送时使用的路径都与它要刷新的消息完全一致。只有Path消息和Resv消息才可能是Refresh消息。
由于Refresh消息是定时发送的,当网络中的RSVP会话比较多时,Refresh消息会加重网络负载;而对于时延敏感的应用,当消息丢失时,等待通过Refresh消息恢复的时间可能无法接受。简单地调整刷新间隔并不能同时解决这两类问题。
RFC 2961(RSVP Refresh Overhead Reduction Extensions)定义了几种新的扩展机制,用于解决Refresh消息带来的上述问题。
(1) Message_ID扩展
RSVP本身使用Raw IP发送消息,RFC 2961中定义的Message_ID扩展机制增加了可以在RSVP消息中携带的对象,其中,Message_ID和Message_ID_ACK对象用于RSVP消息确认,从而提高RSVP消息发送的可靠性。
在接口使能Message_ID机制后,可以配置重传功能,设定RSVP消息的重传参数。如果在重传初始时间间隔内(假设为Rf秒),没有收到应答消息ACK,经过(1+Delta)×Rf秒后,将重传此消息。
(2) 摘要刷新扩展
摘要刷新Srefresh(Summary Refresh)可以不传送标准的Path或Resv消息,而仍能实现对RSVP的状态刷新,从而可以减少网络上的Refresh消息流量,并加快节点对这类消息的处理速度。
摘要刷新扩展需要与Message_ID扩展配合使用。只有那些已经被包含Message_ID对象的Path和Resv消息发布过的状态才能使用摘要刷新扩展机制刷新。
为建立LSP,发送者在Path消息中携带LABEL_REQUEST对象,接收者收到带有LABEL_REQUEST对象的Path消息后,就会分配一个标签,并将标签放在Resv消息的LABEL对象中。
LABEL_REQUEST对象保存在上游节点的PSB(Path State Block,路径状态块)中,LABEL对象则保存在下游节点的RSB(Reservation State Block,预留状态块)中。当连续未收到刷新消息的次数超过PSB或RSB的超时倍数(当达到此数值时即为超时)时,PSB或RSB中相应的状态将被删除。
假设有一个资源预留请求,在某些节点上没有通过准入控制,有时可能不希望立即删除这个请求的状态,但这个请求也不应该阻止其他请求使用它预留的资源。这种情况下,节点将进入阻塞状态(Blockade State),在下游节点生成BSB(Blockade State Block,阻塞状态块)。当连续未收到刷新消息的次数超过阻塞状态超时倍数时,BSB中相应的状态被删除。
RSVP-TE GR功能依赖于RSVP-TE的Hello扩展能力,通过扩展的RSVP Hello报文向邻居通告自己的GR能力和相关时间参数。设备和邻居如果都具备RSVP GR能力,那么在完成GR参数的交互后,就可以在检测到对方发生GR重启时,充当对方的GR Helper,保证在GR Restarter重启的过程中,数据转发不会中断。
当GR Restarter发生重启时,GR Helper连续丢失的Hello报文次数超过了配置的值,由此判定GR Restarter发生了重启。此时GR Helper会保留与该邻居相关的软状态信息,并保持向对方周期性发送Hello报文,直到重启定时器(Restart Timer)超时。
在重启定时器超时前,如果GR Helper邻居和GR Restarter重新建立了Hello会话协商,那么启动恢复定时器,并触发信令报文交互以恢复原有的软状态;否则,将删除与该邻居相关的所有RSVP软状态信息和转发表项。如果恢复定时器超时,则删除那些在GR恢复过程中没有恢复的软状态和表项信息。
当MPLS TE隧道建立之后,如果不配置流量沿隧道转发,缺省的情况下依然会沿IP路由转发。
配置流量沿隧道转发有如下三种方法:
使用静态路由转发流量,是最简便的方法,因为Tunnel的接口地址通常情况下不会发布到IGP中。这时候通过定义一条通过Tunnel接口到达目的网络地址的静态路由,就把流量引入到MPLS TE隧道上进行转发。
使用基于策略的路由(Policy-based routing,PBR),通过Tunnel接口的流量需要通过ACL定义策略,如果匹配该流量,将下一跳的接口指向Tunnel,在流量的入接口应用策略路由,就把流量引入到MPLS TE隧道上进行转发。
自动路由发布会将Tunnel的接口发布到IGP路由中,这样流量都会通过MPLS TE隧道转发。
自动路由发布包括两种:IGP Shortcut与转发邻接。
OSPF和IS-IS支持IGP Shortcut和转发邻接特性,可以使用TE Tunnel作为出接口。在这种应用中,TE Tunnel被看做点到点链路。
IGP Shortcut特性也称为自动路由宣告(AutoRoute Announce),该特性将TE Tunnel看作直接与目的地址相连的逻辑接口,计算该TE Tunnel隧道入口设备的IGP路由。
IGP Shortcut和转发邻接的区别在于:
l 在IGP Shortcut应用中,使能此特性的设备使用TE Tunnel作为出接口,但它不将这条路由发布给邻居设备,因此,其他设备不能使用此TE Tunnel。
l 如果配置了转发邻接,则使能此特性的设备在使用TE Tunnel作为出接口的同时,也将这条TE Tunnel发布给邻居设备,因此,其他设备能够使用此TE Tunnel。
图 3 IGP Shortcut与转发邻接示意图
在图 3中,Router D到Router C之间有一条TE Tunnel,IGP Shortcut只能使入节点Router D在计算IGP路由时利用这条隧道,Router A并不能利用这条隧道到达Router C。如果配置了转发邻接特性,则Router A也能够知道这条TE Tunnel的存在,从而可以利用该隧道将到Router C的流量转发到Router D上。
IGP Shortcut和转发邻接包括Tunnel上的配置和IGP本身的配置两部分。
Tunnel接口上的配置需要注意:
l Tunnel接口的目的地址应该属于使能相应特性的区域内;
l Tunnel接口的目的地址可通过区域内路由到达。
流量工程要求在环境发生变化时能够动态分配资源,并且不中断业务。
这通常是由于:用户最初不能确定有多少业务需要通过服务提供商的网络传输,他们更愿意为已经使用的带宽付费。因此,服务提供商需要具备这样一种功能:CR-LSP能在最初时为用户请求带宽建立流量工程隧道;当用户业务增多时,自动调整分配给这些CR-LSP的带宽。
MPLS TE的自动带宽调整特性可以实现此功能,这一特性基于测量的业务量动态调整为流量工程隧道分配的带宽。
CR-LSP备份是一种端到端的路径保护(Path Protection,end-to-end protection),对整条LSP提供保护,而FRR则是一种局部保护措施,只能保护LSP中的某条链路和某个节点。并且,FRR是一种快速响应的临时性保护措施,对于切换时间有严格要求,LSP备份则没有时间要求。
同一条隧道下对主LSP进行路径备份的LSP称为备份路径。当Ingress感知到主LSP不可用时,将流量切换到备份路径上,当主LSP路径恢复后再将流量切换回来,以实现对主LSP路径的备份保护。
有两种备份方法:
l 热备份:创建主CR-LSP后随即创建备份CR-LSP。主CR-LSP失效时,通过MPLS TE直接将业务切换至备份CR-LSP。
l 普通备份:指主CR-LSP失效后创建备份CR-LSP。
快速重路由FRR(Fast ReRoute),是MPLS TE中实现网络局部保护的技术。FRR的切换速度可以达到50ms,能够最大程度减少网络故障时数据的丢失。
对LSP配置FRR功能后,当LSP上的某条链路或某个节点失效时,流量会被切换到保护链路上,同时LSP头节点尝试建立新的LSP。
下面介绍FRR中的几个概念:
l 主LSP:被保护的LSP。
l Bypass LSP:旁路LSP,保护主LSP的LSP。
l PLR(Point of Local Repair):本地修复节点。Bypass LSP的头节点,必须在主LSP的路径上,并且不能是主LSP的尾节点。
l MP(Merge Point):汇聚点。Bypass LSP的尾节点,必须在主LSP的路径上,并且不能是主LSP的头节点。
根据保护的对象不同,FRR分为两类:
l 链路保护:PLR和MP之间有直接链路连接,主LSP经过这条链路。当这条链路失效时,流量可以切换到Bypass LSP上。如图 4所示,主LSP是Router A→Router B→Router C→Router D,Bypass LSP是Router B→Router F→Router C。
图 4 FRR链路保护示意图
l 节点保护:PLR和MP之间通过一台设备连接,主LSP经过这台设备。当这台设备失效时,流量可以切换到Bypass LSP上。如图 5所示,主LSP是Router A→Router B→Router C→Router D→Router E,Bypass LSP是Router B→Router F→Router D,Router C是被保护的设备。
图 5 FRR节点保护示意图
在配置Bypass LSP时,应该规划好它所保护的链路或节点,并确保该Bypass LSP不会经过它所保护的链路或节点,否则不能真正起到保护作用。
另外,由于Bypass隧道需要预先建立,快速重路由会占用额外的带宽。在网络带宽余量不多的情况下,只能对关键的接口或链路进行快速重路由保护。
Diff-Serv作为一种QoS解决方案,其主要实现机制是对流量按照服务类型(class of service)进行划分,基于服务类型提供不同的QoS保证。
而MPLS TE作为流量工程解决方案,主要用于对网络资源的使用进行优化。
DiffServ-Aware TE结合上述两者的优势,能够基于按服务类型划分的流量进行网络资源优化,即,对不同的服务类型进行不同的带宽约束。
概括来说,DiffServ-Aware TE将不同服务类型的流量与LSP进行映射,使流量经过的路径符合对其服务类型的流量工程约束条件。
DiffServ-Aware TE涉及下面两个概念:
l 服务类型CT(Class Type):CT指的是满足一定带宽约束的链路的集合,用于分配链路带宽、实施约束路由及进行准入控制。对于一个给定的Traffic Trunk,其经过的链路都属于相同的CT。
l 带宽约束BC(Bandwidth Constraints):为了控制CT,可以构造不同的带宽约束模型。带宽约束模型由两部分内容决定:最大BC数目(MaxBC)、BC与CT的对应关系。
如图 6所示,分层网络中,一般只在核心层部署MPLS TE,汇聚层MPLS网络一般采用LDP作为标签分发信令,不会部署MPLS TE。汇聚层网络上的LDP LSP隧道穿越核心层网络时,可以利用核心层的MPLS TE隧道,即在MPLS TE隧道之上承载LDP LSP,不需要在核心层的每台LSR之间建立LDP LSP,这就是MPLS LDP over MPLS TE。
l 为了实现MPLS LDP over MPLS TE,需要在MPLS TE隧道的头节点和尾节点之间建立LDP远端会话,通过远端会话发送Label Mapping消息,从而在MPLS TE隧道的头节点和尾节点之间建立LDP LSP,这条LDP LSP隧道承载于MPLS TE隧道之上,形成了分层LSP。