虚拟交换机可根据每个数据包的源和目标 IP 地址选择虚拟机的上行链路。

要计算虚拟机的上行链路,虚拟交换机会获取数据包中源和目标 IP 地址的最后一个八位字节并对其执行 XOR 运算,然后根据网卡组中的上行链路数将所得的结果用于另一个计算。结果是一个介于 0 和组中上行链路数减一之间的数字。例如,如果网卡组有四个上行链路,则结果是一个介于 0 和 3 之间的数字,因为每个数字与组中的一个网卡相关联。对于非 IP 数据包,虚拟交换机会从 IP 地址所在的帧或数据包中提取两个 32 位二进制值。

任何虚拟机都可根据源和目标 IP 地址使用网卡组中的任何上行链路。因此,每台虚拟机都可以使用网卡组中任何上行链路的带宽。如果虚拟机在包含大量独立虚拟机的环境中运行,则 IP 哈希算法可在组中的网卡之间均匀地分布流量。当虚拟机与多个目标 IP 地址通信时,虚拟交换机可为每个目标 IP 生成不同的哈希。因此,数据包可以使用虚拟交换机上的不同上行链路,从而可能实现更高的吞吐量。

但是,如果环境中包含的 IP 地址较少,则虚拟交换机可能会始终通过组中的一个上行链路传递流量。例如,如果一个应用程序服务器访问一个数据库服务器,则虚拟交换机会始终计算同一个上行链路,因为只存在一个源-目标对。

物理交换机配置

要确保 IP 哈希负载平衡运行正常,必须在物理交换机上配置以太通道。以太通道可以将多个网络适配器合并到单条逻辑链路中。如果将多个端口绑定到一个以太通道,则每次物理交换机接收不同端口上同一虚拟机 MAC 地址发出的数据包时,该交换机会正确更新其内容可寻址内存 (CAM) 表。

例如,如果物理交换机在端口 01 和 02 上收到 MAC 地址 A 发出的数据包,则该交换机会在其 CAM 表中创建 01-A 和 02-A 条目。因此,物理交换机会将入站流量分布到正确的端口。如果没有以太通道,则物理交换机会首先记录下在端口 01 上收到 MAC 地址 A 发出的数据包,然后将同一记录更新为在端口 02 上收到 MAC 地址 A 发出的数据包。因此,物理交换机只会转发端口 02 上的入站流量,并可能导致数据包无法到达其目标以及相应的上行链路过载。

限制和配置要求

  • ESXi主机支持单个物理交换机或堆栈交换机上的 IP 哈希绑定。
  • ESXi主机仅支持静态模式下的 802.3ad 链路聚合。只能将静态以太通道与 vSphere 标准交换机配合使用。不支持 LACP。如果启用 IP 哈希负载平衡但无 802.3ad 链路聚合(或者相反),则可能会遇到网络中断。
  • 必须使用“仅链路状态”作为网络故障检测方法,并使用 IP 哈希负载平衡。
  • 必须在“活动故障切换”列表中设置组的所有上行链路。“备用”和“未使用”列表必须为空。
  • 以太通道中的端口数必须与组中的上行链路数相同。

使用基于 IP 哈希的路由的注意事项

注意事项 描述
优势
  • 与基于源虚拟端口的路由和基于源 MAC 哈希的路由相比,可更均匀地分布负载,因为虚拟交换机会计算每个数据包的上行链路。
  • 与多个 IP 地址通信的虚拟机可能实现更高的吞吐量。
劣势
  • 与其他负载平衡算法相比,资源消耗最高。
  • 虚拟交换机无法识别上行链路的实际负载。
  • 需要在物理网络上进行更改。
  • 故障排除较为复杂。