ARQUITECTURA DE REDES Boletín 6: BGP Contenidos: 1. Introducción... 2 2. Configuración básica de BGP... 2 Habilitar BGP y la propagación de redes... 2 Consulta de información sobre BGP... 4 Limpieza de sesiones BGP... 6 Soft reconfiguration... 6 Sincronización BGP... 7 Configuración de atributos de selección de ruta... 7 Listas de control de acceso... 9 Route maps... 10 neighbor remove-private... 12 Filtrado y creación de políticas BGP... 13 Listas de filtros... 13 Listas de distribución... 13 Listas de prefijos... 14 Monitorización... 15 3. Configuración avanzada de BGP... 16 Ruta por defecto... 16 Cambiar la distancia administrativa por defecto... 16 Cambiar parámetros que afectan al proceso de convergencia... 17 4. Bibliografía... 17 Antonio Ruiz <arm@um.es> Francisco J. Ros <fjros@um.es> Fernando Pereñíguez <pereniguez@um.es> Boletín 6: BGP 1
1. Introducción En este guión vamos a aprender cómo configurar y administrar redes que utilizan el protocolo BGP (Border Gateway Protocol) [1] como protocolo de enrutamiento interdominio. 2. Configuración básica de BGP BGP permite el intercambio de información entre sistemas autónomos (AS Autonomous System). Cada sistema autónomo va a estar identificado por un número de sistema autónomo (ASN Autonomous System Number) que es un número de 16 bits comprendido entre 1 y 65535. Cabe destacar que, de este rango números, aquellos que van desde 64512 a 65535 están reservados para uso privado. Habilitar BGP y la propagación de redes A continuación mostramos la forma genérica de configurar en BGP: Router(config)# router bgp asn Router(config-router)# neighbor address remote-as asn v Router(config-router)# neighbor address description text Router(config-router)# network address mask mask Donde: router ospf asn habilita BGP en el router para el sistema autónomo cuyo identificador es asn. neighbor address remote-as asn v define cuál es la dirección (address) de nuestro vecino (peer o neighbor) para el sistema autónomo con identificador asn v. neighbor address description text es opcional y se utiliza para proporcionar una descripción acerca de la conexión. network address mask mask indica la dirección de red (address) junto con su máscara que el router anunciará a los vecinos. Los vecinos de un router pueden pertenecer a otro sistema autónomo o pueden ser del mismo sistema autónomo. Dependiendo de si pertenece al mismo sistema autónomo o no se ejecutará: internal Border Gateway Protocol (ibgp) para los routers que intercambian información dentro del mismo sistema autónomo. external Border Gateway Protocol (ebgp) para intercambiar información con routers que no son del mismo sistema autónomo. Boletín 6: BGP 2
De este modo, para configurar BGP en el router R1 de la Figura 1 utilizaríamos la configuración que se indica a continuación: R1(config)# router bgp 100 R1(config-router)# network 1.0.0.0 mask 255.0.0.0 R1(config-router)# neighbor 10.0.0.2 remote-as 300 R1(config-router)# neighbor 10.0.0.2 description Enlace con R5 R1(config-router)# neighbor 10.0.1.2 remote-as 400 R1(config-router)# neighbor 10.0.1.2 description Enlace con R6 R1(config-router)# neighbor 192.168.1.2 remote-as 100 R1(config-router)# neighbor 192.168.1.2 description Enlace con R4 R1(config-router)# neighbor 192.168.2.2 remote-as 100 R1(config-router)# neighbor 192.168.2.2 description Enlace con R3 En el caso de que en un mismo SA hubiese varios routers BGP haciendo de frontera con otros SAs es necesario que todos estos routers frontera estén conectados con todos por medio de ibgp. En esta situación además hay que tener en cuenta que en el caso de que el SA sólo estuviese constituido por routers BGP que no ejecutan ningún protocolo de enrutamiento interno, sería necesario que utilizásemos el comando next-hop-self. Este comando reemplazaría la dirección del siguiente salto para alcanzar un SA por su dirección. De esta forma, un router podría llegar a las rutas de un vecino interno al SA usándolo como siguiente salto, en vez de utilizar la interfaz que comparte el intercambio de información enrutamiento con otro vecino externo. Figura 1. Topología del escenario BGP. Boletín 6: BGP 3
Consulta de información sobre BGP Una vez configurado BGP, para verificar la configuración y detectar posibles problemas de BGP podemos utilizar distintos comandos. Al igual que se ha explicado en otros guiones, con el comando show ip route podemos ver la información aprendida por el router. En la información mostrada, las rutas que han sido obtenidas por medio de BGP aparecen marcadas con B, tal y como se puede ver a continuación. R1# show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is not set 1.0.0.0/24 is subnetted, 1 subnets C 1.0.0.0 is directly connected, FastEthernet0/1 B 2.0.0.0/8 [200/0] via 10.0.2.2, 02:51:03 B 3.0.0.0/8 [20/0] via 10.0.0.2, 02:52:37 B 4.0.0.0/8 [20/0] via 10.0.1.2, 02:52:27 B 5.0.0.0/8 [20/0] via 10.0.1.2, 02:52:27 B 6.0.0.0/8 [200/0] via 10.0.2.2, 02:51:03 B 7.0.0.0/8 [20/0] via 10.0.1.2, 02:52:27 B 8.0.0.0/8 [200/0] via 10.0.2.2, 02:51:03 10.0.0.0/24 is subnetted, 3 subnets O 10.0.2.0 [110/144] via 192.168.0.2, 02:53:21, Serial1/0 [110/144] via 192.168.1.2, 02:53:23, Serial1/1 C 10.0.0.0 is directly connected, Serial1/3 C 10.0.1.0 is directly connected, Serial1/2 C 192.168.0.0/24 is directly connected, Serial1/0 C 192.168.1.0/24 is directly connected, Serial1/1 O 192.168.2.0/24 [110/96] via 192.168.0.2, 02:53:59, Serial1/0 O 192.168.3.0/24 [110/144] via 192.168.0.2, 02:53:59, Serial1/0 [110/144] via 192.168.1.2, 02:53:59, Serial1/1 Los principales comandos para consultar el estado de BGP son: show ip bgp. Muestra toda la información de configuración de BGP. Boletín 6: BGP 4
show ip bgp neighbors. Muestra todos los vecinos así como información estadística de cada uno de ellos. show ip bgp filter-list. Muestra rutas de acuerdo a listas de filtrado. show ip bgp paths. Muestra toda la información de rutas para el router. show ip bgp summary. Muestra un resumen del estado de todos los vecinos BGP. R1# show ip bgp BGP table version is 11, local router ID is 1.0.0.4 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP,? - incomplete Network Next Hop Metric LocPrf Weight Path * i1.0.0.0 192.168.2.2 97 100 0 i *> 0.0.0.0 0 32768 i * i 192.168.1.2 49 100 0 i *>i2.0.0.0 10.0.2.2 100 100 0 200 i * i 10.0.3.2 100 0 200 i * 3.0.0.0 10.0.1.2 0 400 400 400 400 300 i *> 10.0.0.2 0 0 300 i * 4.0.0.0 10.0.1.2 0 0 400 400 400 400 i *> 10.0.0.2 0 300 400 i * i5.0.0.0 10.0.4.2 49 100 0 500 i *> 10.0.0.2 0 300 400 500 i * 10.0.1.2 0 400 400 400 400 500 i * i6.0.0.0 10.0.3.2 100 0 200 800 600 i *>i 10.0.2.2 100 100 0 200 800 600 i *> 7.0.0.0 10.0.0.2 0 300 400 i * 10.0.1.2 0 400 400 400 400 i Network Next Hop Metric LocPrf Weight Path * i8.0.0.0 10.0.3.2 100 0 200 800 i *>i 10.0.2.2 100 100 0 200 800 i Si le pasamos al comando show ip bgp como parámetro una de las redes recibidas, entonces no muestra la información detallada para esa ruta. Boletín 6: BGP 5
Router# show ip bgp 1.0.0.0 BGP routing table entry for 1.0.0.0/8, version 10 Paths: (3 available, best #2, table Default-IP-Routing-Table) Advertised to non peer-group peers: 10.0.0.2 10.0.1.2 192.168.1.2 192.168.2.2 Local 192.168.2.2 (metric 144) from 192.168.2.2 (1.0.0.2) Origin IGP, metric 97, localpref 100, valid, internal Local 0.0.0.0 from 0.0.0.0 (1.0.0.4) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best Local 192.168.1.2 from 192.168.1.2 (1.0.0.3) Origin IGP, metric 49, localpref 100, valid, internal Limpieza de sesiones BGP Cuando se hacen cambios en la configuración BGP de un router, la sesión tiene que ser limpiada para que los nuevos cambios tengan lugar. El comando para realizar esta limpieza es: clear ip bgp ip/asn, donde se indica la dirección IP o el número de SA del vecino del que se eliminará la información. Si queremos borrar las conexiones con todos los vecinos entonces ejecutaríamos el comando clear ip bgp *. La ejecución provoca la invalidación de la caché y tiene un importante impacto en las operaciones de red ya que se eliminan las rutas de BGP y de las tablas de enrutamiento y, por tanto, se pierde conectividad durante algún tiempo o la información se envía sobre otras rutas alternativas. Soft reconfiguration Para evitar que pequeños cambios en la configuración provoquen un procedimiento de restablecimiento, Cisco ha implementado una opción de reconfiguración suave (soft reconfiguration) la cual permite que se puedan realizar cambios sin limpiar la sesión BGP. Cuando este mecanismo se utiliza para generar actualizaciones entrantes de un vecino se le denomina soft reconfiguration inbound. Por el contrario, cuando se utiliza para enviar actualizaciones a un vecino, se le denomina soft reconfiguration outbound. El comando para configurar soft reconfiguration es: neighbor IP softreconfiguration inbound, donde IP es la dirección del router frontera un de SA vecino. Para configurar este mecanismo en el router R1, la forma incluirlo sería la siguiente: Boletín 6: BGP 6
R1(config)# router bgp 100 R1(config-router)# network 1.0.0.0 mask 255.255.255.0 R1(config-router)# neighbor 10.0.0.2 soft-reconfiguration inbound Sincronización BGP Cisco, por defecto, no incluye rutas que han sido aprendidas a través de ibgp hasta que éstas están presentes en un protocolo de enrutamiento interno. Cuando en un SA todos los routers están ejecutando sólo BGP y no se emplea un protocolo de enrutamiento interno, no hay necesidad de tener la sincronización activa. En estos casos, para deshabilitarla tenemos el comando no synchronization. En la mayoría de los casos, cuando vamos a configurar BGP se incluirá la siguiente información: RA1(config)# router bgp XXX RA1(config-router)# no synchronization RA1(config-router)# network XXX.XXX.XXX.XXX mask yyy.yyy.yyy RA1(config-router)# neighbor xxx.xxx.xxx.x.xx soft-reconfiguration inbound RA1(config-router)# Para el router de la Figura 1, la configuración para intercambiar información con el router R5 del SA 300 sería: RA1(config)# router bgp 100 RA1(config-router)# no synchronization RA1(config-router)# network 1.0.0.0 mask 255.255.255.0 RA1(config-router)# neighbor 10.0.0.2 soft-reconfiguration inbound RA1(config-router)# Configuración de atributos de selección de ruta Para seleccionar la mejor ruta a un destino, BGP utiliza diversas métricas. Los atributos que se examinan o comprobaciones que se realizan para elegir la ruta se efectúan en el siguiente orden: 1. Atributo Weight 2. Atributo Local preference 3. Ruta originada por el router local 4. Atributo AS path 5. Origin code 6. Atributo MED 7. Externas sobre internas 8. Tipos de caminos Boletín 6: BGP 7
9. Vecino IGP más cercano 10. Menor Router ID A continuación explicaremos cómo establecer aquellos atributos que nosotros podemos modificar durante el proceso de envío/recepción de rutas a/de nuestros vecinos. El atributo weight es un atributo definido por Cisco y, por lo tanto, es propietario. Weight se considera una métrica y se utiliza en un router (es local al router en el que se configura) para indicar la preferencia de las rutas aprendidas por otros vecinos BGP. Cuanto mayor es el valor, mejor es el camino. El valor puede ir entre 0 y 65535. Por defecto, las rutas aprendidas de otro vecino tiene un valor weight de 0 mientras que las aprendidas por el router local tienen un valor de 32768. Si en un router que tiene dos vecinos queremos elegir las rutas de uno frente al otro utilizando el atributo weight, la forma de configurarlo es la siguiente: R6(config)# router bgp 400 R6(config-router)# network 4.0.0.0 R6(config-router)# neighbor 192.168.2.1 remote-as 300 R6(config-router)# neighbor 192.168.2.1 weight 200 R6(config-router)# neighbor 192.168.1.2 remote-as 100 R6(config-router)# neighbor 192.168.1.2 weight 50 En este ejemplo el router R6 indica que las rutas a través del SA 300 tienen mayor preferencia que las de SA 100. De esta forma si SA400 recibe un destino tanto a través del SA 300 como del SA 100, el router R6 elegirá a R5 como siguiente salto. El atributo local preference permite asignar valores de métrica para el intercambio entre routers ibgp. A diferencia de weight, local preference sí se intercambia con los vecinos internos del SA. Sin embargo, no se intercambia con los SA externos. Por defecto, su valor es 100. El atributo as-path indica los números de los sistemas autónomos a través de los cuales una ruta ha pasado. El atributo MED (Multi-Exit Discriminator), a diferencia de weight y local preference que son locales, indica a los vecinos del AS qué enlace tienen que utilizar para enviar el tráfico. Se utilizar como una métrica y nos será de utilidad en los escenarios de multi-homing. Estos atributos se pueden modificar utilizando un mecanismo que veremos posteriormente y que se denomina route-maps. No obstante, antes de adentrarnos en la explicación de los route maps, estudiaremos las denominadas listas de filtrado, distribución y de prefijos así como para el filtrado de la información que enviaremos a otros vecinos, pues estos mecanismos nos serán de utilidad en la configuración de route-maps. Boletín 6: BGP 8
Listas de control de acceso Las listas de control de acceso (ACLs) [5, 6] permiten filtrar tráfico. En particular, éstas son utilizadas en BGP para delimitar las rutas que un router anuncia a sus vecinos. Las listas de control de acceso permite realizar el filtrado de paquetes en función de diversas opciones: dirección origen dirección destino tipo de paquete cualquier combinación de los elementos anteriores En función de esta información, la ACL puede permitir o bloquear el anuncio de ciertas rutas a un vecino. Una ACL es una colección secuencial de condiciones permitir o denegar que se aplican a un paquete IP. A cada lista se le asigna un número de lista. El router comprueba cada condición de la lista secuencialmente y en la primera coincidencia el router para de realizar comprobaciones. Si no se cumple ninguna condición entonces se produce un rechazo. En los routers Cisco, podemos distinguir dos tipos principales de ACLs: listas de acceso estándar y listas de acceso extendidas. Mientras que las listas estándar se configuran con números entre 1 y 99, las extendidas se configuran con números entre 100 y 199. La forma habitual de definir una lista de acceso es mediante el siguiente comando: access-list access-list-number {deny permit} source [sourcewildcard] [log] A continuación mostramos un ejemplo la lista que configuraríamos para permitir el acceso a hosts de tres redes específicas y denegar cualquier otra dirección: access-list 1 permit 192.5.34.0 0.0.0.255 access-list 1 permit 128.88.0.0 0.0.255.255 access-list 1 permit 36.0.0.0 0.255.255.255! El resto está implícitamente denegado A continuación mostramos un ejemplo de una lista de acceso que filtra a un host específico dentro de una subred. access-list 99 deny host 192.168.10.100 access-list 99 permit 192.168.10.0 0.0.0.255 Las listas extendidas permiten un mayor control del tráfico ya que nos permiten especificar protocolos, puertos, etc. Su sintaxis es la siguiente: Boletín 6: BGP 9
access-list access-list-number [dynamic dynamic-name [timeout minutes]] {deny permit} protocol source source-wildcard destination destination-wildcard [precedence precedence] [tos tos] [log log-input] [time-range time-range-name][fragments] A continuación mostramos un ejemplo de una lista que filtra el tráfico SMTP (puerto 25). Una vez creada una lista, ésta se puede aplicar a una interfaz mediante el comando ip access-group list {in out} donde in y out indican si se aplica al tráfico de entrada o de salida. Si no se especifica, por defecto, se aplica al de entrada. Route maps access-list 102 deny tcp any any eq 25 access-list 102 permit ip any any Los mapas de rutas (route maps) se utilizan para controlar y modificar la información de enrutamiento que se intercambia con los vecinos. A continuación se muestra la forma de especificar la utilización un mapa de rutas para controlar la información de enrutamiento intercambiada con un vecino. RA1(config)# router bgp XXX RA1(config-router)# network XXX.XXX.XXX.XXX mask yyy.yyy.yyy RA1(config-router)# neighbor xxx.xxx.xxx.x.xx remote-as zzz RA1(config-router)# neighbor xxx.xxx.xxx.x.xx route-map route-map-name Para definir un mapa de rutas utilizaremos la siguiente sintaxis: route map map tag [[permit deny] [sequence number]] donde map-tag es el nombre que se le da al route map. Si hay varias definiciones de route maps con el mismo nombre, entonces se considerarán como si fuese una sola. El uso de los parámetros permit o deny se utiliza para determinar si se permite o deniega la información de enrutamiento. En este comando, sequence-number permite especificar un número de orden entre los route maps asociados al mismo nombre (map-tag). Boletín 6: BGP 10
Cada comando route-map puede tener asociado una lista de comandos match y set. Mientras que con el comando match especificamos los criterios bajo los que se permite la redistribución, el comando set especifica las acciones a realizar si se cumplen los criterios especificados con el comando match. En muchos casos como criterios de coincidencia se utilizan ACLs. Los comandos match que se pueden utilizar para BGP aparecen en [7, 8]. De estos comandos, nos serán de especial utilidad los siguientes: match as-path. Para comprobar si coincide una lista de acceso de camino de sistema autónomo. match ip interface. Comprueba rutas que tengan su siguiente salto en una de las interfaces especificadas. match ip address. Para comprobar rutas que tengan una dirección de red. match ip next-hop. Comprueba cualquier ruta que tenga una dirección de router de siguiente salto especificado en una lista de acceso especificada. match ip metric. Se utiliza para comprobar rutas con una métrica específica. match route type. Comprueba rutas de un tipo específico. De forma similar a los comandos match, los comandos set que se pueden utilizar para BGP aparecen en [7, 8]. De estos comandos, los principales para nosotros serán: set as-path. Modifica un camino de sistema autónomo para una ruta BGP. Se utiliza para hacer prepend sobre un determinado camino a un SA. De esta forma la sentencia sería: set as-path prepend XX XX XX, donde XX es el mismo identificador repetido varias veces para alargar el camino de una ruta. set local preference. Para establecer la preferencia local. set metric. Establece la métrica a utilizar (atributo MED). set next-hop. Especifica la dirección del siguiente salto. set origin. Establece el origen de las rutas (IGP o EGP). set weight. Permite establecer el peso. A continuación mostramos un ejemplo de route-map que permite modificar la preferencia local y la métrica para que en un escenario donde un SA (SA 600 en la Figura 1) está conectado a otro (SA 500 en la Figura 1) mediante dos enlaces, que uno de los enlaces se utilice como enlace primario y el otro para cuando falle el primero (backup). En este caso vemos que no se utiliza la sentencia match y sí la sentencia set. La configuración que se muestra no es completa, si no que se parte del supuesto que tenemos establecida ya la configuración básica. Boletín 6: BGP 11
R14(config)# route-map backupin permit 10 R14(config-route-map)# set local-preference 90 R14(config)# route-map backupout permit 10 R14(config-route-map)# set metric 10 R14(config)# router bgp 600 R14(config-router)# neighbor 10.0.0.2 remote-as 500 R14(config-router)# neighbor 10.0.0.2 route-map backupin in R14(config-router)# neighbor 10.0.0.2 route-map backupout out Basándonos en este ejemplo, lo podríamos modificar para mostrar el uso de las cláusulas match. En este escenario podríamos indicar que uno de los enlaces es primario y otro secundario. Además, podríamos considerar que para el escenario nos interesa que el enlace de backup se utilice para cuando las rutas vienen del SA 400. R4(config)# ip as-path access-list 5 permit _400$ R4(config)# route-map backupin permit 5 R4(config-route-map)# match as-path 5 R4(config-route-map)# set local-preference 120 R4(config)# route-map backupin permit 10 R4(config-route-map)# set local-preference 90 R4(config)# route-map backupout permit 10 R4(config-route-map)# set metric 10 R4(config)# router bgp 600 R4(config-router)# neighbor 10.0.0.2 remote-as 500 R4(config-router)# neighbor 10.0.0.2 route-map backupin in R4(config-router)# neighbor 10.0.0.2 route-map backupout out neighbor remove-private Este comando permite eliminar los números de sistema autónomo privado. Así cuando en el router de un SA se produce una actualización que se envía a un vecino externo, los números de SA privados se eliminan. En la Figura 1 Boletín 6: BGP 12
el SA 400 sería el responsable de ocultar el número de SA 65512 al resto de los vecinos de SA. Un ejemplo de su uso sería el siguiente: RA1(config)# router bgp 400 RA1(config-router)# network 4.0.0.0 RA1(config-router)# neighbor 10.0.4.2 remote-as 65000 RA1(config-router)# neighbor 10.0.4.2 remove-private-as Filtrado y creación de políticas BGP Habitualmente en BGP es necesario delimitar la información que enviamos a nuestros vecinos. Algunos de estos motivos es evitar que se conecten a otro SA a través de nosotros, aprovechándose de nuestros recursos en lugar de utilizar los suyos propios. A continuación veremos tres mecanismos para delimitar la información que compartimos con nuestros vecinos. Listas de filtros Las listas de filtros (filter lists) nos permiten filtrar caminos de SAs. Este tipo de filtros utiliza expresiones regulares para comprobar si la información de los ASs que atraviesa una determinada ruta satisface una condición y, en consecuencia, permitir o denegar esa ruta. Para configurar estas listas se utiliza el comando neighbor. A continuación mostramos un ejemplo de una lista de filtros. En este caso el router R6 está filtrando a su vecino R7 todas las rutas que tienen origen en el SA 800. El ejemplo tiene los comandos que habría que añadir supuesto que ya tenemos la configuración básica. Una vez configurado, en el router R6 ejecutaríamos el comando clear ip bgp *. R6(config)# ip as-path access-list 1 deny _800$ R6(config)# ip as-path access-list 1 permit.* R6(config)# router bgp 400 R6(config-router)# neighbor 10.0.4.2 filter-list 1 out Listas de distribución Las listas de distribución (distribute lists) son ACLs que se utilizan para permitir o denegar rutas a través de la red. Este filtrado de rutas BGP se puede llevar a cabo tanto en la entrada como en la salida. A continuación se muestra un ejemplo de configuración. Boletín 6: BGP 13
R7(config)# access-list 10 permit ip 172.16.0.0 0.0.255.255 host 255.255.0.0 R7(config)# router bgp 700 R7(config-router)# network 7.0.0.0 R7(config-router)# neighbor 10.0.4.1 remote-as 400 R7(config-router)# neighbor 10.0.4.1 distribute-list 10 in Al final de cada lista siempre hay un deny all implícito. En este ejemplo, se permite sólo tráfico de la red 172.16.0.0. El principal problema de estas listas es que su modificación implica empezar de nuevo el proceso. Esto se debe a que las listas se leen en el orden en que se escriben. Listas de prefijos Las listas de prefijos (prefix lists) aparecen como una alternativa a las listas de distribución. Entre ambas la principal diferencia es que las listas de prefijos son más flexibles (permiten actualizaciones incrementales), más fáciles de configurar y ofrecen un mayor rendimiento a la hora de procesarlas. Estas listas permiten añadir o borrar líneas sin starting over. Para crear una lista de prefijos utilizamos el comando ip prefix-list. Su sintaxis es: ip prefix-list list-name [seq seq-value] deny permit network/len [ge gevalue] [le le-value] donde: list-name es el nombre que le damos a la lista. seq-value un número de secuencia que identifica a un prefijo dado dentro de la lista. A la hora de hacer las comprobaciones se empieza por el menor número de secuencia. Estos números se generan automáticamente. [ge ge-value] [le le-value]. Permiten especificar el rango de la longitud del prefijo para ver si se produce coincidencia con los prefijos a comprobar. Si no se especifica un rango se buscará una comprobación exacta. A continuación se muestra un ejemplo de configuración donde podemos ver cómo el router R6 filtra la información que le pasa a su vecino R8 permitiendo que pase sólo la información de SA 600 y de SA 65000. En el ejemplo sólo hemos reflejado la información que añadiríamos a partir de la configuración básica de BGP. Hemos remarcado los comandos que permiten la definición y aplicación de las listas de prefijos. Boletín 6: BGP 14
RA6(config)# ip prefix-list myprefixes seq 10 permit 7.0.0.0/8 RA6(config)# ip prefix-list myprefixes seq 15 permit 4.0.0.0/8 RA6(config)# ip prefix-list myprefixes seq 20 permit 44.0.0.0/8 RA6(config)# router bgp 400 RA6(config-router)# neighbor 10.0.32 prefix-list myprefixes out Monitorización Para la monitorización del sistema y depurar problemas de conectividad, el router CISCO nos da la posibilidad de utilizar el modo debug. El modo debug (con el comando debug ip bgp X) en BGP permite especificar qué información queremos monitorizar (indicado en el parámetro X). En concreto, podemos monitorizar los siguientes parámetros BGP: o events. Los eventos que ocurren en el sistema. o in. Información recibida. o keepalives. Muestra los eventos relacionados con los paquetes BGP Keepalive. o Out. Muestra toda la información de salida de BGP. o updates. Muestra la información sobre todos los paquetes BGP Update. A continuación se muestra alguna información de debug que aparece cuando queremos monitorizar los eventos. Para deshabilitar el debug bastará con que escribamos de nuevo el comando precedido de no. Boletín 6: BGP 15
Router# debug ip bgp events BGP events is on 00:26:10: BGP: reset all neighbors due to User reset 00:26:10: BGP: 10.0.0.2 reset due to User reset 00:26:10: %BGP-5-ADJCHANGE: neighbor 10.0.0.2 Down User reset 00:26:10: BGP: 10.0.1.2 reset due to User reset 00:26:10: %BGP-5-ADJCHANGE: neighbor 10.0.1.2 Down User reset 00:26:10: BGP: 192.168.1.2 reset due to User reset 00:26:10: %BGP-5-ADJCHANGE: neighbor 192.168.1.2 Down User reset 00:26:10: BGP: 192.168.2.2 reset due to User reset 00:26:10: %BGP-5-ADJCHANGE: neighbor 192.168.2.2 Down User reset 00:26:18: BGP: Performing BGP general scanning 00:26:18: BGP(0): scanning IPv4 Unicast routing tables 00:26:18: BGP(IPv4 Unicast): Performing BGP Nexthop scanning for general scan 00:26:18: BGP(1): scanning VPNv4 Unicast routing tables 00:26:18: BGP(VPNv4 Unicast): Performing BGP Nexthop scanning for general scan 00:26:18: BGP(2): scanning IPv4 Multicast routing tables 00:26:18: BGP(IPv4 Multicast): Performing BGP Nexthop scanning for general scan Router# no debug ip bgp events BGP events debugging is off 3. Configuración avanzada de BGP En esta sección vamos a abordar aspectos avanzados de la configuración de BGP: generación de una ruta por defecto, modificación de la distancia administrativa (AD) asignada por defecto y configuración de distintos parámetros que afectan al proceso de convergencia. Ruta por defecto Para enviar una ruta por defecto a un vecino el comando que utilizaremos será: neighbor X.X.X.X default-originate. De esta forma al vecino se le envía la ruta por defecto (0.0.0.0). Cambiar la distancia administrativa por defecto BGP utiliza tres distancias administrativas diferentes: externas, internas y locales. Se asigna una distancia externa a aquellas aprendidas a partir de ebgp, mientras que las distancias internas se asocian a las rutas aprendidas desde ibgp. Finalmente, se asigna una distancia local a aquellas rutas que son parte del sistema autónomo. La forma de cambiar la distancia administrativa es ejecutar en el modo de configuración: distance bgp external-distance internal-distance local-distance Boletín 6: BGP 16
Cambiar parámetros que afectan al proceso de convergencia Los parámetros que afectan al proceso de convergencia y que podemos modificar en BGP son los tiempos de keepalive y holdtime. Estos tiempos se pueden cambiar para todos los vecinos (con el comando timers bgp keepalive holdtime). También se puede especificar para un vecino concreto (neighbor x.x.x.x timers keepalive holdtime). 4. Bibliografía [1] Y. Rekhter, T. Li, S. Hares. A Border Gateway Protocol 4 (BGP-4). Request for Comments 4271. IETF (Enero de 2006). [2] CCNA: Cisco Certified Network Associated Study Guide. 5th Edition. Toadd Lammle. Sybex. [3] Troubleshooting IP Routing Protocols. CCIE Professional Development. Z. Aziz, J. Liu, A. Martey, F. Shamim. CiscoPress. [4] Cisco IOS IP Configuration Guide. http://www.cisco.com/en/us/docs/ios/12_0/np1/configuration/guide/1cbgp.html [5] Configuring IP Access Lists. http://www.cisco.com/en/us/products/sw/secursw/ps1018/products_tech_ note09186a00800a5b9a.shtml [6] Configuring Commonly Used IP ACLs. http://www.cisco.com/en/us/tech/tk648/tk361/technologies_configuration_ example09186a0080100548.shtml [7] Route-Maps for IP Routing Protocol Redistribution Configuration. http://www.cisco.com/en/us/tech/tk365/technologies_tech_note09186a00 8047915d.shtml [8] Cisco IOS IP Command Reference, Volume 2 of 4: Routing Protocols, Release 12.3. http://www.cisco.com/en/us/docs/ios/12_3/iproute/command/reference/ipr rp_r.html Boletín 6: BGP 17