7.3.2 MPLS TE
1.流量工程的概念
在传统Internet中,网络由多个自治域(Autonomous System,AS)组成,在AS内部经常使用最短路径优先的OSPF和IS-IS等内部网关路由协议(Interior Gateway Protocol,IGP)。在最短路径优先的方式下,网络会出现在某些地方资源被闲置而有些地方的资源被过度利用的现象。下面以图7-28所示的网络为例进行说明,图中标出了每段链路的带宽。
图7-28 最短路径优先的方式下的选路
由图7-28可见,由于采用最短路径优先的方式,R8到R5的流量会选择路径R8-R2-R3-R4-R5,R1到R5的流量也会选择路径R1-R2-R3-R4-R5。假设R8到R5流量为20 M,R1到R5的流量为40 M,则在R2-R3的链路上存在60 M流量。由于R3-R4的链路带宽仅为34 M,此处会有26 M流量被丢弃,所以最后R5收到的流量也只有34 M。此时,拓扑下方的链路R2-R6-R7-R4却处于空闲状态。于是网络中出现了流量不均衡,网络资源无法得到充分合理的利用。
此外,由于不同的业务对承载网的要求不同,例如实时的语音业务和视频业务要求保证数据包的时延、时延抖动,而普通数据业务要求丢包率在一定范围之内,这就造成了不同的业务对同一个网络拓扑的“最佳路径”理解不同。例如,对实时业务而言,传统的“最短路径优先”原则很可能不适用,因为最短的路径不一定时延最小。
流量工程(Traffic Engineering,TE)则是通过使用先进的路由选择算法将业务流量合理地映射到物理网络拓扑中,从而充分利用网络资源,提高网络的整体效率,满足不同业务对网络服务质量的要求。可见,流量工程是对现有网络性能的优化。
2.MPLS TE工作原理
MPLS技术为流量工程的实现提供了一种可行的解决方案。MPLS流量工程(MPLS TE)由4个模块组成,如图7-29所示。
图7-29 MPLS TE的工作原理
(1)信息发布模块
流量工程需要知道网络的拓扑信息和网络的负载信息。为此,引入信息发布模块,通过扩展的IGP来发布链路状态信息,包括最大链路带宽、最大可预留带宽、当前预留带宽等。收集链路状态信息后,每个路由器维护网络的链路属性和拓扑属性,形成流量工程数据库(Traffic Engineer Database,TED)。利用TED,可以计算出满足各种约束的路径。
(2)路径选择模块
MPLS TE技术通过显式路由来指定数据转发的路径,即在每个入口路由器上指定LSP隧道经过的路径。起始LSR通过对TED中的信息使用约束最短路径优先(Constraint-based SPF,CSPF)算法来决定每条LSP的物理路径,即在计算通过网络的最短路径时,将特定的约束(如带宽需求、最大跳数、隧道优先级、隧道管理权重、隧道属性等)也考虑进去。
(3)信令协议模块
信令协议模块用来预留资源,建立LSP。LSP隧道的建立一般通过扩展的资源预留(Resource reSer Vation Protocol-Traffic Engineering,RSVP-TE)协议完成。
(4)报文转发模块
MPLS TE通过标签沿着某条预先建立好的LSP进行报文转发。
3.LSP隧道的建立
如前所述,实现流量工程需要建立显式路由LSP,而显式路由LSP的建立需要通过限制路由技术。限制路由的“限制”主要来自两个方面:一方面是流量本身特征的限制;另一方面是网络链路资源特征的限制。
MPLS有两种标签分配协议可以提供限制路由:一个是限制路由的标签分配协议CRLDP;另一个是扩展的资源预留协议RSVP-TE。由于RSVP-TE较为常用,下面对其进行介绍。
RSVP-TE定义了5个重要的对象,分别是:标签请求(Label_Request)、显式路由(Explicit_Route)、记录路由(Record_Route)、进程属性(Session_Attribute)以及标签(Label)。这些对象主要用于RSVP的PATH消息和RESV消息。
(a)标签请求对象:用于向下一跳申请一个标签。除目标节点外的所有节点都要把标签请求对象记录于PATH状态块中,而目标节点收到PATH消息时,将触发该节点分配一个标签,并返回一个含有标签对象的RESV消息。
(b)显式路由对象:用来指定标签建立的路径,该路径由发起节点确定,可以与传统IP路由相独立。对显式路由对象的处理可以由LDP协议完成。
(c)记录路由对象:主要用于记录PATH消息和RESV消息经过的路径信息(网络节点地址),根据这些信息可以进行环路检测和诊断。
(d)进程属性对象:被放在PATH消息中传送,用于携带有关资源占用的参数,包括资源获取优先权和资源保持优先权,也携带有关资源的信息。
(e)标签对象:包含下游LSR与其上游LSR通信所用的标签捆绑。除目标节点外的所有节点都要把标签对象记录于RESV状态块中,而中间节点收到含有标签对象的RESV消息时,要把其中的标签值作为被申请的资源预留路径的输出标签,并触发本节点分配一个新的标签值,将该标签值放在标签对象中,通过RESV消息向上一跳返回。当发起节点收到含有标签对象的RESV消息时记录下输出标签值,并向MPLS返回路径建立成功消息。
RSVP-TE提出了标签交换路径隧道(LSP Tunnels)的概念。“隧道”是利用RSVP-TE来建立的LSP,在LSP的沿途LSR并不打开数据报。此时,网络对于数据流来说就像一个隧道,数据流从一端进入,从另外一端推出。
下面以图7-30为例,说明利用RSVP-TE建立一条从入口LSR A到出口LSR C的LSP隧道的过程。
图7-30 利用RSVP-TE建立LSP隧道的过程
(a)LSR A根据网络管理策略和流量特征参数,决定选择一条经过LSR B到达LSR C的路径。显然,这是一条显式LSP。LSR A通过一条PATH消息携带显式路径(B,C)以及路径所需要的流量特征参数。PATH消息中主要包含显式路由对象和标签请求对象。其中,显式路由对象描述了为建立LSR A与LSR C间LSP的PATH消息所应走的物理路径;标签请求对象表明了路径上所有LSR都要求进行LSP的标签捆绑。此外,PATH消息中还可以包含进程属性对象、记录路由对象等。
(b)LSR B接收到PATH请求消息之后,在其路径状态模块中记录标签请求对象及显式路由对象,路径状态模块还包括前一跳的IP地址、会话期、发送者等信息。这些信息用于将相关的RESV消息路由回LSR A。同时,LSR B判断自己不是该标签交换路径LSP的出口之后,修改PATH请求消息中的显式路径,继续将消息沿着规定的路径传递给下游,转发给LSR C。
(c)LSR C接收到PATH请求消息之后,从标签请求对象中得知自己为这条标签交换路径LSP的出口,并且从请求消息中得到流量特征参数,预留并重新分配所需的资源。同时,LSR C为该标签交换路径LSP分配一个标签,将该标签包含在一个RESV消息的标签对象内。RESV消息从LSR的本地路径状态模块中获得前一跳LSR B的IP地址。RESV消息通过LSR B往回传送。
(d)LSR B收到RESV消息之后,根据RESV消息中携带的详细标签交换路径LSP预留信息,分配相应的资源和新的标签。LSR B将新的标签放置在RESV消息的标签对象中(替换接收到的标签),建立标签转发表,将RESV消息发送给LSR A。
(e)LSR A接收到包含由LSR B分配的标签的RESV消息。由于LSR A是本标签交换路径的起点,因此无须再为标签交换路径LSP分配标签。LSR A对所有映射到这一条LSP的输出业务使用LSR B分配的标签。
至此,一条从LSR A到LSR C的LSP隧道成功建立。
4.应用举例
下面还是以图7-28所示的网络为例,说明MPLS TE启用后的网络情况,结果如图7-31所示。假设R8-R5已经建立Tunnel路径为R8-R2-R3-R4-R5,此时R1也需要建立到R5的Tunnel,通过TED中的信息,会发现R3-R4的剩余带宽为14 Mbit/s,无法满足R1-R5需要的40 Mbit/s,所以R1-R5的Tunnel路径会选择R1-R2-R6-R7-R4-R5,基本实现了链路负荷均衡。
图7-31 MPLS TE应用举例
在某些情况下,MPLS的两个节点之间的某一业务量有可能无法通过一条单独的链路或路径来承担。MPLS TE可以使用两条或多条LSP来承载同一个用户的IP业务流,合理地将用户业务流分摊到这些LSP之间,以便实现多条平行的LSP上流量的负载均衡。