Задать вопрос
juffinhalli
@juffinhalli

Как через коммутаторы получить соединение между Linux серверами 2 Гбит\с?

Дано:
2 сервера под управлением Debian Linux
В каждом сервере выделено 2 сетевые карты
2 одинаковых коммутатора с поддержкой IEEE 802.3ad\LACP (netgear GS748T)
Схема подключения:
------------ ----------------- ----------------- -------------------
| linux... | eth0------port1 | умный.......... | port3-----port1 | умный.........| port3 -------eth0 | второй linux |
| сервер | eth1------port2 | коммутатор | port4-----port2 | коммутатор | port4--------eth1 | сервер...........|
------------ ----------------- ----------------- -------------------
Сетевые настройки на серверах идентичны:
auto bond0
iface bond0 inet static
        address  192.168.88.xx
        netmask  255.255.255.0
        slaves eth0 eth1
        bond_miimon 100
        bond_mode 802.3ad
        bond_xmit_hash_policy layer3+4

Задача:
получить через коммутаторы соединение между Linux серверами 2 Гбит\с (многопоточное)
Мои действия:
Для проверки подключаю сервера напрямую друг к другу и запускаю тест в 2 потока:
root@node178:~# iperf -c 192.168.88.1 -P 2
------------------------------------------------------------
Client connecting to 192.168.88.1, TCP port 5001
TCP window size: 19.6 KByte (default)
------------------------------------------------------------
[  4] local 192.168.88.2 port 41924 connected with 192.168.88.1 port 5001
[  3] local 192.168.88.2 port 41923 connected with 192.168.88.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec
[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec
[SUM]  0.0-10.0 sec  2.19 GBytes  1.88 Gbits/sec
root@node178:~#

Отключение любого одного кабеля не прерывает соединение, лишь падает скорость.
Изменение bond_xmit_hash_policy в значения layer2 или layer2+3 прироста скорости не даёт, только отказоустойчивость.
Далее включаю LACP на коммутаторах, перекидываю кабели и проверяю
root@node178:~# iperf -c 192.168.88.1 -P 2
------------------------------------------------------------
Client connecting to 192.168.88.1, TCP port 5001
TCP window size: 19.6 KByte (default)
------------------------------------------------------------
[  4] local 192.168.88.2 port 41926 connected with 192.168.88.1 port 5001
[  3] local 192.168.88.2 port 41925 connected with 192.168.88.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 9.6 sec   536 MBytes   468 Mbits/sec
[  4]  0.0-10.0 sec   587 MBytes   492 Mbits/sec
[SUM]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

Вновь проверяю: отключение любого одного кабеля не прерывает соединение, скорость прежняя 941 Mbits/sec
Получается LACP на коммутаторах работает, но только на половину - обеспечена только отказоустойчивость.
Возможности менять hash_policy на коммутаторах нет.
Вопросы:
1. Netgear меня обманул заявив полную поддержку IEEE 802.3ad(т.к. обеспечена только отказоустойчивость)?
2. В linux в модуле ядра стандарт IEEE 802.3ad реализован не полностью(т.к. увеличение скорости возможно только при прямом подключении)?
3) Как всё же получить через коммутаторы соединение между Linux серверами 2 Гбит\с (многопоточное).
P.S. Готов заказать другие коммутаторы
P.P.S. Cisco мне не по карману.
P.P.P.S Под много поточным подразумеваю передачу данных в двух потоках в одну и ту же сторону
  • Вопрос задан
  • 1151 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@dredd_krd
Если нужно по результирующему линку гонять соединения только между 2-мя серверами, то поможет режим balance-rr (bond_xmit_hash_policy его умеет) - он делит трафик не по адресам/макам/итп, а последовательно каждый следующий пакет отправляет то туда, то сюда.

Фундаментальный вопрос: какой стандарт портов в сетевых картах и коммутаторах? 1000Base-T или 1000Base-TX?
Дело в том, что стандарт ТX даёт гигабит в каждом направлении по одному линку, когда T подразумевает гигабит в сумме входящего/исходящего направлений. Сетевухи могут быть TX, но коммутаторов, поддерживающих TX, я видел лишь единицы, и стоили они дорого.
Так вот прикол в том, что стандарт Т - это узкое место, и если коммутаторы не поддерживают TX (а по тестам я предполагаю, что это так), то одновременно 2 гигабита туда и 2 гигабита обратно не будет никогда.

Так вот, ответы:
1. Возможно, нет, надо сначала посмотреть на тип портов и убедиться в том, что "затык" может быть именно в этом
2. Полностью. Как правило, если соединений много, то layer2+3, layer3+4 и т.п. - они работают замечательно и стараются сбалансировать трафик максимально ровно, однако при одном компьютере (и особенно на одном соединении, которое генерирует iperf!) смысла в них крайне мало, поэтому такой тип трафика нормально балансировать будет только round-robin.

UPD:
Посмотрел, в этой модели порты "IEEE 802.3ab 1000BASE-T Gigabit Ethernet", т.е. по каждому гигабит будет в сумме направлений. В таком случае о полных 2-х гигабитах рекомендую временно забыть и проверять iperf-ом трафик не одновременно, а сначала в одну, потом в другую сторону, и следить при этом за равномерностью загрузки линков (с точки зрения коммутатора), включив со сторон серверов round-robin. Если трафик по обоим каналам будет идти равномерно, значит проблема только в типе порта. Значит надо искать коммутатор с поддержкой 1000BASE-TX
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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