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