Encaminamiento en BGP y casos prácticos

ENCAMINAMIENTO EN BGP Y CASOS PRÁCTICOS

1.     INTRODUCCIÓN

En telecomunicaciones, Internet está formado por un conjunto de sistemas autónomos (Autonomous SystemAS) [1]. Cada uno de ellos se encarga por separado de realizar la gestión de tráfico que fluye a través de él, como hemos visto en la asignatura, OSPF e IS-IS son los protocolos más comunes, no obstante, es necesario un protocolo específico debido a que los objetivos intradominio e interdominio no son los mismos. Todo lo que tiene que hacer un protocolo intradominio es mover paquetes de la manera más eficiente posible desde el origen hasta el destino. No tiene que preocuparse por las políticas. Por el contrario, los protocolos de enrutamiento interdominio tienen que preocuparse en gran manera por la política. Por ejemplo, las compañías telefónicas podrían estar contentas de actuar como empresas portadoras para sus clientes, pero no para otros o solo podrían estar dispuesto a llevar tráfico para AS que hayan pagado por este servicio.  En general, los protocolos de puerta de enlace exterior (BGP en particular) se han diseñado para permitir que se implementen muchos tipos de políticas de enrutamiento en el tráfico entre sistemas autónomos [3]. Las políticas típicas implican consideraciones políticas, de seguridad, o económicas.
 Actualmente el protocolo BGP (Border Gateway Protocol) o protocolo de puerta de enlace exterior, es el más utilizado para esta función [9]. BGP está situado en la capa de nivel de red y su función principal es determinar cuál es la ruta más adecuada para llegar a otros sistemas autónomos, obteniendo información de las redes pertenecientes a otros AS para realizar dicha ruta [5].
En el siguiente documento comentaremos su funcionamiento, sus características principales, ventajas y desventajas frente a otros posibles protocolos y finalmente habrá una pequeña conclusión para tener una visión global del documento.

2.    FUNCIONAMIENTO

Por una parte, el funcionamiento de BGP se basa en las políticas de enrutamiento y no en la distancia mínima para elegir las rutas a usar. A la hora de implementar las políticas de enrutamiento hay que decidir qué tráfico puede fluir a través de qué enlaces entre los sistemas autónomos (AS). Una política común es que un ISP (Internet Service Provider) cliente pague a otro ISP proveedor por entregar paquetes a cualquier otro destino en Internet y recibir los paquetes enviados desde cualquier otro destino, de esta manera decimos que el ISP cliente compra servicio de tránsito al ISP proveedor. Hay que destacar que el cliente tendrá una ruta para enviar paquetes a cualquier parte, y el cliente sólo debe anunciar al proveedor las rutas a los destinos en su red. De esa manera el proveedor solo envía tráfico al cliente para esas direcciones y no maneja tráfico destinado a otras partes [3].
Por otra parte, BGP se basa en la utilización de  TCP como protocolo de transporte en el puerto 179 para formar una conexión TCP entre dos routers BGP y de esta forma se obtiene una comunicación confiable, además de ocultarse todos los detalles de la red que se está atravesando. Estos routers se caracterizan como Routers de Peer, es decir, cuando intercambian tráfico entre ellos libremente para abrir y confirmar los parámetros de conexión.
Figura 1: Ejemplo BGP
Los routers BGP intercambian información sobre la posibilidad de alcance de la red con el proceso denominado peering, que consiste en que de un AS informa a otro sobre las redes que puede alcanzar a partir de éste [3].
Como vemos en la imagen se producen las siguientes comunicaciones inter e intra-AS:
      R1 anuncia rutas para prefijos de AS1.
      R2 anuncia rutas para prefijos de AS2.
        R2 aprenderá rutas para prefijos de AS3 vía una sesión iBGP con R4. R4 aprendió estas rutas de R6 vía una sesión eBGP.
      R4 anuncia rutas a R6 para prefijos de AS2 y AS1.
Cuando un router anuncia un prefijo a uno de sus vecinos BGP, esa información se considera válida hasta que el primer router anuncia que la información ya no es válida o hasta que la conexión BGP se pierde. Esto significa que BGP no requiere que la información de routing se refresque periódicamente. Al principio existirá un alto flujo de mensajes cuando se establece la conexión BGP, pero transcurrido un tiempo de estabilización se crean  las trayectorias completas que una ruta debe tomar para llegar al destino y los routers sólo necesitarán información de los cambios [11].
Para almacenar información de encaminamiento, el protocolo BGP necesita un conjunto de tablas de datos denominadas RIBs (Routing Information Bases). Éstas son las siguientes:
        Adj-RIB-in:  se guardan las rutas recibidas provenientes de los distintos vecinos BGP. Hay tantas tablas de este tipo como pares BGP.
        Loc-RIB: se almacenan las mejores rutas que el propio router utilizará para llegar a los diferentes destinos. Estas rutas pueden ser anunciadas si la política de encaminamiento a la salida lo permite.
        Adj-RIB-out: se guardan aquellas rutas que el nodo debe anunciar a otros routers BGP. Esta tabla se construye a partir de las informaciones de la tabla Loc-RIB [11].

2.1 MENSAJES
Para llevar a cabo el intercambio de información entre los distintos nodos vecinos, el protocolo BGP intercambia cuatro tipos de mensajes distintos: 
        OPEN: Una vez establecida la conexión TCP entre dos nodos BGP, uno de ellos manda un mensaje de OPEN indicando a su vecino que se pretende establecer un enlace BGP entre ambos. Este mensaje incluye distintos parámetros que permiten una correcta comunicación entre los routers vecinos [12].
        KEEPALIVE: Los pares (peers) BGP intercambian de forma periódica mensajes de KEEPALIVE para evitar que expire el HOLD_TIME. El tiempo entre KEEPALIVEs consecutivos esta alrededor de un tercio del HOLD_TIME, aunque este período puede variar y incluso puede no usarse este tipo de mensajes. Estos mensajes constan únicamente de la cabecera que tiene cualquier mensaje de BGP [12]. 
        UPDATE: Son los mensajes utilizados por BGP para intercambiar la información de un conjunto de rutas válidas  a lo largo de la red, permitiendo eliminar, mediante el uso de ciertas políticas, las anomalías que pudieran existir como, por ejemplo, los loops. Los mensajes de UPDATE sirven para dar de alta una única ruta o para dar de baja a múltiples de ellas[12].
        NOTIFICATION: Son los mensajes usados cuando se detecta cualquier condición de error en una conexión cerrándose inmediatamente el enlace BGP. Como por ejemplo, la pérdida de un cierto número de mensajes de KEEPALIVE  provocando la expiración del HOLD_TIME de la conexión[12].
2.2 ATRIBUTOS
Dentro del mensaje UPDATE se distinguen una serie de atributos que son información adicional asociada al prefijo de la ruta y son utilizados principalmente para elegir la mejor ruta hacia un destino además de aplicar reglas de filtrado a los mensajes BGP recibidos y anunciados (política de encaminamiento)[11,12].
Los atributos se clasifican en 4 grupos:
  1. Well-Known Mandatory (WKM): reconocidos por todas las implementaciones de BGP y presentes en todo mensaje de UPDATE.
        NEXT_HOP: dirección IP del router de borde, que debe usarse como siguiente salto para llegar a los destinos indicados en el campo NRI del mensaje de UPDATE. Varía si la ruta se ha aprendido por iBGP o eBGP. Si un nodo no conoce una dirección explícita para llegar al NEXT_HOP de una ruta, esta ruta no será utilizada[12].
        AS_PATH: Se trata de una lista de los sistemas autónomos que una ruta ha cruzado. Tiene dos funcionalidades, en una de ellas el campo permite evitar que aparezcan loops(Se descarta la ruta si recibe la dirección de su propio AS). El otro es que cuando se disponen de múltiples caminos hacia un mismo destino, la longitud de este atributo permite escoger cuál es la ruta más corta, la cual se usará como preferida si no existen otros atributos que fuercen un comportamiento distinto[12].
        ORIGIN: proporciona información sobre el origen de la ruta aprendida. Tiene tres posibles valores: IGP, la ruta ha sido inyectada a BGP desde un protocolo IGP; EGP, la ruta proviene de EGP; incompleto, la información se ha aprendido por otros medios [12].
  1. Well-Known Discretionary (WKD): reconocidos por cualquier implementación de BGP, y su presencia en los mensajes de UPDATE es opcional.
        LOCAL_PREFERENCE: cuando existen múltiples caminos para llegar al mismo destino, este atributo nos permite forzar el punto de salida que debe tomarse. Puede permitir al operador de red que gestiona un AS utilizar rutas que quizá no son las más cortas pero que salen por un dominio concreto con el que se tienen ciertos acuerdos [12].
        ATOMIC AGGREGATE:  indica que la ruta correspondiente se ha obtenido mediante agregación de otras rutas más precisas[11].
  1. Optional Transitive (OT): no son soportados por todas las implementaciones de BGP, pero si se reciben, deben ser transmitidos.
        AGGREGATOR: cuando es necesario agregar rutas, este atributo guarda la información del sistema autónomo y del router que realizaron dicha agregación[12].
        COMMUNITY: agrupa redes para asignación de políticas[12].
  1. Optional Nontransitive (ON): no tienen que ser soportados por todas las implementaciones de BGP, pero si se recibe uno de estos atributos, si no es reconocido, se ignora y no se transmite.
        MULTI EXIT DISCRIMINATOR (MED): Se puede usar en los enlaces inter-dominio para discriminar entre múltiples puntos de salida/entrada. En caso de igualdad entre los otros factores, el nodo de entrada/salida con un MED menor será el elegido[12].

3.   CARACTERÍSTICAS FUNDAMENTALES

Cuando hablamos de BGP es necesario conocer sus principales puntos fuertes y saber donde destaca para luego poder compararlo con otros protocolos del mismo dominio y decidir cual es el más adecuado para cada tipo de aplicación. De estas características podremos extrapolar el porqué es uno de los protocolos más utilizado en comunicación exterior y fue el que destronó a su predecesor EGP (Exterior Gateway Protocol) [7].
BGP es un protocolo de routing path vector, es decir, mantiene la información de ruta y se actualiza dinámicamente. Define una ruta como una secuencia de sistemas autónomos que deben ser atravesados para alcanzar la red destino. Las actualizaciones que han pasado por la red y han regresado al mismo nodo se detectan y descartan fácilmente. Este algoritmo se usa a veces en los algoritmos de enrutamiento de Bellman-Ford para evitar problemas de "Count to Infinity" [8].
Por otro lado, BGP soporta VLSM ( Variable Length Subnet Mask) y CIDR (Classless Inter-Domain Routing) que evitan el agotamiento de direcciones y una mayor eficiencia de la red [9].
Se crean y mantienen las conexiones entre peers utilizando el puerto 179/TCP y cualquier cambio en la red resulta una actualización por disparo.
Las métricas utilizadas por BGP, llamadas atributos (que mencionamos en el apartado anterior), permiten gran granularidad en la selección del camino y el uso de de direccionamiento jerárquico. BGP tiene su propia tabla de routing, sin embargo es capaz de compartir y preguntar sobre la tabla de routing IP interior. Además, Es posible manipular el flujo de tráfico utilizando atributos. Esto significa que una ruta no puede enviar tráfico si el siguiente salto no quiere. A BGP no le interesa comunicar un conocimiento de cada subred de la organización, sólo le interesa utilizar suficiente información para encontrar un AS, es decir, se basa en la simplificación y por lo tanto tendrá menos posibilidad de error. Asimismo,  asegura la fiabilidad del transporte llevando sus actualizaciones de routing y sincronizando las actualizaciones de routing [10].
Cuando el BGP se ejecuta entre routers que pertenecen a dos AS diferentes, esto se llama BGP externo (eBGP). Cuando el BGP se ejecuta entre routers en el mismo AS, esto se llama BGP interno (iBGP) [5].
Figura 2: BGP externo e interno
La capacidad de manipular el flujo de tráfico son unas de las características que permiten al diseño de la red crecer [10].

4.   VENTAJAS Y DESVENTAJAS

BGP tiene unas ventajas claramente visibles respecto el protocolo vector de distancia, y  estas serán las ventajas de usar BGP como protocolo:
Utiliza TCP como protocolo en la capa de transporte, lo que asegura una comunicación confiable orientada a la conexión. En el inicio de la conexión se intercambian las tablas de enrutamiento completas. A partir de ese punto se envían solamente los cambios (actualizaciones incrementales o disparadas por eventos). Dado que no se requieren actualizaciones periódicas, BGP sólo envía mensajes de keepalive, cuya función es semejante a la de los mensajes hello en protocolos como OSPF y EIGRP.
El transporte de información sobre conexiones TCP confiables asegura mayor eficiencia para la comunicación de volúmenes importantes de información como son los que corresponden a la cantidad de rutas que requiere hoy Internet (170 a 250.000 rutas).
Las actualizaciones de enrutamiento pueden contener tanto información referida a nuevas rutas disponibles, como a rutas que han dejado de estar disponibles. Otra de las grandes ventajas que tiene BGP es que soluciona algunos problemas de escalabilidad y crecimiento que estaban ocurriendo con el antiguo protocolo [13].

Como desventajas se observa que:
Al utilizar el protocolo TCP como establecimiento de conexión, también hereda todos los problemas de TCP que son IP Spoofing y Session Hijacking [14]. Asimismo, también la posibilidad de introducir información errónea por un peer de BGP legítimo [14].
Otro punto conflictivo es el proceso de decisión en el uso de políticas y atributos para calcular los pesos de las rutas de cara a su publicación a los nodos vecinos. El uso de estas característica causa efectos no deseables como la aparición de oscilaciones(cuando el sistema oscila entre varios estados hasta que consigue llegar a un punto estable o no llega a estabilizarse nunca.) y wedgies(cuando ciertas configuraciones para las cuales hay más de un posible estado final. Estos estados estables pueden ser alcanzados por BGP-4 de manera no determinista y son denominados BGP wedgie).
Cuándo redes de gran tamaño, como Internet, sufren oscilaciones y wedgies, los problemas que éstas acarrean pueden derivar en pérdidas económicas en empresas del sector de la telecomunicación [15].
Otra desventaja es la seguridad y el posible ataque al protocolo BGP mediante eavesdropping, replay, inserción de mensajes, borrado de mensajes, modificación de mensajes, hombre en el medio (Man-in-the middle) y disrupción de servicio (Denial of Service) .[14].

5.   CONCLUSIONES

Como conclusión final podemos llegar a la resolución de que tiene bastantes problemas de seguridad, pero tiene muchos pros a favor de la utilización de este protocolo para la creación de  las tablas de encaminamiento en los routers para una mejor utilización de la red y evitar problemas como conteo al infinito y loops innecesarios

6. REFERENCIAS


[16] RFC 4271 - A Border Gateway Protocol 4 (BGP-4) 

Comentarios

Entradas populares de este blog

Sistema de señalización SS7

Implantación de IPv6