Ir al contenido

Border Gateway Protocol

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 17:46 21 oct 2014 por 187.130.75.30 (discusión). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.
Máquina de estados de BGP

En comunicaciones, BGP (del inglés Border Gateway Protocol) es un protocolo mediante el cual se intercambia información de encaminamiento o ruteo 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 soportar BGP. Se trata del protocolo más utilizado para redes con intención de configurar un 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. Cada sistema autónomo (AS) tendrá conexiones o, mejor dicho, sesiones internas (iBGP) y además sesiones externas (eBGP).

El protocolo de gateway fronterizo (BGP) es un ejemplo de protocolo de gateway 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 Gateway 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.

BGP realiza tres tipos de Ruteo:

  • Ruteo Interautónomo
  • Ruteo Intrautónomo
  • Ruteo de pasc.

Introducción

El Border Gateway Protocol juega un papel crítico en las comunicaciones en Internet. Facilita el intercambio de información sobre redes IP, 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. El intercambio de información en la red se realiza mediante el establecimiento de una sesión de comunicación entre los routers de borde 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 conectada debido a que ambos extremos de la comunicación periódicamente se intercambian y actualizan información. De modo que 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 aprendido por el otro lado. En otras palabras, la sesión TCP sirve como un enlace virtual entre dos sistemas autónomos vecinos, y la falta de medios 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 routers frontera, pero si una conexión virtual se cae no indica necesariamente que la conexión física se haya caído.

Desde este punto de vista la topología de Internet se puede considerar como un gráfico de conexión de sistemas autónomos conectados mediante enlaces virtuales. En la figura a continuación podemos ver cuatro sistemas autónomos llamados AS1, AS2, ..., 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 router 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 (path vector) para el intercambio de información de enrutamiento en la red. Se transmite una lista con identificación de los ASs por los que pasa el anuncio. De esa manera se conseguirá saber cómo llegar a cualquier dirección del prefijo propagado así como se dispondrá para cursar tráfico para cualquier dirección del prefijo.


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 External BGP (EBGP) e Internal BGP (IBGP). EBGP hace referencia al intercambio de información entre sistemas autónomos sin embargo IBGP hace referencia al intercambio de información dentro de un sistema autónomo. Hasta ahora nos hemos centrado en EBGP pero ¿para qué tipo de escenarios se destaca la importancia de IBGP? Podemos observar una figura como la siguiente, donde por ejemplo el sistema autónomo AS1 debe propagar tres prefijos IP (N1, N2 y N3) para que sean alcanzables desde 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 routers de un sistema autónomo se encuentren conectados para que el intercambio de rutas sea directo desde el router al que le llega el anuncio hacia todo los de su sistema autónomo.

Relaciones entre AS


Las relaciones que existen entre distintos sistemas autónomos son principalmente de 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, es decir, 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 llamados 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 router en concreto sean las menores posibles.

Un escenario que se suele repetir es uno llamado “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 balancear el tráfico, para poner un enlace como preferido antes que otro (por ejemplo porque tenga más velocidad), por tolerancia a fallos, etc. El manejo 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, es un mensaje clave 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 KEEPALIVE para confirmar que el otro extremo sigue estando activo en la sesión BGP. Generalmente se acuerda un tiempo máximo de espera (hold time) 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.

Ingeniería de tráfico

La ingeniería de tráfico en BGP es el modo en que se gestiona la red a partir de los atributos con los que cuenta dicho protocolo para satisfacer determinadas características o imposiciones de un escenario BGP.

Se definen características para el tráfico saliente y para el entrante, siendo este último algo más difícil de controlar. De modo que esta gestión de la red se hace a partir de la selección de las rutas que cualquier router va a propagar en una red y de las rutas que va a escoger como preferentes y alternativas.

Para ello se cuenta con un conjunto de atributos que dan información para la toma de decisión para filtrar o seleccionar rutas. Se definen a continuación dichos atributos:

ORIGIN:

Identifica el mecanismo por el cual se anunció el prefijo IP por primera vez. Se puede especificar como IGP (0), EGP(1) o INCOMPLETE(2). IGP indica que el prefijo IP se aprendió por un protocolo interior al sistema autónomo como por ejemplo OSFP. EGP indica que el prefijo IP se aprendió por un protocolo exterior como podría ser BGP, por ejemplo puede ser debido a que se ha realizado agregación. Generalmente si el ORIGIN es INCOMPLETE es porque se ha aprendido de forma estática. Si se quisiera decidir una selección de rutas en base a este prefijo se escoge la que tiene un valor de ORIGIN más bajo, es decir, se prefieren las rutas aprendidas por IGP antes que las de EGP y éstas últimas antes que INCOMPLETE.

AS-PATH:

Este atributo almacena una secuencia de números de AS que identifican la ruta de ASs por los que ha pasado el anuncio. Cada vez que un router de borde propaga una ruta hacia otro lado añade a este atributo su número de AS constituyendo así la lista de ASs que se pretendía tener. La lista permanece intacta si se usa IBGP, es decir, si no se sale del sistema autónomo. Si se quisiera utilizar el AS-PATH como método de selección de rutas se escogería el que tuviera una lista AS-PATH más pequeña. Esto es una forma de medir que haya menos saltos hacia el destino aunque no es exactamente así porque no se tienen en cuenta los posibles saltos debidos a los routers dentro de un sistema autónomo.

NEXT-HOP:

Identifica la dirección IP del router correspondiente al siguiente salto hacia el destino. Se debe tener en cuenta que un prefijo IP se anuncia fuera de un sistema autónomo, por lo que el next-hop es el destino que se conoce y al que hay que enviar el tráfico de los usuarios que quieran llegar a un destino final. La información del NEXT-HOP se procesa con los datos de tabla de encaminamiento IP. Ahora se contará con una tabla IP (con la que ya se contaba anteriormente) y con una tabla BGP que contendrá el NEXT-HOP para cada destino. Se obtendrá una ruta hacia el destino BGP pasando por los saltos que indique la tabla de encaminamiento IP. Si se quisiera seleccionar una ruta por este atributo se seleccionaría la que suponga menor coste hacia el NEXT-HOP, es decir, menor número de saltos hacia el NEXT-HOP.

MULTI-EXIT-DISCRIMINATOR (MED)

Es un indicador diseñado para ser utilizado cuando desde un sistema autónomo existen múltiples enlaces hacia un mismo sistema autónomo. Se puede observar más fácilmente en la siguiente figura.

Como puede verse desde un mismo sistema autónomo se realizan dos enlaces a otro sistema autónomo. Este atributo se puede utilizar para como balanceo de carga, de modo que hacia unos prefijos se tenga un valor de MED que haga preferente cierto prefijo y hacia otros prefijos se haga preferente otro diferente. Esta métrica es local entre dos sistemas autónomos, no se propaga fuera de ese ámbito. Si se quisiera seleccionar una ruta por medio de este atributo se consideraría preferida la que tuviese un valor de MED menor.

LOCAL-PREF:

Este atributo es útil en un escenario en el que un sistema autónomo tiene conectividad con múltiples sistemas autónomos, de manera que pueda haber múltiples rutas hacia un mismo destino. Este atributo dará preferencia al envío de tráfico por un enlace en concreto, por tanto solo tendrá sentido dentro de un mismo sistema autónomo, luego solo se transmite por IBGP. Se escogerá el envío de datos por el enlace que tenga un LOCAL-PREF más alto, siendo el LOCAL-PREF por defecto de valor 100.

COMMUNITY:

Se puede gestionar la distribución de información de ruteo a un grupo de destinatarios llamados COMMUNITIES. La idea es que una vez suscrito a un grupo de destinatarios se les pueda aplicar una política de ruteo concreta. De ese modo se simplifica el trabajo agregando información de ruteo así como se proporciona una herramienta para tener un entorno más vigilado en la red. Se consigue mediante un número que actúa como una etiqueta que califica a la ruta.

Selección de rutas

Todos estos atributos pueden ser utilizados conjuntamente para la selección de rutas, sin embargo se debe imponer un orden de preferencia de manera que si se tienen varias rutas que pueden ser preferente solo se elija una. Se recorrerá la siguiente lista y se eliminarán las rutas que no empatan en el mejor valor de cada uno de los criterios. Se ha de tener en cuenta que los criterios de decisión de enrutamiento que incluyen normas de desempate se aplican a cada prefijo IP o conjunto de prefijos IP destino.

  1. Si el siguiente NEXT-HOP no está disponible se ignora la ruta.
  2. Eliminar las rutas con menor LOCAL-PREF.
  3. Eliminar las rutas con AS-PATH más largo.
  4. Eliminar las rutas con ORIGIN más alto.
  5. Eliminar las rutas con mayor MED.
  6. Eliminar las rutas aprendidas por IBGP si las hay aprendidas por EBGP.
  7. Eliminar las rutas con mayor coste hacia el NEXT-HOP.
  8. Preferir la ruta que ha anunciado el router con menor identificador BGP.
  9. Preferir la ruta recibida desde el interfaz con menor dirección para el vecino.

Las últimas dos entradas de la lista son una forma de selección de rutas de alguna manera arbitrarias, ya que no indican una política regulada como tal por un administrador. Sin embargo es una manera que pone BGP para en el caso en que no se pueda decidir, se seleccione alguna ruta.

Bloqueo de BGP en las protestas de Egipto de 2011

Durante las protestas de Egipto de 2011 el gobierno de Hosni Mubarak ordenó a todos los proveedores de acceso que operan en el país árabe el corte de las conexiones internacionales. Como consecuencia de los cortes y bloqueos en la noche del 27 al 28 de enero los enrutadores egipcios dejaron de anunciar hasta 3.500 rutas de BGP, dejando al resto de enrutadores sin la información necesaria para intercambiar tráfico con los servidores egipcios.[1]

Véase también

Referencias

Bibliografía

  • Bartell, Micah (2004). BGP design and implementation (en inglés). 
  • Ramasamy, Karthikeyan (2007). Network routing: algorithms, protocols, and architectures (en inglés). 
  • Black, Uyless (2000). IP routing protocols: RIP, OSPF, BGP, PNNI, and Cisco routing protocols (en inglés). 
  • Van Beijnum, Iljitsch (2002). BGP (en inglés). 

Enlaces externos

En español
En inglés