BGP

No hay comentarios

Border Gateway Protocol (BGP) es el protocolo de enrutamiento utilizado en internet por los ISPs para interconectar distintos sistemas autónomos y sus redes. Su objetivo es proveer un enrutamiento entre sistemas autónomos libre de bucles. Soporta VLSM y CIDR, lo cual ayuda en gran medida a reducir el tamaño de grandes tablas de enrutamiento. BGP no requiere una arquitectura jerárquica y posee la capacidad de soportar múltiples conexiones, acompañándolas con excelentes políticas de control de rutas.

Existen protocolos vector distancia como RIP y estado enlace como OSPF, a BGP se le conoce como un protocolo vector distancia mejorado, o también como protocolo Vector Path, siendo su métrica Path Vectors (Atributos). BGP busca el camino más estable hacia el destino, a diferencia de los otros protocolos de enrutamiento. Además este camino se basa en políticas de enrutamiento, lo cual permite controlar el flujo de tráfico entre los sistemas autónomos.

BGP Versión 4 (BGP-4) es la última versión de BGP y es definida en la RFC 4271, además existe una extensión de esta última versión llamada BGP4+, la cual soporta múltiples protocolos, incluyendo IPV6, estas son definidas en la RFC 4760.
Para entender el funcionamiento de BGP primero se deben tener conocimiento de los siguientes conceptos:
Sistema Autónomo: Hace referencia a una red o grupo de redes administradas de manera independiente, donde se puede gestionar todo tráfico que pasa por ella.

Los números de Sistemas Autónomos(AS) poseen 16 bits, es decir desde 1 – 65535 definidos en la RFC 1930, donde desde el 64512-65534 son privados. Actualmente existen sistemas autónomos de 32 bits.

BGP documento Yo sé networking
Por Juan Zambrano 9 de enero 2014

Imagen

Recomiendo descargar el siguiente documento, ya que se presenta mas en detalle y con toda la materia de BGP.

Formato: PDF
Paginas: 45.
Autor: Juan Zambrano

Los números de Sistemas Autónomos(AS) poseen 16 bits, es decir desde 1 – 65535 definidos en la RFC 1930, donde desde el 64512-65534 son privados. Actualmente existen sistemas autónomos de 32 bits.
IGP: Interior gateway protocol, son los protocolos de enrutamiento de interior, es decir protocolos que corren dentro de un sistema autónomo, como por ejemplo RIP, EIGRP, OSPF, IS-IS.
EGP: Exterior gateway protocol, son los protocolos que intercambian información de enrutamiento entre diferentes sistemas autónomos, como por ejemplo BGP.BGP es un protocolo normalmente utilizado por los ISPs, ya que logra administrar un gran flujo de información de enrutamiento que existe en todo internet. Por lo tanto para entender de mejor forma como funciona BGP y cómo influye este protocolo en la red de una empresa o un ISP debemos entender como son interconectados. En el siguiente capítulo se darán a conocer cuáles son las formas de conexión entre una empresa y un ISP.


Tipos de conexiones a ISPs

Singlehomed ISP Connectivity.
Este tipo de conexión solo posee un enlace al ISP, por lo tanto no es tolerante a fallas. Existen dos formas de conectarse a Internet:
La primera opción es generando una ruta por defecto hacia el ISP, y a su vez el ISP genera una ruta estática hacia la red de la empresa. Esta opción no es la mejor, ya que el ISP debe estar configurando y realizando modificaciones en sus redes manualmente cada vez que la empresa decida realizar nuevos cambios. Además les toma demasiado tiempo a los equipos del ISP aprender esta nueva red. Por lo tanto la mejor opción es la 2.
La opción 2 utiliza BGP como protocolo de enrutamiento entre el ISP y la empresa, esto genera en el ISP una mejor forma de conexión, ya que las nuevas rutas pueden ser anunciadas directamente desde la empresa hacia el ISP, y gracias a BGP estas nuevas redes son aprendidas muy rápidamente.

Imagen


Dual-Homed ISP Connectivity
Este tipo de conexión provee un enlace redundante, por lo tanto ante la falla del primer enlace, siempre estará disponible un segundo. También gracias al doble enlace se puede realizar balanceo de carga. En la opción 1 si el router borde falla se pierde la conectividad hacia internet, a pesar de que posea un doble enlace. La opción 2 posee una mayor resistencia a fallas, ya que si ocurre un problema en uno de los equipos siempre existe la posibilidad de utilizar el router Backup.

Imagen


Multihomed ISP Connectivity.
Hace referencia a la conexión de una empresa hacia dos ISP distintos. Si los enlaces hacia las empresas son redundantes se le llama dual Multihomed.Proveer Multihomed genera una red escalable, resistente a fallas, que permite realizar balanceo de carga entre los diferentes ISP, ya que posee más de una conexión a internet.

Imagen


Sistema Autónomo de transito
Al utilizar Multihomed se debe tener la precaución de definir como serán anunciadas las rutas hacia los ISP, ya que nuestra red podría ser utilizada por uno de los ISP como transito para alcanzar otros sistema autónomos.
Cuando se decide implementar Multihomed existen 3 principales formas de realizar la conexión con el ISP.
1) Se crea en los routers borde una ruta por defecto hacia el ISP, donde el uso de la CPU será menor y la tabla de enrutamiento más pequeña.
2) Se construye una ruta por defecto hacia el ISP y éste nos envía algunas rutas específicas. Donde el uso de CPU será medio y la tabla de enrutamiento no será sobrecargada.
3) El ISP nos envía todas las rutas de las redes, donde el uso del CPU será extremo y la tabla de enrutamiento será demasiado grande. Normalmente los ISP utilizan esta opción.
Entre más redes anunciadas por el ISP, más precisa será la decisión de enrutamiento.

Imagen


Multihomed mejor ruta
Dentro de un sistema autónomo los IGP son los encargados de seleccionar el mejor camino, cuando se decide redistribuir una ruta por defecto en un IGP puede suceder que no siempre se seleccione el mejor camino para alcanzar el destino fuera de la red.
Por ejemplo, la red de la Empresa en el sistema autónomo 65500 desea conectarse con la red del Cliente perteneciente al sistema autónomo 64520. Si se decide redistribuir una ruta por defecto en router A y router B dentro de un IGP como RIP, router C elegiría la ruta más corta dentro de su sistema autónomo, por lo tanto decidiría el camino por router A, debido que existen menos saltos.
Router A decidiría utilizar la ruta por defecto hacia ISP A perteneciente al sistema autónomo 65000.
Este camino no es el más óptimo para llegar a la red destino del Cliente, ya que fue influenciado por el IGP de la red de la Empresa. La solución para este problema está en aplicar BGP, utilizando sus políticas y atributos, para influenciar el tráfico por el camino más optimo para alcanzar las redes deseadas.

Imagen


IBGP y EBGP

IBGP hace referencia a la conexión entre dos routers que corren BGP dentro de un mismo sistema autónomo, como por ejemplo, Router A, B, C y D son IBGP dentro del SA 65000. EBGP son los Routers borde que interconectan los distintos SA, como por ejemplo Router A del SA 65000 y Router E del SA 65250

Imagen

Los mensajes BGP entre peers EBGP, se envian con un TTL de 1, por lo tanto solo se puede generar adyacencia EBGP entre routers borde, ya que no permite mas de un salto. El TTL entre routers IBGP siempre es mayor a 1, (En Dynagen es 255), lo que permite generar adyacencia entre vecinos que no se encuentran directamente conectados.
Problemas de Update

Imagen

Según la regla de BGP split horizon especifica que las rutas aprendidas via IBGP nunca son propagadas a otros IBGP peers.

Tipos de Sistemas Autónomos

Sistema autónomo de transito
Un AS de transito es el encargado de transportar trafico entre sistemas autónomos, como por ejemplo el trafico entre distintos ISPs o sucursales.
En un sistema autónomo de transito todos los routers deben tener completo conocimiento de las rutas externas. Una opción para lograr esto es redistribuyendo todas las rutas en el IGP que corre dentro del sistema autónomo, sin embargo esto puede provocar problemas.
Al redistribuir las rutas dentro de un IGP las tablas de enrutamiento serán gigantescas y protocolos como Ospf o Eigrp no podrán soportarlas.

Imagen

Otra opción es correr IBGP solo en los routers borde, pero esto generá otro problema. Al momento de anunciarse redes externas, éstas serán informadas solo a los routers borde IBGP, y al momento de que el trafico atraviese el sistema autónomo de transito existirán routers que que no tengan un destino hacia esa red (como R1 y R3 de la figura 3.1), ya que no las aprendieron vía BGP y no poseen un camino vía IGP. Por lo tanto estos paquetes serán descartados.
La solución es correr IBGP en todos los routers dentro del sistema autónomo de transito, realizando un full mesh entre routers que corren BGP. Ejemplo full-mesh

Imagen


Sistema Autónomo de no transito
En un sistema autónomo Multihomed se aconseja correr IBGP en los routers borde. Los routers que hablarán IBGP solo pasaran las rutas a su vecino IBGP, y estos vecinos no pasaran estas rutas a otros. De esta forma se asegura BGP de evitar bucles de enrutamiento, pero esto a su vez es un problema en sistemas autónomos de transito.
Cuando el sistema autónomo no es de transito, las decisiones de salida pueden ser tomadas por el IGP, evitando correr IBGP en todos los router del sistema autónomo. Por ejemplo se puede redistribuir una ruta por defecto dentro de IGP en cada router borde, pero como existen dos salidas, puede que esta decisión no sea la mejor, ya que la mejor salida será influenciada por el IGP.
Por lo tanto para seleccionar el mejor camino se debe correr IBGP en todos los routers, ya que él será el encargado de decidir cuál será la mejor salida. Cabe recordar que las redes que serán aprendidas por los IBGP no necesariamente serán todas las existentes en Internet, por lo tanto la empresa puede tomar la decisión de aprender solo las redes necesarias, a las que le interesa escoger el mejor camino, y para todas las demás, tomar la ruta por defecto redistribuida.

¿Cuándo usar BGP?
Se debe utilizar BGP cuando se tiene un buen entendimiento de su funcionamiento y además se cumple una de las siguientes condiciones:
– El sistema autónomo será utilizado como transito para alcanzar otros sistemas autónomos. Por ejemplo un ISP.
– Cuando un sistema autónomo posee más de una conexión a otros sistemas autónomos.
– Cuando se desea aplicar políticas de enrutamiento sobre el trafico que entra y sale del sistema autónomo
Normalmente no es necesario usar BGP cuando se posee una sola salida en la red, por lo tanto en estos casos solo con una ruta estática o ruta por defecto bastaría.
No se debe usar BGP cuando existen las siguientes condiciones:
– Existe solo una conexión a Internet o a un sistema autónomo. – Pocos recursos de hardware, cuando existe muy poca memoria en el router o el procesador no soporta constantes actualizaciones de BGP. – Cuando se posee limitado conocimiento sobre el proceso de selección de rutas de BGP.

Campos importantes en un segmento BGP

Bgp usa TCP como protocolo de transporte, lo cual significa que es orientado a la conexión. Por lo tanto BGP envía la información dentro de segmentos, usando el puerto 179 y el número de protocolo 6, como se muestra en la Figura4.1

Imagen

Captura segmento BGP
También cabe destacar que cuando dos routers se interconectan bajo una sesión TCP son conocidos como BGP peer routers o BGP neighbors. Como BGP implementa un protocolo confiable, no son necesarias actualizaciones periódicas y solo son necesarias actualizaciones incrementales o generadas por eventos.
En un mensaje Open de BGP podemos encontrar algunos de los parámetros más importantes, los cuales utiliza BGP para identificar por ejemplo si se generará una adyacencia IBGP (comparando el sistema autónomo marcado en azul), identificar el Hold Time configurado, y cuál es la dirección IP con la cual se generará la adyacencia (BGP Identifier).
Figura2- Captura paquete BGP OPEN Message. 

Imagen


Configuración de vecinos

BGP no funciona igual que los otros protocolos de enrutamiento IGP, y exige primero identificar quiénes serán sus vecinos.
Ya que la vecindad no necesita ser directa, también existen restricciones respecto a las vecindades. Por ejemplo, dentro de un sistema autónomo se pueden generar Neighbors, a pesar de que estos no se encuentren directamente conectados (IBGP), pero solo el router borde puede generar vecindad con el router perteneciente al otro sistema autonomo (EBGP).

Imagen

Un Router EBGP intentará conversar con su neighbor, por lo tanto éste debe poder ser alcanzado, y ya que esta directamente conectado, no necesita de otro protocolo (como un IGP).
Cuando se inicia la conversación entre los EBGP se genera un three-way handshake, por la sesión TCP entre ambos. Por lo tanto al declarar un vecino con el comando Neighbor éste debe ser alcanzable.
Ya que no es necesario que los vecinos estén directamente conectados, normalmente se decide usar interfaces loopbacks para el establecimiento de la sesión TCP entre los routers, esto permite que cuando existan caminos redundantes hacia un vecino, la caída de una interfaz física no afecte la adyacencia.

Regla de sincronización de BGP
La regla de sincronización de BGP indica que en un sistema autónomo de transito, encargado de transportar tráfico entre redes, BGP nunca debería anunciar las redes antes de que el IGP aprenda las rutas. Por lo tanto ambos deberían ser sincronizados. Esto ayuda a que no ocurran problemas dentro del sistema autónomo cuando se utiliza como transito, ya que siempre poseerá un camino dentro del la red de la empresa, y no generará un Black Hole.
Como se dijo anteriormente no es una buena práctica redistribuir todas las rutas dentro del IGP, por lo tanto se recomiendo correr IBGP Full-mesh en todos los routers en la red de transito y deshabilitar la sincronización.
En Cisco IOS Software Release 12.2(8)T se encuentra deshabilitada por defecto.Ejemplo Black Hole.
Si se corre BGP solo en los routers borde, y la sincronización se encuentra deshabilitada, los routers R1 y R3 no sabrán cómo alcanzar las redes fuera de su sistema autónomo, ya que solo corren un protocolo de enrutamiento IGP.
Por lo tanto a pesar de que entre R2 y R4 se compartan todas las rutas conocidas vía IBGP y que puedan alcanzar el siguiente salto vía IGP o con Next-hop-self, cuando los paquetes viajen a través de R1 o R3, serán descartados.
La red entre RA y R2 fue aprendida vía IGP al igual que la red entre R4 y RB. R2 al momento de recibir el paquete, revisa en su tabla BGP y encuentra un destino a la red 200.0.0.0/24 del AS 65600.
R2 decide reenviarlo a la dirección de RB, y para llegar a esta dirección utiliza el IGP, reenviándoselo así a R3. Al momento de recibir el paquete R3, revisa en su tabla de enrutamiento, y no posee un destino hacia la red 200.0.0.0/24.
El paquete es descartado por R3, a pesar de que conozca como llegar a RB, ya que el paquete posee como destino la red 200.0.0.0 y no la dirección de RB.

Imagen


Tablas de BGP

BGP mantiene su tabla de enrutamiento separada de la tabla de IGP, y ofrece las mejores rutas a la tabla de enrutamiento IGP. También pueden ser redistribuidas las rutas de la tabla de BGP a la tabla de enrutamiento IP del IGP.
La tabla de información de BGP se conoce con varios nombres:
• BGP table
• BGP topology table
• BGP topology database
• BGP routing table
• BGP forwarding database
Las redes aprendidas por EBGP poseen una distancia administrativa de 20, y las IBGP poseen una distancia administrativa de 200. Por lo tanto solo pasan a la tabla de enrutamiento las rutas con menor distancia administrativa, en comparación con las rutas de los protocolos IGP.
BGP también mantiene una Neighbors Table, la cual contiene una lista de sus vecinos con los cuales posee conexión. Para que BGP genere adyacencia debe ser asignado explícitamente el vecino con el comando Neighbor. Luego de establecer adyacencia, Bgp mantiene esta relación con mensajes BGP/TCP keepalive, los cuales son enviados siempre cada 60 segundos.

Imagen


Tipos de mensajes de BGP

Cuando la sesión TCP se establece el primer mensaje en enviarse es el OPEN, si se logra establecer la conexión, se responde con un mensaje Keepalive.
Cuando la conexión ya ha sido establecida se intercambian los mensajes Update, keepalive y Notification. Los mensajes Update se utilizan para intercambiar sus tablas de enrutamiento, los keepalive se encargan de mantener la conexión arriba y los notification avisan algún error o condición especial.

Imagen

Imagen

Imagen


Mensajes Update

Estos mensajes envían información sobre los Path, cada Path requiere de un mensaje update. Cada update posee los atributos respecto al path, y las redes que pueden ser alcanzadas por este path. Por lo tanto cada Update posee las Rutas con sus respectivos atributos (as-path, origin, local-preference, etc.).
Parámetros de los paquetes BGP
– Version                     : Identifica la versión que corre BGP, posee 8 bit y actualmente es versión 4.
– Sistema Autónomo    : Identifica el sistema autónomo, posee 16 bit.
– Hold-time                  : Tiempo de espera máximo entre los mensajes keepalive, posee 6 bit y por defecto son 180 segundos.
– Optional Parameters.

Estados de un Neighbor BGP

Los routers para generar adyacencia pasan por los siguientes estados:
– Idle
– Connect
– Active
– Open sent
– Open Confirm
– Established
Cuando se encuentra en el estado Established, los mensajes OPEN, NOTIFICATION Y KEEPALIVE son intercambiados.

Verificación rápida de estado de vecinos

Un comando muy útil, cuando ya se encuentran configurados los neighbors es el #show ip bgp summary, con este comando se puede verificar el estado de un vecino, y determinar si existe algún problema en la adyacencia. También de puede verificar el sistema autónomo perteneciente a ese vecino, y el tiempo transcurrido desde que se generó la adyacencia.

Imagen


Atributos de BGP

Los routers BGP envían mensajes update sobre redes, con sus respectivos prefijos y atributos. Estos prefijos y atributos se utilizan para seleccionar el mejor camino hacia una red.

Los atributos pueden ser:
 Well-known / optional
 Mandatory / discretionary
 Transitive / nontransitive

Los atributos de ruta se dividen en cuatro categorías:
• Well-known mandatory
• Well-known discretionary
• Optional transitive
• Optional nontransitive

Los atributos Well-known son los que deben ser obligatoriamente reconocidos por todos sus vecinos. Existen dos tipos, ―mandatory, los cuales deben ir obligatoriamente en todos los mensajes update de BGP y los Well-known discretionary, los cuales no necesariamente debe estar presente en todos los mensajes actualizaciones, pero si deben ser reconocidos por los routers BGP.
Los atributos opcionales, no necesitan ser necesariamente reconocidos por los routers BGP. Existen dos tipos, Optional transitive, a pesar de que el router no implementan el atributo, lo debe pasar a otros routers, y los Optional nontransitive los cuales no implementan el atributo lo eliminan y no lo pasan a otros routers.Los atributos definidos por BGP son los siguientes:

Imagen

Además Cisco define un atributo llamado weight el cual es configurado localmente y no es propagado a los vecinos.
Cisco define los siguientes códigos a los atributos:
• Origin—Type code 1
• AS-path—Type code 2
• Next-hop—Type code 3
• MED—Type Code 4
• Local-preference—type code 5
• Atomic-aggregate—type code 6
• Aggregator—Type code 7
• Community—Type code 8 (Cisco-defined)
• Originator-ID—Type code 9 (Cisco-defined)
• Cluster list—Type code 10 (Cisco-defined)
Estos tipos de códigos se utilizan para identificar el tipo de atributo dentro del mensaje UPDATE de BGP correspondiente a la ruta aprendida.
En la captura se puede apreciar el código ―ORIGIN 1‖. Además también se puede ver los otros atributos que componen el UPDATE de la nueva red, como el AS_PATH, NEXT_HOP, etc.

Imagen


Atributo AS-PATH
Lista los sistemas autónomos por los que pasa la ruta para llegar a la red, se utiliza para asegurar un camino libre de bucles, ya que el router no aceptará una ruta que posea un sistema autónomo por el cual ya atravesó. Además este atributo es well-known mandatory.
Por ejemplo si el paquete viaja desde el AS 52100 al AS52500 y toma el camino 52100 – 52200 – 52300 – 52400, al momento de decir el camino, nunca lo enviará al 52200, ya que por este ya pasó.
Como se muestra en la figura 9.1

Imagen


Atributo Next-hop
Este atributo indica la dirección IP del siguiente salto para alcanzar la red destino. El siguiente salto no necesariamente debe estar directamente conectado, sino que más bien es la dirección IP del router quien anunció la red. Este atributo es well-known mandatory.
Por ejemplo, router R3 tiene como Next-hop de la red 10.20.0.0 la dirección IP 192.168.10.1 del router R1.

Imagen


Atributo Origin
Indica como fue aprendida la ruta, si fue aprendida a partir de un IGP utilizando el comando network, se marca una ―I‖ en la tabla de BGP. Si la ruta fue aprendida por un EGP se marca con una ―e‖. Incomplete, es cuando el origen es desconocido, normalmente ocurre cuando una ruta es distribuida en BGP y es marcada con un signo ―?‖. Este atributo además es well-known mandatory.Atributo Local Preference
Se utiliza para determinar cuál es la salida preferida en el sistema autónomo. Cuando el Local Preference es más alto, posee mayor prioridad, por lo tanto es mejor.
Este atributo es enviado solo entre peers IBGP dentro del mismo sistema autónomo local y no es enviado entre peers EBGPs. Para routers Cisco el local preference por defecto es 100. Además este es un atributo well-known discretionary.

Atributo Community
Este atributo es utilizado para realizar un filtrado de rutas. A las rutas de la comunidad se les asigna un TAG, para a partir de él poder tomar decisiones de filtrado de rutas pertenecientes a la etiqueta. Esto nos ayuda a tener un mejor control, ya que las comunidades comparten similares políticas. Este atributo es optional transitive.

Atributo MED
Este atributo informa a los vecinos externos por cuál de las salidas del sistema autónomo local se prefiere que sean alcanzadas las redes locales, en otras palabras cual es la entrada preferida a la red. El menor valor MED es el preferido, por lo tanto posee mayor prioridad. Este atributo es enviado entre los vecinos EBGP y por defecto es 0. Este atributo es optional nontransitive attribute.

Atributo WEIGHT
Este atributo es utilizado en el proceso de selección de ruta, tiene significancia local, por lo tanto no es propagado hacia los vecinos. Cuando existen múltiples rutas hacia un camino, la ruta con weight más alto será la preferida.


Selección de la mejor ruta

Un router pasa la mejor ruta a tabla de enrutamiento, pero cuando existe más de una ruta para una red especifica, sigue los siguientes criterios:
1) Los routers cisco prefieren las rutas que posean mayor weigth.
2) Si aun así existe más de una ruta, se selecciona la ruta con mayor local preference.
3) Si las rutas poseen igual Local preference, se selecciona la ruta que fue generada localmente vía comando Network o agregate-address.
4) Si las rutas no fueron originadas localmente por el router, se prefiere la ruta con menor as-path.
5) Si el tamaño del as-path es el mismo, se prefieren las rutas menormente origininadas según el siguiente código: IGP<EGP<Incomplete.
6) Si las rutas poseen el mismo código origin, se prefieren las rutas con menor MED. La comparación del MED solo ocurre cuando el comandos bgp-always-compare-med es habilitado.
7) Si poseen el mismo MED, se prefieren los caminos EBGP sobre los IBGP.
8) Si no hay neighbors EBGP y solo existen vecinos IBG, además de que la sincronización se encuentra deshabilitada, se prefiere el camino con menor métrica respecto del IGP existente en relación a la dirección del siguiente salto.
9) Cuando las rutas son aprendidas vía EBGP, se prefiere la ruta que fue recibida primero, es decir la más antigua. Este paso es saltado si el comando router-id es configurado en el router.
10) Se prefiere el camino con menor router-id del vecino.
11) Si las direcciones IP son iguales, se prefiere la dirección del router del vecino más baja.

Configurando BGP

Para empezar a configurar se debe iniciar el proceso de BGP con el siguiente comando en modo configuración global:
#router bgp numero de sistema autónomo  Solo se permite un proceso de BGP, por lo tanto si ya se ingresó un número de sistema autónomo y se intenta ingresar otro proceso, el Router notificará el número ya configurado.
Luego con el comando Neighbor dentro de la configuración de BGP se define el vecino:
#neighbor dirección IP remote-as numero del sistema autónomo del router vecino.Ejemplo

Imagen

Luego se puede comprobar que la adyacencia se ha generado ingresando el comando #show ip bgp summary, con esto verificamos el estado de los vecinos (State/PfxRcd), y si se ha logrado generar adyacencia entre ellos.

Imagen


Anunciando redes

Para anunciar redes se debe usar el comando: #Network dirección de red mask mascara de la red
Este comando se debe ingresar en la configuración de BGP y se debe escribir exactamente la dirección de red y mascara, sino arrojará aviso de error. Esto normalmente ocurre cuando se ingresa una dirección de host.
También se debe tomar en cuenta que los routers borde son los encargados de anunciar las redes que se encuentran dentro del sistema autónomo, y ese router borde debe conocer todas las redes para poder anunciarlas. El router por ejemplo puede conocer las redes por un protocolo de enrutamiento como EIGRP y anunciar con el comando network dentro BGP las redes conocidas por este protocolo. Por lo tanto NO ES NECESARIO que las redes que se ingresen con el comando network se encuentren directamente conectadas al router borde, solo es necesario que las conozca por un protocolo enrutamiento o ruta estática.
Ejemplo
Router RB puede anunciar a ISP con el comando network las redes 11.0.0.0/8 y 12.0.0.0/8 a pesar de que no las tenga directamente conectadas, ya que estas redes las conoce por EIGRP. Es muy importante que las conozca porque si no, no podrán ser anunciadas.

Imagen


Ejemplo Adyacencia con loopbacks.
En esta topología los 4 Routers pertenecen al mismo sistema autónomo (100), y todos corren EIGRP conociendo así todas las redes. La configuración de los neighbors debe ser hacia el Router borde (R1), en consecuencia los routers podrían ser configurados de la siguiente manera.
R2-R3 (config-router)#Neighbor 10.0.0.1 remote-as 100
R4 (config-router) #Neighbor 10.0.0.13 remote-as 100
Por lo tanto NO ES NECESARIO que se configuren R4-R3 como neighbors ni R3 con R2. También hay que destacar la dirección IP de neighbor puede ser cualquier IP configurada en el router a la que se pueda alcanzar vía protocolo de enrutamiento IGP o ruta estática. Por lo tanto R4 puede configurar como vecino a R1 con el comando
R4(config-router)#Neighbor 5.5.5.5 remote-as 100

Imagen

Ya que puede alcanzar la dirección IP 5.5.5.5 por EIGRP. BGP identifica como origen la dirección IP de la interfaz de salida, por lo tanto en R4 se debe configurar como origen la dirección IP 4.4.4.4 con el siguiente comando:
(config-router)#Neighbor 5.5.5.5 update-source loopback 0Se aconseja utilizar las loopbacks para los neighbors cuando se tiene más de un camino hacia el otro Neighbor, para así no generar vecindad con la dirección de la interfaz de salida, ya que podría fallar y al momento de seleccionar el otro camino hacia el neighbor cambiaría las direcciones IP y por lo tanto no se generaría vecindad.
Si por alguna razón la topología no tiene configurado en todos los routers como vecino el router borde (R1), se pude utilizar route reflector.
Es decir en la topología anterior si se configuran como Neighbors R1-R2, R2-R3 y R3-R4, el Router borde (R1) recibiría las rutas desde fuera del AS y se las anunciaría solo a R2 y a pesar de que R2 tenga vecindad con R3, no se las anunciará. Por lo tanto si se desea que se anuncien desde R2 hacia R3 se debe usar el comando

#Neighbor dirección IP route-reflector-client

En R2 apuntando como vecino a R3, y lo mismo en R3 apuntando como vecino a R4. Así las rutas se pasaran a los demás routers. Lo ideal es tener siempre todos los routers con neighbor al router de borde. Hay que tomar en cuenta que este problema no se daría si todos los routers en la topología pertenecieran a distintos sistemas autónomos. Por lo tanto si R1 R2 R3 R4 fueran cada uno un sistema autónomo diferente se pasarían las rutas sin ningún problema.

Actualizar políticas aplicadas a rutas.
Al momento de aplicar nuevas políticas a las rutas, estas deben ser actualizadas, existen 3 caminos para actualizar las rutas:

Hard reset:
Se puede realizar con el comando clear ip bgp * o clear ip bgp dirección_vecino. Esto permitirá que se reinicie completamente la sesión TCP entre todos los vecinos (*) o un vecino especifico. El restablecimiento de la sesión toma entre 30 a 60 segundos y genera que se reenvíen todas las tablas de BGP, actualizando asi las nuevas políticas aplicadas.

Soft reset:
Utiliza gran parte de la memoria, ya que almacena todos los updates sin modificación en una tabla. Luego cuando se aplica el filtro, los cambios son calculados a partir de esta tabla. El comando es clear ip bgp soft.

Route refresh:
Solicita al peer el reenvío de toda la información, esto utiliza menos memoria, y permite al router aplicar las políticas de entrada. El comando es clear ip bgp {* | address | peer-group -name} in . Para poder utilizar route refresh, los routers deben soportar esta capacidad, esto se puede verificar con el comando show ip bgp neighbors.


EBGP Multihop

Si poseemos dual homed para alcanzar un sistema autónomo, podríamos preferir que el tráfico fuera balanceado entre los enlaces. Esto permitiría aprovechar el ancho de banda de los enlaces para enviar el tráfico fuera de nuestra red, y que además exista un enlace de Backup. Para lograr esto, tenemos que generar adyacencia con loopbacks entre vecinos EBGP. Sin embargo los paquetes enviados entre vecinos EBGP poseen un TTL en 1, y para utilizar loopback necesitamos como mínimo dos saltos, por lo tanto debemos aplicar el comando ebgp-multihop como veremos a continuación.
Topología:

Imagen

Se debe aplicar el comando neighbor dirección_IP ebgp-multihop 2 para permitir que los mensajes de EBGP posean un TTL de 2, esto permitirá la adyacencia entre vecinos EBGP usando loopbacks.

Imagen

También se deben crear dos rutas estáticas hacia la dirección de loopback que generará la adyacencia, para que realicen un balanceo de carga entre los enlaces.

Imagen


Dirección del próximo salto

BGP anuncia las redes con la dirección del próximo salto, es decir las redes que conozca el router de borde vía BGP las anunciara a sus vecinos DENTRO de su sistema autónomo con la dirección IP del neighbor externo, por lo tanto todos los routers dentro del sistema autónomo deben saber cómo poder alcanzar esa dirección. Esto es muy importante, ya que puede ocurrir que los routers conozcan todas las redes de los sistemas autónomos externos y aun así no pueda llegar a ella, ya que no saben cómo alcanzar la dirección IP del próximo salto.
Ejemplo.
A R1 se le informan las redes desde el Router fuera de su red. Para que R1 pueda alcanzar las redes tiene que dirigir el tráfico hacia la dirección 11.0.0.1, por lo tanto R1 puede llegar ya que se muestra en su tabla de enrutamiento como directamente conectada.
R1 le informa vía IBGP a R4 las redes de los AS fuera de su red. Entonces R4 para poder alcanzar esas redes debe dirigir el tráfico a 11.0.0.1, y como R4 no la posee directamente conectada como R1, debe tratar de alcanzarla utilizando un protocolo de enrutamiento interno como EIGRP, OSPF, RIP o ruta estática. Hay que tomar atención al momento de configurar el protocolo de enrutamiento IGP, ya que debe ser anunciada la red 11.0.0.0 y finalmente aplicar passive interface, ya que no es parte del sistema autónomo.
También si no se desea utilizar un protocolo de enrutamiento para que los routers conozcan la dirección 11.0.0.1 se puede configurar el comando #Neighbor dirección IP next-hop-self en el router de borde. En dirección IP ingresamos la IP de los vecinos que poseemos conectados.
Es decir R1 le anuncia R4 que él será el próximo salto para alcanzar las redes anunciadas desde el router borde.

Imagen

Next Hop para rutas directamente conectadas o redistribuidas
Cuando una red es conocida vía un IGP o se encuentra directamente conectada se muestra con next-hop 0.0.0.0, como vemos en el siguiente ejemplo:

Imagen


Peer groups

Se pueden crear peer groups para agrupar los vecinos que poseen iguales políticas, esto permite no tener que ingresar un comando por cada vecino al momento de aplicar las políticas.
Para configurarlo primero se debe crear el peer group, el nombre asignado al peer group tiene significancia local y no es enviado otros routers.
El comando para crear el peer group es:
Asignar vecinos al grupo:
Si se desea resetear las conexiones de vecinos en el grupo se debe ingresar el comando:
Si deseamos terminar la sesión para un vecino podemos aplicar el comando neighbor shutdown.

Autenticación

BGP soporta Message disgest 5 para la autenticación de sus vecinos. MD5 envía un hash el cual es creado usando la llave y un mensaje. El Hash es enviado envés de la llave, por lo tanto la llave nunca viaja por la red.
Para autenticar BGP, ambos vecinos deben poseer la misma configuración (contraseña) y su respectiva dirección IP del vecino.
Para autenticar un vecino se debe ingresar la siguiente configuración en BGP:
Ejemplo
#Neighbor dirección ip password contraseña Dirección IP del vecino que se
desea autenticar y contraseña.

Sumarizar

Si se poseen varias redes dentro de un sistema autónomo, se puede decidir sumarizarlas, para reducir el tamaño de la tabla de enrutamiento. Debido a que BGP no permite declarar redes que no se conocen, es necesario crear una red sumarizada. Para lograr la sumarización utilizaremos la siguiente topología:

Imagen

Imagen

Imagen


Filtro de rutas con lista de distribución

Los filtros de rutas se utilizan para evitar enviar redes a lugares que no se desean. Por ejemplo evitar enviar una red fuera del sistema autónomo de la Empresa.
Ejemplo
Primero se debe crear una Access list que indique las direcciones de las redes que se desean permitir o que se desean denegar. Por ejemplo:

Imagen


Configuración Filtro con lista de distribución

Access list, deniega la red
R(config)#Access-list 1 deny red wildcard
R(config)#Access-list 1 permit anyAplicar el filtro
R(config-router)#Neighbor IP_neighbor distribute-list 1 out

Si R2 desea filtrar la red 4.4.4.0/24 para que no sea aprendida por R1 se debe configurar lo siguiente:
#Access-list 1 deny 4.4.4.0 0.0.0.255 Para denegar la red
#Access-list 1 permit any Para permitir todas las demás redes y así no denegarlas todas.

Aplicar el filtro
#Neighbor 10.0.0.1 distribute-list 1 out Dirección del vecino que no se desea que aprenda las redes. Se aplica la lista de distribución de salida (out).


Prefix-list

Las prefix-list permiten un filtrado rápido de redes, son más cómodas y menos complejas que las ACL, ya que cada sentencia incluye un número de secuencia. Cada sentencia aumenta el número de secuencia en 5. Las prefix-list contienen un deny any implícito al final. Al momento de aplicarlas en BGP, se pueden realizar de entrada o salida.
A continuación un se realiza un ejemplo aplicando sus características.

Imagen

Imagen

Imagen


Sistema autónomo de no transito

Cuando existe Multi-homed en un sistema autónomo de no transito debe aplicarse un filtro con lista de distribución para todas las redes que no fueron originadas dentro del sistema autónomo. Esto evita que nuestro sistema autónomo no sea utilizado como transito para los ISPs.
Ejemplo: Utilizaremos la siguiente topología, donde AS100 y 200 pueden alcanzar sus redes utilizando nuestro sistema autónomo.
En R1 visualizamos que la red del AS100 puede ser alcanzada por nuestro sistema autónomo. Por lo tanto para evitar esto creamos un filtro, para permitir solo las redes generadas en nuestro sistema autónomo.

Imagen

Imagen

Para el filtro generamos una Access list en el router borde (R4) que permita todas las redes que fueron declaradas, es decir la 172.16.23.0, 172.16.24.0 y 172.16.25.0.
Luego denegamos todas las otras redes con un deny any, como se visualiza en la siguiente configuración.

Imagen

Luego en R4 aplicamos la lista de distribución apuntando al vecino EBGP como salitda (out). Finalmente debemos aplicar el comando clear ip bgp * para reiniciar la adyacencia y actualizar las políticas aplicadas a las rutas.
Verificamos en R1 que redes fueron aprendidas, y obtenemos como resultado que solo las redes que fueron generadas desde nuestro sistema autónomo son conocidas por R1.

Imagen

Esta configuración también debe ser aplicada en R2 para que el AS 100 no conozca la existencia de la red 200.0.0.0 en el AS 100.

Filtrar todos los prefijos de un sistema autónomo

Pueden ser filtrados todos los prefijos de un sistema autónomo utilizando el atributo AS-PATH. Con este atributo podremos filtras todos los prefijos que hayan atravesado un determinado sistema autónomo.
Ejemplo
#Ip as-path Access-list 1 deny ^100Deniega todos los prefijos que empiecen o terminen con el sistema autónomo 100
#Ip as-path Access-list 1 permit .* Permite todos los demás prefijos de todos
los sistemas autónomos.
En la configuración de BGP se debe aplicar el filtro con el comando:
#Neighbor 10.0.0.1 filter-list 1 out Dirección IP del vecino que no se desea
anunciar los prefijos que atraviesen por el
Sistema autónomo 100.

Evitar anunciar los sistemas autónomos privados

Se utiliza para anunciar las rutas pero no el número del sistema autónomo privado.
Configuración:
Este comando debe ser ingresado dentro de la configuración de BGP.
#Neighbor dirección IP remove-private-as Dirección IP del vecino que no se
desea anunciar el número de
sistema autónomo privado.

Local preference

Se utiliza cuando existe Multihomed en el sistema autónomo. Local preference es el segundo criterio de selección de ruta después de Weight, identifica cual es la mejor salida para salir de de nuestro sistema autónomo. El valor es propagado a los vecinos del sistema autónomo y debe ser aplicado en el router de borde. El valor más alto es preferido, y por defecto es 100.
Ejemplo
#route-map nombre permit 10  Se crea un mapa de ruta asignandole un nombre y un numero de secuencia.
#set local-preference 200  Se asigna un valor de local preference, en este caso 200.
Dentro de la configuración de BGP se aplica el mapa de ruta hacia el vecino
#Neighbor dirección ip route-map nombre del mapa out 
Ingreso la dirección IP del vecino IBGP que se desea anunciarle las rutas con Local preference 200. Se puede aplicar IN ingresando la dirección del vecino EBGP para que todas las rutas aprendidas desde él, se anuncien con local preference 200. Se puede agregar en el mapa de ruta un MATCH address IP para asignarle una Access-list, la cual permitirá cambiar el local preference a redes especificas.

MED

Se utiliza cuando existe Multihomed, para indicar al sistema autónomo fuera de nuestra red por cual de mis salidas prefiero que el tráfico externo entre. Por defecto este valor es 0, el valor más bajo es preferido y este comando se agrega dentro de nuestro sistema autónomo e influye en la decisión del sistema autónomo externo.
Se aplica en el Router borde en modo configuración global:
#Route-map nombre permit 10  Se debe crear route-map asignándole un nombre y un numero de secuencia.
#set metric 50 Se Indica el valor del MED, en este caso 50.
Se debe aplicar el mapa de ruta dentro de la configuración de BGP:
#Neighbor dirección IP route-map nombre out  Se debe ingresar la dirección IP del vecino EBGP, luego el nombre del route-map y se aplica de salida.

Balanceo de carga en Links EBGP

Si disponemos de dos enlaces para salir de nuestra red, puede ocurrir que uno de ellos se sobrecargue de tráfico, y el otro permanezca con menor flujo.
Lo ideal sería que el tráfico fuese 50% en cada enlace para aprovechar el ancho de banda contratado, y así también no generar un cuello de botella en una de las salidas.
Una forma para lograr esto, es utilizando el atributo Local-preference, el cual nos permite definir que ruta es mejor para alcanzar el destino. El atributo Local preference es enviado a todos los vecinos IBGP y podemos definir cuál será el valor asignado para ciertos vecinos.
En esta topología el tráfico entre el sistema autónomo 500 y 100 es enviado por los dos enlaces. El enlace de R3 posee una carga del 25% proveniente de la red 192.168.10.0/24 (R5), y el otro 75% provienen de las redes de R6 y R7.
El objetivo es lograr que los usuarios de la red 192.168.20.0/24 utilicen el enlace de R3 para alcanzar las redes del sistema autónomo 500. Esto generaría una carga del 50% por cada enlace.
Primero verificamos el camino que utiliza R7 para las redes del sistema autónomo 500.

Imagen

Imagen

Identificamos que el camino tomado por R7 para alcanzar las redes 172.16.1.0/24 y 172.16.2.0/24 es por el Next Hop 172.16.10.2, es decir R1. El objetivo es lograr que el Next-hop para las redes aprendidas vía BGP sea R2.
Para lograr esto ingresamos a R3 para que anuncie a R2 las rutas con un Local preference de 200. Esto permite que R2 sea el mejor camino al momento de la comparación de la mejor ruta.
Configuración:
1) En R3 creamos una Access-list que permita las redes aprendidas desde R2. (Pueden permitirse todas las redes, lo que generará un cambio de local preference para todas y futuras redes anunciadas por R2).
2) Creamos un mapa de ruta que permita. Dentro del mapa de ruta configuramos un match con la Access list antes creada.
3) Seteamos Local-preference 200 para las redes que realicen match.
4) Configuramos el mapa de ruta que permita todo lo demás con un número de secuencia mayor.

Imagen

Reiniciamos todas las sesiones de BGP para probar las nuevas políticas aplicadas.
R3#clear ip bgp *Finalmente en R7 revisamos con show ip bgp, verificando que las redes son alcanzadas vía R2 y que su local preference ahora es 200.

Imagen

Verificamos el flujo del tráfico con tracer:

Imagen

Verificamos el Route-map BALANCEO:

Imagen


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s