Cómo activar TCP BBR en un VPS Linux (Debian, Ubuntu, CentOS, Rocky Linux)
TCP BBR es un algoritmo de control de congestión desarrollado por Google e incluido en el kernel de Linux desde la versión 4.9. En rutas con mucha latencia, como el tráfico desde un VPS de JUSTG en Johannesburgo o Moscú hacia usuarios en Asia, el algoritmo predeterminado CUBIC reduce mucho la velocidad ante pequeñas pérdidas de paquetes. BBR, en cambio, estima el ancho de banda real y el tiempo de ida y vuelta de la ruta, por lo que suele mejorar claramente el rendimiento TCP de sitios web, descargas, API y transferencias de archivos. Esta guía explica cómo activar TCP BBR de forma nativa con sysctl en Debian, Ubuntu, CentOS, Rocky Linux y AlmaLinux, y cómo comprobar que funciona.
Por qué TCP BBR ayuda en rutas de larga distancia
Los algoritmos basados en pérdidas, como CUBIC, interpretan cada paquete perdido como congestión y reducen la tasa de envío. En una ruta intercontinental de 150 a 300 ms, recuperarse de cada reducción lleva mucho tiempo, así que una sola transferencia rara vez aprovecha todo el ancho de banda del servidor. BBR modela el ancho de banda del cuello de botella y el RTT mínimo, y dosifica el envío de paquetes en función de ellos. Solo cambia la forma en que envía el servidor; los visitantes no tienen que instalar nada.
Paso 1: Comprobar la versión del kernel y el tipo de virtualización
Inicia sesión en el VPS como root (o con un usuario sudo) y revisa el kernel. BBR requiere la versión 4.9 o posterior. Las versiones actuales, como Debian 11/12, Ubuntu 20.04/22.04/24.04, Rocky Linux 8/9 y AlmaLinux 8/9, cumplen el requisito.
uname -r
systemd-detect-virt
Si systemd-detect-virt devuelve kvm, xen o vmware, controlas tu propio kernel y puedes continuar. En contenedores OpenVZ o LXC el kernel pertenece al nodo anfitrión, así que no es posible activar BBR desde dentro del contenedor.
Paso 2: Confirmar que el módulo BBR está disponible
Muestra los algoritmos que ofrece el kernel y carga el módulo si bbr no aparece:
sysctl net.ipv4.tcp_available_congestion_control
modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control
Un resultado típico es net.ipv4.tcp_available_congestion_control = reno cubic bbr. Si modprobe indica que no encuentra el módulo, el kernel es demasiado antiguo; consulta el paso 6.
Paso 3: Activar TCP BBR con sysctl
BBR funciona mejor junto con el planificador de colas fq (Fair Queue). Crea un archivo de configuración propio para que el ajuste se mantenga tras reiniciar y sea fácil de eliminar. Los comandos son los mismos en Debian/Ubuntu y en CentOS/Rocky/AlmaLinux:
printf 'net.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr\n' | sudo tee /etc/sysctl.d/99-bbr.conf
sudo sysctl --system
El cambio se aplica de inmediato a las conexiones nuevas, sin reiniciar. Las conexiones ya abiertas conservan el algoritmo anterior hasta que se vuelvan a abrir.
Paso 4: Verificar que BBR está activo
Ejecuta estas comprobaciones:
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
lsmod | grep bbr
Deberías ver net.ipv4.tcp_congestion_control = bbr y net.core.default_qdisc = fq. El comando lsmod normalmente muestra una línea con tcp_bbr. En algunos kernels BBR viene compilado de serie y no como módulo, por lo que un resultado vacío de lsmod es normal si sysctl muestra bbr. Para ver BBR en conexiones reales, ejecuta ss -ti y busca bbr.
Paso 5: Medir el resultado
Compara el rendimiento antes y después desde un cliente lejano al servidor, por ejemplo un equipo en Asia que prueba un VPS en Johannesburgo. Un método sencillo es iperf3:
# Debian / Ubuntu
apt install -y iperf3
# CentOS / Rocky / AlmaLinux
dnf install -y iperf3
# En el servidor
iperf3 -s
# En el cliente (sustituye por la IP de tu servidor)
iperf3 -c 203.0.113.10 -t 30 -R
Abre el puerto TCP 5201 en el firewall solo mientras dure la prueba. Los resultados cambian según la hora y la red del cliente, así que repite la medición varias veces.
/etc/sysctl.d/99-bbr.conf y ejecuta sysctl -w net.ipv4.tcp_congestion_control=cubic y sysctl --system.Paso 6: Kernels muy antiguos (método heredado)
Sistemas antiguos como CentOS 6/7 (kernel 2.6/3.10) o Debian 8 no incluyen BBR. Antes era popular un script comunitario «de un clic» de Teddysun que instalaba un kernel mainline más nuevo y activaba BBR de una vez; nunca fue compatible con OpenVZ. Hoy consideramos ese método como heredado: cambiar el kernel de una distribución sin soporte puede dejar el VPS sin arrancar y no recibe actualizaciones de seguridad. Es más seguro hacer una copia de seguridad, reinstalar el VPS con una versión actual desde el área de cliente y seguir los pasos 1 a 4.
Preguntas frecuentes
¿Funciona TCP BBR en OpenVZ?
No. OpenVZ y otras plataformas de contenedores comparten el kernel del anfitrión, por lo que no se puede cambiar el control de congestión dentro del invitado. Los servidores cloud de JUSTG usan virtualización completa, donde los pasos 1 a 4 funcionan con normalidad.
¿BBR acelera el tráfico UDP?
No. BBR solo afecta a las conexiones TCP que envía tu servidor. Los servicios UDP y el tráfico que recibe el servidor no cambian.
¿Hay que activar BBR también en el cliente?
No. Basta con activarlo en el lado que envía los datos; en un servidor web o de descargas, ese lado es el VPS.
Si el problema continúa después de seguir esta guía, abre un ticket y el soporte técnico de JUSTG te ayudará.