我们使用的是双网卡服务器,bond 模式为 802.3ad。两块网卡的出带宽均衡,但入带宽集中在一块网卡上。这个问题可以通过修改内核代码,在 __bond_start_xmit 函数中广播 ETH_P_ARP 包来解决。
因此,我对 ARP 协议在绑定模式下如何工作以及它为什么会影响传入带宽的分配存在疑问。
单网卡的情况下,这个网卡会有自己的IP和MAC地址,通过ARP协议和交换机上的其他设备建立关系。双卡机的情况下,在bond和802.3ad模式下,这两个网卡会暴露成一个IP和MAC地址吗?如果会,ARP协议是怎么工作的,哪个网卡会响应ARP请求?
答案1
我们采用802.3ad模式绑定的双网卡服务器。
虽然 LACP 首次在 IEEE 802.3ad 中引入,但后来被移至 IEEE 802.1AX。
因此,我对 ARP 协议在绑定模式下如何工作以及它为什么会影响传入带宽的分配存在疑问。
LAG 将多个物理端口组合成一个逻辑端口。它需要使用某种形式的流量分配。但是,该分配在两端的工作方式不属于标准的一部分 - 请参阅 802.1AX 第 6.2.4 条框架分配器:
本标准不强制要求任何特定的分发算法
大多数实现使用从任意子集的哈希函数派生出的物理端口索引{源|目标} {MAC 地址|IP 地址|传输层协议|传输层端口号}。
由于您特别询问的是主机入口分布,因此该部分取决于上行链路交换机、其实现和配置。通常,最好使用 IP 地址和 L4 端口号的哈希。
对于双卡机器,当处于绑定和 802.3ad 模式时,这两个网卡是否会暴露为单个 IP 和 MAC 地址?
有多种绑定模式,但在 LACP 模式下,所有 NIC 都使用单个 MAC 地址和您在其上配置的尽可能多的 IP 地址。
如果是,那么ARP协议将如何工作以及哪个网卡将响应ARP请求?
ARP 协议在单个逻辑接口上完全正常工作。哪个物理接口发送 ARP 响应(或任何其他帧)实际上并不重要,因为它的 MAC 地址仅与交换机的逻辑接口。流量分配的工作原理如上所述。
话虽如此,LACP 可能不是最适合您用例的绑定模式。您还应该考虑使用单独的 NIC(具有自己的 MAC 和 IP 地址)并在应用层上使用循环访问方法,例如通过 DNS。或者只是更快的 NIC。