Corrigindo lentidão de 70% na velocidade de transferência por VPN em comparação com SSH? (Testado OpenVPN, IPSec/L2TP, OpenSSH, SoftEther)

Corrigindo lentidão de 70% na velocidade de transferência por VPN em comparação com SSH? (Testado OpenVPN, IPSec/L2TP, OpenSSH, SoftEther)

Atualmente estou configurando uma VPN site a site entre dois VPSes que requer conexões de entrada e de saída. Ele será usado por um aplicativo de alta largura de banda, portanto, preciso da velocidade máxima possível na conexão.

Usando o iperf3, estou obtendo cerca de 600 Mbit/s na conexão de maneira confiável, com ping de aproximadamente 30 ms.

No OpenSSH SCP, obtenho cerca de 260 Mbit/s, o que me deixa satisfeito, dada a criptografia adicional.

Tenho tentado vários tipos de configurações de VPNs, principalmente com OpenVPN. Eu tentei alterações sndbuf/rcvbuf, sem criptografia, sem compactação, mas geralmente só consigo 20 Mbit com UDP, 40 Mbit com TLS na porta 443.

Eu também configurei IPSec/L2TP, SoftEther (embora eu tenha conseguido apenas 500 Kbit/s com isso) e adaptador tun integrado OpenSSH. Nenhum deles foi capaz de me fornecer uma velocidade iperf acima de 40Mbit/s.

Tenho observado de perto o HDD e a CPU de cada nó e nenhum deles ficou saturado. Um servidor é significativamente menos poderoso, mas atinge apenas cerca de 30% de uso da CPU durante o teste.

Estou meio perdido. Preciso de algo que possa atingir velocidades acima de 200 Mbit/s (o que tenho certeza que é possível) e só precisa rotear de uma interface virtual para outra. Teoricamente, é para isso que serve o SoftEther. Devo continuar tentando consertar o SoftEther para obter qualquer tipo de velocidade real?

Alguma sugestão de mais aspectos para testar/depurar/configurar para tentar colocar uma interface de túnel sólida em funcionamento? Existe outro software que ajudará a rotear as conexões de entrada para que eu possa usar um túnel normal semelhante a um proxy? Obrigado!

Responder1

Dado o link postado nos comentários, resolvi dar uma outra olhada neste artigo do openvpn: https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux

Consegui atingir uma média de aproximadamente 150 Mbit/s usando algumas das configurações deste artigo. Aqui estão as etapas que executei para configurar meu OpenVPN para conseguir isso.

Estas são as etapas que tentei em ordem:

  • Configurações padrão (com AES-128): 14,7 Mbit/s
  • Habilitar mssfix 0, tun-mtu 6000, fragmento 0: 16,3 Mbit/s
  • Configuração de 'cifra nenhuma': 17,7 Mbit/s
  • De volta ao AES-128, tun-mtu 9000: 22,0 Mbit/s
  • tun-mtu 18000: 27,2 Mbit/s
  • tun-mtu 36000: 37,2 Mbit/s
  • tun-mtu 60000: 44,9Mbit/s
  • Configuração de 'cifra BF-CBC' (não há muita diferença): 44,0Mbit/s
  • sndbuf 393216, rcvbuf 393216 no servidor e cliente: 67,1 Mbit/s
  • Aumento do tamanho dos buffers Linux UDP Recv: 102Mbit/s
  • iperf3 [...] -P 10 para habilitar 10 conexões paralelas: SUM:135 Mbit/s - 170 Mbit/s

Aqui está uma saída final do 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

Comparado à conexão direta não 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

O que eu aprendi

  • Minha rede se beneficiou significativamente com o aumento do tun-mtu.
  • O congestionamento UDP é um grande problema. Aumentar o recvbuf UDP do Linux melhorou significativamente o desempenho do UDP. Os pacotes retransmitidos no iperf mostram que o congestionamento ainda é um problema.Quaisquer sugestões para melhorar são apreciadas.
  • Conexões paralelas iperf3 ajudaram a aumentar ainda mais a velocidade.
  • As cifras não afetaram muito o desempenho, desde que o núcleo da CPU permanecesse abaixo de 100%.
  • É difícil configurar uma VPN na Internet aberta que atinja velocidades de gigabit.
  • Isso ainda é 1/6 do desempenho da rede simples.

informação relacionada