Vous êtes sur la page 1sur 27

11.

Configuracin de BGP
En este apartado se van a ver los pasos necesarios para la configuracin de BGP y una serie de ejemplos prcticos de configuracin de routers BGP. Adems, se van a tratar otros aspectos importantes en la configuracin como la sincronizacin, el uso de comunidades para filtrado mediante listas de acceso, el uso de peer groups para la aplicacin de polticas de encaminamiento mediante route maps y la agregacin de rutas.

11.1. Habilitando el encaminamiento BGP


En primer lugar, se va a suponer que se dispone de dos routers BGP llamados RTA y RTB, los cuales no tienen por qu ser adyacentes, y entre los que se va a establecer una sesin BGP para el intercambio de informacin de encaminamiento. En el primer ejemplo, RTA y RTB pertenecen a diferentes AS, mientras que en el segundo ambos se encuentran en el mismo AS. La primera accin a realizar en la configuracin de un router BGP es definir el proceso BGP y el nmero de AS al que el router pertenece. El comando utilizado para habilitar BGP en un router es: router bgp ASN. En el primer ejemplo se van a configurar los routers RTA y RTB para que ejecuten el proceso BGP y para indicar que pertenecen a los AS100 y AS200, respectivamente. Las sentencias necesarias para ello seran las siguientes:
RTA# router bgp 100 RTB# router bgp 200

Ejemplo 1:

El siguiente paso en el proceso de configuracin consiste en definir los vecinos BGP, es decir, los routers con los que se intentar establecer una sesin BGP (peering). Dos routers se convierten en vecinos (peers) cuando se establece una conexin TCP entre ambos para el intercambio de actualizaciones de rutas. Una vez establecida la conexin TCP, ambos routers se envan mensajes OPEN para intercambiar parmetros como sus ASN, la versin BGP que utilizan, el router ID y el tiempo de espera para el envo de mensajes KEEPALIVE (enviados para asegurar que la conexin permanezca activa). Despus de que estos valores sean confirmados y aceptados la sesin BGP podr establecerse entre los vecinos. El comando utilizado para establecer la conexin TCP con un vecino es el siguiente: neighbor dir_IP remote-as ASN. El nmero de AS corresponde al AS remoto al que pertenece el router con el que se quiere conectar y cuya direccin IP es dir_IP. En el caso de sesiones E-BGP la direccin IP corresponde a la interfaz del router directamente conectado (next hop), mientras que en el caso de una sesin I-BGP la direccin IP indicada puede ser una cualquiera de las del router destino, el cual no tiene por qu estar directamente conectado al router origen. Un aspecto que es necesario tener en cuenta es que las dos direcciones IP configuradas con el comando neighbor en cada router sean alcanzables entre s. Para verificarlo, una forma segura es mediante el uso del comando ping forzando al router a que utilice como direccin IP fuente la especificada en el comando neighbor en lugar de la direccin IP de la interfaz por la que realmente se enva el ping. Otro aspecto importante es aplicar un reset a la conexin con el vecino de tal forma que los cambios realizados en la configuracin tengan efecto. Para ello, se puede utilizar el comando clear ip bgp dir_IP (donde dir_IP es la direccin IP del vecino) o clear ip bgp * (para resetear todas las conexiones con los vecinos).

En el ejemplo 1 la configuracin de los vecinos BGP sera la siguiente:


RTA# router bgp 100 neighbor 129.213.1.1 remote-as 200 RTB# router bgp 200 neighbor 129.213.1.2 remote-as 100 neighbor 175.220.1.2 remote-as 200 RTC# router bgp 200 neighbor 175.220.212.1 remote-as 200

En este caso los routers RTA y RTB hacen uso de E-BGP, mientras que el router RTC usa I-BGP, lo cual puede comprobarse al coincidir el ASN del AS del router RTC y el ASN del vecino indicado (ASN=200). Adems, los vecinos E-BGP deben estar directamente conectados, por lo que los routers RTA y RTB tienen direcciones IP que pertenecen al mismo segmento de red (129.213.1.0/24). Por otro lado, para la configuracin de las sesiones I-BGP se utilizan normalmente interfaces loopback, las cuales permiten asegurar las sesiones I-BGP indicando una direccin IP virtual para un vecino mediante el comando neighbor, de manera que dicha direccin IP sea independiente a las interfaces fsicas del router vecino y se pueda establecer la sesin I-BGP por una o por otra interfaz fsica. Del lado del vecino, ste debe indicar al proceso BGP que est utilizando una interfaz loopback en lugar de una interfaz fsica para el inicio de la conexin TCP con el vecino. El comando utilizado para indicar una interfaz loopback de un vecino es el siguiente: neighbor dir_IP update-source interfaz. El siguiente ejemplo muestra el uso de este comando: Ejemplo 2:

RTA# router bgp 100 neighbor 190.225.11.1 remote-as 100 neighbor 190.225.11.1 update-source int loopback 1 RTB# router bgp 100 neighbor 150.212.1.1 remote-as 100

En el ejemplo anterior, RTA y RTB estn ejecutando I-BGP en el interior del AS 100. El router RTB utiliza la interfaz loopback de RTA (150.212.1.1) mediante el comando neighbor. En este caso, el router RTA debe forzar que BGP use la direccin IP loopback definida como direccin fuente en la conexin TCP con el vecino. Para ello, con la sentencia neighbor 190.225.11.1 update-source int loopback 1, el router RTA fuerza a BGP a que use la direccin IP de su interfaz loopback cuando se comunica con el vecino 190.225.11.1. En cambio, RTA indica mediante el comando neighbor la direccin IP 190.225.11.1 que se corresponde con la direccin de la interfaz fsica del router RTB, por lo que RTB no tiene que hacer ninguna configuracin especial.

11.2. Comandos para el envo de rutas


Una vez visto cmo se inicia el proceso BGP y cmo se definen los vecinos, en este apartado se van a ver dos formas de configuracin para el envo de informacin de encaminamiento mediante BGP. En realidad, un router BGP enva a un vecino las rutas que aprende de otros vecinos (internos o externos), pero tambin puede generar nuevas rutas mediante los comandos network y redistribute. De este modo, para las rutas generadas de esta manera el AS origen corresponder al AS al que pertenece el router que ejecuta los dos comandos anteriores. El formato del comando network es el siguiente: network network-number [mask network-mask]. Este comando indica al proceso BGP las rutas que debe anunciar, las cuales se expresan como una direccin IP y una mscara. Para que estas rutas puedan ser anunciadas es necesario que el router las conozca, bien a travs de encaminamiento esttico o dinmico, o bien porque las redes destino estn conectadas directamente al router. El nmero mximo de redes a anunciar mediante este comando es de 200. La siguiente configuracin muestra un ejemplo de uso de este comando:
RTA# router bgp 100 network 192.213.0.0 mask 255.255.0.0 ip route 192.213.0.0 255.255.0.0 null 0

En este ejemplo el router RTA generar una entrada en la lista de redes a anunciar para el prefijo 192.213.0.0/16. La mscara indica que se van a anunciar los dos primeros octetos de la ruta 192.213.0.0. Dicha ruta necesita ser aadida a la tabla de encaminamiento del router, para lo cual se utiliza el comando esttico ip route. Otra forma de anunciar rutas en BGP es redistribuyendo las rutas aprendidas por el router mediante un protocolo IGP. Es importante en este caso aplicar polticas de filtrado de manera que no se distribuyan al exterior de un AS todas las rutas aprendidas internamente por el protocolo IGP, sino slo aqullas que se quieren anunciar. En el siguiente ejemplo, el router RTA anuncia la ruta 129.213.1.0 y RTC anuncia la ruta 175.220.0.0:

RTC# router rip network 175.220.0.0 redistribute bgp 200 router bgp 200 neighbor 1.1.1.1 remote-as 300 neighbor 1.1.1.1 distribute-list 1 out redistribute rip access-list 1 permit 175.220.0.0 0.0.255.255

La lista de acceso se utiliza para controlar las rutas que van a ser anunciadas desde el AS 200. As, slo se anunciar el prefijo 175.220.0.0, evitando que se anuncie la ruta 129.213.1.0 como si su AS origen fuese el AS 200 en vez del AS 100. Al igual que se pueden redistribuir las rutas aprendidas a travs de un protocolo IGP, en BGP tambin es posible redistribuir las rutas configuradas estticamente en la tabla de encaminamiento, para lo cual se utiliza el comando redistribute static. La nica diferencia en este caso es que BGP considera estas rutas con un origen INCOMPLETE (no conocido). Un aspecto importante a destacar es que un router no acepta anuncios de una sesin BGP si las rutas tienen origen en el AS al que dicho router pertenece. Esto se hace para evitar bucles inter-AS.

11.3. Internal BGP


I-BGP se utiliza en un AS en el caso de que dicho AS funcione como sistema de trnsito para otros AS. Este protocolo se utiliza de forma especfica para el intercambio de rutas entre routers de borde BGP de un mismo AS, de manera que se consigue una mayor eficiencia y flexibilidad que en el caso de E-BGP con redistribucin de rutas mediante un protocolo IGP. Por ejemplo, el uso de I-BGP permite elegir el router de salida del AS, para lo cual se modifica el atributo LOCAL_PREF. En la figura que se muestra a continuacin se puede ver un ejemplo de sesiones I-BGP dentro de un AS:

RTA# router bgp 100 neighbor 190.10.50.1 remote-as 100 neighbor 170.10.20.2 remote-as 300 network 150.10.0.0 RTB# router bgp 100 neighbor 150.10.30.1 remote-as 100 neighbor 175.10.40.1 remote-as 400 network 190.10.50.0 RTC# router bgp 400 neighbor 175.10.40.2 remote-as 100 network 175.10.0.0

En la configuracin anterior se tienen dos sesiones I-BGP establecidas: una entre RTA y RTB, y otra entre RTA y RTD. Los anuncios BGP provenientes de RTB hacia RTA sern reenviados por RTA hacia RTE (que pertenece a otro AS), pero no hacia RTD (perteneciente al mismo AS). sta es la causa por la que en este diagrama debera existir tambin una sesin entre RTB y RTD, de forma que se establezca una malla completa (full mesh) entre todos los routers I-BGP del AS 100. Como conclusin, se puede afirmar que cuando un router BGP recibe un anuncio de otro router BGP de su propio AS (I-BGP peers), el router receptor no redistribuir dicho anuncio a otro router de su mismo AS. Por el contrario, dicho anuncio s ser redistribuido al resto de routers vecinos que pertenecen a otros AS.

11.4. Sincronizacin
Como introduccin al concepto de sincronizacin se plantea el siguiente escenario de ejemplo:

En este escenario el router RTC (AS 300) enva anuncios de la red 170.10.0.0. Los routers RTA y RTB se intercambian informacin de encaminamiento por I-BGP (no es necesario que estn directamente conectados), por lo que RTB recibir la ruta 170.10.0.0 con NEXT_HOP igual a 2.2.2.1 (el valor de este atributo no se modifica por I-BGP). Para alcanzar el NEXT_HOP RTB tendr que enviar el trfico al router intermedio RTE. El problema surge si RTA no ha redistribuido la red 170.10.0.0 al resto de routers del AS mediante IGP, de forma que en dicho caso RTE no sabra cmo encaminar el trfico proveniente de RTB hacia el AS 300. Adems, RTB anunciar dicha ruta a otros vecinos (RTD, por ejemplo) y todo el trfico que se enve a dicha ruta no llegar a su destino debido a que RTE no la conoce. El mecanismo de sincronizacin funciona por defecto en todos los routers BGP y se aplica para evitar el problema anterior en el caso de que un AS sirva de trnsito para el trfico proveniente de otro AS hacia un AS tercero. As, para conseguir la sincronizacin un router no puede anunciar una ruta a otra AS antes de que todos los routers del AS al que pertenece el router anunciante hayan aprendido dicha ruta mediante IGP. Por esto, los pares de routers de borde de dos AS distintas (peers externos) tendrn que esperar cuando quieran anunciar una ruta de otro AS a que dicha ruta se haya propagado por IGP en todo los routers su mismo AS. En el ejemplo anterior, el router RTB tendr que esperar a recibir la ruta 170.10.0.0 (que ya conoce por I-BGP) por IGP antes de comenzar a enviar anuncios al router RTD del AS 400.

En algunos casos no es necesario el mecanismo de sincronizacin, como por ejemplo cuando un AS no sirve de trnsito para el trfico intercambiado entre dos AS o cuando en todos los routers del AS funciona BGP. La finalidad de deshabilitar el mecanismo de sincronizacin en los casos en que no es necesario es evitar el envo de menos rutas por IGP y conseguir una convergencia ms rpida de BGP. En el caso de que se tenga un AS con todos los routers BGP y no se tenga ningn protocolo IGP funcionando, la desactivacin del mecanismo de sincronizacin se hace necesaria ya que un router se quedara esperando indefinidamente a recibir una ruta por IGP antes de anunciarla a un router externo (external peer). Para desactivar la sincronizacin de forma manual se utiliza el comando no synchronization. El siguiente ejemplo muestra un caso en el que se desactiva la sincronizacin:

RTB# router bgp 100 network 150.10.0.0 neighbor 1.1.1.2 remote-as 400 neighbor 3.3.3.3 remote-as 100 no synchronization

(RTB guardar la ruta 170.10.0.0 en su tabla de encaminamiento y la anunciar al router RTD incluso si no dispone de un camino IGP para llegar).
RTD# router bgp 400 neighbor 1.1.1.1 remote-as 100 network 175.10.0.0 RTA# router bgp 100 network 150.10.0.0 neighbor 3.3.3.4 remote-as 100

11.5. Fitrado mediante listas de acceso


El envo y recepcin de actualizaciones BGP se puede controlar mediante el uso de diferentes mtodos de filtrado. El filtrado de anuncios se aplica en una sesin BGP para permitir o denegar los mensajes UPDATE enviados o recibidos, basndose en informaciones como la direccin de la ruta anunciada, la trayectoria de AS seguida o la comunidad a la que pertenece el destino anunciado. 11.5.1. Route Filtering Para restringir la informacin de encaminamiento que un router aprende o anuncia basndose en la direccin de las rutas intercambiadas se utilizan las listas de acceso. Una lista de acceso se aplica a la sesin entre un router y uno de sus vecinos, para lo cual se utiliza el comando neighbor {ip-address|peer-group-name} distribute-list access-list-number {in | out}. En el siguiente ejemplo, el router RTB origina la red 160.10.0.0 y la anuncia a RTC. En este caso, el router RTC no debe propagar dicha ruta hacia el AS100 para no servir de trnsito para llegar a dicho destino. Por ello, ser necesario aplicar una lista de acceso a la sesin entre RTC y RTA que filtre la ruta 160.10.0.0 para que RTC no la anuncie a RTA.

RTC# router bgp 300 network 170.10.0.0 neighbor 3.3.3.3 remote-as 200 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 distribute-list 1 out access-list 1 deny 160.10.0.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255

11.5.2. Path Filtering Otro tipo de listas de acceso se basa en el atributo AS_PATH de los mensajes BGP anunciados o recibidos. La sintaxis para definir una lista de acceso de este tipo y para aplicarla a una sesin BGP es la siguiente:
ip as-path access-list access-list-number {permit|deny} as-regularexpression neighbor {ip-address|peer-group-name} filter-list access-list-number {in|out}

En la figura anterior, para bloquear el anuncio de la ruta 160.10.0.0 desde el router RTC hacia el AS 100 tambin se puede aplicar una lista de acceso basada en el AS_PATH. Para ello, se pueden descartar los anuncios de RTC a RTA cuyo origen sea el AS 200. La configuracin necesaria para aplicar una lista de acceso a los anuncios de salida de RTC que elimine los anuncios con origen en el AS 200 es la siguiente:
RTC# router bgp 300 neighbor 3.3.3.3 remote-as 200 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 filter-list 1 out ip as-path access-list 1 deny ^200$ ip as-path access-list 1 permit .*

En la configuracin anterior, la lista de acceso definida (lista 1) deniega los anuncios cuyo AS_PATH comienza por 200 (^) y termina por 200 ($). La expresin .* indica que la lista se aplica a cualquier AS_PATH, lo cual es necesario para permitir el anuncio del resto de actualizaciones. En el caso de que se hubiese utilizado la expresin ^200 en vez de ^200$, se negaran todos los anuncios cuyo AS_PATH comience por 200. As, una ruta originada en un AS vecino del AS 200 (AS 400, por ejemplo) tendr un AS_PATH de la forma (200, 400) al llegar al router RTC, por lo que no sera anunciada al AS 100.

11.5.3. Community Filtering Otro mtodo de filtrado se basa en el atributo COMMUNITY. En el ejemplo siguiente, el router RTB aade el atributo COMMUNITY con el valor no-export a las rutas que anuncia a RTC para que estas rutas no sean propagadas por RTC hacia el AS 100.

La configuracin del router RTB debe ser la siguiente:


RTB# router bgp 200 network 160.10.0.0 neighbor 3.3.3.1 remote-as 300 neighbor 3.3.3.1 send-community neighbor 3.3.3.1 route-map setcommunity out route-map setcommunity match ip address 1 set community no-export access-list 1 permit 0.0.0.0 255.255.255.255

En esta configuracin se puede ver cmo se utiliza el route map setcommunity para modificar el atributo COMMUNITY al valor no-export. Para que este atributo sea enviado al vecino RTC, es necesario el comando neighbor send-community indicando la direccin IP de RTC. Cuando RTC recibe un anuncio con el atributo COMMUNITY con el valor no-export, ste no lo propagar a su vecino RTA. Aparte del filtrado, otro uso de listas de acceso basadas en el atributo COMMUNITY consiste en modificar otros atributos (como WEIGHT o METRIC) de las rutas a anunciar. Para definir una lista de acceso basada en comunidades se utiliza el comando ip community-list community-list-number {permit|deny} community-number. En el siguiente ejemplo, el router RTB aade los valores 100 y 200 a la lista de comunidades del atributo COMMUNITY que contienen las rutas antes de que stas sean anunciadas. Adems, se indica que se quiere enviar el atributo COMMUNITY en los anuncios enviados al vecino RTC mediante la opcin send-community del comando neighbor.
RTB# router bgp 200

network 160.10.0.0 neighbor 3.3.3.1 remote-as 300 neighbor 3.3.3.1 send-community neighbor 3.3.3.1 route-map setcommunity out route-map setcommunity match ip address 2 set community 100 200 additive access-list 2 permit 0.0.0.0 255.255.255.255

Por otra parte, el router RTC recibir las rutas de RTB y aplicar un route map (check-community) para modificar los atributos de las rutas recibidas (atributo WEIGHT, por ejemplo) basndose en el atributo COMMUNITY.
RTC# router bgp 300 neighbor 3.3.3.3 remote-as 200 neighbor 3.3.3.3 route-map check-community in route-map check-community permit 10 match community 1 set weight 20 route-map check-community permit 20 match community 2 exact set weight 10 route-map check-community permit 30 match community 3 ip community-list 1 permit 100 ip community-list 2 permit 200 ip community-list 3 permit Internet

En el ejemplo de configuracin anterior, el router RTC modifica las rutas recibidas de la siguiente manera: Cualquier ruta que tenga el valor 100 en su atributo COMMUNITY coincidir con la lista 1 y se modificar el valor de su atributo WEIGHT a 20. Cualquier ruta cuyo atributo COMMUNITY contenga slo el valor 200 ser modificada con un valor de WEIGHT igual a 10 (la opcin exact indica que el valor de COMMUNITY slo puede ser de 200 y ningn otro). La ltima lista sirve para asegurar que el resto de actualizaciones recibidas no se descartan (por defecto se descartan todas las rutas que no coinciden con ninguna condicin). La opcin Internet se refiere a todas las rutas, ya que todas las rutas forman parte de la comunidad Internet.

11.6. Route Maps


En este apartado se va a introducir el uso de los route maps ya que se van a utilizar en configuraciones posteriores. En el contexto de BGP, un route map consiste en un mtodo para controlar y modificar la informacin de encaminamiento. Esto se hace definiendo condiciones que se aplican a las rutas redistribuidas de un protocolo de encaminamiento a otro, as como a las rutas recibidas y a las anunciadas. El formato que sigue un route map es el siguiente: route-map map-tag [[permit|deny] | [sequence-number]]. El valor de map-tag se corresponde con el nombre

del route map, de manera que se pueden definir mltiples instancias del mismo route map mediante su nombre. Del mismo modo, el valor sequence-number sirve para indicar la posicin de un nuevo route map en una lista de route maps configurados con el mismo nombre. Por ejemplo, si se definen dos instancias de un route map llamado MYMAP, la primera instancia podra tener un nmero de secuencia igual a 10 y la segunda instancia un valor de 20:
route-map MYMAP permit 10 (primer conjunto de condiciones) route-map MYMAP permit 20 (segundo conjunto de condiciones)

Cuando se aplica el route map MYMAP a las rutas de entrada o de salida, el primer conjunto de condiciones que se evalan corresponde a la instancia con nmero de secuencia 10. As, si no se cumplen dichas condiciones para la ruta de entrada o salida, se evalan entonces las condiciones de una instancia con nmero de secuencia mayor, y as sucesivamente. Cada instancia de un route map consiste en una lista de comandos match y set, cuyas funciones son, respectivamente, aplicar condiciones a las rutas y modificar sus atributos. Por ejemplo, los siguientes comandos consisten en modificar la mtrica de las rutas que anuncien la direccin IP 1.1.1.1:
match ip address 1.1.1.1 set metric 5

Una vez evaluadas las condiciones (comando match) de la primera instancia del route map, la ruta ser redistribuida o se le aplicar la accin especificada (comando set) slo en el caso de que se haya indicada la opcin permit en el route map en cuestin, y se terminar de analizar el route map. En cambio, si la opcin indicada fue deny, la ruta no ser redistribuida o controlada y se finalizar el anlisis del route map sin comprobar el resto de instancias. Por otra parte, en el caso de que no se cumpla ninguna condicin para la ruta, se pasa a la siguiente instancia del route map (el siguiente nmero de secuencia) as hasta que se cumpla algn match o no queden instancias en el route map. En este ltimo caso, si no se cumple ningn match la ruta no ser aceptada ni reenviada. Las diferentes opciones que permite el comando match son las siguientes: match as-path, match community, match clns, match interface, match ip address, match ip next-hop, match ip route-source, match metric, match route-type, match tag. Las opciones relacionadas con el comando set son las siguientes: set as-path, set clns, set automatic-tag, set community, set interface, set default interface, set ip default next-hop, set level, set local-preference, set metric, set metric-type, set next-hop, set origin, set tag, set weight.

En el siguiente ejemplo se van a ver dos casos de uso de route maps para el filtrado y para el control de las rutas anunciadas entre dos sistemas autnomos:

En primer lugar se va a suponer que los routers RTA y RTC intercambian rutas mediante BGP, mientras que RTA y RTB utilizan RIP para intercambiar las rutas en el interior del AS 100. De este modo, RTA obtendr rutas externas a travs de una sesin E-BGP con RTC, las cuales redistribuir a RTB mediante RIP. La siguiente configuracin aplica un control a las rutas redistribuidas a RTC, cambiando las mtricas para que valgan 2 en el caso de las rutas pertenecientes al prefijo 170.10.0.0/16, y 5 para el resto de rutas.
RTA# router rip network 3.0.0.0 network 2.0.0.0 network 150.10.0.0 passive-interface Serial0 redistribute bgp 100 route-map SETMETRIC router bgp 100 neighbor 2.2.2.3 remote-as 300 network 150.10.0.0 route-map SETMETRIC permit 10 match ip-address 1 set metric 2 route-map SETMETRIC permit 20 set metric 5 access-list 1 permit 170.10.0.0 0.0.255.255

En la configuracin anterior, si una ruta pertenece al prefijo indicado se cambiar su mtrica a un valor de 2 y en ese caso se terminar de analizar el route map. En caso contrario, se aplica la segunda instancia que cambia por defecto el valor de la mtrica de todas las rutas a 5. En esta configuracin del route map se aplica una accesslist con el nmero 1 para indicar la condicin del prefijo, utilizando para ello una mscara invertida.

Otro caso de uso de un route map, adems de la modificacin de los atributos de las rutas, puede ser el filtrado de rutas, de modo que se acepten o reenven slo las rutas que cumplan unas condiciones. Como ejemplo, en la figura anterior se podra haber configurado el router RTA para que el AS 100 no acepte anuncios de rutas pertenecientes al prefijo 170.10.0.0. Sin embargo, un route map no se puede aplicar a las rutas de entrada cuando se aplican condiciones basadas en la direccin IP. Por esto, lo que se puede hacer es configurar RTC para que no anuncie dichas rutas a su salida:

RTC# router bgp 300 network 170.10.0.0 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 route-map STOPUPDATES out route-map STOPUPDATES permit 10 match ip address 1 access-list 1 deny 170.10.0.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255

11.6.1. Filtrado y modificacin de atributos mediante Route maps El comando neighbor se puede utilizar junto con los route maps para realizar acciones de filtrado y modificacin de atributos de las actualizaciones tanto de entrada como de salida intercambiadas con un vecino BGP. Los route maps aplicados a los anuncios de entrada no tienen efecto cuando las condiciones (match) indicadas se basan en la direccin IP. El comando utilizado para asociar un route map a una sesin con un vecino BGP es el siguiente: neighbor ip-address route-map route-map-name. En el siguiente ejemplo se configura un route map en el router RTC para que slo acepte los anuncios de redes que son locales al AS200. Adems, se quiere modificar el atributo WEIGHT de dichos anuncios recibidos a un valor de 20. Para conseguir dicha configuracin se puede utilizar un route map junto con listas de acceso basadas en el atributo AS_PATH.

RTC# router bgp 300 network 170.10.0.0 neighbor 3.3.3.3 remote-as 200 neighbor 3.3.3.3 route-map stamp in route-map stamp match as-path 1 set weight 20 ip as-path access-list 1 permit ^200$

En la configuracin anterior, todas las actualizaciones recibidas cuyo AS_PATH comienza por el ASN 200 y termina tambin por el ASN 200 son aceptadas, mientras que el resto de anuncios son descartados. Otra configuracin posible para el router RTC en el mismo escenario podra llevar a cabo las siguientes acciones sobre los anuncios recibidos: Los anuncios con origen en el AS 200 se aceptan y se modifica su atributo WEIGHT al valor 20. Los anuncios originados en el AS 400 son directamente descartados. El resto de anuncios son modificados con un WEIGHT igual a 10.
RTC# router bgp 300 network 170.10.0.0 neighbor 3.3.3.3 remote-as 200 neighbor 3.3.3.3 route-map stamp in route-map stamp permit 10 match as-path 1 set weight 20 route-map stamp permit 20 match as-path 2 set weight 10

ip as-path access-list 1 permit ^200$ ip as-path access-list 2 permit ^200 600 .*

En algunas situaciones es necesario modificar el atributo AS_PATH para controlar el proceso de decisin BGP. Esto se puede hacer mediante el uso del siguiente comando en un route map: set as-path prepend<AS-PATH#<AS-PATH#... Un ejemplo de decisin de una ruta en funcin del atributo AS_PATH puede verse en el escenario anterior. Supngase en este caso que el router RTC anuncia una ruta propia (170.10.0.0) por dos AS diferentes: el AS 100 y el AS 200. Cuando estos anuncios se propagan y llegan al AS 600, los routers del AS 600 tendrn informacin sobre la red 170.10.0.0 por dos caminos distintos: uno a travs del AS 100 con AS_PATH (100, 300) y otro a travs del AS 400 con AS_PATH (400, 200, 300). En el caso anterior, si se asume que todos los atributos son iguales excepto el AS_PATH, los routers del AS 600 elegirn el camino ms corto a travs del AS 100, por lo que el AS 300 recibir todo su trfico por el AS 100. Si se quiere cambiar el proceso de decisin en el AS 600, se podra modificar el AS_PATH de los anuncios que provienen el AS 100 para que sea ms largo que el de los anuncios que provienen del AS 400. Esto puede realizarse aadiendo varios nmeros de AS al AS_PATH de los anuncios que vienen del AS 100. Una prctica sencilla consiste en repetir el ASN propio en los anuncios para hacer que stos sean peores rutas hacia el AS 300, como puede verse en la siguiente configuracin:
RTC# router bgp 300 network 170.10.0.0 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 route-map SETPATH out route-map SETPATH set as-path prepend 300 300

El router RTC anuncia a RTA la ruta 170.10.0.0 con un AS_PATH ms largo (se repite el ASN 300). As, los routers del AS 600 recibirn los anuncios de la ruta 170.10.0.0 a travs del AS 100 con un AS_PATH igual a (100, 300, 300, 300), el cual es ms largo que el recibido mediante el AS 100 (400, 200, 300).

11.6.2. BGP Peer Groups Otra forma de aplicar polticas de encaminamiento mediante route maps es utilizando peer groups, los cuales tambin pueden ser utilizados en las distribute-lists y las filter-lists. Un peer group es un grupo de vecinos BGP a los que se le aplica la misma poltica de encaminamiento, de manera que definiendo un peer group no es necesario definir la misma poltica para cada vecino por separado, sino que se define un peer group al que se le asignan las polticas comunes. Los miembros de un peer-group heredan todas las opciones de configuracin de dicho peer-group. Adems, cada miembro del grupo puede sobrescribir dicha configuracin, aunque esto slo es posible para las condiciones que se aplican a la poltica de los anuncios de entrada. Para definir un peer-group se utiliza el comando siguiente: neighbor peer-group-name peer-group. En el siguiente ejemplo se

utilizan dos peer groups, cada uno de los cuales se utiliza para aplicar la misma poltica a los vecinos internos (internalmap), por un lado, y a los vecinos externos (externalmap) por otro. En la siguiente configuracin se define un peer group en el router RTC llamado internalmap, el cual se aplica a todos sus vecinos internos (RTE, RTF y RTG). Este peer group define un route map (SETMETRIC), el cual modifica la mtrica a 5, y dos filter lists (listas 1 y 2). Adems, se define la filter-list 3 que se aplica al vecino RTE, sobrescribiendo la filter-list 2 del peer group slo para la sesin con este vecino (slo se pueden sobrescribir opciones que afecten a los anuncios de entrada).

RTC# router bgp 300 neighbor internalmap peer-group neighbor internalmap remote-as 300 neighbor internalmap route-map SETMETRIC out neighbor internalmap filter-list 1 out neighbor internalmap filter-list 2 in neighbor 5.5.5.2 peer-group internalmap neighbor 6.6.6.2 peer-group internalmap neighbor 3.3.3.2 peer-group internalmap neighbor 3.3.3.2 filter-list 3 in

En la configuracin que aparece a continuacin se define para el mismo escenario un peer group (externalmap) que se aplica a todos los vecinos externos al router RTC.
RTC# router bgp 300 neighbor externalmap peer-group neighbor externalmap route-map SETMETRIC neighbor externalmap filter-list 1 out neighbor externalmap filter-list 2 in neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 peer-group externalmap

neighbor neighbor neighbor neighbor neighbor

4.4.4.2 4.4.4.2 1.1.1.2 1.1.1.2 1.1.1.2

remote-as 600 peer-group externalmap remote-as 200 peer-group externalmap filter-list 3 in

En este caso, cada sesin BGP con cada vecino se define con la opcin remoteas fuera del peer-group, ya que se trata de vecinos de otros AS y, por tanto, se utilizan diferente ASN en cada caso. Adems, se sobrescribe la poltica para los anuncios de entrada con el vecino 1.1.1.2 asignndole la filter-list 3.

11.7. CIDR y direcciones agregadas


Una de las caractersticas adicionales que soporta BGPv4 respecto a BGPv3 es CIDR (Classless Interdomain Routing), que consiste en no considerar las direcciones IP divididas en clases (A, B o C), sino que cada direccin IP se define junto con un nmero decimal que indica el nmero de bits dedicados a la subred. As, la direccin 192.213.0.0/16 equivale a 192.213.0.0 255.255.0.0. La agregacin de direcciones se utiliza para minimizar el tamao de las tablas de encaminamiento, ya que a la hora de anunciar varias redes los routers resumen dicha informacin agrupando prefijos con partes comunes en superprefijos. En el ejemplo que aparece a continuacin, el router RTB genera el anuncio de la red 160.10.0.0 y el router RTC propagar dicha direccin a RTA como una direccin agregada en el prefijo 160.0.0.0.

RTB# router bgp 200 neighbor 3.3.3.1 remote-as 300 network 160.10.0.0 RTC# router bgp 300 neighbor 3.3.3.3 remote-as 200

neighbor 2.2.2.2 remote-as 100 network 170.10.0.0 aggregate-address 160.0.0.0 255.0.0.0

Existen varios comandos para la agregacin de rutas. El comando utilizado en el ejemplo anterior es aggregate-address address mask. Este comando sirve para anunciar el prefijo de la ruta indicada y tambin el resto de prefijos especficos comprendidos en el prefijo anterior que el router tenga en su tabla de encaminamiento BGP. As, en el ejemplo previo se propagar la ruta 160.0.0.0 y no se evitar que se propague tambin a RTA la ruta 160.10.0.0. Un aspecto a tener en cuenta es que no router no puede agregar una direccin si no dispone de un prefijo especfico de esa direccin en su tabla de encaminamiento BGP. Por ejemplo, el router RTB no podra generar la direccin 160.0.0.0 agregada si no dispone de una entrada ms especfica en su tabla BGP, la cual debe ser aadida por anuncios entrantes de otros AS, por redistribucin de un protocolo IGP o de una ruta esttica, o mediante el uso del comando network (como ocurre en el ejemplo anterior). En el caso de que se quiera que el router RTC propague slo la ruta 160.0.0.0 y no los prefijos ms especficos, sera necesario utilizar la opcin siguiente:
aggregate-address address mask summary-only

De este modo, el comando aggregate 160.0.0.0 255.0.0.0 summary-only propagar el prefijo 160.0.0.0 y suprimir el resto de prefijos especficos para ser anunciados. Sin embargo, en el caso de que se haya aadido un prefijo especfico mediante el comando network, dicho prefijo ser tambin anunciado a pesar de haber utilizado la opcin summary-only en la agregacin. En el caso de que se quieran suprimir ms rutas especficas cuando se realiza una agregacin, se puede definir un route map para suprimir las rutas especficas a anunciar de una manera selectiva. El comando que se debe usar para aplicar un route map a los anuncios de las direcciones agregadas es el siguiente: aggregate-address address-mask suppress-map map-name. Como ejemplo se puede suponer en el escenario anterior que se desea agregar la direccin 160.0.0.0, suprimir la ruta especfica 160.20.0.0 y permitir el anuncio del resto de rutas especficas (160.10.0.0, por ejemplo). Para este caso se podra la siguiente configuracin:
RTC# router bgp 300 neighbor 3.3.3.3 remote-as 200 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 remote-as 100 network 170.10.0.0 route-map CHECK permit 10 match ip address 1 access-list 1 deny 160.20.0.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255 aggregate-address 160.0.0.0 255.0.0.0 suppress-map CHECK

Otra forma para aplicar un route map es mediante el comando aggregateaddress address mask attribute-map map-name, el cual permite modificar los atributos de las rutas agregadas antes de ser enviadas. El route map siguiente se aplica para modificar el origen de las rutas agregadas al valor IGP antes de ser anunciadas.
route-map SETMETRIC set origin igp aggregate-address 160.0.0.0 255.0.0.0 attribute-map SETORIGIN

Anteriormente se ha sealado que no era posible suprimir una ruta especfica si sta era originada en el mismo router que realiza la agregacin mediante el comando network, incluso si se utilizaba la opcin aggregate summary-only. De este modo, en el siguiente ejemplo el router RTB no puede generar, en principio, el prefijo 160.0.0.0 sin generar la ruta 160.10.0.0 porque dicha ruta especfica es local al AS 200 y es el propio router RTB quien la genera. Una primera solucin consiste en usar una ruta esttica para la ruta agregada y redistribuirla en BGP. El inconveniente de esta solucin es que la ruta agregada se anunciar con un atributo ORIGIN con valor INCOMPLETE (?). La configuracin correspondiente a esta solucin sera la siguiente:
RTB# router bgp 200 neighbor 3.3.3.1 remote-as 300 redistribute static ip route 160.0.0.0 255.0.0.0 null0

Una solucin posible en suma a la adicin de una ruta esttica es indicar la ruta agregada mediante el comando network, lo cual permitir que el origen de esta ruta sea un protocolo IGP. La configuracin sera como la siguiente:
RTB# router bgp 200 network 160.0.0.0 mask 255.0.0.0 neighbor 3.3.3.1 remote-as 300 redistribute static ip route 160.0.0.0 255.0.0.0 null0

Otra opcin del comando aggregate-address utilizada en la agregacin de rutas es as-set, la cual permite anunciar el prefijo agregado con informacin sobre los atributos AS_PATH de las rutas especficas para evitar prdida de informacin. Esta opcin reduce el tamao del atributo AS_PATH aadiendo slo los ASN una sola vez. En el siguiente ejemplo, el router RTC obtiene la ruta 160.20.0.0 del router

RTA y la ruta 160.10.0.0 de RTB. Suponiendo que RTC quiere agregar dichas rutas en la direccin 160.0.0.0/8 y enviarla a RTD, el router RTD no podr saber en principio cul es el origen de cada dicha ruta. Sin embargo, gracias a la opcin as-set se fuerza a RTC a originar informacin del AS_PATH en cada anuncio.

RTB# router bgp 200 network 160.10.0.0 neighbor 3.3.3.1 remote-as 300 RTA# router bgp 100 network 160.20.0.0 neighbor 2.2.2.1 remote-as 300 RTC# router bgp 300 neighbor 3.3.3.3 remote-as 200 neighbor 2.2.2.2 remote-as 100 neighbor 4.4.4.4 remote-as 400 aggregate 160.0.0.0 255.0.0.0 summary-only aggregate 160.0.0.0 255.0.0.0 as-set

En el caso de que en la configuracin del router RTC no se hubiese utilizado la opcin as-set, el router RTD no sabra cul es el origen real de la ruta 160.0.0.0/8 ya que sta puede provenir de dos orgenes distintos (AS 100 y AS 200). As, sin esta opcin el router RTC enviara el anuncio de la ruta agregada a RTD con un atributo AS_PATH igual a (300), como si la ruta hubiese sido generada por el AS 300. En cambio, con la opcin as-set el atributo AS_PATH de la ruta agregada ser igual a (100, 200), de forma que se indica que dicha ruta puede pertenecer a los AS 100 y 200.

11.8. Route Flap Dampening


Una ruta que flapea consiste en una ruta inestable que va apareciendo como up o como down, o que va modificndose un atributo de sta (como el AS_PATH, por ejemplo). Esto puede ser debido a diversos factores como la inyeccin de rutas IGP dinmicamente en BGP, la inestabilidad de algunos enlaces o el cambio de poltica de encaminamiento. El flapeo de rutas se traduce en la generacin de gran cantidad de mensajes BGP de tipo UPDATE, lo que implica un mayor consumo de ancho de banda y de recursos de CPU de los routers. Si el AS es un cliente, los flapeos dentro del AS afectarn al propio AS y al proveedor de servicio del AS. Por otra parte, si el AS es un ISP, los flapeos dentro del AS afectarn al AS y a otros ISP. Una forma de minimizar el efecto de las rutas inestables es mediante la sumarizacin o agregacin de rutas, de forma que si se realiza la agregacin de rutas en

el borde del AS se puede evitar que los cambios de una ruta relativa a una subred se propaguen fuera del AS, ya que se anuncia la supernet. Otra forma de evitar problemas de inestabilidad consiste en desligar los anuncios de una ruta hacia el exterior de la propia existencia de la ruta en el AS, para lo cual las rutas se inyectan hacia el exterior de forma esttica en vez de redistribuyendo IGP en BGP. Por otro lado, otro mecanismo utilizado en BGP para reducir el alcance y la propagacin de las inestabilidades de rutas es el dampening, el cual se aplica solamente a los anuncios de entrada E-BGP y que consiste en categorizar las rutas en dos grupos: ill-behaved y well-behaved. Cada vez que una ruta flapea se le penaliza, de manera que tras superar un cierto nmero de penalizaciones en un periodo de tiempo determinado sta se suprime y no se anuncia a otros vecinos BGP. Una ruta puede seguir siendo penalizada an cuando ya haya superado el umbral de supresin y no se est anunciando. Por otra parte, la penalidad de una ruta va decayendo exponencialmente con el tiempo, de manera que la ruta puede volver a reutilizarse cuando su penalidad queda por debajo del lmite de reuso. Adems, las penalidades se reinician a cero cuando stas caen por debajo de la mitad del lmite de reuso. La siguiente grfica representa la penalidad de una ruta respecto al tiempo, mostrando los lmites de supresin y de reuso:

La documentacin que especifica el uso de penalizaciones es el RFC-2439. Los parmetros los elige quien penaliza, siendo los valores por defecto para los routers Cisco los siguientes: Incremento en 1000 cada flapeo (en 500 si cambian los atributos del anuncio). Umbral de supresin: 2000.

Umbral para reusar: 750. Tiempo medio: 15 min. Durante este tiempo la ruta no est suprimida, aunque s puede ser penalizada si flapea (lo cual puede ocurrir cada 5 segundos). Tiempo mximo de supresin: 4 x tiempo medio. Cada 10 segundos se revisan las rutas para ver si alguna ruta puede pasar de suprimida a anunciarse si su nmero de penalizaciones correspondiente se ha reducido por debajo del lmite de reuso. En el caso de que pase el tiempo mximo de supresin y no se haya reducido suficientemente el nmero de penalizaciones, la ruta deja de estar suprimida para poder ser anunciada.

Inicialmente, el mecanismo de dampening est desactivado por defecto. Los siguientes comandos se utilizan para controlar el dampening de rutas en un router Cisco:
bgp dampening: Activa el mecanismo de dampening en el router, el cual se

aplica a las rutas aprendidas por EBGP y no por IBGP.


no bgp dampening: Desactiva el dampening en el router. bgp half-life-time reuse supress maximum-suppress-time: Establece

el valor de todos los parmetros al mismo tiempo. El rango posible para cada parmetro es el siguiente: o Tiempo medio de vida (half-life-time): 1-45 min. o Umbral de reuso (reuse-value): 1-20000. o Umbral de supresin (suppress-value): 1-20000. o Tiempo mximo de supresin (max-suppress-time): 1-255.

A continuacin aparece un ejemplo de configuracin en el que se usa el mecanismo de dampening:

RTB# hostname RTB interface Serial0 ip address 203.250.15.2 255.255.255.252

interface Serial1 ip address 192.208.10.6 255.255.255.252 router bgp 100 bgp dampening network 203.250.15.0 neighbor 192.208.10.5 remote-as 300 RTD# hostname RTD interface Loopback0 ip address 192.208.10.174 255.255.255.192 interface Serial0/0 ip address 192.208.10.5 255.255.255.252 router bgp 300 network 192.208.10.0 neighbor 192.208.10.6 remote-as 100

El mecanismo de route dampening est configurado en el router RTB con los valores por defecto para los distintos parmetros. Suponindo en primer lugar que el enlace EBGP con RTD es estable, la tabla BGP de RTB sera como sigue:
RTB#show ip bgp BGP table version is 24, local router ID is 203.250.15.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network *> 192.208.10.0 *> 203.250.15.0 Next Hop 192.208.10.5 0.0.0.0 Metric LocPrf Weight Path 0 0 300 i 0 32768 i

Para simular un flapeo de una ruta se va a ejecutar el comando clear ip bgp 192.208.10.6 en RTD, de modo que este router no anuncia dicha ruta a RTB. De este modo, la tabla BGP de RTB quedara de la siguiente forma:
RTB#show ip bgp BGP table version is 24, local router ID is 203.250.15.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network h 192.208.10.0 *> 203.250.15.0 Next Hop 192.208.10.5 0.0.0.0 Metric LocPrf Weight Path 0 0 300 i 0 32768 i

En la tabla anterior se puede ver cmo la entrada para la ruta 192.208.10.0 aparece con el estado h (history), que significa que no se dispone de un camino mejor para dicha ruta, pero que la informacin de flapping (es decir, las penalidades) todava se conservan. Dicha informacin puede verse mediante el siguiente comando:

RTB#show ip bgp 192.208.10.0 BGP routing table entry for 192.208.10.0 255.255.255.0, version 25 Paths: (1 available, no best path) 300 (history entry) 192.208.10.5 from 192.208.10.5 (192.208.10.174) Origin IGP, metric 0, external Dampinfo: penalty 910, flapped 1 times in 0:02:03

En este caso la ruta tiene una penalidad que es inferior al lmite de supresin (cuyo valor es 2000 por defecto), de manera que esta ruta todava no ha sido suprimida. Si se producen ms flapeos en dicha ruta se podra ver lo siguiente:
RTB#show ip bgp BGP table version is 32, local router ID is 203.250.15.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network *d 192.208.10.0 *> 203.250.15.0 Next Hop 192.208.10.5 0.0.0.0 Metric LocPrf Weight Path 0 0 300 i 0 32768 i

RTB#show ip bgp 192.208.10.0 BGP routing table entry for 192.208.10.0 255.255.255.0, version 32 Paths: (1 available, no best path) 300, (suppressed due to dampening) 192.208.10.5 from 192.208.10.5 (192.208.10.174) Origin IGP, metric 0, valid, external Dampinfo: penalty 2615, flapped 3 times in 0:05:18 , reuse in 0:27:00

En este ltimo caso la ruta ha sido suprimida (dampened). Esta rutapodr ser reutilizada cuando el valor de la penalidad sea inferior al lmite de reuso (750 por defecto). Si la penalidad sigue disminuyendo y alcanza un valor inferior a la mitad del lmite de reuso (750/2=350), toda la informacin referente a las penalidades ser borrada. Los siguientes comandos se utilizan para mostrar y borrar las informaciones almacenadas sobre el flapeo de rutas:
show ip bgp flap-statistics: Muestra las estadsticas sobre el flapeo de todas

las rutas.
show ip bgp-flap-statistics regexp <regexp>: Muestra las estadsticas sobre el flapeo de todos los caminos que cumplen la expresin regexp. show ip bgp flap-statistics filter-list <list>: Muestra las estadsticas sobre el flapeo de todos los caminos que pasan el filtro indicado. show ip bgp flap-statistics A.B.C.D m.m.m.m: Muestra las estadsticas del fapleo de una entrada determinada. show ip bgp neighbor [dampened-routes] | [flap-statistics]: Muestra las estadsticas del flapeo de todas las rutas aprendidas de un vecino. clear ip bgp flap-statistics: Borra las estadsticas de flapeo de todas las rutas guardadas en la tabla BGP del router.

clear ip bgp flap-statistics regexp <regexp>: Borra todas las estadsticas

sobre el flapeo de todos los caminos que cumplen la expresin regexp. clear ip bgp flap-statistics filter-list <list>: Borra todas las estadsticas sobre el flapeo de todos los caminos que pasan el filtro indicado. clear ip bgp flap-statistics A.B.C.D m.m.m.m: Borra las estadsticas del fapleo de una entrada determinada. clear ip bgp A.B.C.D flap-statistics: Borra las estadsticas de flapeo de todas las rutas aprendidas de un vecino EBGP.