什么是基于 MPLS 的流量工程(What is Traffic Engineering base on MPLS / What is MPLS TE)?

1、什么是流量工程?(What is Traffic Engineering?)

  • 相对于网络工程而言,流量工程是网络投入生产之前的最后一环;
  • 流量工程是对网络中流量规划的一种工具。

网络工程是很大的一个概念,从前期设计到设备选型(采购),到工程实施(组网),到后期维护,这一个过程统称为网络工程。而流量工程是网络投入生产之前的最后一环。

那什么是流量工程?简而言之,在网络部署好以后,除了开启 IGP 和 BGP 让这些路由协议自动协商和自动规划路由以外,哪条链路上需要跑哪些流量还可以通过网络工程师自己规划。自己规划哪些流量走哪条链路,就是流量工程。

2、哪些情况下需要使用流量工程?(Need of the Traffic Engineering)

  • 网络中某些情况下,最优路径并不是唯一路径;
  • 网络中某些情况下,最优路径并不是最好路径。

如下图所示,Router A 去往 Router H 会从上面那条绿色的链路走,因为这条链路的 metric 值最小。但是上面这条绿色的链路只有 40 M 的带宽,而下面那条红色的链路却有 100 M 的带宽。所以,最优路径并不是最好路径。

如下图所示,就算上下两条链路都是 100 M(而 Router A 和 Router C 之间的链路有 200 M),当 Router C 收到从 Router A 发来的 150 M 的流量时,Router C 也不会非常智能地让这 150 M 流量中的 90 M 流量发给 Router G,再让 150 M 流量中剩余的 60 M 流量发给Router D 。所以,最优路径并不是唯一路径。

传统 IP 解决流量工程方面的不足
传统 IP 解决流量工程方面的不足

回归生活来说:高速公路都堵死了,还不如绕远一点走另一条高速公路,或者干脆走省道呢,所以你需要一个带有实时路况播报的 GPS 导航系统。对于网络工程来说就是:你需要做流量工程 ,这样才能充分利用网络中带宽的资源。

3、传统 IP 是如何做流量工程的?

一般情况下,我们都是这么解决上述问题的:

  • 调整 cost(牵一发而动全身,改完 cost 值可能对于这个设备来说它最优了,但是另外一个设备反而不优了);
  • EIGRP(EIGRP 可以做非等价负载均衡,可惜它是思科私有的路由协议);
  • PBR(PBR 就是策略路由,1. 扩展性不高,2. 不具备重路由功能)。

那什么叫做 PBR 不具备重路由功能呢?

答:如上图所示,橙色的 70 M 流量和蓝色的 40 M 流量都是走上面那条绿色的 40 M 链路,上面那条链路显然就已经堵死了;而此时下面有一条红色的链路还有 100 M 带宽没有被使用。

如下图所示,现在我们在 Router C 上做一个 PBR,这个 PBR 会让橙色的 70 M 流量走下面那条链路。但如果这个时候 Router E 这台路由器 down 掉了,无论橙色的流量现在有多少,PBR 还是会让橙色的流量往下面走。这就叫做 PBR 不具备重路由的功能。

传统 IP 解决流量工程方面的不足
传统 IP 解决流量工程方面的不足

如上图所示,如果你想深究一下你会发现:当 Router E 这台路由器 down 掉后,Router C 的 PBR 还是会把橙色的流量转发给 Router D。而这个时候路由协议已经收敛了,Router D 上去往 Router H 的路由其实要从 Router G 走,所以这个时候 Router D 会把流量重新转发给 Router C,于是流量最终就会在 Router C 和 Router D 之间来回转发(也就是出环了)。

就算你在 Router D 上也部署 PBR,让 Router D 通过 PBR 强行把流量转发给 Router E 也没有用,照样出环。因为此时 Router E 已经 down 掉不存在了,Router D 上去往 Router E 的物理接口也已经没有电气电压信号了,所以 Router D 的 PBR 转发不出去后 Router D 默认还是会去查路由表转发。当路由协议收敛以后,Router D 上去往 Router H 的路由还是要从 Router G 走,所以 Router D 还是会把流量重新转发给 Router C,于是流量最终还是会在 Router C 和 Router D 之间出环。

4、GRE tunnel 是否可以用来做流量工程?

现在我们有一个假设:就是在 GRE tunnel 建立完成以后,我们是否可以任意指定 GRE tunnel 的每一跳,从而达到控制流量转发路径的目的?

如下图所示,R1 去往 R4,默认是这么走的:R1 → R2 → R3 → R4。

GRE tunnel 是否可以用来做流量工程?
GRE tunnel 是否可以用来做流量工程?

如下图所示,现在 R1 去往 R4 的流量总共有 18 G 之多,可是 R1 和 R2、R2 和 R3、R3 和 R4 之间的链路都只有 10 G 的带宽。现在我们希望在 R1 和 R4 之间建立如下的 GRE tunnel,该 GRE tunnel 的每一跳都由我们自己指定,然后可否让剩余的 8 G 带宽从这个 GRE tunnel 走呢?

GRE tunnel 是否可以用来做流量工程?
GRE tunnel 是否可以用来做流量工程?

答案是:不行。很可惜 GRE tunnel 没法自行指定每一跳,但 Ricky 这里想说的是:基于 MPLS 的流量工程就是用 tunnel 的方式来实现流量控制和流量规划的。

5、基于 MPLS 的流量工程:

基于 MPLS 的 流量工程将 GRE tunnel 逐跳指定下一跳的可能变为现实。

至于如何使用基于 MPLS 的流量工程来实现流量控制和流量规划,请看这个实验:《【实验】基于 MPLS 的流量工程(Traffic Engineering base on MPLS / MPLS TE)

(1)MPLS TE tunnel 三大组件:

  • MPLS
  • CBR(Constraint Based Routing,基于约束条件的路由)
  • RSVP(Resource Reservation Protocol)

(2)三大组件的作用,如何协同工作?

  • MPLS(是 MPLS 的 TE,而不是 IP 的 TE,所以自然需要 MPLS 这个组件)
  • CBR(是 OSPF / ISIS 对 TE 的扩展,确定 tunnel 的建立路径)
  • RSVP(预留带宽 & 分配 MPLS TE 标签)
    • Label Request:
    • Label:
    • ERO(Explicited Routing Object,显式路由对象):记录的是 CBR 给 tunnel 计算出来的最短路径的每一个接口地址
    • RRO:记录的是 tunnel 经过的每个网络节点 tunnel 的 router-id 和这个网络节点给 tunnel 分配的 MPLS 标签(也可以用于控制面环路避免)
    • Session Attribute:attribute-flag

看到这里,我会用一个实验《【实验】在 MPLS TE tunnel 上使用 RSVP 预留带宽》来说明 “ RSVP 在 MPLS TE tunnel 中是如何预留带宽的 ” 这个问题,这个实验很好地阐述了 RSVP 在 MPLS TE tunnel 中的作用。

如下图所示,MPLS TE tunnel 的约束条件除了 “ 预留带宽 ” 这一项以外,还有以下几点:Destination、Priority 和 Affinity 等。

Tunnel Interface Constraint
Tunnel Interface Constraint

这三大组件是这么协同工作的:

第一步,Tunnel 会把上述约束条件交给 CBR 来审核:

Tunnel Interface Constraint(1)
Tunnel Interface Constraint(1)

第二步,接着 CBR 就会去询问 RSVP,看网络里面哪些链路是可以满足这些约束条件的:

Tunnel Interface Constraint(2)
Tunnel Interface Constraint(2)

第三步,CBR 会做一个 CSPF 计算,CSPF 在符合条件的拓扑中计算出源去往目的地的最优路径,并将该路径的每一个接口 IP 交与 RSVP 的 ERO:

Tunnel Interface Constraint(3)
Tunnel Interface Constraint(3)

注意:CBR 必须工作在链路状态协议(LSP)上才可以(比如 OSPF 和 ISIS),不能是距离矢量协议(DV,比如 RIP)。因为 CBR 无论是在检查 Destination 还是在检查 Bandwidth,都需要整张拓扑图的信息。只有链路状态协议(LSP)才有整张拓扑图的信息,所以 CBR 只能工作在链路状态协议(LSP)上。

在上文中提到,CBR 扩展了 OSPF 的 LSA 和 ISIS 的 TLV,那具体扩展了哪些内容呢?

答:以 OSPF 为例,LSA-1 和 LSA-2 中携带有每台路由器有多少个接口、每个接口下有多少物理带宽等信息;而 CBR 在此基础上进行了扩展,除了上述携带的信息以外,新的 LSA(LSA-9、LSA-10 和 LSA-11)还携带 RSVP 在每个接口下所预留的带宽信息。

第四步,CSPF 计算完毕后,选择出来的最优路径会交给 RSVP:

第五步,RSVP 沿着 ERO 请求带宽和 MPLS 标签:

Tunnel Interface Constraint(4)
Tunnel Interface Constraint(4)

 

(未完待续)

这篇文章对你有帮助吗?

相关文章

发表评论?

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据