链路聚合(LACP / 802.3ad)最大吞吐量


10

我看到关于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的理解有误吗?还是我错过了某些配置选项?任何建议或调查线索,将不胜感激!

Answers:


18

一个快速而肮脏的解释是,使用LACP的单条通信线路不会在多个接口上拆分数据包。例如,如果您有一个TCP连接,将数据包从HostA传输到HostB,它将不会跨越接口发送这些数据包。我最近在这里一直在研究LACP,以寻求我们正在研究的解决方案,这是一个普遍的误解,认为与LACP进行“绑定”或“捆绑”多个网络接口会为您带来组合接口的“吞吐量”。一些供应商已经制作了可以在多个接口上路由的专有驱动程序,但是LACP标准不是我所读的内容。这是我在搜索类似问题时从HP找到的体面图表和说明的链接:http : //www.hp.com/rnd/library/pdf/59692372.pdf


1
一切都说得通。我不知道为什么我没早发现我的误解。我一定只是绕过正确的搜索词和文档页面。看来,根据网络硬件的不同,我们也许可以更改src-dest哈希模式,并通过多接口吞吐量实现运气,但是我认为在此阶段,我将对自己拥有的设备感到满意。感谢您的澄清和非常有用的链接。
泽滕2014年

乐意效劳。最近,我一直在阅读大量文章,以期弄清有关干线和绑定的术语,不同供应商使用的术语有所不同。我发现,在特定标准之外,例如IEEE供应商定义的标准,往往会互换使用某些术语……
Mike Naylor 2014年

6
该文档不再可以在原始URL上找到,但仍可以通过Internet存档访问:web.archive.org/web/20030324105208/http
//www.hp.com/rnd/…– smbear

3

bond-xmit-hash-policy layer3+4设置从源服务器到交换机的负载平衡。它不会设置从交换机到第二台服务器的负载平衡算法。几乎可以肯定,第2层或第3层仍处于平衡状态,即根本没有平衡。


2

好吧,首先,当您使用成组驱动程序时,这将产生一些开销,并将预期的最大吞吐量(在1GB适配器上约为940 MB / s)降低约10%。

我不确定您使用哪种适配器,但是如果您使用的是内置驱动程序,则设置可能不适用于最大吞吐量。您可以考虑添加最多4个队列,因为适配器上的单个队列可能无法达到线速。

另一个考虑因素是,iperf的一个线程可能不会获得最高速度。对于1GB,2-6个线程可能更理想,您可以使用一个简单的bash脚本同时启动多个线程。

对于Intel NIC,但是RSS和硬件RSC会影响吞吐量,请在Broadcom上确保TOE正常工作。

但是,第一步是删除LAG,然后尝试在每个系统上测试1个流量端口,以查看它获得了多少吞吐量,对所有端口进行此操作,然后尝试2个。LACP是一个善变的野兽,可以进行设置是的,我从来没有尝试过在HP交换机上设置它,只有Force10(戴尔之前)。

另外,为什么会有几个开关?


正如另一个答案所描述的那样,潜在的问题是我对LACP的理解,但仅仅是为了填充图片:Linux机器正在使用内核的绑定驱动程序。每个接口都可以单独推动接近最大千兆的吞吐量(根据其他流量,大约为110-117MB / s),所以我实际上只是在寻求增加带宽而不是调整单个NIC。关于交换机,我们有一个多办公室站点,并且有一些带有光纤复用器/多路分配器和其他各种方式的中继交换机。我将两台服务器都放在一台HP 2920-48G交换机上进行测试。
泽滕2014年

iperf的具有--parallel控制客户端平行流的数量来运行参数
8.8.8.8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.