Почему iperf все еще сообщает о производительности на 1 Гбит/с при использовании связывания более чем двух адаптеров на 1 Гбит/с?

Насколько я понимаю связывание приносит среди других преимуществ способность увеличить скорость сети между двумя машинами в LAN.

Связывание [...] означает комбинировать несколько сетевых интерфейсов (NICs) к единственной ссылке, обеспечивая или высокую доступность, выравнивание нагрузки, максимальную пропускную способность или комбинацию их.

Источник: документация Ubuntu, шахта акцента.

У меня есть связывание, настроенное на двух серверах; у обоих есть два адаптера NIC на 1 Гбит/с. Когда скорость тестирования между теми серверами использование iperf, отчет указывает:

  • 930 - 945 Мбит/с при использовании balance-rr связывание режима.
  • 520 - 530 Мбит/с от машины к B при использовании 802.3ad,
  • 930 - 945 Мбит/с от машины B к при использовании 802.3ad.

Интересная вещь - это при использовании 802.3ad, ifconfig указывает на это практически все RX идет eth0 (2,5 ГБ по сравнению с некоторыми КБ/МБ) и все TX на eth1 на машине A, и инверсия на машине B.

При выяснении iperf использовать многочисленные связи (iperf -c 192.168.1.2 -P 10), полученная сумма очень близко к результатам, отображенным при использовании единственного соединения.

Две машины подключены к Netgear GS728TS, который имеет LACP, настроенный правильно (я надеюсь), с двумя ЗАДЕРЖКАМИ, покрывающими два порта каждый. Режим IEEE 802.3x включен.

iperf хорошо подошедший для этого вида тестов? Если да, там что-то, что я пропускаю?

6
задан 13 April 2017 в 15:22
3 ответа

После обращения в службу поддержки Netgear выясняется, что:

Если вы используете 2 станции (1 клиент / 1 сервер), на самом деле он будет использовать только один канал (отсюда 1 Гбит / с / 940 Мбит / с), используемый канал определяется алгоритмом хеширования LACP.

Чтобы выйти за предел в 1 Гбит / с, вам необходимо будет протестировать более одного клиента. Источник: ответ службы поддержки Netgear

В том же ответе на запрос есть ссылка на сообщение на публичном форуме Netgear , где мы можем прочитать следующее:

Вы можете получить совокупное значение 2 Гбит / с только тогда, когда алгоритм хеширования LACP помещает несколько потоков трафика разными путями, и это не всегда. При небольшом количестве клиентов (2 в вашем случае) велика вероятность того, что они оба могут перейти по одной и той же ссылке.

Для тех, кто не хочет читать все обсуждения на форуме, вот ключевые моменты:

  • Чтобы воспользоваться LACP, к серверу должно быть подключено как минимум два клиента. Один клиент будет использовать только один канал, что ограничит его скорость до 1 Гбит / с.

  • Два клиента должны использовать разные каналы, чтобы получить выгоду от LACP.

  • При наличии только двух сетевых адаптеров на сервере 50% шанс получить одну и ту же ссылку от двух клиентов, что приведет к ограничению общей скорости на уровне 1 Гбит / с. Три сетевых адаптера уменьшают вероятность до 33%, четыре - до 25%.

В заключение, Netgear GS728TS не может обеспечить скорость от 1,4 до 1,8 Гбит / с между двумя машинами.

2
ответ дан 3 December 2019 в 00:35

Связанные интерфейсы не предоставляют дополнительную полосу пропускания отдельным сетевым потокам. Таким образом, если вы используете только одну копию iperf, вы сможете одновременно использовать только один сетевой интерфейс. Если у вас есть два сетевых адаптера в лаге, вам понадобится как минимум две полностью независимых копии iperf, запущенные на компьютере, чтобы увидеть любое одновременное использование. Это применимо и к фактическим нагрузкам - например, клиент Samba по-прежнему будет видеть пропускную способность только 1 ГБ, но два клиента могут видеть 1 ГБ каждый, если у вашего лага есть два сетевых адаптера. Все это предполагает, что у вас есть задержка, настроенная для использования обоих сетевых адаптеров (опция 802.3ad сделает это).

2
ответ дан 3 December 2019 в 00:35

Эти вопросы и ответы были очень полезны для Мне нужно понять связывание с LACP, но нет конкретного примера, как проверить пропускную способность около 1,8 Гбит / с. Для меня было важно проверить это, поэтому я расскажу, как я это тестировал.

Как отметил в своем ответе @ChrisS , важно, чтобы были запущены полностью независимые копии iperf. Для этого я подключаюсь к lacp-серверу с двумя клиентами. На lacp-сервере я использую screen для запуска независимых экземпляров iperf в двух окнах / сессиях экрана. Я также гарантирую наличие независимых потоков данных, используя разные порты для каждого соединения.Мой коммутатор с привязкой LACP к серверу - TP-LINK T1600G-52TS. Все устройства используют Debian 10 (Buster) . Два тестовых клиента подключены к порту коммутатора. Сначала я запускал iperf в режиме сервера на lacp-сервере два раза в пределах screen , а затем выполнял на клиентах одновременно (с использованием ssh):

iperf --time 30 --port 5001 --client lacp-server   # first test client
iperf --time 30 --port 5002 --client lacp-server   # second test client

Вот результаты на lacp-сервере для первого подключения:

lacp-server ~$ iperf -s -p 5001
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.10.11 port 5001 connected with 192.168.10.69 port 44120
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-30.0 sec  2.99 GBytes   855 Mbits/sec

и для второго подключения:

lacp-server ~$ iperf -s -p 5002
------------------------------------------------------------
Server listening on TCP port 5002
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 192.168.10.11 port 5002 connected with 192.168.10.80 port 48930
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-30.0 sec  3.17 GBytes   906 Mbits/sec

Вместе это составляет пропускную способность 855 МБ / с + 906 МБ / с = 1,761 МБ / с.

@ArseniMourzenko отметил в своем ответе:

При наличии всего двух сетевых адаптеров на сервере существует 50% -ная вероятность получить одно и то же соединение от двух клиентов, что приведет к ограничению общей скорости на уровне 1 Гбит / с. . Три сетевых адаптера уменьшают вероятность до 33%, четыре - до 25%.

Я повторил тест более 10 раз, чтобы убедиться в этом, но всегда получаю пропускную способность около 1,8 Гбит / с, поэтому я не могу это подтвердить.

Статистика интерфейсов показывает, что его использование сбалансировано:

lacp-server ~$ ip -statistics link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    3088       30       0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    3088       30       0       0       0       0
2: eno1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    39231276928 25845127 0       0       0       916
    TX: bytes  packets  errors  dropped carrier collsns
    235146272  3359187  0       0       0       0
3: eno2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT group default qlen 1000
    link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    36959564721 24351697 0       0       0       60
    TX: bytes  packets  errors  dropped carrier collsns
    267208437  3816988  0       0       0       0
4: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 5e:fb:29:44:e9:cd brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    69334437898 50196824 0       4253    0       976
    TX: bytes  packets  errors  dropped carrier collsns
    502354709  7176175  0       0       0       0

С тремя тестовыми клиентами я получаю следующие результаты:

  • 522 Мбит / с + 867 Мбит / с + 486 Мбит / с = 1,875 Мбит / с
  • 541 Мбит / с + 863 Мбит / с + 571 Мбит / с = 1,975 Мбит / с
  • 534 Мбит / с + 858 Мбит / с + 447 Мбит / с = 1,839 Мбит / с
  • 443 Мбит / с + 807 Мбит / с + 606 Мбит / с = 1,856 Мбит / с
  • 483 Мбит / с + 805 Мбит / с + 512 Мбит / с = 1,800 Мбит / с


Ссылки:
Агрегация каналов и основы LACP
Связывание LACP и конфигурация Linux
Драйвер связывания Ethernet для Linux HOWTO
RedHat - Использование связывания каналов

1
ответ дан 7 January 2020 в 09:05

Теги

Похожие вопросы