Насколько я понимаю связывание приносит среди других преимуществ способность увеличить скорость сети между двумя машинами в LAN.
Связывание [...] означает комбинировать несколько сетевых интерфейсов (NICs) к единственной ссылке, обеспечивая или высокую доступность, выравнивание нагрузки, максимальную пропускную способность или комбинацию их.
Источник: документация Ubuntu, шахта акцента.
У меня есть связывание, настроенное на двух серверах; у обоих есть два адаптера NIC на 1 Гбит/с. Когда скорость тестирования между теми серверами использование iperf
, отчет указывает:
balance-rr
связывание режима.802.3ad
,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
хорошо подошедший для этого вида тестов? Если да, там что-то, что я пропускаю?
После обращения в службу поддержки 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 Гбит / с между двумя машинами.
Связанные интерфейсы не предоставляют дополнительную полосу пропускания отдельным сетевым потокам. Таким образом, если вы используете только одну копию iperf, вы сможете одновременно использовать только один сетевой интерфейс. Если у вас есть два сетевых адаптера в лаге, вам понадобится как минимум две полностью независимых копии iperf, запущенные на компьютере, чтобы увидеть любое одновременное использование. Это применимо и к фактическим нагрузкам - например, клиент Samba по-прежнему будет видеть пропускную способность только 1 ГБ, но два клиента могут видеть 1 ГБ каждый, если у вашего лага есть два сетевых адаптера. Все это предполагает, что у вас есть задержка, настроенная для использования обоих сетевых адаптеров (опция 802.3ad сделает это).
Эти вопросы и ответы были очень полезны для Мне нужно понять связывание с 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
С тремя тестовыми клиентами я получаю следующие результаты:
Ссылки:
Агрегация каналов и основы LACP
Связывание LACP и конфигурация Linux
Драйвер связывания Ethernet для Linux HOWTO
RedHat - Использование связывания каналов