LINUX.ORG.RU
ФорумAdmin

Настройка bonding

 


0

2
 Alpha                 Beta
+-----+   +------+   +------+
|1Gb/s|---|      |   |      |
|     |   |switch|---|10Gb/s|
|1Gb/s|---|      |   |      |
+-----+   +------+   +------+

Дано два сервера с рутовым доступом, альфа и бета. В альфе две сетевые карты по 1 Gb/s. В бете одна сетевая карта на 10 Gb/s. Между ними тупой свитч, настроек нет, 802.3ad не поддерживает. Есть ССЗБ, который хочет максимизировать скорость передачи между альфой и бетой через этот самый свитч, но в этих ваших сетях ничего не понимает.

Настроил на альфе bonding в модусе balance-rr. Вот что выдаёт iperf.

$ iperf -c 10.0.0.2 -r
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 10.0.0.2, TCP port 5001
TCP window size:  144 KByte (default)
------------------------------------------------------------
[  5] local 10.0.0.1 port 60091 connected with 10.0.0.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.0 sec  1.79 GBytes  1.53 Gbits/sec
[  4] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 33331
[  4]  0.0-10.0 sec  1.94 GBytes  1.66 Gbits/sec
$ iperf -c 10.0.0.2 -r -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 10.0.0.2, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  4] local 10.0.0.1 port 56492 connected with 10.0.0.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec
[  4] Sent 893 datagrams
[  4] Server Report:
[  4]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   0.029 ms    0/  893 (0%)
[  3] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 60428
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec   0.011 ms    0/  893 (0%)

В манах написано, что в balance-rr сетевые карты при отправке пакетов друг друга сменяют. Я ожидал, что скорость передачи данных возрастёт, но скорость приёма останется 1 Gb/s. Видимо я чего-то не понимаю?

Во вторых, скорость по udp не сильно-то возрасла. Почему, как исправить?

В третьих, а как это сделать правильно?

Зы: Результаты iperf возпроизводятся.


IMHO ты все правильно понял про b-rr. С альфы на бетту теоретически можно получить 2 гига, а назад только гиг. Интересно, что даже с управляемым коммутатором эта картина не улучшится.

iperf по udp требует указания скорости. По-умолчанию 1Мбит/с. Поднимай скорость пока не начнуться потери.

vel ★★★★★
()
Ответ на: комментарий от vel

С альфы на бетту теоретически можно получить 2 гига, а назад только гиг.

Так и странно же, что и обратно полтора гига, вместо одного идут.

iperf по udp требует указания скорости. По-умолчанию 1Мбит/с. Поднимай скорость пока не начнуться потери.

Где-то в раёне 700-800 Мбит/с, что тоже ниже ожиданий.

suuaq
() автор топика
Ответ на: комментарий от suuaq

На счет 1.5 гига - действительно странно. Еще более странно, что 10G коммутатор неуправляемый. Модель можешь назвать?

MTU больше 1500 ? Для 10G актуально MTU типа 9k

vel ★★★★★
()
Ответ на: комментарий от vel

Еще более странно, что 10G коммутатор неуправляемый. Модель можешь назвать?

Он вероятно управляемый, но у меня нет к нему доступа.

MTU больше 1500 ? Для 10G актуально MTU типа 9k

1500

Пробовал менять, но на альфе начинаются дикие тормоза.

suuaq
() автор топика
Ответ на: комментарий от suuaq

1.5 гигабита говорит о том, что скорее всего коммутатор дублирует пакеты на оба порта. Я бы с бетты послал 1 пакет на альфу, а там на обоих интерфейсах запустил tcpdump, если пакет придет на оба интерфейса, то это плохо.

Если коммутатор управляемый, тогда rr лучше не использовать. Можно попробовать balance-alb(6). Но лучше всего найти доступ к коммутатору.

Про MTU - ты везде поменял MTU, а тормоза появились на альфе? в какую сторону ?

vel ★★★★★
()
Ответ на: комментарий от vel

Я бы с бетты послал 1 пакет на альфу, а там на обоих интерфейсах запустил tcpdump, если пакет придет на оба интерфейса, то это плохо.

Не умею в tcpdump смотреть, с какого интерфейса пришёл пакет. Сделал так.

user@alpha:~$ nc -l -p 5001 &
[1] 1846
user@alpha:~$ tcpdump -i any tcp and dst host 10.0.0.1 and src host 10.0.0.2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
11:32:29.300329 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [S], seq 4180647645, win 29200, options [mss 1460,sackOK,TS val 3368878308 ecr 0,nop,wscale 7], length 0
11:32:29.300329 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [S], seq 4180647645, win 29200, options [mss 1460,sackOK,TS val 3368878308 ecr 0,nop,wscale 7], length 0
11:32:29.300690 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [.], ack 3355086197, win 229, options [nop,nop,TS val 3368878308 ecr 130731], length 0
11:32:29.300690 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [.], ack 1, win 229, options [nop,nop,TS val 3368878308 ecr 130731], length 0
a
11:32:36.683992 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [P.], seq 0:2, ack 1, win 229, options [nop,nop,TS val 3368880154 ecr 130731], length 2
11:32:36.683992 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [P.], seq 0:2, ack 1, win 229, options [nop,nop,TS val 3368880154 ecr 130731], length 2
b
11:32:42.995063 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [P.], seq 2:4, ack 1, win 229, options [nop,nop,TS val 3368881731 ecr 132577], length 2
11:32:42.995063 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [P.], seq 2:4, ack 1, win 229, options [nop,nop,TS val 3368881731 ecr 132577], length 2
11:32:45.708089 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [F.], seq 4, ack 1, win 229, options [nop,nop,TS val 3368882410 ecr 134155], length 0
11:32:45.708089 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [F.], seq 4, ack 1, win 229, options [nop,nop,TS val 3368882410 ecr 134155], length 0
11:32:45.708455 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [.], ack 2, win 229, options [nop,nop,TS val 3368882410 ecr 134833], length 0
11:32:45.708455 IP 10.0.0.2.33353 > 10.0.0.1.5001: Flags [.], ack 2, win 229, options [nop,nop,TS val 3368882410 ecr 134833], length 0
Видимо двойные записи означают, что ты прав. Спасибо.

Можно попробовать balance-alb(6).

В реальной задаче я вероятно так и сделаю. Но в описанном случае у меня только два хоста, а balance-alb вроде как даёт профит только при одновременной коммуникации с несколькими хостами?

Про MTU - ты везде поменял MTU, а тормоза появились на альфе? в какую сторону?

На бете поставил 9000, на альфе пробовал от 1500 до 9000. На 1500 работает нормально, выше - тормозит от альфы к бете. От беты к альфе не пробовал.

suuaq
() автор топика
Ответ на: комментарий от suuaq

На бете поставил 9000, на альфе пробовал от 1500 до 9000. На 1500 работает нормально, выше - тормозит от альфы к бете. От беты к альфе не пробовал.

Странно.

В рамках одного потока данных эта проблема скорее всего не имеет решения. Если потоков несколько, то можно тупо на альфе сделать по подсети на каждый интерфейс, а на бетте сделать вторую сеть алиасом. Дальше потоки (сервисы) привязать к разным интерфейсам. Если там используется iscsi, то можно попробовать multipath.

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.