Depois de vários ajustes no Googling e no arquivo de configuração, encontrei a solução. Agora estou obtendo velocidades sustentadas de 60Mbps e estouro de até 80Mbps. É um pouco mais lento do que as taxas de transferência que recebo fora da VPN, mas acho que isso é o melhor possível.
O primeiro passo foi definir sndbuf 0
e rcvbuf 0
na configuração do OpenVPN para o servidor e o cliente.
Eu fiz essa alteração depois de ver uma sugestão para fazê-lo em um postagem no fórum público (que é uma tradução em inglês de uma postagem original em russo ) que citarei aqui:
It's July, 2004. Usual home internet speed in developed countries is 256-1024 Kbit/s, in less developed countries is 56 Kbit/s. Linux 2.6.7 has been released not a long ago and 2.6.8 where TCP Windows Size Scaling would be enabled by default is released only in a month. OpenVPN is in active development for 3 years already, 2.0 version is almost released. One of the developers decides to add some code for socket buffer, I think to unify buffer sizes between OSes. In Windows, something goes wrong with adapters' MTU if custom buffers sizes are set, so finally it transformed to the following code:
#ifndef WIN32
o->rcvbuf = 65536;
o->sndbuf = 65536;
#endif
If you used OpenVPN, you should know that it can work over TCP and UDP. If you set custom TCP socket buffer value as low as 64 KB, TCP Window Size Scaling algorithm can't adjust Window Size to more than 64 KB. What does that mean? That means that if you're connecting to other VPN site over long fat link, i.e. USA to Russia with ping about 100 ms, you can't get speed more than 5.12 Mbit/s with default OpenVPN buffer settings. You need at least 640 KB buffer to get 50 Mbit/s over that link. UDP would work faster because it doesn't have window size but also won't work very fast.
As you already may guess, the latest OpenVPN release still uses 64 KB socket buffer size. How should we fix this issue? The best way is to disallow OpenVPN to set custom buffer sizes. You should add the following code in both server and client config files:
sndbuf 0
rcvbuf 0
O autor prossegue descrevendo como enviar ajustes de tamanho do buffer para o cliente se você não estiver no controle da configuração do cliente.
Depois de fazer essas alterações, minha taxa de transferência aumentou para 20Mbps. Vi então que a utilização da CPU estava um pouco alta em um único núcleo, então removi comp-lzo
(compactação) da configuração no cliente e no servidor. Eureka! As velocidades de transferência aumentaram para 60Mbps sustentadas e 80Mbps de burst.
Espero que isso ajude alguém a resolver seus próprios problemas com a lentidão do OpenVPN!