miércoles, 2 de abril de 2014

BGP


Border Gateway Protocol (BGP)
Técnicas y Protocolos de Redes Telemáticas
28 de Marzo de 2013




























Índice:



             












1. Breve descripción

BGP es un protocolo que se desarrolló para su uso en conjuntos de redes que empleasen la arquitectura TCP/IP y que permitiese el intercambio de información entre dispositivos de encaminamiento, llamados pasarelas, en sistemas autónomos diferentes. Dichos sistemas (AS) son aquellos que constan de grupos de sistemas de encaminamiento intercambiando información a través de un protocolo de encaminamiento común. De esta manera, si un protocolo interior de encaminamiento (IRP) se encarga de pasar la información entre enrutadores dentro de un mismo AS y su principal objetivo es mover lo más eficazmente posible (con el menor coste) los paquetes de un origen al destino; los protocolos exteriores de encaminamiento (ERP), como es el caso de BGP, se encargan de pasar información de encaminamiento entre AS diferentes y se preocupan más de la política (seguridad, económica, etc.) que del envío de paquetes de encaminamiento, pues su objetivo es el de intercambiar un resumen de información de alcanzabilidad entre AS administrados de forma separada. [1]
Tal es la importancia de este tipo de protocolos, que sin ellos no resultaría posible interconectar entre sí todas las redes de los diferentes países en el mundo. Es por ello, que BGP se ha convertido en el protocolo de dispositivo de encaminamiento exterior estándar en internet.

2. Funcionamiento

Tal y como ya se ha dicho, desde el punto de vista de un enrutador de BGP, el mundo consiste en un conjunto de sistemas autónomos y las líneas que los conectan. Dos de dichos sistemas autónomos se consideran conectados si hay una línea entre un enrutador fronterizo en cada uno. Puesto que ya se ha comentado que el envío de paquetes de encaminamiento en BGP no es una cuestión necesaria, atendiendo a cómo este protocolo afronta el transporte de tráfico, las redes se pueden agrupan en tres categorías [2]:
  • Redes stub: tienen sólo una conexión con el grafo de BGP y por tanto no se pueden usar para transportar tráfico porque no hay nadie en el otro lado.
  • Redes multiconectadas: Éstas podrían usarse para el transporte de tráfico excepto que lo rechacen.
  • Redes de tránsito: Están dispuestas a ocuparse de paquetes de terceros, posiblemente con algunas restricciones, y normalmente por pago.
Independientemente del tipo de red de que se disponga, las políticas en cada enrutador de BGP se configuran manualmente pues no son parte del protocolo. Además, los pares de enrutadores de BGP se comunican entre sí estableciendo conexiones TCP. Operando de esta manera proporcionan comunicación fiable y ocultan todo detalle de red que pase a través de ellos.
En el caso de tratarse de redes de tránsito las implementadas por el protocolo BGP, es necesario que los enrutadores intercambien un repertorio de mensajes para poder llevar a cabo el envío de los paquetes de encaminamiento. Pueden ser de cuatro tipos [3]:

  • Open: Utilizado para establecer una relación de vecindad con otro dispositivo de encaminamiento.
  • Update: Utilizado para transmitir información a través de una única ruta y/o  enumerar rutas múltiples que se van a eliminar.
  • Keepalive: Utilizado para confirmar una mensaje Open y confirmar periódicamente la relación de vecindad.
  • Notification: Enviado cuando se detecta una condición de error.

El intercambio además, se desarrolla en tres procedimientos funcionales denominados: Adquisición de vecino, detección de vecino alcanzable y detección de red alcanzable. El término vecino se refiere a dos dispositivos de encaminamiento que comparten la misma red.
El primero de los procedimientos nombrados ocurre cuando dos dispositivos de encaminamiento vecinos, en diferentes sistemas autónomos, se ponen de acuerdo en intercambiar regular­mente información de encaminamiento. Para ello, se requiere un procedimiento formal de adquisición ya que uno de los dispositivos de encaminamiento puede no querer participar. Por ejemplo, el dispositivo de enca­minamiento puede estar sobresaturado y no quiere ser responsable del tráfico que llega de fuera del sis­tema. En el proceso de adquisición de vecino, un dispositivo de encaminamiento envía un mensaje de petición al otro, el cual puede aceptar o rechazar el ofrecimiento.
Para llevar a cabo este procedimiento, un dispositivo de encaminamiento envía a otro un men­saje Open («abrir» relación). Si el dispositivo de encaminamiento destino acepta la solicitud, devuelve un mensaje «Keepalive» (la vecindad se «mantiene viva») como respuesta.
Una vez establecida la relación de vecino, se utiliza el procedimiento detección de vecino alcanzable para mantener la relación. Cada pareja necesita estar segura de que su pareja existe y está todavía comprometida con la relación de vecino. Para este propósito, periódicamente ambos dispositivos de en­caminamiento se envían mensajes Keepalive.
En el último procedimiento especificado por BGP, la detección de red alcanzable, cada dispositivo de encaminamiento mantiene una base de datos con las redes que puede alcanzar y la ruta preferida para alcanzar esa red. Siempre que se realiza un cambio en esta base de datos, el dispositivo de encamina­miento envía un mensaje Update por difusión a todos los otros dispositivos de encaminamiento que implementan BGP. Por medio de la difusión de estos mensajes Update, todos los dispositivos de encamina­miento de BGP pueden acumular y mantener información de encaminamiento.
De este modo, BGP es muy parecido a un protocolo de vector de distancia, pero muy diferente de la mayoría de otros como RIP. Así, en lugar de mantener el coste para cada destino, cada enrutador de BGP guarda el registro de la ruta utilizada, por lo que se conoce como un protocolo de vector de ruta. Del mismo modo, en lugar de darle a cada vecino el coste de cada posible destino estimado periódicamente, cada enrutador de BGP les dice el camino exacto que está usando [2].
Volviendo de nuevo a los tipos de mensajes,  cada uno de ellos comienza con una cabece­ra de 19 octetos, y contienen tres campos:
  • Marcador: Reservado para autenticación. El emisor puede insertar un valor en este campo que se usaría como parte de un mecanismo de autentificación para permitir al destino verificar la identi­dad del emisor.
  •   Longitud: Longitud del mensaje en octetos.
  • Tipo de mensaje: Open (abrir), Update (actualizar), Notification (notificar), Keepalive (con­tinuar).
Diferentes características de los tipos de mensaje son [4]:
  • El mensaje Open identifica al AS al que pertenece el emisor y suministra la dirección IP del dispositivo de encaminamiento. También incluye un parámetro temporizador de mantenimiento, que indica el número de segundos que puede transcurrir entre la recepción de mensajes Keepa­live sucesivos y/o mensajes Update del emisor.
  • El mensaje Keepalive consta solamente de la cabecera. Cada dispositivo de encaminamiento emite estos mensajes bastante a menudo a cada una de sus parejas para prevenir que expire el temporizador de mantenimiento.
  • El mensaje Update facilita dos tipos de información: Información sobre una ruta particular a través del conjunto de redes y una lista de rutas previamente anunciadas por este dispositivo de encaminamiento que van a ser eliminadas.
Un campo importante en este tipo de mensajes es Atributos de camino que  contiene una lista de atributos (métrica) que se aplican a una ruta particular. Los atributos más importantes son los siguientes:
Ø  Origen: Indica si la información fue generada por un protocolo de dispositivo de encaminamiento interior (por ejemplo, OSPF) o por un protocolo de dispositivo de encaminamiento exterior (en particular, BGP).

Ø  Camino_AS: Contiene una lista de los AS que son atravesados por la ruta.

Ø  Siguiente_salto: Contiene la dirección IP del dispositivo de encaminamiento frontera que se debe usar como siguiente salto para alcanzar los diferentes destinos.

  • El mensaje Notification se envía cuando se detecta una condición de error. Los errores más importantes son:
Ø  Error en la cabecera del mensaje: Incluye errores de sintaxis y autentificación.
Ø  Errores en mensajes Open y Update: Incluye errores de sintaxis y opciones no reconocidas.
Ø  Tiempo de mantenimiento expirado: Se comunica este error y se cierra la conexión.

 
Figura 1. Formato de mensajes BGP

3. Casos prácticos

Dos son los principales casos en los que el establecimiento de una sesión BGP resulta interesante [4]:
  • El primero de ellos, y el más importante, consiste en la conexión de diferentes sistemas autónomos entre sí para poder intercambiar información a través de todo Internet. Un ejemplo se puede observar en la siguiente imagen:

 Figura 2. Comunicación BGP entre ISPs
 
En la imagen anterior se pueden observar 3 tipos de niveles: uno correspondiente a los clientes de red y que puede hacer referencia a la red interna de cualquier empresa, otro de ISP regionales y un último de ISP de tránsito o nacionales. Los dos primeros niveles no soportan tráfico de tránsito, es decir, cualquier paquete IP generado en los mismos, solamente puede tener como destino una dirección IP dentro de ellos. Esto es así, porque ambos niveles constituyen un mismo AS. Por tanto, si se desea que clientes de diferentes ISP se puedan comunicar entre sí (por ejemplo, en la figura, SisterY y BrotherX), es necesario que dichos ISPs establezcan una sesión BGP con los ISP de tránsito, y a su vez éstos otra entre sí, para poder intercomunicar diferentes AS.
  • El otro caso consiste en el establecimiento de una sesión BGP entre subredes que pertenecen a un mismo AS. Un ejemplo se puede observar en la siguiente imagen:

               Figura 3. Comunicación BGP dentro de un mismo AS

En la imagen anterior se puede observar cómo las sedes de Bombay y Madras establecen una sesión BGP entre sí para poder tener una redundancia de caminos en caso de que la conexión de cada una de estas sedes con su ISP se caiga. Así, si por ejemplo, el enlace BGP entre Bombay y su ISP se cae, Madras puede direccionar el tráfico que se genera en Bombay y comunicarse con el ISP. Esto es posible gracias a la sesión BGP y se conoce como balanceo de carga.

4. Conclusiones

Finalmente, para concluir hay que decir que BGP se trata de un protocolo de enorme robustez que cuesta creer que se base en un algoritmo tan “simple” como puede ser el del vector de ruta, aunque eso sí, usando múltiples atributos para elegir el mejor camino. No obstante, presenta unas pequeñas desventajas [5]:
  • El intercambio de la información entre AS requiere de una gran capacidad de procesamiento y requerimientos de ancho de banda.
  • Presenta carencias de seguridad, como es la falta de control temporal en el intercambio de sus mensajes.
  • Al estar basado en TCP, se presentan los problemas asociados a este protocolo. Por ejemplo, los routers vecinos mantienen establecida una conexión TCP permanentemente (sesión BGP), pero en caso de que esta conexión se interrumpa, el router vecino asumirá que el enlace se ha desconectado o el router del otro extremo ha dejado de funcionar, por lo que eliminará automáticamente todas las rutas afectadas.
No obstante, pese a estos inconvenientes, BGP se ha convertido en el principal protocolo de encaminamiento externo empleado en Internet para la comunicación entre ISPs y su  correcto funcionamiento es crucial para el funcionamiento de Internet.





Bibliografía

[1] BGP: The Border Gateway Protocol (Advanced Internet Routing Resources). Dirección Web: http://www.bgp4.as/
[2]     Libro Computer networks. Autor: Andrew S. Tanenbaum. Boston: Pearson 2011.
[3]     Libro Computer networking with Internet protocols and technology. Autor: William Stallings. Pearson/Prentice Hall 2004.
[4]     Libro IP routing. Autor: Ravi Malhotra. Sebastopol, CA 2002.
[5]  Artículo publicado de investigación sobre seguridad en BGP. Dirección Web: http://www.saulo.net/pub/inv/BGP-art.htm

No hay comentarios:

Publicar un comentario