Users Guide
11–Marvell 组合服务
组合机制
153 BC0054508-05 M
出站通信流
Marvell 中间驱动程序管理所有组合模式的出站通信流。对于出站流量,每个数据
包首先被分类到某个流,然后分发到所选的物理适配器进行传输。流分类涉及对已
知的协议字段进行高效散列计算。生成的散列值用于索引到出站流散列表。所选的
出站流散列条目包含所选的负责传输此流的物理适配器索引。数据包的源 MAC 地
址将被修改为选定的物理适配器的 MAC 地址。然后,修改的数据包被传递到选定
的物理适配器以进行传输。
出站 TCP 和 UDP 数据包使用第 3 层和第 4 层标头信息进行分类。对于使用著名
端口 (如 HTTP 和 FTP)的流行互联网协议服务,此方案可改进负载分配。因
此, QLASP 在 TCP 会话基础上执行负载平衡,而不是逐个数据包进行。
在出站流散列条目中,完成分类后还会更新统计计数器。负载平衡引擎使用这些计
数器定期在组合的端口之间分发流。出站代码路径设计为能够实现最佳并发处理,
此时允许对出站流散列表的多个并发访问。
对于 TCP/IP 以外的协议,第一个物理适配器总是被选为用于出站数据包。地址解
析协议 (ARP) 是一个例外,它以不同方式实现入站负载平衡。
入站通信流 (仅限 SLB)
Marvell 中间驱动程序管理 SLB 组合模式的入站通信流。与出站负载平衡不同,入
站负载平衡只能应用于与负载平衡服务器位于同一子网的 IP 地址。入站负载平衡
使用地址解析协议 (RFC0826) 的一个特性,即每个 IP 主机使用本身的 ARP 缓存
将 IP 数据报封装到以太网帧中。 QLASP 仔细操纵 ARP 响应,指令每个 IP 主机
将入站 IP 数据包发送至要求的物理适配器中。因此,入站负载平衡是一个基于入
站流统计历史的提前计划方案。客户端到服务器的新连接始终在主物理适配器上发
生 (因为操作系统协议堆栈生成的 ARP 应答始终将逻辑 IP 地址与主物理适配器
的 MAC 地址关联)。
与出站情况一样,有一张入站流头散列表。此表中的每个条目都有一个单独链接的
列表,而每个链路 (入站流条目)代表一个位于相同子网上的 IP 主机。
当一个入站 IP 数据报到达时,通过求 IP 数据报的源 IP 地址的散列,定位相应的
入站流头条目。存储在选定条目中的两个统计计数器同时被更新。负载平衡引擎以
使用出站计数器的同样方式使用这些计数器,定期将流分配到物理适配器。
在入站代码路径上,入站流头散列表还被设计为允许并发访问。入站流条目的链路
列表仅在处理 ARP 数据包和定期负载平衡的情况下被引用。并非逐个数据包引用
入站流条目。即使链路列表不被绑定;处理每个非 ARP 数据包的开销总是一个常
量。但是, ARP 数据包 (入站和出站)的处理取决于相应链路列表中的链路数。
在入站处理路径上,还使用过滤来防止广播数据包通过系统从其他物理适配器回
环。