LINUX.ORG.RU
ФорумAdmin

Скорость OpenVPN соединения через UDP и TCP

 ,


1

2

Доброго вечера. Помогите разобраться с теорией)

Есть домашний интернет со скоростью 500 Мегабит/сек

Есть OpenVPN в Швейцарии со скоростью 600in 300out Мегабит/сек (проверял speadtest-sli) (1 Core, 1 Gbit RAM, 10GB SSD)

Прямое соединение между ними (iperf запускал) 160 Мегабит/сек

Если подключаюсь по протоколу tcp, скорость 76/53 Мегабит/сек 124 ping

Если меняю протокол на udp то результаты по скорости хуже, хотя пинг становится лучше: 22/15 Мегабит/сек 55 ping

Начитался интернетов, говорят везде, что по udp скорость выше, но у меня обратная история. В чем может быть проблема? Задача максимально увеличить скорость обмена между VPN и моим ПК)

Вот конфиг сервера:

local 1.1.1.1
port 443
proto tcp
dev tun
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
auth SHA512
cipher AES-128-CBC
duplicate-cn
comp-lzo yes
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log /dev/null
verb 0
sndbuf 0
rcvbuf 0
push "sndbuf 0"
push "rcvbuf 0"
mssfix 1400
ca /etc/openvpn/ca.crt
cert /etc/openvpn/vpn-sw.crt
key /etc/openvpn/vpn-sw.key  # This file should be kept secret
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key 0

Конфиг клиента:

client
dev tun
proto tcp
remote 1.1.1.1 443
nobind
resolv-retry infinite
persist-key
persist-tun
auth SHA512
cipher AES-128-CBC
comp-lzo yes
remote-cert-tls server
verb 3
key-direction 1
mssfix 1400

Пробовал менять параметры sndbuf, rcvbuf и mssfix. Результату Ноль.

Ответ на: комментарий от Harliff

Посмотрел.

Когда спидтест запускаю на tcp - проц грузит под 100%

Когда запускаю на udp, то в среднем 30-40% загрузка проца, максимум что видел - 53%.

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

Да, udp тормозит по скорости. Не могу понять в чём дело. В iptables кстати использую не маскарадинг а snat, тк железо не мощное.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 1.1.1.1

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

Возможно где-то дропаются пакеты, а tcp за счет выжимает больше за счет более оптимального алгоритма восстановления - и упирается в проц.

На самом деле тот факт что OpenVPN тормозной - не новость

Процитирую ValdikSS:

OpenVPN однопоточный, и для того, чтобы нагрузка распределялась по ядрам, запускают несколько OpenVPN'ов и объединяют их через bonding или teaming.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от d0br0t4

Возможно у провайдера приоритет обработки udp ниже, кроме того неизвестно как работает openvpn с udp, надо смотреть протокол, может он в 2 раза больше пакетов посылает, чем с tcp

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

Читал ValdikSS и перечитывал по 10 раз! Смутили комменты, буквально везде пишут, что udp работает быстрее. У меня как то пошло. Поэтому и хотел узнать у компетентных, может какие настройки на сомой виртуалке нужно подправить, чтобы работало как надо.

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

Для чистоты эксперимента, надо поднять на соседнем VPS в том же ЦОД openvpn клиента и погонять между ними данные. Радикальный способ поднять производительность - задействовать аппаратное ускорение криптографии.

Обмазываться всякими --mssfix, --tun-mtu, --fragment нужно после того, как будет понятно, какая _нормальная_ скорость на VPS-ах без влияния сети с настройками по дефолту.

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

Многие провайдеры режут UDP из-за торрентов. Режут не по скорости, по pps. Попробуйте поставить параметры ядра

net.core.wmem_max = 8388608
net.core.rmem_max = 8388608
net.core.wmem_default = 2097152
net.core.rmem_default = 4194304
net.ipv4.udp_rmem_min = 4096
net.ipv4.udp_wmem_min = 4096
net.ipv4.udp_mem = 4096 393216 4194304
net.ipv4.tcp_mem = 4096 393216 2097152
net.ipv4.tcp_rmem = 4096 393216 4194304
net.ipv4.tcp_wmem = 4096 393216 2097152

Чем выше задержки, тем выше должны быть параметры. Приведенные рассчитаны на 50 мс. Для 100 мс надо исправить
net.ipv4.udp_mem = 4096 786432 4194304
net.ipv4.tcp_mem = 4096 786432 2097152
net.ipv4.tcp_rmem = 4096 786432 4194304
net.ipv4.tcp_wmem = 4096 786432 2097152
и т.д.

fox-mage
()
Ответ на: комментарий от trancefer

Такой возможности к сожалению нет.

Пробовал шифрование менять, ставить более сложное и наоборот. От этого скорость не меняется.

d0br0t4
() автор топика

В небо. mtu-test / tun-mtu

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

Как насчёт сменить OpenVPN на IPsec IKEv2?

Кстати да, дельное предложение, присоединюсь. ТС если речь о

Задача максимально увеличить скорость обмена между VPN и моим ПК

т.е. две точки «Есть домашний интернет » - «в Швейцарии»

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

Проверял. То же самое.

За ссылку спасибо, почитаю и потестирую. Настораживает в IPsec IKEv2 безопасность. На сколько я знаю PPTP и L2TP+IPsec логируются СОРМом без проблем.

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

Выше я видел только 160 Мбит/с напрямую, без тунеля. Я спрашивал про запуск одновременно двух iperf через один тунель. iperf сам может что-то делать с буфером tcp-сокета и при большом времени прохождения пакета это может снижать скорость.

mky ★★★★★
()

Насколько критичен именно OpenVPN?
Есть возможность проверить скорость через L2 SSH туннель?

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

Детектят openvpn это да, но трафик не читают. С PPTP и L2TP+IPsec задействуется mitm и все посещения как на ладони. Просто openvpn недавно 2-е команды проверяли на уязвимость, всё пофиксили, что было.

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

Соединился с VPN. Запустил iperf на обеих машинах.

MacBook-Pro:~ d0br0t4$ iperf -c 10.8.0.1 -t30 -i5
------------------------------------------------------------
Client connecting to 10.8.0.1, TCP port 5001
TCP window size:  129 KByte (default)
------------------------------------------------------------
[  4] local 10.8.0.10 port 63457 connected with 10.8.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0- 5.0 sec  72.9 MBytes   122 Mbits/sec
[  4]  5.0-10.0 sec  94.0 MBytes   158 Mbits/sec
[  4] 10.0-15.0 sec  94.4 MBytes   158 Mbits/sec
[  4] 15.0-20.0 sec  94.4 MBytes   158 Mbits/sec
[  4] 20.0-25.0 sec  94.4 MBytes   158 Mbits/sec
[  4] 25.0-30.0 sec  94.2 MBytes   158 Mbits/sec
[  4]  0.0-30.0 sec   544 MBytes   152 Mbits/sec

d0br0t4
() автор топика

Есть ещё сервер в Германии, очень мощный (16 ядер, 64 оперативки). Поднял на нём VPN.

Результат TCP 70/48 Mbit/sec

Результат UDP 35/177 Mbit/sec

Хостер режет на Upload трафик

root@Ubuntu ~ # speedtest-cli
Hosted by Hanne & Fomenko GbR (Salzgitter) [111.93 km]: 10.078 ms
Download: 773.50 Mbit/s
Upload: 71.51 Mbit/s

Тут udp вроде норм работает.

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

Не настраивал никогда, думаю с наскоку не смогу. Я думаю это не решит проблему. Что мне это даст?

d0br0t4
() автор топика

по udp тоже openvpn по 443 порту соединяется?

я бы еще посоветовал когда прямое соединение между серверами iperf-ом проверяешь, проверять скорость именно по 443 порту

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