平台人生
作者平台人生·2017-12-27 14:43
软件开发工程师·平台人生

AIX系统etherchannel hash算法详解

字数 3302阅读 5882评论 0赞 6

作者:梁山 IBM


AIX系统中我们在配置或修改etherchannel聚合网卡时,会遇到hash mode的配置问题,那么每种hash mode代表什么含义呢?每种算法是如何工作的呢?

一、Mode和Hash Mode的相关选项说明

Mode:可以从以下方式中选择:

  • standard:在该方式下,etherchannel使用算法选择发送packet的适配器。算法包括:选取数据值、确定etherchannel中的适配器数量,以及取余数计算,用以识别传输网络流量的链路。Hash Mode的值确定哪个数据值反馈到该算法中(请参阅“Hash Mode”部分以获取不同Hash Mode的解释)。例如,如果Hash Mode方式为 standard,那么它将使用packet包的目标 IP 地址。如果目标 IP 是10.10.10.11,并且以太通道中有 2 个适配器,那么(1 / 2) = 0,余数为 1,所以使用第二个适配器(适配器从 0 开始编号)。适配器按它们在 SMIT 菜单列出的顺序编号。这是缺省的操作方式。
  • round_robin:etherchannel将循环使用适配器,在重复之前发给每个适配器一个数据包。数据包可能会按与它们发给以太通道的顺序稍微不同的顺序发出,但它会充分使用其带宽。如果选择round robin方式,请将Hash Mode的值保留为default,其他值是无效的。
  • 8023ad:该选项启用使用 IEEE802.3ad 链路聚集控制协议 (LACP) 以获取自动链路聚集。

Hash Mode:可以从以下四种方式中选择,这样将确定使用哪一块网卡作为传输数据的网卡:

  • default:packet的目标IP地址用于确定传输数据的网卡。对非IP流量(例如ARP),目标MAC地址的最后一个字节用于进行计算。此方式保证packet通过etherchannel按它们的接收顺序发送出去,但它可能不会充分使用所有的带宽。
  • src_port:packet的源UDP或TCP端口值将用于确定传输数据的网卡。如果packet不是UDP或TCP流量,那么会使用目标IP地址的最后一个字节。如果packet不是IP流量,那么会使用目标MAC地址的最后一个字节。
  • dst_port:packet的目标UDP或TCP端口值将用于确定传输数据的网卡。如果packet不是UDP或TCP流量,那么会使用目标IP的最后一个字节。如果packet不是IP流量,那么使用目标MAC地址的最后一个字节。
  • src_dst_port:packet的源和目标UDP或TCP端口值用于确定传输数据的网卡(特殊情况下,源和目标端口被一分为二,再应用到哈希算法中)。如果packet不是UDP或TCP流量,那么使用目标IP的最后一个字节。如果packet不是IP流量,那么会使用目标MAC地址的最后一个字节。在大多数情况下,该方式都能为客户机和服务器提供完好的packet分发。

二、两种负载平衡方法

对于etherchannel中的网络流量,有以下两种负载平衡方法:

round-robin算法

所有网络流量都平稳地散布到etherchannel中的所有适配器。它为AIX系统提供最高的带宽优化。虽然round-robin是平均使用所有链路的理想方式,但还是要注意它可能会使接收系统上出现无序packet。
一般来说,round-robin方式对于运行jumbo frames的背靠背连接是理想的。在该环境下没有介入的交换机,因此对于交换机的处理可能改变packet的传送时间、顺序或适配器路径的可能性是没有的。在该直连网络路径上,packet在发送的同时就能接收到。超大帧(9000字节 MTU)始终比传统的1500字节MTU产生更好的文件传输性能。这些较大的packet花费更长的时间进行发送,因而正在接收的主机不太可能被无序packet中断。
round-robin也可以应用在其他环境下,但在接收系统上会有无序packet增加的风险。当系统很少有长久的streaming TCP连接时,这种风险尤其高。当主机对(host pair)之间有许多此类连接时,来自不同连接的packet可能是混合的,从而增加了同一连接变为无序的packet的机会。可以使用netstat -s命令检查tcp部分中的无序packet统计信息,稳定增加的值表示从etherchannel发送的流中存在潜在的问题。
如果系统里存在无序packet、必须使用传统的以太网MTU和必须通过交换机连接,那么请尝试standard方式中提供的各种hash mode。每种方式都具有特殊的优势,但default方式和 src_dst_port 方式应用比较广泛。

standard或8032ad 算法

标准算法用于standard和IEEE 802.3ad类型链路聚集。AIX通过etherchannel中的适配器数分割“数值”的最后一个字节并使用余数识别网卡链路。如果余数是零,那么选择etherchannel中的第一个适配器;余数是 1 表示选择第二个适配器,以此类推(适配器以它们在adapter_names属性中列出的顺序被选择)。
HashMode选择确定在计算中使用的数值。缺省情况下,计算使用目标IP地址或MAC地址的最后字节,但也可以使用源和目标TCP或UDP端口值。这些可选项允许您微调etherchannel中真实适配器间网络流量的分发。
在default hash mode方式下,适配器选择算法应用到用于IP流量的目标 IP地址的最后字节。对于ARP和其他非IP流量,同样的公式应用到目标MAC地址的最后字节。除非存在适配器故障导致故障转移,否则使用缺省标准方式的主机对之间的所有流量都通过同一个适配器传输出去。当本地主机与许多不同的 IP 地址建立连接时,default hash mode方式可能是理想的。
但如果本地主机与为数不多的IP地址建立长连接,那么您会注意到,某些适配器将比其他适配器携带更多的负载,因为所有发送到特定目标的流量都通过同一个适配器发送。虽然这样防止了packet呈现无序状态,但它可能不会在所有情况下以最有效的方式使用带宽。基于端口的hashmode方式仍然按顺序发送packet,但它们允许属于不同UDP或TCP连接的packet(即使它们发送到同一目标)通过不同的适配器发送,从而更好地使用所有适配器的带宽。
在 src_dst_port hash mode方式下,添加网络packet的TCP或UDP源和目标端口值,然后将其一分为二。所生成的整数(非十进制)插入到标准算法。TCP或 UDP 流量发送到由标准算法和选定的hash mode方式值所选择的适配器上。非 TCP 或 UDP 流量将后退到default hash mode方式下,意味着目标 IP 地址或 MAC 地址的最后字节。src_dst_port hash mode方式选项考虑源和目标TCP或UDP端口值。在该方式下TCP或UDP连接中的所有packet都通过单一的适配器发送,所以保证它们按顺序到达,但是流量仍然是展开的,因为连接(即使连接到同一主机)可能通过不同的适配器发送。该hash mode方式的结果不会因连接建立方向而变形,因为它既使用源TCP或UDP端口值,又使用目标TCP或UDP端口值。
在 src_port hash mode方式下,使用网络packet的源TCP或UDP端口值。在 dst_port hash mode方式下,使用网络packet的目标TCP或UDP端口值。如果从一个连接到另一个连接的端口值有变化,并且如果 src_dst_port 选项不产生期望的分发,请使用 src_port 或 dst_port hash mode方式选项。

三、Hash Mode与负载平衡的组合

“Hash Mode”参数决定使用哪个数值反馈给算法。下表总结了提供的有效负载平衡选项组合。
QQ截图20171227144236.png

QQ截图20171227144236.png

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

6

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

作者其他文章

相关文章

相关问题

相关资料

X社区推广