sábado, 18 de marzo de 2017

BGP(Border Gateway Protocol)

1.         INTRODUCCIÓN.

El protocolo de Puertas de Frontera (Border Gateway Protocol, BGP) está formado por un conjunto de reglas que permiten el encaminamiento externo entre sistemas autónomos (ASs). Un sistema autónomo se define como un conjunto de redes y dispositivos bajo un único control administrativo y propietario. [1]
La función principal de este protocolo 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. [1]
La primera versión de este protocolo (RFC 1105) apareció en 1989, sustituyendo así al protocolo exterior EGP utilizado en Internet. La versión 2 (RFC1163) y la versión 3 (RFC 1267) fueron desarrolladas posteriormente. En último lugar, se definió la versión 4 de BGP (BGP – 4) definida en el RFC 1771 y RFC 4271. Esta versión introduce mecanismos de agregación de rutas de AS y elimina el concepto de “clase” de red dentro del encaminamiento entre dominios de BGP, denominado CIDR. El CIDR permite especificar el número de bits de la dirección de red, pudiendo así disminuir el tamaño de las tablas de encaminamiento. En la actualidad, este protocolo se sigue desarrollando para obtener un mejor control de la información y mayor seguridad, a pesar de ello, la versión 4 de BGP es la más actual y utilizada. [2]
El protocolo BGP se caracteriza por utilizar TCP como protocolo de transporte y por servirse del puerto 179 para el establecimiento de sus conexiones. La información de enrutamiento BGP incluye la ruta completa a cada destino. Este protocolo utiliza la información de enrutamiento para mantener una base de datos de información de accesibilidad de red que intercambia con otros sistemas BGP. Esta información de accesibilidad es utilizada para construir un gráfico de conectividad de AS, lo que permite a BGP eliminar los bucles de enrutamiento y hacer cumplir las decisiones de política en el nivel de AS. [3]

2.         FUNCIONAMIENTO. MENSAJES BGP.
            Los encaminadores BGP establecen sesiones TCP, estas conexiones pueden ser tanto externas como internas. Las conexiones externas, o eBGP, relacionan ASs entre ASs vecinos. Éste tipo de conexiones se utilizan básicamente para anunciar las redes que se pueden alcanzar a través de un AS concreto. Las conexiones internas, o iBGP, comunican el interior de un AS. Éste tipo de conexiones son utilizadas para propagar la información de redes que es posible alcanzar a través de otros AS, es decir, llevar información exterior entre routers eBGP que residen en el mismo AS, sean o no físicamente adyacentes. Estas conexiones, tanto internas como externas, pueden verse reflejadas en la figura 1. [4]
            Estas sesiones tienen una serie de restricciones para asegurar la correcta propagación de la información y evitar la formación de bucles (loops) en un AS. En primer lugar, un interlocutor BGP puede anunciar prefijos IP aprendidos de un interlocutor eBGP a un interlocutor iBGP o viceversa. En cambio, un interlocutor BGP no puede anunciar prefijos IP aprendidos de un interlocutor iBGP a otro interlocutor iBGP. [4]


Figura 1. Conectividad entre AS. [5]

        Tras establecer la sesión TCP correcta entre dos routers (peers), comienza el proceso por el cual un AS informa a otros sobre las redes que puede alcanzar a partir de éste, este proceso se denomina peering. Esta sesión se considera válida hasta que la sesión BGP se pierde de alguna forma o la información que recibe un router ya no es válida. [2]
Una ventaja del protocolo BGP es que no requiere un continuo flujo de mensajes, es decir, a la hora de establecer la conexión es el momento en el que más información entre routers se envían, pero tras cierto tiempo, solamente se envían mensajes si hay algún cambio en la información. [2]

3.         MENSAJES BGP.
En el protocolo BGP hay cuatro tipos de mensajes, los cuales tienen una finalidad dependiendo de la situación de la conexión en la que se encuentre. Cada mensaje tiene un tamaño entre 19 y 4096 octetos y depende del TCP/IP utilizado, del secuenciamiento y de la fragmentación. Estos mensajes tienen una cabecera común de 19 bytes y datos adicionales dependiendo de cuál de los cuatro tipos de mensaje se utilice. Los campos son los representados en la figura 2. [5]

MARCADOR
(16 bytes)
LONGITUD
(2 bytes)
TIPO
(1 byte)
DATOS
(variable)
Figura 2. Formato de mensaje BGP. [5]
En primer lugar, el campo Marcador de 16 bytes, contiene información de sincronización y de seguridad. Luego, un campo Longitud de 2 bytes, que indica la longitud total del mensaje. En tercer lugar, un campo Tipo de 1 byte, que indica el tipo de mensaje de los cuatro que hay. Por último, el campo Dato de tamaño variable, que corresponde al tipo de mensaje que se envía y puede contener información o no. [5]
Tras establecer la conexión TCP, ambos routers o peers envían un mensaje OPEN mutuamente. El mensaje OPEN consiste en informar a los vecinos sobre el número de AS, el número identificador del proceso BGP y la versión del protocolo BGP utilizado. Este mensaje contiene un valor temporal de mantenimiento de la sesión (usualmente 90 segundos), si este valor es 0 quiere decir que este valor no tiene límite. [1]
Para confirmar que ambos routers han recibido el mensaje OPEN, deben de enviar un mensaje KEEPALIVE. El mensaje KEEPALIVE consiste en la confirmación del mensaje OPEN, si el valor temporal es limitado dicho mensaje va a ser enviado al otro interlocutor para verificar que la sesión sigue activa si no hay ningún tipo de cambio de la tabla de encaminamiento. [1]
Tras todo ese proceso de establecimiento de la conexión, se realiza el intercambio de información entre peers. Cada encaminador mantiene una tabla de encaminamiento con las redes que puede alcanzar y la ruta más corta para alcanzarlas enviando mensajes de tipo UPDATE. Estos mensajes UPDATE, también son empleados cuando se realiza un cambio o se incluye nueva información en las tablas de encaminamiento. El mensaje UPDATE contiene información como las rutas a eliminar, los atributos de cada ruta, las informaciones de los prefijos y la longitud. [1]
La sesión se mantiene activa, siempre y cuando, ambos encaminadores se envíen mutuamente mensajes de KEEPALIVE, en cambio, la sesión se da por terminada si estos mensajes no se reciben en un tiempo o si se cierra la conexión TCP. En el momento en el que un peer recibe un mensaje NOTIFICATION, la sesión BGP y la conexión TCP se cierran. Además, el recibir un mensaje de este tipo, produce en ambos peers eliminar de sus tablas de encaminamiento las rutas aprendidas durante la sesión BGP. [1]

4.         ATRIBUTOS EN BGP PARA LA SELECCIÓN DE RUTAS.
Dentro del mensaje UPDATE del que se ha hablado en el apartado anterior, se encuentran una serie de atributos que dan información sobre una determinada ruta. Estos permiten seleccionar cuál es la ruta más adecuada para llegar a un determinado AS [1]. Hay distintos tipos de atributos que se pueden clasificar en:
·         Well- Known: Este tipo de atributos son de uso obligatorio. Dentro de estos podemos encontrar dos tipos:
a)      Mandatory: Atributos requeridos que deben ser reconocidos por todas las versiones de BGP. [4]
b)      Discretionary: Atributos no requeridos, pero de encontrarse en el mensaje, deben ser reconocidos por todos los routers que implementen BGP. [4]

·         Optional: Este tipo de atributos son opcionales, dentro de estos también podemos diferenciar dos tipos:
a)      Transitive: No es necesario que el router reconozca este tipo de atributos, pero si lo hace, debe actualizarlos y enviar esta información al siguiente router. Si no los reconoce, debe enviarlos sin modificar nada. [4]
b)      NonTransitive: Este tipo de atributos son eliminados si los recibe un router que no los reconoce. [4]
Una vez conocidos la clasificación de los atributos de BGP, podemos profundizar explicando algunos de los más importantes.
-     Origin: Si observamos la clasificación anterior diremos que Origin es un atributo Well-known, mandatory de código 1. Este atributo identifica cuál es el origen de una actualización en las rutas. Hay tres tipos de origen:
1)      IGP: indica que la IP se aprendió por un protocolo interior.
2)      EGP: indica que la IP se aprendió por un protocolo exterior.
3)      INCOMPLETE: indica que la IP se aprendió de forma estática.
Para elegir una ruta con este atributo, se escoge el Origin de menor valor siendo sus pesos IGP < EGP < Incomplete. [6]
-        AS_Path: El AS_Path es un atributo Well-known, mandatory de código 2. Gracias a este atributo se crea una lista con la IP de todos los AS que se debe atravesar para llegar al destino, de esta manera para la elección de la ruta se elige el que tenga un AS_Path más pequeño. [7]
-       Next Hop: Este es un atributo Well-known, mandatory de código 3. En este atributo se indica cuál es el siguiente salto para alcanzar el destino. Si estamos empleando eBGP, es la dirección que ha originado la actualización de las rutas. Si estamos empleando iBGP, se mantiene como Next Hop la dirección del AS que ha dado lugar a la actualización. Para seleccionar una ruta mediante este atributo, se elegiría aquella con un valor de Next Hop menor. [6]
-          MED (Multiple Exit Discriminator): Atributo de tipo Optional, nontransitive de código 4. Este atributo informa a routers de distinto AS cuál es la mejor ruta (en caso de haber varias) para entrar a un determinado AS. Se escoge aquella ruta con valor de MED menor. [6]
-         Local Preference: Atributo de tipo Well-known, discretionary de código 5. Este atributo es empleado para comunicar al resto de routers de un mismo AS cómo salir de este (en caso de que haya distintas posibilidades). Sólo es enviado entre vecinos iBGP. La ruta que se selecciona con este atributo es aquella con un valor de preferencia mayor. [7]
-       Atomic Aggregate: Atributo de tipo Well-known, discretionary de código 6. Este atributo permite a un router de otro AS conocer la identidad del router que ha generado la ruta agregada. Este atributo no es utilizado para la selección de caminos. [7]
-          Aggregator: Este es un atributo de tipo Optional, nontransitive de código 7.  Contiene tanto la ID del router como el AS, al que pertenece el responsable de la agregación de la ruta. No es utilizado como atributo de preferencia para la elección de una ruta. [6]
-    Community: Atributo Optional, transitive de código 8. Etiqueta a ciertas rutas con un atributo común, estas rutas deben poseer unas mismas propiedades (forman una community), de esta forma se consigue simplificar el ruteo. [6]
-          Originator ID: Atributo Optional, nontransitive de código 9, se utiliza para prevenir bucles y contiene el router ID en el AS local. No es utilizado como atributo de preferencia para la selección de una ruta. [7]
-          Cluster ID: Este atributo es Optional, nontransitive de código 10, permite evitar errores de bucles, para ello identifica el camino que se ha tomado y los routers involucrados en este. Al igual que los anteriores, no es utilizado para la selección de la preferencia de una ruta. [6]
Cada vez que se produce un anuncio de ruta BGP calcula, gracias a los atributos anteriormente descritos, el grado de preferencia de cada ruta [1]. A la hora de seleccionar una ruta BGP, realiza el siguiente proceso:
1)      Se comprueba el NEXT_HOP, de esta manera se descartan aquellas rutas que sean inaccesibles.
2)      Se busca la ruta con mayor WEIGHT (criterio específico de los routers CISCO).
3)      Se elige la ruta con un atributo local preference mayor.
4)      En el caso de que dos rutas coincidan en el atributo local preference, se elige la ruta que haya sido generada por el propio router antes que una aprendida.
5)      Se elige la ruta con el atributo AS_Path más bajo.
6)      Se elige la ruta con un menor ORIGIN.
7)      Se elige la ruta con un menor MED.
8)      Se selecciona una ruta aprendida por EBGP antes que por IBGP.
9)      Se selecciona la ruta con el atributo NEXT_HOP menor.
10)   Se selecciona la ruta con el menor identificador.


5.         Seguridad en BGP.
El aspecto de la seguridad en BGP es fundamental, debido a que BGP mantiene el encaminamiento en la infraestructura de Internet [2]. BGP no posee mecanismos que garanticen la integridad y autentificación de los peers ni de los mensajes recibidos, tampoco posee mecanismos que validen la autoridad de un SA o que aseguren la autenticidad de los atributos de camino de un AS. [9]
Por estos motivos, BGP es vulnerable a distintos tipos de amenaza, algunos de ellos son:  
-          Fabricación: Se generan mensajes de actualización falsos.
-          Reproducción: Un intruso captura tráfico BGP y lo reproduce posteriormente.
-          Modificación: Se alteran los mensajes BGP con la finalidad de redirigir el tráfico hacia otro sistema autónomo.
-          Intercepción: Un intruso interviene el canal debido a que los mensajes BGP no se encuentran encriptados puede obtener la información contenida en ellos.
-          Borrado: Destrucción de los mensajes de actualización en BGP. [2]

Para solucionar alguno de estos problemas de seguridad presentes en BGP, se pueden llevar a cabo diferentes medidas como: proteger los mensajes de actualización, ya que un mensaje de actualización erróneo provocaría una designación equivocada de rutas. [11]
Se pueden configurar filtros tanto de entrada como de salida para descartar prefijos reservados. De esta manera, se podrán definir las rutas que serán aceptadas y las que serán anunciadas [10]. Los filtros deben ser ajustados para que no se anuncien rutas de una organización a otros sistemas autónomos.
Otra medida muy útil es utilizar contraseñas para el establecimiento de sesión y comprobar los propietarios reales de los prefijos.
Para solucionar alguno de los problemas de BGP, surgen nuevas propuestas de este protocolo que incluyen algunas medidas de seguridad, como la autentificación, la integridad y las autorizaciones. Un ejemplo de ello, es el protocolo S-BGP. [11]

6.         CONCLUSIÓN.
            Al principio de la era de Internet, EGP era utilizado como el mejor protocolo hasta que se creó BGP. Este nuevo protocolo puede utilizar cualquier topología de red para establecer la conexión entre dos sistemas autónomos, y así, no formar bucles a la hora de establecer rutas entre ellos o dentro de ellos.

            Este protocolo de encaminamiento exterior entre sistemas autónomos, permite establecer una conexión fiable y comunicar información entre redes de un mismo AS o entre ASs, a través de una serie de mensajes periódicos. Otra característica de BGP es la utilización de atributos, dentro del protocolo vector distancia, los cuales permiten medir las conexiones y así obtener una rigurosa selección de la ruta a seguir.

El hecho de que Internet se haya convertido en un recurso estratégico de la economía de los países, sumado a los distintos casos de fallos de funcionamiento y ataques, ha hecho que distintos grupos se hayan interesado por hacer BGP seguro, tanto dentro del IETF como ajenos a él.

7.         REFERENCIAS.
[1] Rekhter Y., Li T., Hares S., “A Border Gateway Protocol 4 (BGP - 4)”, RFC 4271, January 2006. Enlace: https://tools.ietf.org/html/rfc4271
[2] Lasso Mesa, M, “Encaminamineto dinámico en Internet mediante BGP y configuración del acceso a Internet de un AS cliente multihomed conectado a varios IPS”, Trabajo fin de grado en la Universidad de Sevilla, 2007, Enlace: http://bibing.us.es/proyectos/abreproy/11359/direccion/BGP%252F
[3] “BGP Feature Guide”, TechLibrary. Última modificación: 2016. Enlace: https://www.juniper.net/documentation/en_US/junos/topics/concept/bgp-routing-overview.html 
[4] Estepa Alonso, Rafael, “Introducción a BGP. Tema 5”, Universidad de Sevilla. Enlace: http://trajano.us.es/~rafa/REDES/apuntes/T5-Introduccion_BGP.pdf
[5] Router Teldat, “Protocolo BGP”. Última modificación: 2015. Enlace: http://www.lab.dit.upm.es/~labrst/config/manuales-teldat/Dm763v10-5_Protocolo_BGP.pdf
[6] Collado Cabeza, E. “Fundamentos de routing”, Última modificación: 2009. Enlace: http://eduangi.org/node387.html
[7] “Understanding the AS path and AS path prepending”, Noction Network intelligence. Última modificación: 2015. Enlace: https://www.noction.com/blog/as-path-and-as-path-prepending
 [9] Domínguez J. A., “Seguridad en BGP”, Universidad de Oregon. Última modificación: 2004, Enlace: http://ws.edu.isoc.org/workshops/2004/CEDIA2/material/Seguridad_en_BGP.pdf
[10] Barajas, Saulo, “Seguridad en BGP”, Universidad Carlos II de Madrid, Ultima modificación: 2016, Enlace: http://www.saulo.net/des/BGP-pre.pdf  
[11] Paz, Álvaro, ”BGP, Defensa Perimetral,seguridad en redes de alta capacidad” Ultima modificación: 2016,  Enlace: http://www.gurudelainformatica.es/2016/07/seguridad-en-protocolos-de-routing-bgp.html




No hay comentarios:

Publicar un comentario