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

OpenVPN низкая скорость, MTU, buffers?

Здравствуйте! Помогите разобраться пожалуйста.

OpenVPN, сервер CentOS 7, клиент Windows 7
TUN, UDP

Низкая скорость в тунеле, без тунеля 100мбит, в тунеле 30-40
TUN или TAP без разницы, пробовал разные, нормальное железо, не думаю что дело в шифровании/lzo и тд.

Начал копать, пишут что может быть дело в MTU, в конфигах про mtu у меня нет ничего, запустил встроенное в OpenVPN тестирование на сервере, добавив в конфиг mtu-test

Вывод тестирования

May 10 16:31:00 server openvpn[8485]: client/11.22.33.44:7777 NOTE: Beginning empirical MTU test -- results should be available in 3 to 4 minutes.
May 10 16:34:01 server openvpn[8485]: client/11.22.33.44:7777 NOTE: Empirical MTU test completed [Tried,Actual] local->remote=[1569,1457] remote->local=[1569,1457]
May 10 16:34:01 server openvpn[8485]: client/11.22.33.44:7777 NOTE: This connection is unable to accomodate a UDP packet size of 1569. Consider using --fragment or --mssfix options as a workaround.

Я не пойму что мне надо сделать? Какой MTU выставлять, и что указывать в fragment/mssfix, прочитал мануал и так и сяк, не могу понять, что надо подкрутить...

Проверил на всех интерфейсах на сервере и на клиенте стоит MTU 1500, проверил пинг с клиента на сервер пролазиет пакет только 1472, больше начинает фрагментироваться, что вроде насколько я понимаю говорит что у меня(клиента) MTU как раз 1500.

У меня какие-то проблемы с MTU или нет? Подскажите пожалуйста не могу понять.

И ещё, в процессе поиска информации по низкой скорости тунеля openvpn, нашел информацию про буфферы, которые очень низки по умолчанию, как говорят.
Смотрю в лог клиента Windows 7
Tue May 10 17:28:10 2016 OpenVPN 2.3.10 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Mar 10 2016
Tue May 10 17:28:10 2016 Windows version 6.1 (Windows 7)
Tue May 10 17:28:10 2016 library versions: OpenSSL 1.0.1s 1 Mar 2016, LZO 2.09
Tue May 10 17:28:11 2016 Socket Buffers: R=[8192->8192] S=[8192->8192]

Смотрю лог сервера Linux
May 10 16:30:43 server systemd: Starting OpenVPN Robust And Highly Flexible Tunneling Application On server/tun...
May 10 16:30:43 server openvpn[8484]: OpenVPN 2.3.10 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jan 4 2016
May 10 16:30:43 server openvpn[8484]: library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.06
May 10 16:30:43 server openvpn[8485]: Socket Buffers: R=[212992->212992] S=[212992->212992]


Вызывает вопросы:
1) Буферы разные это нормально?
2) Размер их не маленький? Cмущает цифра 8192 в windows.

Тут почитал про буферы.
В конфиг сервера написал

sndbuf 524288
rcvbuf 524288
push "sndbuf 524288"
push "rcvbuf 524288"

на сервере стало - Socket Buffers: R=[212992->425984] S=[212992->425984]
на клиенте стало - Socket Buffers: R=[8192->524288] S=[8192->524288]

Скорость существенно возрасла, до значений которые ожидались ~80 мбит

Непонятно только, клиент ставит указанный размер 524288, а сервер 425984, это нормально? Нужно делать их одинаковыми или пусть остаются так?

В целом не понятно, моя проблема низкой скорости в буферах или в mtu?
Надо ли мне крутить MTU если с увеличенными буферами скорость стала хорошей?

Благодарю за ответы.
  • Вопрос задан
  • 14328 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 1
ValdikSS
@ValdikSS
В /etc/sysctl.d/network.conf добавьте:

net.core.rmem_max = 6291456
net.core.wmem_max = 4194304
net.core.wmem_default = 212992
net.core.rmem_default = 212992


И выполните sudo systemctl -p /etc/sysctl.d/network.conf
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
karabanov
@karabanov Куратор тега Linux
Системный администратор
Скорость существенно возрасла, до значений которые ожидались ~80 мбит

Ну всё, успех. Остальное это затраты на шифрование. И прочие накладные расходы...
Ответ написан
@res2001
Developer, ex-admin
Явно МТУ тут был ни причем. Проблемы с МТУ проявляются по другому.
Ответ написан
@mduser Автор вопроса
Странно ещё то, что при установленных в конфиге в линуксе
sndbuf 524288
rcvbuf 524288
он ставит
Socket Buffers: R=[212992->425984] S=[212992->425984]

хотя
cat /proc/sys/net/core/rmem_max
212992
cat /proc/sys/net/core/wmem_max
212992

типа максимум 212992 вообще не должно установиться? или я не то смотрю?
Ответ написан
Ваш ответ на вопрос

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

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