BGP (Border Gateway Protocol) is a path-vector routing protocol defined in RFC 4271 that enables autonomous systems to exchange reachability information and routing policy over TCP port 179, forming the foundation of internet routing by allowing networks such as ISPs, cloud providers, and enterprises to announce address prefixes and select optimal paths based on attributes rather than shortest-path metrics. The protocol operates through a six-step process including TCP session establishment, OPEN message exchange, route advertisement via UPDATE messages, best-path selection using local policy and attributes, installation into the routing table, and maintenance via periodic KEEPALIVE messages. Organizations must implement careful BGP management practices including prefix filtering, route origin validation using RPKI, and monitoring of session state and prefix counts to prevent common operational failures such as route leaks, hijacks, session flapping, and misdirected traffic.
Cómo funciona el BGP
Los routers BGP establecen sesiones con los vecinos configurados, intercambian los prefijos a los que pueden acceder y cada router elige la mejor ruta para cada prefijo en función de los atributos y la política local.
- Establecer una sesión TCP: dos pares configurados abren una conexión TCP en el puerto 179. Pueden encontrarse en sistemas autónomos diferentes (BGP externo) o en el mismo (BGP interno).
- Intercambio de mensajes OPEN: cada par envía su número de sistema autónomo, el tiempo de retención y sus capacidades. Los pares confirman que los parámetros son compatibles y la sesión se establece tras el envío de mensajes KEEPALIVE.
- Anunciar rutas: los pares envían mensajes UPDATE que anuncian prefijos con atributos de ruta, como la ruta AS y el siguiente salto, o retiran prefijos a los que ya no se puede acceder.
- Seleccionar la mejor ruta: cada enrutador aplica la política de importación y, a continuación, ejecuta su proceso de decisión sobre las rutas candidatas. Se comparan, por orden, atributos como la preferencia local, la longitud de la ruta AS y el origen.
- Instalar y volver a anunciar: la ruta elegida se incorpora a la tabla de enrutamiento y puede anunciarse a otros pares de acuerdo con la política de exportación. Los mensajes KEEPALIVE periódicos mantienen la sesión.
El BGP envía actualizaciones incrementales tras el intercambio inicial, en lugar de reenviar periódicamente la tabla completa. Si una sesión falla o expira el temporizador de espera, el router retira las rutas aprendidas de ese par.
Problemas habituales con el BGP
Un vecino que alterna entre los estados «Activo» e «Inactivo» suele indicar un fallo en la conexión TCP en el puerto 179. Las causas más comunes son un cortafuegos o una lista de control de acceso (ACL) que bloquea el puerto, una dirección de vecino incorrecta o una discrepancia en la interfaz de origen del par.
Sin filtros de prefijos de entrada y salida, una red multihospedada puede reanunciar las rutas de un proveedor a otro y atraer tráfico de tránsito que no puede transportar. El síntoma son enlaces saturados y cambios repentinos de latencia tras un cambio de política.
Las sesiones que se interrumpen con una notificación de caducidad del temporizador de espera suelen reflejar pérdida de paquetes, falta de recursos de CPU o un problema de MTU que bloquea los mensajes UPDATE de gran tamaño. Cada fluctuación retira y vuelve a anunciar prefijos, lo que provoca fluctuaciones en los pares de nivel inferior.
Una ruta puede aparecer en la tabla BGP, pero nunca convertirse en la mejor ruta cuando no se puede resolver su siguiente salto. Esto suele ocurrir con el BGP interno cuando el siguiente salto es una dirección de par externo que no se incluye en el protocolo de enrutamiento interior.
El tráfico puede tomar una ruta más larga o más costosa porque se evalúan atributos como la preferencia local antes que la longitud de la ruta AS. Los ingenieros suelen esperar que prevalezca la ruta AS más corta y malinterpretan el orden de decisión.