Назад | Перейти на главную страницу

Как достичь гигабитной скорости с Ubuntu с помощью связывания?

Я работаю с драйвером связывания в Linux (Ubuntu 12.04.2 LTS).

У меня есть 2 ПК с 2 сетевыми адаптерами (гигабитный Ethernet - Intel 82574L) в каждом (всего 4 сетевых адаптера). Я хочу улучшить свою пропускную способность TCP в гигабитной сети с помощью связывания, но моя проблема в том, что я не могу достичь гигабитных скоростей, используя связывание.

Мой гигабитный интерфейс может достигать 370 - 375 Мбит / с с использованием одного гигабитного интерфейса (без использования связывания). Когда я включаю связывание, используя, например, режим 0 (balance-rr), я могу достичь 760–772 Мбит / с (используя iperf).

Когда я хочу передать данные с одного ПК на другой (используя режим соединения balance-rr), я могу просто достичь 472 Мбит / с (59 МБ / с). Для передачи данных я использую scp.

Мои вопросы:

  1. Каковы ограничения гигабитного Ethernet поверх Linux?
  2. Почему я не могу достичь гигабитных скоростей?
  3. Может ли кто-нибудь помочь мне изменить настройки по умолчанию в 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

Один поток может быть получен только по одной ссылке. Таким образом, хотя ваши ссылки могут быть связаны, а пакеты разделяться циклически на выходе, они все равно принимаются только одной ссылкой на другой стороне.