虽然行业正转向用Segment Routing进行流量工程,但弄清经典的MPLS-TE仍然十分有价值。[RFC2702]列出了TE解决方案的理想属性以及使用MPLS进行流量工程的要求。为更清晰的理解,以下图说明:A和B这两个源通过节点C将流量发送到目的地D,路径成本根据链路metric衡量。当所有metric均相等,即成本就是跳数。那么C和D之间存在两条不相等的成本路径。
A和B是两个客户,A购买了保证低延迟服务。链路G–D是高延迟链路。从运营商的角度来看,源自A的流量应避免高延迟链路G–D。因此,必须找到一条从A到D的路径避免链接G–D。从图中可以很容易地标识为A–C–E–F–D。但怎样计算此路径,都会沿A–C–E–F–D转发源自A的流量?
在经典的IP网络上很难满足此要求。IP面临的挑战在于,它根据流量的目的地在每个跃点独立进行转发。那么,不仅要求到D的两条路径成本相等,而且还要求节点C必须知道它处理来自A的数据包转发给E而不是G。如果基于入接口识别源,但在复杂的拓扑中就难以实现哦。此场景流量工程的要求是能够沿源指定的路径转发流量。其实,这就是众所周知的显示路由哟,不管是RSVP-TE或SR-TE,都是首先支持它。
回看图,假设所有链路容量均为150 Mbps,并且A向D发送120 Mbps,B向D发送40 Mbps。如果遵循最短路径,则160 Mbps将超过链路容量并导致拥塞和丢失。如果能在最短路径(C–G–D)和较长路径(C–E–F–D)之间分配流量,让80 Mbps流量穿越两条链路,可避免拥塞又增加链路利用率。这可以通过控制链路成本来实现,一旦存在两条相等路径,就可以负载均衡。
但这种方法并非万无一失。如果E–F的容量仅为50 Mbps,其它链路为150 Mbps。那么链路E–F将在先前解决方案提供的80 Mbps负载下拥塞。那如何进行更精细的流量调度,找到满足带宽要求的路径转发流量呢?可通过RSVP-TE实现,而SR-TE需要借助控制器。
如果A发送100 Mbps,B发送40 Mbps。正常情况下,可把140 Mbps放在最短路径。但链路G–D故障后,备用路径没有足够资源同时承载A和B的流量,会发生拥塞和丢包。那如何保证B的流量在故障时继续享受40Mbps带宽保证?
最终方案表明在资源争用时需要控制资源,可采用DiffServ的方法,但它受以下两个原因变得不可行:
1、正常情况下,A和B的流量都应受到相同待遇。
2、运营商通常会把网络中支持的行为聚合数量最小化,在不同源发起的流量之间实施优先级方案会增加DiffServ代码点的数量。
刚刚这种情况,要求是找到从源到目的地的带宽约束路径,并强制B的流量优先于A的流量。因此,在链路G–D故障之后,只有源于B的流量可以在备用链接上建立。而源于A的流量找不到足够的资源,那么A的流量不会干扰B的流量。
这三种应用场景可归结为:计算源和目的地之间符合约束条件的路径。有不同方法来实现,先来介绍第一种方法:手动指定路径,控制流量遵循指定的路径。即,显示路径。