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 regularmente 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
encaminamiento puede estar sobresaturado y no quiere ser responsable del
tráfico que llega de fuera del sistema. 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 mensaje 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 encaminamiento 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 encaminamiento 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 encaminamiento 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 cabecera 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 identidad del emisor.
- Longitud: Longitud del mensaje en octetos.
- Tipo de mensaje: Open (abrir), Update (actualizar), Notification (notificar), Keepalive (continuar).
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 Keepalive 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