.png)
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.