Border Gateway Protocol (BGP)
El Border Gateway Protocol (BGP) es el sistema que utilizan los grandes nodos
de Internet para comunicarse entre ellos y transferir una gran cantidad de
información entre dos puntos de la Red. Su misión es encontrar el camino más
eficiente entre los nodos para propiciar una correcta circulación de la información
en Internet.
Los ISP registrados en Internet suelen componerse de varios sistemas
autónomos y para este caso es necesario un protocolo como BGP.
BGP tiene como finalidad crear una red de Sistemas Autónomos (AS) libre de
bucles, que permita enrutar un paquete desde un Sistema Autónomo a cualquier
otro.
La función de BGP, no es encontrar una red específica, sino proporcionar
información que permita encontrar el AS en el cual se encuentra dicha red.
Un sistema autónomo (AS) es un grupo de redes IP que poseen una política de
rutas propia e independientes. El enrtuamiento dentro del AS es definido por los
administradores de la red, y puede basarse en enrutamiento estático o bien en
un protocolo de enrutamiento dinámico.
Los AS se identifican por un número que puede ir desde el 1 al 65535,
llamados ASN (Autonomous System Number) y son asignados por las
organizaciones regionales de la IANA. Los números 64512 - 65535 se reservan
para uso privado.
A diferencia de los protocolos de Gateway internos (IGP),
como RIP, OSPF y EIGRP, no usa métricas como número de saltos, ancho de
banda, o retardo. En cambio, BGP toma decisiones de encaminamiento
basándose en políticas de la red, o reglas que utilizan varios atributos de ruta
BGP.
BGP realiza tres tipos de Ruteo:
Ruteo Interautónomo
Ruteo Intrautónomo
Ruteo de pasc.
¿Cómo Funciona el BGP?
El BGP utiliza TCP como protocolo de transporte, en el puerto 179. Dos routers
BGP forman una conexión TCP entre ellos. Estos routers son routers de peer.
Los routers de peer intercambian mensajes para abrir y confirmar los parámetros
de conexión.
Los routers BGP intercambian información sobre la posibilidad de alcance de la
red. Esta información es principalmente una indicación de las trayectorias
completas que una ruta debe tomar para llegar a la red de destino. Las
trayectorias son números de AS BGP. Esta información ayuda con la
construcción de un gráfico de los AS que son libres de loops. En el gráfico,
también se muestra dónde aplicar las políticas de ruteo para hacer cumplir
algunas restricciones en el comportamiento de ruteo.
Los dos routers que forman una conexión TCP para intercambiar información de
ruteo BGP son "peers" o "vecinos". Los peers BGP intercambian inicialmente las
tablas de ruteo BGP completas. Después de este intercambio, los peers envían
actualizaciones graduales como los cambios de tabla de ruteo. El BGP guarda
un número de versión de la tabla de BGP. El número de versión es el mismo
para todos los peers BGP. El número de versión cambia cada vez que BGP
actualiza la tabla con cambios de información de ruteo. El envío de paquetes
keepalive garantiza que se mantenga activa la conexión entre los peers BGP.
Los paquetes de notificación se envían en respuesta a errores o condiciones
especiales.
¿Cuándo usamos BGP?
BGP no es necesario cuando un AS tiene una única conexión a Internet, ya que
el problema se puede resolver con rutas estáticas (al fin y al cabo solo hay una
forma de llegar a/desde Internet). BGP debe usarse cuando:
Hay múltiples conexiones a Internet a través de diferentes proveedores.
Hay múltiples conexiones a Internet a través de un mismo proveedor, pero se
pretende regular el tráfico a través de los enlaces.
Lo que realmente aporta BGP es el control de cómo el tráfico entra al interior de
un AS más que como sale de él.
Cuándo no utilizar BGP
Una red simple es una red que es fácilmente gestionable y mantenible, lo cual
es razón para evitar la utilización de BGP.
El ISP y la organización tienen la misma política de routing.
Aunque la organización tenga varías conexiones a Internet, no está
previsto utilizar más de una simultáneamente.
Existen recursos limitados, como CPU o memoria en los routers.
El ancho de banda en el AS es bajo, y la utilización de información de
routing adicional repercutirá en un ancho de banda disponible más bajo
para tráfico de datos.
Vecinos BGP (Neighbors)
Para que BGP funcione necesita establecer una relación con sus vecinos.
Existen dos tipos de relaciones entre vecinos:
vecinos iBGP - vecinos dentro del mismo AS. la "i", viene de interior
vecinos eBGP - vecinos que conectan diferentes sistemas autónomos. la
"e" viene de exterior
Entonces 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).
En la siguiente figura El router C (en el AS 200) podría formar una relación vecinal
iBGP con el Router B y D. En cambio el router A (en el AS 100) y el router B (en
el AS 200) formarían una relación vecinal eBGP.
Cuando dos vecinos BGP establecen su relación, intercambian su tabla de rutas
completa. Una vez que el primer intercambio ha concluido, solo intercambian los
cambios que se produzcan en la tabla de rutas.
Algunas restricciones de BGP
1. Vecinos a un salto
eBGP asume que los vecinos están a un salto de distancia como
máximo (aunque hay una excepción, cuando se usa la opción ebgp-
multihop que permite establecer relaciones entre vecinos a más de un
salto).
iBGP en cambio no tiene esta restricción. Depende del IGP (Interior
Gateway Protocol) que los vecinos BGP se vean entre sí. iBGP considera
que todos los vecinos iBGP están conectados en una maya completa.
2. Distancia administrativa y pertenencia a AS's
Un router puede pertenecer a un único AS.
La distancia administrativa es un valor que utilizan los routers para
seleccionar la mejor trayectoria cuando hay dos o más rutas diferentes
hacia el mismo destino desde dos protocolos de ruteo distintos. La
distancia administrativa define la confiabilidad de un protocolo de ruteo.
Se da prioridad a cada protocolo de ruteo en orden de mayor a menor
confiabilidad (credibilidad) usando un valor de distancia administrativa.
Las distancias administrativas son:
eBGP: 20
iBGP: 200
Características de BGP
Estas características demuestran por qué este protocolo es el mejor para
routing exterior.
Las claves principales de BGP incluyen:
Es un protocolo de routing path vector.
BGP soporta VLSM, CIDR y sumarización.
En el inicio de la sesión de envían actualizaciones completas; las
actualizaciones por disparo se enviaran posteriormente.
Se crean y mantienen las conexiones entre peers utilizando el puerto
179/TCP.
La conexión se mantiene por keepalives periódicos.
Cualquier cambio en la red resulta una actualización por disparo.
Las métricas utilizadas por BGP, llamadas atributos, permiten gran
granularidad en la selección del camino.
El uso de de direccionamiento jerárquico y la capacidad de manipular el flujo
de tráfico son unas de las características que permiten al diseño de la red
crecer.
BGP tiene su propia tabla de routing, sin embargo es capaz de compartir y
preguntar sobre la tabla de routing IP interior.
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.
Una característica distintiva de BGP son sus actualizaciones.
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.
Las actualizaciones de routing de BGP lleva la sumarización al extremo
comunicando únicamente los números de los AS, prefijos de direcciones
agregadas e información de routing basada en políticas.
BGP asegura la fiabilidad del transporte llevando sus actualizaciones de
routing y sincronizando las actualizaciones de routing.
BGP puede ser implementado de diferentes formas:
1. Entre AS: En este momento actúa como un protocolo de pasarela
exterior, entonces lo llamaremos eBGP.
2. Dentro de una AS: BGP se puede utilizar para llevar información
exterior entre routers eBGP que residen en el mismo AS, entonces lo
llamaremos iBGP.
Comprativa de Protocolos:
BGP es un protocolo de routing avanzado vector distancia
Utiliza TCP para gestión de la sesión fiable
Utiliza el puerto 179/TCP
Mensajes que utiliza BGP
BGP intercambia mensajes con sus vecinos. Estos mensajes son los siguientes:
OPEN inicia una sesión entre vecinos (BGP utiliza TCP como protocolo de
transporte). Los parámetros intercambiados son:
Versión BGP
ASN local
ID del router
KEEPALIVE es enviado periódicamente (cada 60 segundos) para
asegurarse de que un vecino está disponible. Si el router no recibe un
mensaje KEEPALIVE en un periodo Hold-time (180 segundos), el router
considera que el vecino correspondiente está caído
UPDATE intercambia rutas entre vecinos
NOTIFICATION se envía cuando hay una condición de error. Cuando se
envía este mensaje, la sesión se cierra y se reinicia.
Estados de una sesión BGP
Una sesión BGP entre vecinos pasa por varios estados:
Idle es el estado inicial
Connect espera una conexión TCP de un vecino.
Si la conexión se lleva a cabo con éxito, se envía un mensaje OPEN.
Si la conexión no se completa, la sesión pasa al estado Active
Active es un estado en el que BGP trata de iniciar una sesión.
Si la conexión se lleva a cabo con éxito, se envía un mensaje OPEN
Si la conexión no se completa dentro de un periodo Connect Retry, BGP
pasa de nuevo al estado Connect
En el estado Active los vecinos intentan de manera repetida el
establecimiento de conexión. Si este estado no cambia, puede indicar un
problema de conectividad, errores en la configuración del vecino o bien el
filtrado del puerto 179.
OpenSent indica que ambos vecinos han establecido una conexión TCP, y
han intercambiado un mensaje OPEN. Los vecinos están a la espera de una
respuesta al mensaje OPEN. En el momento en que un vecino reciba un
mensaje OPEN enviará un mensaje KEEPALIVE.
OpenConfirm indica que los vecinos están a la espera de una respuesta al
mensaje KEEPALIVE.
Established indica que la sesión ha sido establecida. Los
mensajes UPDATE se intercambiarán en este estado para el intercambio de
información.
Comandos para Configurar vecinos BGP
Partiendo de la red mostrada en la figura, el proceso para configurar un vecino
es el siguiente:
Para configurar un router, e indicarle que pertenece a un AS, el comando a
ejecutar es el siguiente:
Ahora, RouterB pertenece al AS 100. A continuación estableceremos las
relaciones con sus vecinos. RouterA es un vecino iBGP ya que están dentro del
mismo AS.
El router RouterC es un vecino eBGP ya que está en otro AS.
Si desemos que haya autenticación entre vecinos, podemos indicar una
contraseña al registrar un vecino:
Comprobar vecinos BGP
Para comprobar el estado de los vecinos BGP, usamos el siguiente comando:
Si lo que queremos es ver el estado de un determinado vecino, ejecutaremos el
siguiente comando:
Anuncio de redes
Hay tres formas de anunciar redes en BGP:
1. Usar sentencias network
2. Usar sentencias aggregate-address
3. Redistribuir un IGP dentro de BGP
Regla de BGP para el anuncio de rutas:
Sin embargo, cada ruta anunciada debe estar en la tabla de rutas antes de que
BGP anuncie la red a un vecino eBGP.
RouterB, incluiría los siguientes comandos para anunciar sus redes:
La tabla de rutas BGP
BGP mantiene su propia tabla de rutas. Esta tabla contiene una lista de rutas
que pueden ser anunciadas a los vecinos BGP, siempre respetando la regla
anterior para el anuncio de rutas.
Para comprobar la tabla de rutas BGP, se usa el comando show ip bgp. Podemos
verlo en el router RouterB:
Tabla de rutas en el RouterB:
En la salida del comando podemos apreciar lo siguientes aspectos:
La ruta se ha inyectado en BGP usando el comando network.
El siguiente salto ([Link]) indica que la ruta se originó localmente en BGP.
El IGP correspondiente se encargará de resolver el envío del paquete al
router correspondiente dentro del AS local para llegar a dicha red.
El parámetro path está vacío ya que la ruta se originó en el mismo AS al que
pertenece RouterB.
El código "*>" significa lo siguiente:
* indica que la ruta es válida (está presente en la tabla de rutas)
> indica que es la mejor ruta hacia el destino.
BGP no anunciará una ruta a un vecino eBGP hasta que la ruta sea válida y
además sea la mejor ruta hacia su destino. Es decir, una ruta BGP anunciada
cumple estas dos condiciones:
La ruta es válida (*)
La ruta es la mejor (>)
Si observamos la tabla de rutas BGP de RouterC, observaremos lo siguiente:
Podemos ver que el AS 100 ha sido añadido a la columna path, y que el siguiente
salto es ahora RouterB.
BGP route-reflector
Una de las condiciones que BGP pone para iBGP es que los vecinos dentro de
un AS deben tener topología de maya completa. Esto no siempre es posible, y
por eso existe una "artimaña" para superar esta restricción.
route-reflector es un servicio que permite el tránsito de notificaciones GBP entre
nodos que no están el maya completa.
En la imagen anterior hay tres routers BGP en el AS. Siguiendo la restricción de
BGP, debería haber una topología de maya completa, de forma que RouterD
debería estar conectado a RouterB. Una alternativa es que RouterA sea
conectado como un servidor route-reflector. Tanto RouterB como RouterD
tendrán vecindad con RouterA únicamente:
Atributos BGP
BGP utiliza atributos para determinar el mejor camino hasta su destino. Los
atributos soportados en todas las implementaciones de BGP
(independientemente del fabricante) son:
AS-Path identifica la lista de AS atravesados para alcanzar un destino
concreto.
Next-Hop identifica la siguiente dirección IP para alcanzar un destino.
Origin identifica al router que originó la ruta.
Local Preference (opcional) proporciona una preferencia para determinar el
mejor camino para el tráfico de salida.
Atomic Aggregate (opcional) identifica rutas sumarizadas.
MED (opcional) Multi-Exit-Discriminator permite elegir entre los diferentes
routers directamente conectados mediante eBGP.
Wight (propietario de Cisco) asignado administrativamente.
Determinación de la mejor ruta
Si BGP contiene varias rutas hacia el mismo destino, compara las rutas,
empezando por las más nuevas y terminando por las más antiguas. La mejor
ruta se decide comparando los atributos de las rutas, en el siguiente orden:
1. Weight: ruta con mayor peso
2. Local preference: ruta de mayor preferencia
3. Ruta originada localmente: es decir, tiene como destino [Link]
4. AS-Path: ruta con AS-Path más corto
5. Origin Code: tipo de origen. Por orden de preferencia:
1. IGP
2. EGP
3. Origen desconocido
6. MED: ruta con menor MED
7. Tipo de BGP: eBGP es preferible a iBGP
8. Age: las rutas más antiguas son las preferidas
9. Router ID: se prefieres rutas originadas por el ID más bajo
10. Peer IP Address: qué ruta se originó en el router con menor IP