Users Guide
11–Marvell 组合服务
执行概要
143 BC0054508-05 M
智能负载平衡根据第 3 层和第 4 层 IP 地址和 TCP/UDP 端口号同时实现发送和接
收负载平衡。换句话说,负载平衡不是在字节或帧级别上实现,而是以 TCP/UDP
会话为基础。要求此种方法维持属于同一套接字对话的帧的有序传输。负载平衡在
二至八个端口上受支持。这些端口可以包括添加式适配器和主板上局域网 (LOM)
设备的任何组合。
传输负载平衡通过使用源和目标 IP 地址及 TCP/UDP 端口号创建散列表而得以实
现。源和目标 IP 地址及 TCP/UDP 端口号的相同组合通常生成相同的散列索引,
因此会指向组中的同一端口。当选择一个端口来传送特定套接字的所有帧时,包括
在帧中的是物理适配器的唯一 MAC 地址,而非组 MAC 地址。这样才符合 IEEE
802.3 标准。如果两个适配器使用同一 MAC 地址发送,将发生 MAC 地址重复的
情况,对此,交换机无法处理。
接收负载平衡通过中间驱动程序实现,方式是:在逐个客户端的基础上,使用每个
客户端的单播地址作为 ARP 请求的目标地址来发送无偿 ARP (也称为定向
ARP)。此种做法被认为是客户端负载平衡,而不是流量负载平衡。当中间驱动程
序检测到 SLB 组中的物理适配器之间明显的负载不平衡时,它会生成 G-ARP,重
新分发传入的帧。此中间驱动程序 (QLASP) 不响应 ARP 请求;只有软件协议堆
栈提供请求的 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 不是 Ipv6 的一个特性,所以通过 SLB 来负载平衡 IPv6 地址的流
量。