OpenVPN podría ser mucho más rápido próximamente con ovpn-dco

07OpenVPN es una de las VPN más utilizadas a nivel doméstico y profesional, utiliza todos los estándares basados en TLS 1.2 y TLS 1.3, por tanto, la seguridad que obtendremos es óptima. Otra característica muy importante de OpenVPN es que incorpora una grandísima cantidad de opciones de configuración, tanto para el canal de datos, canal de control e incluso de cara al enrutamiento y funcionamiento interno de la VPN. La única parte negativa de OpenVPN es que, actualmente, es muchísimo más lenta que WireGuard VPN bajo las mismas condiciones de hardware y red, pero esto podría acabar muy pronto y tener ambas un rendimiento similar.

En RedesZone tenemos un amplio tutorial de configuración de OpenVPN donde os explicamos en detalle todas las características técnicas, cómo configurar el servidor VPN, los clientes VPN e incluso os indicamos varios problemas con sus soluciones, para que podáis configurar desde cero un túnel VPN con este software. También tenemos un tutorial con la misma información para WireGuard, una VPN que se ha hecho un hueco entre nosotros muy rápido debido a su facilidad de configuración, a la seguridad por defecto que incorpora, y lo más importante: a la velocidad de transferencia.

Velocidad de OpenVPN vs WireGuard vs L2TP/IPsec

En RedesZone hemos realizado un test de velocidad con un hardware de gama alta tanto en cliente como en servidor para comprobar el rendimiento real de las tres VPN más utilizadas, tanto a nivel doméstico como a nivel profesional.

El cliente VPN tiene el siguiente hardware:

  • Procesador: AMD Ryzen 7 3800x, este procesador dispone de un total de 8 núcleos y 16 hilos, lo más importante es que dispone de aceleración de cifrado por hardware AES-NI, por tanto, siempre que se utilice AES en el canal de comunicación el rendimiento será óptimo.
  • RAM: 32GB RAM DDR4 3200MHz
  • Conectividad: ASUS XG-C100C a 10Gbps con switch gestionable D-Link DXS-1210-10TS y cables Cat7, garantizando los 9,5Gbps reales de ancho de banda.
  • Sistema operativo usado en las pruebas: Windows 10 última versión.
  • Herramienta utilizada: iPerf 3

El servidor VPN tiene el siguiente hardware:

  • Servidor NAS utilizado QNAP TS-1277
  • Procesador: AMD Ryzen 7 2700, este procesador dispone de un total de 8 núcleos y 16 hilos, lo más importante es que dispone de aceleración de cifrado por hardware AES-NI, por tanto, siempre que se utilice AES en el canal de comunicación el rendimiento será óptimo.
  • RAM: 64GB RAM DDR4
  • Conectividad: QNAP QXG-10G2T-107 a 10Gbps con switch D-Link DXS-1210-10TS y cables Cat7.
  • Sistema operativo utilizado en las pruebas QTS 4.4.1.
  • VPN L2TP/IPsec de QVPN y iPerf3 instalado en QTS.
  • OpenVPN y WireGuard instalados en Linux (Ubuntu 18.04 LTS).
  • iPerf3 instalado en Linux Station (Ubuntu 18.04 LTS).

La configuración de las diferentes VPN de las pruebas ha sido la siguiente (para el canal de datos):

  • OpenVPN: canal de datos con AES-256-GCM.
  • WireGuard: ChaCha20/Poly1305
  • L2TP/IPsec: canal de datos con AES-128.

En principio, con esta configuración de AES, tanto OpenVPN como L2TP/IPsec deberían tener ventaja porque tenemos aceleración de cifrado por hardware, sin embargo, el rendimiento obtenido es el siguiente:

Tal y como habéis visto, WireGuard es el doble de rápido que L2TP/IPsec o OpenVPN, quedando demostrado que esta VPN es realmente rápida comparado con sus más directos rivales.

OpenVPN se podrá integrar en el Kernel Linux próximamente

La ventaja que tiene WireGuard frente al resto de VPN es que está integrado directamente en el Kernel, por tanto, es realmente eficiente y el rendimiento es espectacular, tal y como habéis visto en la tabla comparativa. Ahora, el equipo de desarrollo de OpenVPN está desarrollando la característica «OpenVPN Data Channel Offload (ovpn-dco)» que se podrá integrar en el Kernel de Linux con un módulo específico, todo ello para conseguir un mejor rendimiento en términos de latencia y velocidad. Explicamos en otro artículo cómo evitar que la VPN esté bloqueada.

Lo que se incorporará a este módulo es todo el canal de datos de OpenVPN, haciendo un offload en la carga del servidor y del cliente. Además, un detalle muy importante es que actualmente esto solamente funciona con AES-256-GCM, por tanto, si utilizamos algún otro tipo de cifrado simétrico en el canal de datos, esto no funcionará y seguiremos teniendo el mismo rendimiento de siempre. El canal de control seguirá estando fuera del Kernel, aunque es realmente rápido gracias a la incorporación de TLS 1.3 en las últimas versiones del protocolo OpenVPN. Gracias a este módulo, evitaremos la transferencia de carga útil entre el espacio del kernel y el espacio del usuario, optimizando enormemente el rendimiento.

En el repositorio de GitHub podéis encontrar todo el código fuente actual, aunque debemos tener en cuenta que esta característica es actualmente experimental y está en desarrollo, por lo que no es recomendable usarla en producción, sino únicamente en pruebas para comprobar si hay algún tipo de problema de rendimiento.

¡Sé el primero en comentar!