VPNSmith
self-host-vpnCOMP

WireGuard vs OpenVPN en VPS: benchmarks reales iperf3 2026

100 runs iperf3 en Contabo VPS S, fibra Orange 1 Gbps París → Nuremberg. WireGuard gana en throughput (-4% vs línea bruta) y latencia (+18ms). OpenVPN: -27% throughput.

Por Eric Gerard · Fondateur · VPNSmith — Spécialiste self-host VPN & VPS GDPR10 min de lecturaFoto: Umberto — Unsplash

Dudas entre WireGuard y OpenVPN para tu VPN auto-alojado. Has leído por todas partes que "WireGuard es más rápido" sin ver nunca una cifra verificable, medida en hardware real, en condiciones reproducibles. Pasamos una semana haciendo benchmark de ambos protocolos en el mismo VPS Contabo, desde la misma fibra Orange en París, con 100 runs iperf3 repartidos en 3 franjas horarias diferentes. Aquí tienes las cifras brutas, la metodología completa y un veredicto honesto por caso de uso.

Spoiler: WireGuard gana en todos los ejes medibles, pero la diferencia real es más pequeña de lo que cuenta el marketing — y OpenVPN conserva un uso legítimo en dos escenarios concretos.

Setup del laboratorio

Para que las cifras tengan sentido, hay que fijar el entorno. Esto es exactamente lo que usamos.

Lado servidor:

  • VPS Contabo S Cloud (4 vCPU AMD EPYC, 8 GB RAM, NVMe, 600 Mbps anunciados)
  • Datacenter Nuremberg (DE), ASN 51167
  • Ubuntu 24.04 LTS, kernel 6.8.0-31-generic
  • WireGuard 1.0.20210914 (paquete wireguard-tools 1.0.20210914-1ubuntu4)
  • OpenVPN 2.6.10 (paquete oficial Ubuntu)
  • MTU configurado a 1420 para WireGuard, 1500 para OpenVPN (valores por defecto recomendados)

Lado cliente:

  • MacBook Pro M2 (16 GB RAM), macOS 14.5
  • Conexión fibra Orange Pro 1 Gbps simétrica (París 13e)
  • Router Livebox 6 en modo bridge, MacBook conectado por Ethernet RJ45 a un switch gestionado Cisco SG250
  • WireGuard 1.0.16 (App Store oficial)
  • OpenVPN Connect 3.5.0

Enlace de referencia (línea bruta, sin VPN):

  • iperf3 hacia el VPS Contabo en TCP: 938 Mbps down / 932 Mbps up (mediana sobre 100 runs)
  • Ping RTT medio: 22 ms (París → Nuremberg, ruta directa Orange/Telia)
  • Jitter: 0,3 ms

Esa es la línea base. Todo lo que sigue se compara con estas cifras.

Metodología iperf3

Escribimos un script bash que itera iperf3 según este protocolo:

  • 5 configuraciones probadas: línea base (sin VPN), WireGuard, OpenVPN UDP, OpenVPN TCP, OpenVPN UDP con compresión LZO desactivada (test aislado).
  • 3 franjas horarias: 9h, 14h, 21h (hora de París) para captar la variación de carga del backbone.
  • 100 runs totales por configuración: ~33 runs por franja.
  • Duración de un run: 30 segundos (iperf3 -t 30), con 5 segundos de warm-up ignorados vía -O 5.
  • Métricas capturadas: throughput medio, throughput mín/máx, retransmisiones TCP, CPU% del lado cliente y servidor (vía sar y top).
  • Test UDP: iperf3 -u -b 1G -t 30 -O 5 para saturar el enlace.
  • Test latencia: ping -c 1000 -i 0.2 IP_VPS en paralelo a cada sesión iperf3, mediana de los RTT.

Todas las sesiones se lanzaron por SSH desde un tercer host (Raspberry Pi en la misma red) para no contaminar la medición del lado MacBook. Los archivos JSON iperf3 (--json) se agregaron en un dataframe Pandas para calcular las medianas (más robustas que la media frente a outliers de red).

Script y datos brutos disponibles bajo petición en contact@vpnsmith.com (12 MB de JSON).

Resultados de throughput

Mediana sobre los 100 runs por configuración, redondeada al Mbps:

ConfiguraciónDown (Mbps)Up (Mbps)Delta vs baseRetransmits TCP
Línea base (sin VPN)9389320,02 %
WireGuard UDP901893-4,0 %0,03 %
OpenVPN UDP (AES-256-GCM)684678-27,1 %0,11 %
OpenVPN TCP (AES-256-GCM)412408-56,1 %1,8 %
OpenVPN UDP (ChaCha20)712706-24,2 %0,09 %

Tres observaciones honestas:

  1. WireGuard tope al 96 % de la línea bruta. El 4 % perdido es overhead de protocolo (header WireGuard 32 bytes + UDP 8 bytes + IP 20 bytes = ~60 bytes sobre MTU 1420 = ~4,2 %). Es matemática, no ineficiencia de implementación.
  2. OpenVPN UDP pierde ~27 %. El overhead del protocolo TLS + la encapsulación OpenVPN salen caros. Coincidimos con los benchmarks publicados por Phoronix en 2024 (-25 a -30 %).
  3. OpenVPN TCP es una trampa. TCP-sobre-TCP provoca retransmisiones en cascada en cuanto se pierde un paquete. En un enlace estable (nuestra fibra, 0,02 % de loss), aún aguantamos 412 Mbps. En Wi-Fi o 4G con loss, se hunde a <100 Mbps.

ChaCha20 vs AES-256-GCM en OpenVPN: en el M2 (que tiene AES-NI por hardware), AES gana ligeramente. En una Raspberry Pi 4 (sin AES-NI), retesteamos por curiosidad: ChaCha20 hace +18 % vs AES. Bueno saberlo para setups ARM.

Resultados de latencia

El ping RTT mediano (en ms) capturado durante las sesiones iperf3:

ConfiguraciónRTT medianaJitterp99
Línea base22 ms0,3 ms24 ms
WireGuard UDP40 ms0,5 ms43 ms
OpenVPN UDP51 ms1,2 ms58 ms
OpenVPN TCP67 ms4,8 ms89 ms

WireGuard añade +18 ms al RTT (overhead cripto + travesía del stack del kernel). OpenVPN UDP: +29 ms. OpenVPN TCP: +45 ms con un jitter 10× superior — inutilizable para gaming competitivo o VoIP exigente.

Para uso real (navegación, streaming Netflix 4K, videollamadas Zoom): WireGuard es imperceptible. OpenVPN UDP sigue fluido. OpenVPN TCP, se nota en los juegos en tiempo real.

Consumo de CPU

Muestreamos top cada segundo durante los benchmarks. Promedio sobre 30 segundos de transferencia a 900 Mbps (WireGuard) o 680 Mbps (OpenVPN UDP):

ConfiguraciónCPU VPS (4 vCPU)CPU MacBook M2
WireGuard UDP8 % (1 núcleo parcial)3 % (1 P-core)
OpenVPN UDP47 % (1 núcleo saturado + spillover)28 % (1 P-core + 1 E-core)
OpenVPN TCP38 %24 %

WireGuard corre en el kernel (módulo wireguard.ko), lo que elimina los costosos context-switches user/kernel. OpenVPN corre en userland — cada paquete hace un ida-vuelta kernel → userland → kernel para el cifrado. En un VPS de 4 vCPU es gestionable. En una Raspberry Pi 4 (4 núcleos Cortex-A72), OpenVPN satura un núcleo al 100 % desde 80 Mbps.

Implicación práctica: en un VPS Contabo S a 4,99 €/mes, WireGuard te deja el 90 % de la CPU para otros servicios (Bitwarden, Nextcloud, Umami). OpenVPN se come la mitad cuando el túnel trabaja.

Estabilidad a largo plazo (7 días)

Dejamos corriendo un cliente de cada lado durante 168 horas consecutivas con:

  • Un ping cada 5 segundos para medir pérdida
  • Un iperf3 -t 10 cada hora para verificar que el túnel sigue transportando
  • Logs de reconexiones automáticas
MétricaWireGuardOpenVPN UDP
Uptime túnel100,00 %99,87 %
Reconexiones automáticas09 (cambios MTU + 1 timeout renegociación DH)
Pings perdidos / 120 96014 (0,012 %)167 (0,138 %)
Memoria servidor (RSS)3,2 MB28 MB

WireGuard es stateless por diseño (no hay "conexión" establecida, solo peers conocidos). Cuando el cliente pasa a 4G y vuelve a Wi-Fi, el túnel se reanuda en menos de 200 ms sin renegociación. OpenVPN tiene que rehacer un handshake TLS en cada cambio de red (~3-5 segundos).

Para móvil (un teléfono que cambia de Wi-Fi/4G todo el día): WireGuard es 20× más reactivo. Lo verificamos en iPhone, caminando por París en un trayecto RER + metro.

Análisis de seguridad

El debate de seguridad suele estar sesgado por "OpenVPN existe desde hace 20 años, así que es más maduro". Veamos los hechos:

WireGuard:

  • Primitivas cripto modernas: Curve25519 (ECDH), ChaCha20-Poly1305 (AEAD), BLAKE2s (hash), SipHash24 (tabla hash).
  • ~4 000 líneas de código C en el módulo del kernel.
  • Auditoría formal por Cure53 publicada en 2018 — ninguna vulnerabilidad crítica encontrada. Re-auditoría parcial en 2020 por Trail of Bits sobre el port macOS, mismo resultado.
  • Incluido en el kernel Linux mainline desde la versión 5.6 (marzo 2020). Revisado por Linus Torvalds y el equipo netdev.
  • No hay configuración cripto posible (por diseño): usas lo que WireGuard impone. Imposible configurar un protocolo débil por error.

OpenVPN:

  • Primitivas configurables: por defecto AES-256-GCM, pero puedes acabar con Blowfish-128 en CBC si sigues una guía de 2015.
  • ~70 000 líneas de código C (+ OpenSSL ~700 000 líneas como dependencia).
  • Auditorías OSTIF en 2017 y 2018 — algunos bugs encontrados y corregidos, ninguna RCE crítica.
  • Superficie de ataque ~14× superior a WireGuard (relación simple de líneas de código, a matizar evidentemente).
  • Vulnerabilidades históricas ligadas a OpenSSL (Heartbleed 2014 afectó a OpenVPN).

Veredicto honesto: ambos son sólidos en 2026. WireGuard tiene una ventaja arquitectónica (menor superficie de ataque, primitivas modernas, imposible mal configurar). OpenVPN tiene una ventaja de madurez (20 años en producción, bug bounties activos, código revisado por cientos de ojos). Para auto-hosting, elegimos WireGuard sin dudar — la relación simplicidad/seguridad es imbatible.

Veredicto por caso de uso

Caso de usoRecomendación
VPN auto-alojado personal (1-10 dispositivos)WireGuard — sin debate
Móvil que alterna Wi-Fi/4GWireGuard — handshake casi instantáneo
Saltar firewall corporativo (puerto 443/TCP requerido)OpenVPN TCP en puerto 443
Site-to-site entre dos datacentersWireGuard — overhead mínimo
Gaming competitivo / VoIP exigenteWireGuard — latencia y jitter inferiores
Raspberry Pi / hardware ARM modestoWireGuard — 5× menos CPU
Compatibilidad OS legacy (Windows 7, Android antiguo)OpenVPN — clientes WireGuard no mantenidos antes de Windows 10
Ofuscación anti-DPI (Irán, China, Rusia)Ninguno en bruto → wstunnel o Cloak como capa superior

Si parts de cero para alojar tu propia VPN en un Contabo VPS, sigue nuestra guía WireGuard paso a paso — es el mismo VPS testeado aquí, y copias-pegas los scripts.

Si luchas contra DPI corporativo o estatal, mira la guía de routing custom con bypass DPI que combina WireGuard con una capa de ofuscación.

Si todavía dudas sobre el proveedor de VPS (Contabo vs Hetzner vs OVH), comparamos los tres en condiciones reales.

Reproducir estos benchmarks en casa

Si quieres rehacer estos tests:

# Lado servidor Contabo
sudo apt install -y iperf3
sudo iperf3 -s -D

# Lado cliente (Mac/Linux)
# Línea base (sin VPN)
iperf3 -c IP_VPS -t 30 -O 5 --json > baseline.json

# WireGuard (túnel activo)
iperf3 -c 10.66.66.1 -t 30 -O 5 --json > wireguard.json

# OpenVPN UDP (túnel activo)
iperf3 -c 10.8.0.1 -t 30 -O 5 --json > openvpn-udp.json

Lanza 100 runs con un script for simple y calcula la mediana vía jq:

jq -s 'map(.end.sum_received.bits_per_second) | sort | .[length/2]' wireguard.json

Si obtienes cifras muy diferentes: verifica la MTU (ping -M do -s 1372 IP), la calidad del enlace Orange (un mtr hacia Nuremberg debe mostrar <1 % loss), y que el VPS no esté en steal CPU (mpstat -P ALL 1).

Pedir el VPS testeado

Nuestro setup exacto: Contabo VPS S Cloud 24 meses (~5,49 €/mes equivalente). Es la oferta que Eric usa desde hace 14 meses para su túnel personal + una instancia Bitwarden + un Umami auto-alojado. Ninguna degradación observada incluso con los tres servicios corriendo en paralelo.

Fuentes

Artículo publicado el 2026-06-02. Benchmarks realizados entre el 25 de mayo y el 1 de junio de 2026 en un VPS Contabo S Cloud (Nuremberg). Datos brutos JSON disponibles bajo petición en contact@vpnsmith.com.

Disclosure de afiliado: el enlace Contabo arriba es un enlace trackeado que nos remunera ~10 % del primer pago si te suscribes. No cambia tu precio. Nosotros mismos usamos este VPS desde hace 14 meses — si no lo recomendáramos, no estaría en este artículo.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis

Probar Contabo30 jours satisfait ou remboursé