负载分担的基本原理
基于协议的负载分担
等价负载分担
NE40E支持等价负载分担,即允许配置多条目的地相同且优先级也相同的路由。当没有到同一目的地的更高优先级路由时,这几条路由都被采纳,在转发去往该目的地报文时,依次通过各条路径发送,从而实现路由的负载分担。
路由协议对负载分担的支持:对于同一目的地,特定的路由协议也可能会发现几条不同的路由,如果该路由协议在所有活跃的路由协议中优先级最高,那么这几条不同的路由都被看作当前有效的路由。这样,在路由协议层面上,保证了IP流量的负载分担。在目前的实现中,支持负载分担的路由协议为OSPF、BGP和IS-IS,静态路由也支持负载分担。
如图8-9所示,负载分担的组网环境如下(以OSPF为例):
在DeviceA、DeviceB、DeviceC、DeviceD和DeviceE上配置OSPF路由协议,OSPF会发现三条不同的路由。
从Port1接口进入DeviceA去往DeviceE的报文,会根据具体的负载分担方式,依次通过这三条路由发送,从而实现负载分担。
非等价负载分担
对于等价负载分担,流量是在这些负载分担路径上进行平分的,不会考虑链路带宽的差异问题。这种方式可能造成一些低带宽链路拥塞,而另一些高带宽链路空闲。如果能够按照出接口的带宽进行流量的负载分担,则能解决这个问题,这就是非等价负载分担。
图8-9所示,如果在DeviceA上使能了非等价负载分担,流量就会按照DeviceA上的三个出接口的带宽比例进行负载分担。例如:如果三个出接口的带宽分别为0.5G、1G和2.5G,那么去往三个出接口的流量比例就为1:2:5。
非等价负载分担的工作机制如下:
非等价负载分担和等价负载分担工作机制基本相同,但是非等价负载分担会把带宽信息带到FIB,并根据带宽比例生成表,从而实现按照带宽比例的流量负载分担。
负载分担方式及负载分担算法与等价负载分担相同。
MPLS负载分担
MPLS LSP负载分担的工作机制如下:
在转发引擎查询负载分担表,然后分别把报文Hash到不同的负载分担项。
如图8-10:两台之间有两条等价的LSP,报文在这两个LSP上进行负载分担。
组播负载分担
组播可以配置基于组播源的,基于组播组的,基于稳定优先的三种负载分担算法。
Trunk负载分担
Trunk是将几个相同类型的物理端口捆绑在一起,作为一个逻辑接口使用。Trunk的好处是可以动态的增加带宽,提高连接的冗余度,并可将流量分担到各个链路上去。
二级Hash
当多个下一跳中存在Trunk链路时,流量在进行一次基于协议的负载分担Hash以后,还需要在Trunk转发表上进行第二次Hash,就存在两级Hash,这个时候也能做正常的负载分担。
链路1和Trunk链路先进行Hash。
Trunk链路上的流量会在两个成员口上进行Hash。
二级Hash的工作机制如下:
Trunk作为基于协议的负载分担的一条链路和其它链路进行第一级负载分担,第一级负载分担和基于协议的负载分担机制相同。Trunk上的流量在查完NHP表后,再查Trunk转发表进行Hash,完成第二级负载分担。
负载分担方式:
第一级Hash同基于协议的负载分担,第二级Hash同Trunk负载分担。
二级负载分担
如图8-13所示,流量在DeviceA到DeviceB之间会进行一次负载分担,在DeviceB到DeviceC之间也会做一次负载分担。如果两次负载分担的算法相同,两次负载分担Hash结果就是相同的,同一条流总是Hash到同一条链路上,流量均衡效果不好。
二级负载分担的工作机制如下:
引入随机数作为Hash因子,这样在不同的设备上由于随机数不同,Hash产生的结果也不同。