如何使用bonding来实现Ubuntu的千兆速度?

我正在使用Linux上的bonding驱动程序(Ubuntu 12.04.2 LTS)。

我有两台电脑,每台有两块网卡(千兆以太网 – 英特尔82574L)(总共4块网卡)。 我想通过使用绑定来改善我的TCP吞吐量,但是我的问题是我无法使用绑定实现千兆速度。

我的吉比特接口可以达到370 – 375 Mbps使用一个千兆接口(不使用绑定)。 当我打开我的绑定,使用模式0(balance-rr),例如,我可以达到760 – 772 Mbps(使用iperf)。

当我想将数据从一台PC传输到另一台时(使用绑定模式balance-rr),我可以达到472 Mbps(59 MB / s)。 为了传输数据,我使用scp

我的问题是:

  1. 千兆位以太网在Linux上的局限性是什么?
  2. 为什么我不能达到千兆速度?
  3. 任何人都可以帮助我改变Ubuntu的默认设置,以实现千兆速度?

你能build议如何调整Ubuntu实现千兆速度?

我的sysctl.conf:

 # cat sysctl.conf | grep -v ^# | tr -s '\n' net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 
 # ethtool -k eth1 Offload parameters for eth1: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: on udp-fragmentation-offload: off generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: off rx-vlan-offload: on tx-vlan-offload: on ntuple-filters: off receive-hashing: off 
 # ethtool -k eth2 Offload parameters for eth2: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: on udp-fragmentation-offload: off generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: off rx-vlan-offload: on tx-vlan-offload: on ntuple-filters: off receive-hashing: off 
 # ethtool -g eth1 Ring parameters for eth1: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256 
 # ethtool -g eth2 Ring parameters for eth2: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256 

一个stream只能在一个链接上接收。 所以虽然你的链路可能被绑定,并且数据包在path上以循环方式分裂,但是它们仍然只被另一端的单个链路接收。