thumb|right|250px|Máquina de estados de BGP. En telecomunicaciones, el protocolo de puerta de enlace de frontera o BGP (del inglés Border Gateway Protocol) es un protocolo mediante el cual se intercambia información de encaminamiento entre sistemas autónomos. Por ejemplo, los proveedores de servicio registrados en Internet suelen componerse de varios sistemas autónomos y para este caso es necesario un protocolo como BGP.

Entre los sistemas autónomos de los ISP se intercambian sus tablas de rutas a través del protocolo BGP. Este intercambio de información de encaminamiento se hace entre los routers externos de cada sistema autónomo, los cuales deben ser compatibles con BGP. Se trata del protocolo más utilizado para redes con intención de configurar un protocolo de puerta de enlace exterior (Exterior Gateway Protocol).

La forma de configurar y delimitar la información que contiene e intercambia el protocolo BGP es creando lo que se conoce como sistema autónomo o AS. Cada uno tendrá conexiones o sesiones internas (iBGP), así como sesiones externas (eBGP).

El protocolo de puerta de enlace de frontera (BGP) es un ejemplo de protocolo de puerta de enlace exterior (EGP). BGP intercambia información de encaminamiento entre sistemas autónomos a la vez que garantiza una elección de rutas libres de bucles. Es el protocolo principal de publicación de rutas utilizado por las compañías más importantes de ISP en Internet. BGP4 es la primera versión que admite encaminamiento entre dominios sin clase (CIDR) y agregado de rutas. A diferencia de los protocolos de puerta de enlace internos (IGP), como RIP, OSPF y EIGRP, no usa métricas como número de saltos, ancho de banda o retardo. En cambio, BGP toma decisiones de encaminamiento basándose en políticas de la red, o reglas que utilizan varios atributos de ruta BGP.

Introducción

BGP juega un papel crítico en las comunicaciones en Internet.RFC 1105 A Border Gateway Protocol (BGP), 1989.RFC 1163 A Border Gateway Protocol (BGP), 1990.RFC 1267 A Border Gateway Protocol 3 (BGP-3), 1991.RFC 1654 A Border Gateway Protocol 4 (BGP-4), 1994.RFC 1771 A Border Gateway Protocol 4 (BGP-4), 1995.RFC 4271 A Border Gateway Protocol 4 (BGP-4), 2006. Facilita el intercambio de información sobre redes IP y la comunicación entre sistemas autónomos (AS). Por tanto, BGP es un protocolo interdominio (entre sistemas autónomos) e intradominio (dentro del mismo sistema autónomo).

El protocolo BGP se utiliza para intercambiar información mediante el establecimiento de una sesión de comunicación entre los enrutadores de frontera de los sistemas autónomos. Para conseguir una entrega fiable de la información, se hace uso de una sesión de comunicación basada en TCP en el puerto número 179. Esta sesión debe mantenerse activa debido a que ambos extremos de la comunicación periódicamente se intercambian y actualizan información. Al principio, cada router envía al vecino toda su información de encaminamiento y después únicamente se enviarán las nuevas rutas, las actualizaciones o la eliminación de rutas transmitidas con anterioridad. Además periódicamente se envían mensajes para garantizar la conectividad.

Cuando una conexión TCP se interrumpe por alguna razón, cada extremo de la comunicación está obligado a dejar de utilizar la información que ha recibido del otro extremo. En otras palabras, la sesión TCP sirve como un enlace virtual entre dos sistemas autónomos vecinos, y cuando hay una falta de intercambio de comunicación indica que el enlace virtual se ha caído. Cabe destacar que esa unión virtual tendrá más de un enlace físico que conecte a los dos enrutadores frontera, pero si una conexión virtual se cae no indica necesariamente que la conexión física se haya caído.

Desde el punto de vista de su topología, se puede considerar como un gráfico de conexión de sistemas autónomos conectados mediante enlaces virtuales. En la figura a continuación se pueden ver cuatro sistemas autónomos llamados AS1, AS2, AS3 y AS4 conectados por enlaces virtuales. Es decir, que mantienen sesiones BGP sobre TCP para la comunicación entre los sistemas autónomos. Cada sistema autónomo contiene una o más redes que se identificaron como N1, N2 y N3 en AS1, y así sucesivamente. Simplemente observando la figura se puede mostrar que existe más de una ruta posible entre dos sistemas autónomos determinados. Como también es posible tener uno o más de un rúter de borde en el mismo sistema autónomo.

Para la puesta en funcionamiento de la red anterior se debe proveer de un mecanismo de intercambio de rutas que permita comunicar correctamente ambos sistemas. El protocolo BGP utiliza el protocolo de vector de caminos, para el intercambio de información de encaminamiento en la red. Se transmite una lista con identificación de los AS por los que pasa el anuncio. De esa manera se conseguirá saber cómo llegar a cualquier dirección del prefijo propagado así como estar preparado para cursar tráfico para cualquier dirección del prefijo.

center|600px

Antes de enunciar la mecánica de selección de rutas se deben introducir las dos formas de proceder cuando se cuenta con un escenario en el que implantar BGP. Se debe distinguir entre BGP externo (eBGP) y BGP interno (iBGP) en función de si la información se intercambia dentro de un AS o entre dos AS. Se puede observar en la figura anterior que el sistema autónomo AS1 debe propagar tres prefijos IP (N1, N2 y N3) para que sean alcanzables desde los equipos de otros sistemas autónomos. Además, estas tres redes deberán establecer cierta política de decisión de rutas hacia otros sistemas autónomos. IBGP conforma una topología virtual mallada de modo que todos los enrutadores de un sistema autónomo se encuentren conectados para que el intercambio de rutas sea directo desde el enrutador al que le llega el anuncio hacia todos los de su sistema autónomo.

Operación

Los vecinos BGP, llamados pares, se establecen mediante configuración manual entre enrutadores para crear una sesión TCP en el puerto 179. Un altavoz BGP envía mensajes de 19 bytes cada 30 segundos (valor predeterminado del protocolo, sintonizable) para mantener la conexión. Entre los protocolos de enrutamiento, BGP es único en el uso de TCP como protocolo de transporte.

Cuando BGP se ejecuta entre dos pares en el mismo sistema autónomo (AS), se conoce como BGP interno (iBGP o Protocolo de puerta de enlace de frontera interior). Cuando se ejecuta entre diferentes sistemas autónomos, se denomina External BGP (eBGP o Exterior Border Gateway Protocol). Los enrutadores en el límite de un AS que intercambian información con otro AS se denominan enrutadores de borde o simplemente pares eBGP y generalmente se conectan directamente, mientras que los pares iBGP se pueden interconectar a través de otros enrutadores intermedios. Otras topologías de implementación también son posibles, como ejecutar el emparejamiento eBGP dentro de un túnel VPN, lo que permite que dos sitios remotos intercambien información de enrutamiento de manera segura y aislada.

La principal diferencia entre el emparejamiento iBGP y eBGP está en la forma en que las rutas que se recibieron de un par se propagan normalmente de forma predeterminada a otros pares:

Las nuevas rutas aprendidas de un par eBGP se vuelven a anunciar a todos los pares iBGP y eBGP. Las nuevas rutas aprendidas de un par iBGP se vuelven a anunciar solo a todos los pares eBGP. Estas reglas de propagación de rutas requieren efectivamente que todos los pares iBGP dentro de un AS estén interconectados en una malla completa con sesiones iBGP.

La forma en que se propagan las rutas se puede controlar en detalle a través del mecanismo de mapas de rutas. Este mecanismo consiste en un conjunto de reglas. Cada regla describe, para las rutas que coinciden con algunos criterios dados, qué acción se debe tomar. La acción podría ser soltar la ruta, o podría ser modificar algunos atributos de la ruta antes de insertarla en la tabla de enrutamiento.

Relaciones entre AS

right|500px

Las relaciones que existen entre distintos sistemas autónomos son principalmente de interconexión voluntaria (peering) y de tránsito. Básicamente una relación de tránsito es la que existe entre un proveedor y un cliente, de modo que el cliente pague por los recursos de Internet que le puede suministrar su proveedor. Las relaciones de peering no suelen ser pagadas y consisten en un enlace para comunicar dos sistemas autónomos con el fin de reducir costes, latencia, pérdida de paquetes y obtener caminos redundantes. Se suele hacer peering con sistemas autónomos potencialmente similares en cuanto a tamaño. Por tanto, no se hace peering con un cliente potencial ya que saldría uno de los dos sistemas autónomos beneficiado.

En la figura se muestra una topología de red con diferentes tipos de relaciones. Los proveedores de nivel 1 (tier 1) son los que por definición no pagan a otros proveedores y ofrecen servicio y conectividad a muy larga distancia. Los demás proveedores mostrados pagan al menos el tránsito con un tier 1. Los clientes pagarán a los proveedores con los que tengan un enlace de tránsito.

BGP además permite la agregación de rutas de modo que las rutas manejadas por un enrutador en concreto sean las menores posibles.

Un escenario que se suele repetir es uno llamado multiconexión, multi-ISP o multihoming. Este término hace referencia a un cliente que contrata a dos proveedores de tránsito, lo que implica que existen dos rutas de salida, de modo que se deberá decidir entre un camino u otro dependiendo de ciertas especificaciones, necesidades o simples políticas que se impongan en el sistema autónomo. Un ejemplo se puede ver en la figura prestando atención a Cliente A. Las especificaciones pueden ser para equilibrar el tráfico, para poner un enlace como preferido antes que otro (por ejemplo, porque tenga más velocidad), por tolerancia a fallos, etc. La gestión de estas prioridades es lo que se llama ingeniería de tráfico y se consigue gracias a los atributos BGP que se definen en el protocolo.

Tipos de mensajes

Existen cuatro tipos de mensajes BGP que son los siguientes:

OPEN: se utiliza para el establecimiento de una sesión BGP una vez haya sido establecida la conexión TCP. Se suelen negociar ciertos parámetros que caractericen a esa sesión. Por ejemplo, es muy posible que los miembros de la sesión no tengan la misma versión de BGP por lo que es importante indicar el número de versión en este mensaje.

UPDATE: es un mensaje de actualización, de mucha importancia en las operaciones de BGP ya que contiene los anuncios de nuevos prefijos. Se generarán mensajes de actualización cada vez que se determine una nueva mejor ruta para cierto destino o haya una modificación sobre alguna existente.

KEEPALIVE: una vez que la sesión BGP está activa se envía periódicamente un mensaje para mantener viva la conexión o KEEPALIVE para confirmar que el otro extremo sigue estando activo en la sesión BGP. Generalmente se acuerda un tiempo máximo de espera durante el intercambio inicial de mensajes OPEN. El KEEPALIVE suele ser aproximadamente una vez cada tercio del tiempo de espera, pero no más de una vez cada segundo. Los mensajes KEEPALIVE no se deben generar si el tiempo de espera es cero ya que en ese caso se entiende que la sesión es completamente fiable.

NOTIFICATION: se envía al cerrar una sesión BGP y esto sucede cuando ocurre algún error que requiera el cierre de la misma. De modo que es un mensaje que permite informar nada.

Formato de los paquetes Los paquetes BGP tienen una cabecera de 19 bytes, consistente en los siguientes campos:

• Un campo de 16 bytes de Marcado (Marker): para detectar la pérdida de sincronización o autenticación de mensajes BGP entrantes,

• Un campo de 2 bytes de Longitud de Paquete (Length): que especifica la longitud del mensaje BGP en bytes (la longitud no puede ser menor a los 19 bytes de la cabecera sin datos ni mayor a 4096), y