我看到关于Linux下绑定接口的一些令人困惑的行为,我想把这种情况抛诸脑后,希望有人能为我清除它。
我有两个服务器:服务器1(S1)具有4个1Gbit以太网连接;服务器2(S2)具有2个1Gbit以太网连接。这两个服务器都运行Ubuntu 12.04,尽管其内核为3.11.0-15(来自lts-saucy linux-generic软件包)。
两台服务器都将各自的网络接口捆绑为一个单独的bond0接口,并具有以下配置(在中/etc/network/interfaces
):
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-slaves eth0 eth1 [eth2 eth3]
在服务器之间有几个HP交换机(我认为)已正确配置为相应端口上的LACP。
现在,链接正在工作-网络流量愉快地往返于两台计算机之间。并且所有各自的接口都在使用中,因此这并不意味着聚合完全失败。但是,这两个服务器之间需要尽可能多的带宽,而我没有获得预期的〜2Gbit / s。
在测试中,我可以观察到每个服务器似乎都将每个TCP连接(例如iperf,scp,nfs等)分配给单个从属接口。本质上,所有内容似乎都限制在1 GB的最大范围内。
通过设置bond-xmit-hash-policy layer3+4
,我可以用于iperf -c S1 -P2
在两个从属接口上发送,但是在服务器端,接收仍然仅在一个从属接口上进行,因此总吞吐量被限制为1Gbit / s,即客户端显示〜40-50MB / s在两个从属接口上,服务器在一个从属接口上显示〜100MB / s。如果未设置,bond-xmit-hash-policy
则发送也仅限于一个从属接口。
我给人的印象是,LACP应该允许这种连接捆绑,例如,允许一次scp传输来利用两个主机之间的所有可用接口。
我对LACP的理解有误吗?还是我错过了某些配置选项?任何建议或调查线索,将不胜感激!