我正在使用 Linux(Ubuntu 12.04.2 LTS)上的绑定驱动程序。
我有 2 台 PC,每台都有 2 个 NIC(千兆以太网 - Intel 82574L)(总共 4 个 NIC)。我想使用绑定来提高千兆网络上的 TCP 吞吐量,但我的问题是我无法使用绑定来实现千兆速度。
我的千兆接口使用单个千兆接口(不使用绑定)可以达到 370 - 375 Mbps。当我打开绑定时,例如使用模式 0(balance-rr),我可以达到 760 - 772 Mbps(使用 iperf)。
当我想将数据从一台 PC 传输到另一台 PC 时(使用绑定模式 balance-rr),我只能达到 472 Mbps(59 MB/s)。为了传输数据,我使用scp
。
我的问题是:
- Linux 上的千兆以太网有哪些局限性?
- 为什么我无法达到千兆速度?
- 有人能帮我更改 Ubuntu 上的默认设置以实现千兆速度吗?
您能否就如何调整 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
答案1
单个流只能在单个链接上接收。因此,尽管您的链接可能已绑定,并且数据包在发出时以循环方式拆分,但它们仍然只能由另一端的单个链接接收。