从全局看,CN2通过链路容量和业务的分布、路由平面的设计为负载均衡和流量工程打下了良好的基础,通过 IGP/BGP的调整可以达到很好的效果; 从局部的细节看,大部分通过等值路径的负载均衡来实现。
等值路径的负载均衡
CN2的核心路由器支持IBGP/EBGP多路径负载分担,对于每一条路由,最多可支持16条equal cost path,并能在这16条path上进行负载分担。
如果对某个目的路由,存在多条(可以多达16条)具有相等cost的路径时,核心的T640设备能够进行多路径负载分担。
目前,基于流(per-flow)的负载分担是比较理想的方式。当存在多条相等cost的路径存在时,T/M-路由器检查IP包的下列参数,并根据下列参数把IP包分成不同的流。
-
Source IP address
-
Destination IP address
-
Protocol
-
Source port number
-
Destination port number
-
Source interface index
-
Type of service (ToS)
-
MPLS top level label
-
MPLS second level label
例如,我们可以把从同一个源地址发往同一个目的地址的所有IP包分成一个flow。或者进行进一步更细致的分类,即把上述从同一个源地址发往同一个目的地址的所有IP包中端口号=23的分成一个flow,而把上述从同一个源地址发往同一个目的地址的所有IP包中端口号=80的分成另一个flow。
然后把不同的flow按轮询的方式放置在不同的多路径中发送出去,每一个flow只通过一条路径发送,以保证分组的次序。
T/M-系列路由器支持IPv4/IPv6的IBGP/EBGP多路径功能,还支持OSPF、BGP、MPLS、组播等的多路径功能。由于T/M-系列路由器能够把flow分的很细致,因此能根据CN2的要求,把业务量非常均匀地分布在相等cost的多路径上。
MPLS 核心等值路径的负载均衡
当采用RSVP TE或MPLS FRR 时,需要注意MPLS tunnel 对负载均衡的影响。由于仅在核心层部署RSVP, RSVP tunnel 的数量不大,并且多是单跳或两跳LSP, 不适合于采用不同src-dest LSP 均分的方式,但非常适合于采用在同一src-dest pair 间建立多个等值LSP 的方式,分别穿越不同的Path。
其次LDP协议同样支持等值负载均衡,当某台router 从多个peer 收到同一条路由的label mapping 请求时,应该能够同时使用IGP cost 等值的多个标签。
最后,当路由器转发MPLS 数据并且存在多个路径时,HASH 的算法能够根据外层、内层标签和IP payload 进行计算,使得流量分布比较合理。
使用RR(路由反射器)中的IBGP 等值负载
当使用RR 时,由于RR 会仅反射它认为的最优的路径,因此RR 的client 就只可以使用RR 认为最优的一条路径。
CN2采用的解决方案是:
-
同一POP 点的ASBR 发送EBGP 路由给IBGP peer(RR) 时,使用3rd party nexthop, 实际上是一个不存在的地址(虚拟地址);在ASBR 中设置静态路由,该虚拟地址的下一跳是分别是各自的EBGP的peer,并把这些静态路由导入到IGP。
-
RR 反射后的BGP route 的下一跳仍然为虚拟的地址,所有的RR client 根据IGP 选择IBGP nexthop就是同样的虚拟地址,并根据IGP 选择各自的实际的direct hop,在多路径的情况下实现负载均衡。
这样操作还有个额外的好处是可以灵活地控制进入LDP LSP 的流量:保持缺省配置,只有ASBR 的loopback 地址被LDP分发, 只有ASBR 或其他VPN PE 的MPLS L2/L3 VPN 可以使用LSP ;如果在ASBR配置策略,ASBR 的loopback 地址和这些虚拟地址对应到同一个标签,则普通Internet 流量也可以使用LDP LSP。
这些MPLS、IGP和BGP的策略结合在一起,将构成CN2网络的流量工程部署。