Назад | Перейти на главную страницу

Устранение снижения скорости передачи данных по VPN на 70% по сравнению с SSH? (Протестировано OpenVPN, IPSec / L2TP, OpenSSH, SoftEther)

В настоящее время я настраиваю VPN типа "сеть-сеть" между двумя VPS, для чего требуются как исходящие, так и входящие соединения. Он будет использоваться приложением с высокой пропускной способностью, поэтому мне нужна максимальная скорость, которую я могу получить через соединение.

Используя iperf3, я надежно получаю около 600 Мбит / с по соединению с пингом ~ 30 мс.

По OpenSSH SCP я получаю около 260 Мбит / с, что меня устраивает, учитывая дополнительное шифрование.

Я пробовал различные конфигурации VPN, в основном с OpenVPN. Я пробовал изменения sndbuf / rcvbuf, без шифрования, без сжатия, но я все еще обычно получаю только 20 Мбит с UDP, 40 Мбит с TLS на порту 443.

Я также установил IPSec / L2TP, SoftEther (хотя у меня было всего около 500 Кбит / с) и встроенный адаптер Tun OpenSSH. Ни один из них не смог дать мне скорость iperf выше 40 Мбит / с.

Я внимательно следил за жестким диском и процессором каждого узла, и ни один из них не был перегружен. Один сервер значительно менее мощный, но во время теста использует только ~ 30% ЦП.

Я как бы в растерянности. Мне нужно что-то, что может достичь скорости выше 200 Мбит / с (что я точно знаю, возможно), и просто нужно маршрутизировать от одного виртуального интерфейса к другому. Теоретически SoftEther и предназначен для этого. Должен ли я продолжать попытки исправить SoftEther, чтобы получить какие-либо реальные скорости?

Есть ли предложения по дополнительным аспектам тестирования / отладки / настройки, чтобы попытаться запустить надежный туннельный интерфейс? Есть ли другое программное обеспечение, которое поможет маршрутизировать входящие соединения, чтобы я мог использовать обычный прокси-подобный туннель? Спасибо!

Учитывая ссылку, размещенную в комментариях, я решил еще раз взглянуть на эту статью об openvpn: https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux

Я смог достичь в среднем ~ 150 Мбит / с, используя пару настроек из этой статьи. Вот шаги, которые я предпринял, чтобы настроить OpenVPN для достижения этой цели.

Вот шаги, которые я пробовал по порядку:

  • Настройки по умолчанию (с AES-128): 14,7 Мбит / с
  • Включить mssfix 0, tun-mtu 6000, фрагмент 0: 16,3 Мбит / с
  • Установка 'cipher none': 17,7 Мбит / с
  • Обратно к AES-128, tun-mtu 9000: 22,0 Мбит / с
  • tun-mtu 18000: 27,2 Мбит / с
  • tun-mtu 36000: 37,2 Мбит / с
  • tun-mtu 60000: 44,9 Мбит / с
  • Установка 'cipher BF-CBC' (не большая разница): 44.0Mbit / s
  • sndbuf 393216, rcvbuf 393216 на сервере и клиенте: 67,1 Мбит / с
  • Увеличен размер буферов Linux UDP Recv: 102 Мбит / с
  • iperf3 [...] -P 10 для включения 10 параллельных подключений: SUM: 135 Мбит / с - 170 Мбит / с

Вот окончательный вывод iperf3:

64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=37.2 ms

$ iperf3 -c 10.8.0.1 -p 5201
Connecting to host 10.8.0.1, port 5201
[  4] local 10.8.0.2 port 59230 connected to 10.8.0.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  10.3 MBytes  86.5 Mbits/sec    2    632 KBytes
[  4]   1.00-2.00   sec  12.0 MBytes   101 Mbits/sec    7    569 KBytes
[  4]   2.00-3.00   sec  11.4 MBytes  95.8 Mbits/sec    7    443 KBytes
[  4]   3.00-4.00   sec  10.9 MBytes  91.2 Mbits/sec    5    443 KBytes
[  4]   4.00-5.00   sec  11.7 MBytes  98.4 Mbits/sec    2    759 KBytes
[  4]   5.00-6.00   sec  13.0 MBytes   109 Mbits/sec    6    822 KBytes
[  4]   6.00-7.00   sec  13.5 MBytes   113 Mbits/sec    5    696 KBytes
[  4]   7.00-8.00   sec  13.9 MBytes   117 Mbits/sec    6    696 KBytes
[  4]   8.00-9.00   sec  11.8 MBytes  98.9 Mbits/sec    5    696 KBytes
[  4]   9.00-10.00  sec  12.5 MBytes   105 Mbits/sec    4    696 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   121 MBytes   102 Mbits/sec   49             sender
[  4]   0.00-10.00  sec   120 MBytes   101 Mbits/sec                  receiver

По сравнению с прямым подключением без VPN:

$ iperf3 -c [...] -p 5201
Connecting to host [...], port 5201
[  4] local [...] port 52172 connected to [...] port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  51.9 MBytes   435 Mbits/sec    0   3.03 MBytes
[  4]   1.00-2.00   sec  73.3 MBytes   615 Mbits/sec    0   3.03 MBytes
[  4]   2.00-3.00   sec  73.3 MBytes   615 Mbits/sec    0   3.03 MBytes
[  4]   3.00-4.00   sec  72.7 MBytes   610 Mbits/sec    0   3.03 MBytes
[  4]   4.00-5.00   sec  72.1 MBytes   605 Mbits/sec    0   3.03 MBytes
[  4]   5.00-6.00   sec  73.7 MBytes   619 Mbits/sec    0   3.03 MBytes
[  4]   6.00-7.00   sec  75.0 MBytes   629 Mbits/sec    0   3.03 MBytes
[  4]   7.00-8.00   sec  72.5 MBytes   608 Mbits/sec    0   3.03 MBytes
[  4]   8.00-9.00   sec  74.9 MBytes   628 Mbits/sec    0   3.03 MBytes
[  4]   9.00-10.00  sec  72.6 MBytes   609 Mbits/sec    0   3.03 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   712 MBytes   597 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   710 MBytes   596 Mbits/sec                  receiver

Что я выучил

  • Моя сеть значительно выиграла от увеличения тун-мту.
  • Перегрузка UDP - огромная проблема. Увеличение recvbuf UDP в Linux значительно улучшило производительность UDP. Повторно переданные пакеты в iperf показывают, что перегрузка по-прежнему является проблемой. Любые предложения по улучшению приветствуются.
  • Параллельные подключения iperf3 помогли еще больше повысить скорость.
  • Шифры не сильно влияли на производительность, пока ядро ​​процессора оставалось ниже 100%.
  • Сложно настроить VPN через открытый Интернет, который обеспечивает гигабитную скорость.
  • Это все еще 1/6 производительности простой сети.