Users Guide

Table Of Contents
12–Marvell 组合服务
执行概要
文件编号 BC0054508-05 修订版 R
2021 1 21 日第 140 版权所有 © 2021 Marvell
传输负载平衡通过使用源和目标 IP 地址及 TCP/UDP 端口号创建散列表而得以实
现。源和目标 IP 地址及 TCP/UDP 端口号的相同组合通常生成相同的散列索引,
因此会指向组中的同一端口。当选择一个端口来传送特定套接字的所有帧时,包括
在帧中的是物理适配器的唯一 MAC 地址,而非组 MAC 地址。这样才符合 IEEE
802.3 标准。如果两个适配器使用同一 MAC 址发送,将发生 MAC 地址重复的
情况,对此,交换机无法处理。
接收负载平衡通过中间驱动程序实现,方式是:在逐个客户端的基础上,使用每个
客户端的单播地址作为 ARP 请求的目标地址来发送无偿 ARP (也称为定向
ARP。此种做法被认为是客户端负载平衡,而不是流量负载平衡。当中间驱动
序检测到 SLB 组中的物理适配器之间明显的负载不平衡时,它会生成 G-ARP,重
新分发传入的帧。接收负载平衡是通过组接口连接至系统的客户端的数量的函数,
理解这一点十分重要。
SLB 接收负载平衡,尝试负载平衡组中的跨物理端口的客户端机传入流量。它使
用修改的无偿 ARP 对发送方物理和协议地址中的组 IP 地址,广告不同的 MAC
址。 G-ARP 在目标物理和协议地址中,分别使用客户端机的 MAC IP 地址进行
单播。此动作导致目标客户端使用新 MAC 地址至组 IP 地址的映射来更新其 ARP
缓存。 G-ARP 不广播,因为广播会将导致所有客户端将其流量发送到同一个端
口。其结果是,通过对客户端负载平衡所获得的好处被消除,并可能造成无序帧传
输。只要所有客户端和组合的系统位于相同的子网或广播域中,此接收负载平衡方
案即可行。
当客户端和系统位于不同的子网上,而传入的流量必须经过路由器时,发送给系统
的接收流量就不经过负载平衡。中间驱动程序选择的传送 IP 流的物理适配器传送
所有流量。当路由器向组 IP 地址发送帧时,将广 ARP 请求 (如果不在 ARP
存中)。服务器软件堆栈生成一个带有组 MAC 地址 ARP 应答,但是中间驱动
程序修改 ARP 应答,并通过特定的物理适配器发送,这为该会话建立流。
其原因是 ARP 不是可路由的协议。它没有 IP 标头,因此不会发送到路由器或默认
网关。 ARP 只是一个本地子网协议。此外由于 G-ARP 不是广播数据包路由器
不会对其进行处理,并且不更新自己的 ARP 缓存。
路由器会处理针对其他网络设备 ARP 的唯一场合是如果其代 ARP 被启用,
而且主机没有默认网关。这种情况罕见,对大多数应用程序不建议采用。
通过路由器的传输流量经过负载平衡,因为传输负载平衡是基于源和目标 IP 地址
以及 TCP/UDP 端口号。由于路由器不改变源和目标 IP 地址,负载平衡算法仍可
行。
由于 ARP 不是 Ipv6 的一个特性,所以通过 SLB 来负载平衡 IPv6 地址的流
量。