-
什么是负载分担
-
如何通过Hash算法实现负载分担
-
如何处理Eth-Trunk负载分担不均
-
成员数量是否为2的N次方
-
是否存在跨设备堆叠
-
是否存在Hash极化问题
-
流量类型与负载分担模式是否匹配
-
什么是负载分担
在网络部署当中,当存在多条转发路径的时候,常常会部署负载分担功能。通过部署负载分担,设备可以基于报文内容等进行逐流转发,或者基于随机数、轮转方式进行逐包转发,以达到充分利用链路,提高转发效率的目的。
基于逐包负载分担方式的实际部署较少,因为该方式可能导致同一个用户的流量经过网络的不同路径传输后,到达目的设备出现报文乱序或多份的情况。常见的负载分担方式一般选择基于逐流进行负载分担。
逐流负载分担即按照一定的规则,如根据五元组(源IP地址、目的IP地址、协议号、源端口号、目的端口号),将报文分成不同的流。同一条流的报文,经过Hash计算后,会在同一条链路上转发。
如图1-1所示,假设DeviceA上有6个报文要通过DeviceA和DeviceB之间的LinkA和LinkB进行负载分担,其发送顺序为P1、P2、P3、P4、P5、P6,其中P2、P3和P5去往DeviceC,P1、P4、P6去往DeviceD。假设负载分担采用逐流方式,则去往DeviceC的报文都通过LinkA发送,去往DeviceD的报文都通过LinkB发送;或者去往DeviceC的报文都通过LinkB发送,去往DeviceD的报文都通过LinkA发送。
图1-1 逐流负载分担示意图
如何通过Hash算法实现负载分担
常见的负载分担处理过程包含输入(流量、报文的有效字段)、处理(通过Hash算法进行计算)和输出(根据计算结果将流量通过相应的出接口转发)。其中,通过Hash计算的结果会直接影响负载分担的效果,因此如何利用好Hash算法进行计算,在负载分担部署当中就显得尤为重要。
图1-2 Hash算法流程
如图1-2所示,