12. Parte práctica En este apartado se pretende dar una visión de las distintas posibilidades prácticas que existen en el mercado para hacer uso del protocolo BGP de una forma profesional. Para ello, se van a implementar dos escenarios de ejemplo distintos en los cuales se explica la configuración realizada y se analizan los resultados obtenidos tras monitorizar las tablas de encaminamiento y los mensajes capturados. En el primer escenario se muestra la posibilidad del uso de software de routing para implementar PC routers con las funciones de encaminamiento dinámico. En concreto, se ha elegido el paquete software Zebra, el cual es de libre distribución y se ejecuta bajo el sistema operativo Linux. Este software de routing soporta el protocolo BGPv4, así como las funciones de filtrado (listas de acceso) y modificación de los atributos (route maps) de las rutas tanto anunciadas como recibidas. Debido a las limitaciones en la configuración física de la arquitectura de red del laboratorio, en este primer escenario no se ha podido llevar a cabo una configuración compleja. De este modo, las pruebas realizadas muestran sólo un funcionamiento básico del protocolo BGP, ya que no se ha podido configurar una red con varios niveles jerárquicos (sólo se tiene una subred interna por cada PC router conectado a la red backbone), por lo que en este caso sería también factible la configuración de rutas estáticas a mano. Sin embargo, en redes más complejas y extensas la necesidad del encaminamiento dinámico es innegable. El segundo escenario se basa en el uso de routers Cisco, cuyo hardware soporta las diferentes funciones del protocolo BGPv4. En este escenario se lleva a cabo una configuración de los diferentes routers tal y como se haría en un caso real con routers Cisco. Dicha configuración se corresponde a un caso real de uso de BGP para la conexión de un AS cliente a varios ISPs que forman Internet. Normalmente, para adquirir un router se debe contactar con un fabricante que se dedique a desarrollar su propio software propietario compatible con un hardware especialmente hecho para las funciones de encaminamiento. Este es el caso de fabricantes como Cisco Systems (IOS), Nortel Networks o Juniper Networks (JUNOS). En este caso se ha elegido una configuración para routers Cisco por la enorme cuota de mercado que ocupa dicho fabricante y por la abundancia de manuales y casos prácticos disponibles para estos routers. 12.1. Configuración de BGP mediante Zebra 12.1.1. Sofware de routing Con el rápido crecimiento de Internet y el incremento de demandas de accesos, muchas organizaciones están teniendo dificultades para cubrir las necesidades de hardware y software que requieren los servicios demandados. Para el caso de organizaciones pequeñas que no puedan afrontar la adquisición de dispositivos de red para la conexión a Internet existe una solución a corto e incluso a largo plazo. Esta consiste en convertir PCs en routers mediante la instalación de software de routing, lo cual supone un ahorro en costes considerable. Existen diversos paquetes software que sólo necesitan correr sobre un sistema operativo (GNU/Linux, por ejemplo), disponer de varias interfaces de red y tener activado el soporte de encaminamiento en el kernel. Esta solución resulta factible para redes locales o redes con un tráfico limitado en las que el tiempo de convergencia de los algoritmos no es crítico. Entre los paquetes software de routing más usados cabe destacar soluciones de libre distribución como Zebra, Quagga o Radvd, así como aplicaciones propietarias tales como ZebOs y Gated. El software radvd (Router Advertisement Daemon) es de libre distribución y se implementa como un módulo del sistema operativo Linux capaz de escuchar y anunciar rutas con direcciones IPv6. Por su parte, Zebra y Quagga soportan los protocolos de encaminamiento RIPv1 (RFC1058), RIPv2 (RFC2453), OSPFv2 (RFC2328) y BGPv4 (RFC1771). Además, estas herramientas también soportan protocolos de encaminamiento para IPv6 como RIPng (RFC2080), OSPFv3 (RFC2740) y extensiones BGPv4 (RFC2545). La principal ventaja que proporcionan Zebra y Quagga es que son herramientas software de libre distribución (bajo la Licencia General Pública GNU) que implementan protocolos de encaminamiento no propietarios extensamente difundidos y utilizados. Otra ventaja es que este software permite un aprendizaje importante sobre la configuración de routers y puesta en práctica del encaminamiento dinámico, ya que los comandos utilizados para la configuración de los protocolos de encaminamiento son muy similares a que los que se utilizan para configurar equipos routers de proveedores como Cisco. Sin embargo, para la configuración de este software se requiere mayor especialización, ya que no sólo es necesario prestar atención a las funciones de encaminamiento, sino que también es necesario gestionar el sistema operativo del PC router. Además, el hecho de disponer de pocas interfaces limita sus aplicaciones prácticas a redes con pocos enlaces. En Zebra/Quagga, se tiene un demonio de routing para la gestión de cada protocolo de encaminamiento dinámico. De este modo, se tienen los demonios ripd, ospfd y bgpd que soportan los protocolos RIP o RIPv2, OSPFv2 y BGP-4, respectivamente. A su vez, todos se comunican con el demonio gerente (demonio zebra), el cual interacciona con el sistema operativo para la configuración general de las interfaces y para poner al día las tablas de encaminamiento del kernel. Esta arquitectura multiproceso modular permite que el sistema Zebra y Quagga sea más fácilmente extensible y gestionable. Zebra/Quagga se pueden configurar, por un lado, mediante una serie de ficheros de configuración y, por otro, pasándole comandos a los demonios en una conexión telnet al puerto en el que escucha cada demonio, el cual puede encontrarse en la misma máquina (localhost) o en una máquina remota. Por ejemplo, para configurar BGP una vez se haya arrancado el demonio bgpd se puede ejecutar: telnet localhost bgpd. Cada demonio tiene su propio fichero de configuración. Así, para configurar una interfaz de red o una ruta estática se utiliza el fichero de configuración de zebra (usr/local/etc/zebra.conf por defecto), mientras que para configurar un protocolo de encaminamiento en concreto se debe configurar el fichero correspondiente del demonio de routing. Por ejemplo, en el caso de bgpd el nombre del fichero de configuración por defecto es bgpd.conf. 12.1.2. Plan de direccionamiento En este escenario se ha elegido una estructura de red basada en la estructura ya existente en el laboratorio en el que se tiene una serie de PCs interconectados mediante conmutadores de nivel 2 o switch. Estos PCs funcionarán como PC routers con dos interfaces activas: eth0 y eth1. La interfaz eth0 estará conectada al resto de PC routers mediante un switch, mientras que la interfaz eth1 servirá para conectarse al PC cliente. Así, cada PC router servirá de conmutador para un PC cliente, el cual tendrá su interfaz eth0 desactivada y su interfaz eth1 conectada al PC router. De este modo, se tienen dos niveles jerárquicos con una red de PC routers en todo el laboratorio y una subred interna por cada PC router. Cada PC router va a representar a un ISP (Proveedor de servicio de Internet), el cual dará servicio a una serie de AS clientes (se probará con un solo cliente por ISP en la práctica). El PC router establecerá una sesión peering con el PC cliente y con el resto de PC routers, filtrará las rutas anunciadas por el cliente y realizará la agregación de rutas. Los números de sistemas autónomos que se van a utilizar serán 65X2 para los clientes y 65X1 para los PC routers (siendo X un número de dos dígitos distintos para cada PC router). La siguiente figura muestra la configuración de red utilizada en el caso de dos PC routers con sus dos clientes correspondientes: 192.44.26.1 PC_router 192.44.80.26 192.44.26.2 PC_cliente 192.44.28.2 192.44.28.1 PC_router PC_cliente 192.44.80.28 En este escenario se va a implementar el siguiente esquema de direccionamiento: • La red interna que interconecta el PC router X a la estación que emula los clientes tendrá como prefijo 192.44.X.0/24. La interfaz eth1 del equipo PC router X tendrá como dirección IP 192.44.X.1, mientras que la interfaz eth1 del PC cliente correspondiente tendrá como IP 192.44.X.2. • La red GIX (Global Internet Exchange) que interconecta todos los PC routers tendrá como prefijo 192.44.80.0/24. La interfaz eth0 de cada PC router X en esta red tendrá como dirección 192.44.80.X. 12.1.3. Configuración del demonio zebra Zebra es el demonio gestor capaz de interactuar con las funciones del kernel. De este modo, zebra se encarga de actualizar las tablas de encaminamiento del kernel a partir de las informaciones proporcionadas por los demás demonios, de la configuración de las distintas interfaces (dirección IP, máscara, rutas estáticas,…) y de la redistribución de rutas entre los diferentes demonios que gestionan los protocolos de encaminamiento. Para la configuración de las interfaces zebra se dispone de los siguientes comandos (añadiendo no al mismo comando se desactiva el comando): • interface nombre_interfaz: Con este comando se accede a la interfaz indicada para su configuración. Para ello se debe estar antes en el modo de configuración (configure terminal). Una vez ejecutado el comando interface se pueden ejecutar ejecutar el resto de comandos para configurar la interfaz determinada. • shutdown (no shutdown): activa (desactiva) la interfaz actual. • ip address @IP/prefijo: Configura la dirección IPv4 de la interfaz, junto con su máscara (en notación CIDR). Este comando es el equivalente al comando ifconfig del shell Linux: ifconfig interfaz @IP netmask mascara. • ip6 address @IPv6/prefijo: Configura la dirección IPv6 de la interfaz, junto con su máscara (en CIDR). Por otro lado, además de la configuración de las interfaces, zebra también permite configurar el encaminamiento estático, para lo cual se debe estar en el modo de configuración (configure terminal). Esta configuración es sencilla ya que sólo consiste en indicar al encaminador la interfaz o el router pasarela (gateway) hacia el que debe reenviar un paquete que tiene una dirección IP destino determinada. Adicionalmente, se puede indicar una pasarela (gateway) por defecto a la cual enviar en el caso de que la dirección IP de destino no coincida con ninguna de las entradas de la tabla de encaminamiento. Para la configuración del encaminamiento estático en zebra se utiliza el comando ip route red puerta_de_enlace. Este comando sirve para añadir una nueva ruta a la tabla de encaminamiento, lo cual consiste en indicar al router que si le llega un paquete con una dirección IP de destino que no pertenece a las redes conectadas directamente, éste debe redirigirlo hacia otro router por una de las interfaces. El parámetro red indica la red destino y puede seguir dos notaciones diferentes: formato CIDR (A.B.C.D/M) o formato decimal (A.B.C.D mascara). El parámetro puerta_de_enlace indica el router al cual enviar el paquete cuya dirección IP destino coincida con el parámetro red anterior. La puerta de enlace sigue el formato A.B.C.D (sin máscara de red), y en su lugar también se puede indicar el nombre de la interfaz. En los siguientes ejemplos se pueden ver las distintas notaciones posibles: • ip route 10.0.0.0/8 10.0.0.2: Se define una ruta estática a la red 10.0.0.0/8 a través de la puerta de enlace 10.0.0.2. • ip route 192.168.14.0 255.255.255.0 eth0: Se define la ruta estática a la red 192.168.14.0/24 utilizando una máscara, a través de la interfaz eth0. • ip route 0.0.0.0 255.255.255.255 eth1: Se define la ruta por defecto hacia la interfaz eth1. Una vez explicados los comandos para la configuración del demonio zebra se van a adjuntar las configuraciones utilizadas tanto para el PC cliente como para el PC router. En primer lugar, se va a realizar la configuración del PC cliente. Para ello se deben seguir los siguientes pasos: • Se crean cuatro interfaces dummy en Linux, que simularán una serie de redes internas que forman parte del mismo AS que el PC cliente. Para esto se debe cargar el módulo dummy y configurar cada interfaz mediante el comando ifconfig: /sbin/modprobe /sbin/modprobe /sbin/modprobe /sbin/modprobe /sbin/ifconfig /sbin/ifconfig /sbin/ifconfig /sbin/ifconfig • -o dummy0 --ignore-install dummy -o dummy1 --ignore-install dummy -o dummy2 --ignore-install dummy -o dummy3 --ignore-install dummy dummy0 10.0.0.X netmask 255.255.255.0 up dummy1 10.0.1.X netmask 255.255.255.0 up dummy2 200.0.X.2 netmask 255.255.128.0 up dummy3 200.X.X.2 netmask 255.128.0.0 up Se debe situar el fichero de configuración de zebra en el directorio correspondiente y, posteriormente, se puede lanzar el demonio zebra mediante service zebra start. En el fichero de configuración de zebra se asignan las direcciones IP y las máscaras a las interfaces dummy y a la interfaz eth1 del cliente (192.44.X.2/24, siendo X el número de dos dígitos asignado al PC router correspondiente). A continuación se muestra el contenido del fichero zebra.conf: ! ! Fichero de configuracion de zebra en PC_cliente BGP ! hostname PcClient password zebra enable password admin service password-encryption ! interface lo ! interface eth1 ip address 192.44.X.2/24 ! interface dummy0 ip address 10.0.0.X/24 ! interface dummy1 ip address 10.0.1.X/24 ! interface dummy2 ip address 200.0.X.2/23 ! interface dummy3 ip address 200.X.X.2/9 ! ip route 0.0.0.0/0 192.44.X.1 ! log file /var/log/quagga/zebra.log ! end Una vez que se ha configurado el PC cliente, se va a pasar a la configuración del demonio zebra en el PC router, para lo cual se utilizara el fichero zebra.conf siguiente: ! ! Fichero de configuracion de zebra en PC_router BGP ! hostname PCrouter password zebra enable password admin service password-encryption ! debug zebra events debug zebra packet debug zebra kernel ! interface lo ! interface eth0 ip address 192.44.80.X/24 no shutdown ! interface eth1 ip address 192.44.X.1/24 no shutdown ! ip forwarding ! log file /var/log/quagga/zebra.log ! end 12.1.4. Configuración del demonio bgpd Para activar el proceso bgpd en el router se utiliza el comando router bgp asn. En este comando se indica el número del sistema autónomo (ASN) al que pertenece el router, lo que permite al proceso bgpd detectar si una sesión BGP es interna o externa. El valor de asn está entre 1 y 65535, siendo los ASN del 64512 al 65535 privados. Los ASN privados no deben anunciarse nunca en Internet. El comando bgp router-id id_router sirve para especificar el identificador del router en BGP a mano. El id_router se obtiene por defecto a partir de la información de las interfaces del demonio zebra, tomando como identificador la dirección de mayor numeración de todas las interfaces. Sin embargo, cuando el demonio zebra no está habilitado, bgpd no puede obtener la información de las interfaces y el identificador se fija a 0.0.0.0, siendo necesario configurarlo a mano. Una vez activado el demonio se introducen los comandos para la configuración básica de BGP: los comandos neighbor y network. Las sesiones BGP se establecen utilizando el comando neighbor peer remote-as asn. El valor de peer puede ser una dirección IPv4 ó IPv6 e indica la dirección del vecino con el que se establece la sesión BGP. Este vecino pertenecerá al AS cuyo número sea asn, de tal modo que si los números de AS de los dos routers son iguales se establece una sesión I-BGP, mientras que se establecerá una sesión E-BGP en caso contrario. Dos vecinos que pertenezcan a dos AS diferentes deberán pertenecer a la misma red local. En cambio, en el caso de I-BGP cada router pasarela establece una sesión IBGP con el resto de pasarelas del mimo AS aunque no exista conectividad física directamente, ya que se puede encontrar un camino indirecto entre ellos gracias al resto de routers del AS, los cuales utilizan un protocolo IGP para el encaminamiento. Las pasarelas de un mismo AS no establecerán sesiones I-BGP mediante las interfaces físicas, sino mediante interfaces virtuales (loopback), para lo cual se utiliza el comando neighbor [@IP/peer-group] update-source loopback0. Para esto, será necesario definir antes la interfaz virtual: interface loopback 0, ip address [@IP] [mascara]. El protocolo I-BGP se encargará de indicar a una pasarela cómo alcanzar la dirección virtual del otro extremo. Por otro lado, el comando network prefijo [mask] [mascara] activa el anuncio de la red indicada. El prefijo se puede introducir en notación CIDR (A.B.C.D/M) o, por el contrario, mediante una máscara en decimal (255.255.255.0) con la opción mask, si la red introducida no es de clases. De este modo, en el fichero de configuración bgpd.conf se configuran el número del AS cliente, se activan las redes a anunciar con el comando network y se establece una sesión BGP con el PC router con el comando neighbor. (El valor de X coincide con el número de dos dígitos del PC router correspondiente). ! ! Fichero de configuracion de bgpd en PC_cliente ! hostname BGPDClient password zebra enable password admin service password-encryption ! router bgp 65X2 bgp router-id 192.44.X.2 network 10.0.0.X/24 network 10.0.1.X/24 network 200.0.X.2/23 network 200.X.X.2/9 neighbor 192.44.X.1 remote-as 65X1 ! log file /var/log/quagga/bgpd.log ! end A continuación, se muestra el fichero de configuración de bgpd en el PC router. En esta configuración, el PC router se configura para que anuncie las rutas a las que está conectado y para que acepte el peering con el PC cliente y con otro PC router (cuyo número de dos cifras correspondiente será Y). ! ! Fichero de configuracion de bgpd en PC_router ! hostname bgpdd password zebra enable password admin service password-encryption ! router bgp 65X1 bgp router-id 192.44.X.1 network 192.44.X.0/24 network 192.44.80.0/24 neighbor 192.44.X.2 remote-as 65X2 neighbor 192.44.80.Y remote-as 65Y1 ! log file /var/log/quagga/bgpd.log ! end En la configuración anterior se anuncian rutas con IPs privadas entre PC routers, lo cual no es válido en el escenario similar a Internet que se está simulando. Por ello, sería necesario filtrar las rutas con prefijo 10.0/8 para que no sean exportadas a otros PC routers, lo cual debe hacerse antes de realizar el peering entre los PC routers. Las reglas de filtrado necesarias se podrían implementar mediante un route-map que se aplicaría en el peering con el PC cliente: route-map map1 permit 10 match ip address 1 access-list 1 deny 10.0.0.0 0.255.255.255 access-list 1 permit any ! router bgp 65X1 neighbor 192.44.X.2 route-map map1 Para ver los mensajes intercambiados se puede utilizar el modo debug: debug bgp updates y debug bgp keepalive (comando opuesto con no y el mismo comando para desactivarlo). De esta forma, se puede ver cómo el PC cliente anuncia sus interfaces dummy al PC router, el cual las exportará cuando no se utilicen reglas de filtrado y las rechazará cuando se implemente el filtrado de rutas. Los resultados obtenidos en la puesta en práctica de este escenario se analizan en el siguiente apartado. 12.1.5. Resultados obtenidos Una vez activados los demonios bgpd y zebra configurados tanto en el PC cliente como en el PC router, se pueden visualizar las rutas de la tabla de encaminamiento del PC router mediante el comando show ip route en la sesión telnet con zebra (las rutas con la letra B en la primera columna han sido aprendidas por BGP y el valor [20/0] indica la métrica de la ruta). PCrouter# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route B>* B>* C>* C>* B>* C>* B>* B>* B>* 10.0.0.0/24 [20/0] via 192.44.26.2, eth1, 00:09:08 10.0.1.0/24 [20/0] via 192.44.26.2, eth1, 00:09:08 127.0.0.0/8 is directly connected, lo 192.44.26.0/24 is directly connected, eth1 192.44.28.0/24 [20/0] via 192.44.80.28, eth0, 00:03:19 192.44.80.0/24 is directly connected, eth0 200.0.0.0/9 [20/0] via 192.44.26.2, eth1, 00:09:08 200.0.26.0/23 [20/0] via 192.44.26.2, eth1, 00:09:08 200.0.28.0/23 [20/0] via 192.44.80.28, eth0, 00:03:19 A partir de la sesión telnet con el demonio bgpd se puede ejecutar el comando show ip bgp, el cual permite ver las rutas aprendidas por el demonio, así como los parámetros asociados a éstas como el origen (interno o externo), la métrica, el camino (path) y el siguiente nodo para llegar al destino de la ruta (next hop). En este caso se muestra la información obtenida mediante este comando en el PC router X=26: bgpd# show ip bgp BGP table version is 0, local router ID is 192.44.26.1 Status codes: s suppressed, d damped, h history, * valid, > best, i internal Origin codes: i - IGP, e - EGP, ? - incomplete Network * 10.0.0.0/24 65282 i *> * 10.0.1.0/24 65282 i *> *> 192.44.26.0 *> 192.44.28.0 * 192.44.80.0 *> Next Hop 192.44.80.28 Metric LocPrf Weight Path 0 65281 192.44.26.2 192.44.80.28 0 192.44.26.2 0.0.0.0 192.44.80.28 192.44.80.28 0.0.0.0 0 0 0 0 0 0 65262 i 0 65281 0 32768 0 0 32768 65262 i i 65281 i 65281 i i * 200.0.0.0/9 65282 i *> *> 200.0.26.0/23 *> 200.0.28.0/23 65282 i 192.44.80.28 0 65281 192.44.26.2 192.44.26.2 192.44.80.28 0 0 0 65262 i 0 65262 i 0 65281 Total number of prefixes 8 Además de la información anterior, se levó a cabo una captura de mensajes entre los que cabe destacar los siguientes: • Mensajes OPEN (establecimiento de sesión E-BGP entre el PC router 192.44.80.26 y el PC router 192.44.80.28): No. Time 4 0.000577 Message Source 192.44.80.26 Destination 192.44.80.28 Protocol Info BGP OPEN Frame 4 (111 bytes on wire, 111 bytes captured) Ethernet II, Src: 3Com_97:56:2b (00:04:76:97:56:2b), Dst: 3Com_97:77:f8 (00:04:76:97:77:f8) Internet Protocol, Src: 192.44.80.26 (192.44.80.26), Dst: 192.44.80.28 (192.44.80.28) Transmission Control Protocol, Src Port: 32880 (32880), Dst Port: bgp (179), Seq: 1, Ack: 1, Len: 45 Border Gateway Protocol No. Time 6 0.003525 Message Source 192.44.80.28 Destination 192.44.80.26 Protocol Info BGP OPEN Frame 6 (111 bytes on wire, 111 bytes captured) Ethernet II, Src: 3Com_97:77:f8 (00:04:76:97:77:f8), Dst: 3Com_97:56:2b (00:04:76:97:56:2b) Internet Protocol, Src: 192.44.80.28 (192.44.80.28), Dst: 192.44.80.26 (192.44.80.26) Transmission Control Protocol, Src Port: bgp (179), Dst Port: 32880 (32880), Seq: 1, Ack: 46, Len: 45 Border Gateway Protocol • No. Mensajes KEEPALIVE (mantenimiento de la sesión entre los PC routers): Time 11 0.004898 KEEPALIVE Message Source 192.44.80.28 Destination 192.44.80.26 Protocol Info BGP Frame 11 (85 bytes on wire, 85 bytes captured) Ethernet II, Src: 3Com_97:77:f8 (00:04:76:97:77:f8), Dst: 3Com_97:56:2b (00:04:76:97:56:2b) Internet Protocol, Src: 192.44.80.28 (192.44.80.28), Dst: 192.44.80.26 (192.44.80.26) Transmission Control Protocol, Src Port: bgp (179), Dst Port: 32880 (32880), Seq: 65, Ack: 65, Len: 19 Border Gateway Protocol No. Time 12 0.004923 KEEPALIVE Message Source 192.44.80.26 Destination 192.44.80.28 Protocol Info BGP Frame 12 (85 bytes on wire, 85 bytes captured) Ethernet II, Src: 3Com_97:56:2b (00:04:76:97:56:2b), Dst: 3Com_97:77:f8 (00:04:76:97:77:f8) Internet Protocol, Src: 192.44.80.26 (192.44.80.26), Dst: 192.44.80.28 (192.44.80.28) Transmission Control Protocol, Src Port: 32880 (32880), Dst Port: bgp (179), Seq: 65, Ack: 84, Len: 19 Border Gateway Protocol • Mensajes UPDATE (intercambio de informació entre los PC routers): No. Time Source 13 0.005045 192.44.80.28 UPDATE Message, UPDATE Message Destination 192.44.80.26 Protocol Info BGP Frame 13 (180 bytes on wire, 180 bytes captured) Ethernet II, Src: 3Com_97:77:f8 (00:04:76:97:77:f8), Dst: 3Com_97:56:2b (00:04:76:97:56:2b) Internet Protocol, Src: 192.44.80.28 (192.44.80.28), Dst: 192.44.80.26 (192.44.80.26) Transmission Control Protocol, Src Port: bgp (179), Dst Port: 32880 (32880), Seq: 84, Ack: 84, Len: 114 Border Gateway Protocol Border Gateway Protocol No. Time 15 1.004865 UPDATE Message Source 192.44.80.26 Destination 192.44.80.28 Protocol Info BGP Frame 15 (122 bytes on wire, 122 bytes captured) Ethernet II, Src: 3Com_97:56:2b (00:04:76:97:56:2b), Dst: 3Com_97:77:f8 (00:04:76:97:77:f8) Internet Protocol, Src: 192.44.80.26 (192.44.80.26), Dst: 192.44.80.28 (192.44.80.28) Transmission Control Protocol, Src Port: 32880 (32880), Dst Port: bgp (179), Seq: 84, Ack: 198, Len: 56 Border Gateway Protocol 12.2. Configuración de BGP en Routers Cisco En este apartado se explican en primer lugar las bases de utilización y los comandos generales de los routers Cisco. Posteriormente, se analiza la configuración de BGP en un escenario formado por la interconexión de diferentes routers Cisco. 12.2.1. Estructura interna de un router Cisco En general, todos los routers Cisco tienen en común una estructura interna cuyos componentes fundamentales son los siguientes: • Memoria RAM/DRAM: Este memoria es volátil y, por lo tanto, almacena la información provisional como la tabla de encaminamiento, tablas de valores de los distintos procesos, configuración actual (running-config),… • Memoria NVRAM: Es un tipo de RAM no volátil, en la cual se guarda la configuración definitiva o de arranque (startup-config). • Memoria ROM: Esta memoria contine el programa de arranque del router y un pequeño sistema de monitorea para detectar problemas de funcionamiento en el router. • FLASH: Es un tipo especial de ROM programable, en la cual se guarda una copia del sistema operativo del router Cisco. • INTERFACES: Son los dispositivos capaces de enviar y recibir paquetes de datos de los diferentes protocolos soportados. Existen distintos tipos de interfaces físicas (Ethernet, FastEthernet, Serial,…) • PORT CONSOLE: Consiste en el mecanismo principal de control del router mediante el cual se introduce la configuración. Para ello se utiliza un PC externo conectado al PORT CONSOLE mediante un puerto serie, y un software emulador de terminal capaz de entenderse con el router para la introducción de los comandos en éste. El acceso al router se hace a partir de cualquier emulador de terminal (como minicom sobre Linux, reflexion VT o Hyper Terminal sobre Windows). En el caso de un PC con Linux, una vez conectados el PORT CONSOLE con el puerto serie del PC se puede lanzar el programa minicom (minicom –s para ejecutarlo sin configuración por defecto). Será entonces necesario elegir una serie de parámetros para la transmisión de los comandos (baudios, bits de datos, control de paridad, puerto serie correspondiente,…) 12.2.2. Modos de trabajo En un router Cisco se puede operar en tres modos de trabajo: • USER EXEC MODE: Éste es el modo de comienzo tras el arranque del router. En este modo se puede monitorizar un conjunto limitado de informaciones sobre el estado de la configuración actual del router y no se tiene permitido modificar ni borrar la configuración. Cuando se está en este modo aparece el símbolo “>” después del hostname (Router>). Para salir del modo usuario se utiliza el comando logout. • PRIVILEGED EXEC MODE: En este modo es posible ejecutar los mismos comandos que en el modo usuario más los comandos que permiten monitorizar todas las informaciones sobre el estado de configuración del router. Además, en el modo administrador también se pueden ejecutar comandos para depurar la configuración actual. Para pasar del modo usuario al modo administrador es necesario introducir el comando enable desde el emulador de terminal, pudiendo proteger dicho acceso mediante una password. A su vez, para salir de este modo se utiliza el comando disable. • CONFIGURATION MODE: En este modo se pueden usar los comandos necesarios para modificar, borrar o agregar parámetros a la configuración global del router (interfaces, filtros, password,…). Para entrar en este modo desde el modo administrador es necesario ejecutar el comando configure terminal, mientras que para salir se pueden utilizar las órdenes exit, Ctrl-Z o Ctrl-C. En todos los modos es posible conocer la lista de comandos disponibles gracias a la orden ?. Además, en lugar de teclear un comando completo se puede utilizar una abreviación de éste si no supone ninguna ambigüedad, completándose dicha abreviación mediante el uso de la tecla TAB. 12.2.3. Monitorización del estado El sistema operativo Cisco permite utilizar una serie de comandos para la monitorización del estado del router, entre los que cabe destacar los siguientes: • show version: Muestra la configuración del hardware del sistema, la versión del software, nombres y orígenes de los archivos de configuración y de la imagen de arranque. • show processes: Muestra la información acerca del proceso activo. • show protocols: Muestra los protocolos configurados. • show mem: Muestra estadísticas sobre la memoria del router. • show ip route: Muestra las entradas en la tabla de encaminamiento. • show flash: Muestra información sobre el controlador de la memoria flash. • show running-config: Muestra los parámetros de la configuración activa. • show startup-config: Muestra la configuración del archivo que guarda la configuración definitiva utilizada en el inicio del sistema. • show interfaces: Muestra estadísticas para todas las interfaces configuradas en el router. • show lines: Muestra el estado de todas las líneas disponibles en el router. • show users: Muestra el estado de las líneas que están siendo usadas por otros usuarios incluyendo la local. • show clock: Muestra la hora y fecha configuradas en el router. 12.2.4. Carga de la configuración mediante TFTP Se ha visto anteriormente que se podían modificar los parámetros de la configuración del router manualmente al pasar al modo de configuración desde el modo privilegiado mediante el comando configure terminal. Por otro lado, otra opción para modificar la configuración consiste en descargar un fichero con los parámetros a introducir en la memoria del router desde un servidor TFTP. Para ello se pueden utilizar los comandos siguientes: • copy tftp: running-config: Carga un fichero de configuración desde un servidor TFTP a la RAM del router. • copy tftp: startup-config: Carga un archivo de configuración desde un servidor TFTP directamente a la memoria NVRAM del router. Una vez introducidos los comandos anteriores se solicita el nombre del servidor (o su dirección IP) y el nombre del fichero dentro de esa máquina. Cuando se cargan los archivos de configuración a la RAM o a la NVRAM, el router actúa como un compilador y va traduciendo línea por línea el archivo. Del mismo modo, si se pretende enviar y guardar una configuración en el servidor se puede utilizar el comando copy running-config tftp:, para lo cual es necesario de nuevo indicar el nombre del servidor y el nombre del fichero (el cual debe existir anteriormente en el servidor y tener permiso de escritura). Por otra parte, también será necesario configurar el servidor TFTP. Para el caso de un servidor bajo Linux, lo primero que debe hacerse es editar el fichero /etc/xinetd.d/tftp.conf o /etc/inetd.d indicando la opción disable: no. A continuación, es necesario verificar que el directorio /tftpboot existe (o el directorio especificado en el fichero de configuración del servicio). Además, se debe comprobar que existen los ficheros en el directorio /tftpboot y que los permisos son los correctos para poder ser descargados (es aconsejable dar todos los permisos mediante chmod 777 * para evitar problemas). Otro aspecto a comprobar es que las direcciones IP de las interfaces del router y del servidor Linux sean las correctas (en la misma subred, por ejemplo) y que existe conexión (comando ping). Finalmente, una vez comprobado todo lo anterior se puede arrancar de nuevo el servicio TFTP mediante service xinetd restart para que se cargue la nueva configuración. 12.2.5. Configuración general de un router Cisco Una de las primeras acciones en la configuración de un router es asignarle un nombre. Para ello se usa el comando hostname, el cual debe ejecutarse desde el modo de configuración global (enable y config terminal). El nombre del router es mostrado en el prompt del sistema operativo (por defecto aparece el nombre Router) y sirve para ayudar a los administradores a la identificación de los diferentes componentes de la red. Al igual que el router, las interfaces también pueden ser identificadas por un nombre, para lo cual se utiliza el comando description seguido del nombre o descripción. Previamente se debe acceder a la interfaz específica mediante el comando interface seguido del tipo (Ethernet o serial, por ejemplo) y del número de puerto (que depende de la cantidad de slots o interfaces instaladas). En la configuración de las interfaces se utilizan una serie de comandos entre los que destacan los siguientes: • ip address: Sirve para asignar una dirección IP y una máscara a la interfaz determinada. • bandwith: Para asignar un ancho de banda determinado a la interfaz. • no keepalive: Este comando sirve para desactivar el mecanismo de advertencia activo por defecto en el router que se encarga de enviar alarmas al administrador para indicarle algún problema. • clock rate: Sirve para ajustar la velocidad del reloj de una línea serial (sólo para dispositivos funcionando como DCE). • shutdown (no shutdown): Para activar (desactivar) la interfaz indicada. Opcionalmente, también es posible proteger el acceso al modo administrador del router mediante el uso de una password. Esta protección es útil sobre todo para proteger el router de una modificación realizada de forma remota por una persona no autorizada, ya que en realidad siempre es posible reconfigurar el router si se dispone de un acceso físico a éste. La contraseña elegida se guarda en la configuración global en claro o encriptada, según se utilice el comando enable secret o enable passwd, respectivamente. Finalmente, otro aspecto importante en el manejo básico de los routers Cisco es el hecho de poder guardar los cambios efectuados en la configuración actual, los cuales se encuentran en memoria RAM volátil y se perderían al apagar el dispositivo. Por esto, una vez que la configuración se considera definitiva es preciso grabarla en memoria NVRAM. Para esto se utiliza el comando copy running-config startupconfig, de forma que al arrancar el router la configuración cargada será la configuración que se guardó. Para hacer que la startup-config sea la configuración actual se utiliza el comando reload. Además, también se puede borrar la configuración de memoria NVRAM y cargar una configuración de base almacenada en memoria FLASH mediante el comando erase startup-config. En este caso la configuración del router volverá a sus valores de fábrica. 12.2.6. Ejemplo de configuración de un AS multihomed En este apartado se va a ir explicando paso a paso la configuración de ejemplo elegida en la cual se aplican diversas funcionalidades de BGP estudiadas a lo largo de este proyecto. Además, se van a mostrar los resultados obtenidos y se van a analizar los contenidos de las tablas de encaminamiento, así como de las tablas de los procesos BGP. A continuación se muestra el esquema de la topología implementada: En primer lugar, se va a llevar a cabo una primera configuración de todos los routers en la cual se supone que el AS 100 es un sistema autónomo cliente conectado a dos ISPs (AS 200 y AS 300) vía EBGP. El resto de sistemas autónomos se consideran también ISPs que forman la red Internet. En el AS 100 será necesario establecer una sesión IBGP entre los routers de borde RTA y RTB, de modo que se tenga un mejor control de las rutas aprendidas del exterior. Por otra parte, será también necesario el uso de un protocolo de encaminamiento IGP en todos los routers del AS 100 (RTA, RTB y RTF) para el intercambio de rutas interno, para lo cual se utilizará el protocolo OSPF. En la configuración de OSPF aparecen el comando router ospf num_proceso, (el cual sirve para arrancar el proceso OSPF) y el comando network 203.250.0.0 0.0.255.255 area 0. La porción de área de la sentencia network especifica el área en la que se colocarán las interfaces que coincidan con la sentencia. En este caso sólo se define un área por lo que ésta debe tener el número de identificación 0 (área backbone). El comando network tiene las tres funciones siguientes: • • • Anuncia las rutas pertenecientes a la red específica basada en clases. Se escuchan todas las actualizaciones en todas las interfaces pertenecientes a la red basada en clases. Se envían actualizaciones en todas las interfaces pertenecientes a la red basada en clases. De este modo, las redes que se deben anunciar se indican con el comando network. No se trata de dar todas las redes que el PC router conoce, o a las cuales está conectado, sino de definir las interfaces sobre las cuales se va a ejecutar el proceso de encaminamiento. De este modo, para una red basada en clases las interfaces cuyas direcciones corresponden a los prefijos definidos por este comando podrán participar en el proceso de encaminamiento. En este caso se activa automáticamente el protocolo OSPF en todas las interfaces cuyas direcciones estén dentro del rango indicado (203.250.0.0) y se anuncian las subredes dentro de ese rango a las cuales esté conectado el PC router (203.250.14.0 y 203.250.15.0). En un principio, la configuración quedaría de la siguiente forma (no es definitiva): RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 203.250.13.41 255.255.255.0 interface Ethernet0 ip address 203.250.14.1 255.255.255.0 interface Serial0 ip address 128.213.63.1 255.255.255.252 router ospf 10 network 203.250.0.0 0.0.255.255 area 0 router bgp 100 network 203.250.0.0 mask 255.255.0.0 neighbor 128.213.63.2 remote-as 200 neighbor 203.250.15.2 remote-as 100 neighbor 203.250.15.2 update-source Loopback0 RTF# hostname RTF ip subnet-zero interface Ethernet0 ip address 203.250.14.2 255.255.255.0 interface Serial1 ip address 203.250.15.1 255.255.255.252 router ospf 10 network 203.250.0.0 0.0.255.255 area 0 RTB# hostname RTB ip subnet-zero 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 ospf 10 network 203.250.0.0 0.0.255.255 area 0 router bgp 100 network 203.250.15.0 neighbor 192.208.10.5 remote-as 300 neighbor 203.250.13.41 remote-as 100 RTC# hostname RTC ip subnet-zero interface Loopback0 ip address 128.213.63.130 255.255.255.192 interface Serial2/0 ip address 128.213.63.5 255.255.255.252 ! interface Serial2/1 ip address 128.213.63.2 255.255.255.252 router bgp 200 network 128.213.0.0 neighbor 128.213.63.1 remote-as 100 neighbor 128.213.63.6 remote-as 400 RTD# hostname RTD ip subnet-zero 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 ! interface Serial0/1 ip address 192.208.10.2 255.255.255.252 router bgp 300 network 192.208.10.0 neighbor 192.208.10.1 remote-as 500 neighbor 192.208.10.6 remote-as 100 RTE# hostname RTE ip subnet-zero interface Loopback0 ip address 200.200.10.1 255.255.255.0 interface Serial0 ip address 195.211.10.2 255.255.255.252 interface Serial1 ip address 128.213.63.6 255.255.255.252 clockrate 1000000 router bgp 400 network 200.200.10.0 neighbor 128.213.63.5 remote-as 200 neighbor 195.211.10.1 remote-as 500 RTG# hostname RTG ip subnet-zero interface Loopback0 ip address 195.211.10.174 255.255.255.192 interface Serial0 ip address 192.208.10.1 255.255.255.252 interface Serial1 ip address 195.211.10.1 255.255.255.252 router bgp 500 network 195.211.10.0 neighbor 192.208.10.2 remote-as 300 neighbor 195.211.10.2 remote-as 400 En esta primera configuración se utiliza el comando network para inyectar las rutas a anunciar por EBGP en lugar de la redistribución de rutas IGP en BGP, ya que de esta forma se asegura el anuncio de estas rutas de una forma más sencilla. Además, en este caso se supone que la interfaz serial S1 del router RTB está desactivada (shutdown) y que no existe el enlace entre los routers RTB y RTD. De esta forma, la tabla del proceso BGP para el router RTB sería la siguiente: RTB#sh ip bgp table version is 4, 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 Next Hop Metric LocPrf Weight Path *i128.213.0.0 128.213.63.2 0 100 0 200 i *i192.208.10.0 128.213.63.2 100 0 200 400 500 300 i *i195.211.10.0 128.213.63.2 100 0 200 400 500 i *i200.200.10.0 128.213.63.2 100 0 200 400 i *>i203.250.13.0 203.250.13.41 0 100 0 i *>i203.250.14.0 203.250.13.41 0 100 0 i *>203.250.15.0 0.0.0.0 0 32768 i La letra “i” al principio de una entrada significa que dicha entrada se aprendió de un vecino BGP. En cambio, la letra “i” al final indica que el origen de la entrada ha sido un protocolo IGP. Por otra parte, se puede ver cómo la ruta 128.213.0.0 se encuentra en el AS 200 (PATH=200) y se llega a ella a partir de la dirección 128.213.63.2, según se indica en el atributo NEXTHOP que no ha sido modificado por la sesión IBGP de RTB con RTA. Cabe destacar que cualquier entrada generada localmente al AS, como la red 203.250.15.0, tiene un valor del NEXTHOP igual a 0.0.0.0. El símbolo “>” indica que el proceso BGP ha elegido dicha entrada como la mejor ruta hacia el destino indicado según los criterios de decisión. Esto implica que dicha ruta será añadida a la tabla de encaminamiento y será anunciada al resto de vecinos BGP. La tabla de encaminamiento correspondiente a esta configuración en el router RTB sería la siguiente: RTB#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 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, * candidate default Gateway of last resort is not set 203.250.13.0 255.255.255.255 is subnetted, 1 subnets 203.250.13.41 [110/75] via 203.250.15.1, 02:50:45, Serial0 203.250.15.0 255.255.255.252 is subnetted, 1 subnets 203.250.15.0 is directly connected, Serial0 203.250.14.0 [110/74] via 203.250.15.1, 02:50:46, Serial0 O C O En esta tabla de encaminamiento se puede ver que no se ha añadido ninguna de las entradas que aparecen en la tabla BGP. Esto es debido a dos problemas: • Problema 1: El NEXTHOP para la entrada 128.213.63.2 es inalcanzable. Esto es debido a que no se tiene ninguna forma de alcanzar la dirección 128.213.63.2 mediante el protocolo IGP (OSPF). Como solución, se puede configurar el router RTA para que anuncie la red 128.213.0.0 y pasivar la interfaz serial S0 en RTA (comando passive-interface) para que no se difundan las actualizaciones indicadas por el comando network en dicha interfaz. La configuración del router RTA quedaría de la siguiente forma: RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 203.250.13.41 255.255.255.0 interface Ethernet0 ip address 203.250.14.1 255.255.255.0 interface Serial0 ip address 128.213.63.1 255.255.255.252 router ospf 10 passive-interface Serial0 network 203.250.0.0 0.0.255.255 area 0 network 128.213.0.0 0.0.255.255 area 0 router bgp 100 network 203.250.0.0 mask 255.255.0.0 neighbor 128.213.63.2 remote-as 200 neighbor 203.250.15.2 remote-as 100 neighbor 203.250.15.2 update-source Loopback0 De este modo, la tabla BGP del router RTB cambiaría al indicar las rutas seleccionadas con el símbolo “>”: RTB#show ip bgp BGP table version is 10, 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 *>i128.213.0.0 *>i192.208.10.0 300 i *>i195.211.10.0 i *>i200.200.10.0 *>i203.250.13.0 *>i203.250.14.0 *> 203.250.15.0 Next Hop 128.213.63.2 128.213.63.2 Metric LocPrf Weight Path 0 100 0 200 i 100 0 200 400 500 128.213.63.2 128.213.63.2 203.250.13.41 203.250.13.41 0.0.0.0 100 0 0 0 100 100 100 0 200 400 500 0 0 0 32768 200 400 i i i i Del mismo modo, la tabla de encaminamiento del router RTB también cambiaría: RTB#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 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, * candidate default Gateway of last resort is not set 203.250.13.0 255.255.255.255 is subnetted, 1 subnets 203.250.13.41 [110/75] via 203.250.15.1, 00:04:46, Serial0 203.250.15.0 255.255.255.252 is subnetted, 1 subnets 203.250.15.0 is directly connected, Serial0 203.250.14.0 [110/74] via 203.250.15.1, 00:04:46, Serial0 128.213.0.0 255.255.255.252 is subnetted, 1 subnets 128.213.63.0 [110/138] via 203.250.15.1, 00:04:47, Serial0 O C O O • Problema 2: Según puede verse en la tabla de encaminamiento, aunque la red 128.213.63.0 es alcanzable todavía no aparecen las entradas seleccionadas. Esto es debido a un problema de sincronización, ya que el proceso BGP no añade las entradas seleccionadas en la tabla de encaminamiento ni las envía en las actualizaciones porque no está sincronizado con el protocolo OSPF. La sincronización implica que todos los routers del AS 100 tengan constancia de la existencia de las rutas que se van a anunciar por EBGP. En este caso el router RTF no conoce la rede 192.208.10.0 o la red 195.211.10.0 porque en la configuración de BGP no se ha indicado que dichas rutas sean redistribuidas en OSPF. En este escenario se podría indicar la opción synchronization off de manera que las rutas aprendidas por BGP aparecerían en la tabla de encaminamiento del router RTB, pero la conectividad para llegar a esos destinos no estaría asegurada ya que no se podría pasar por el router RTF. RTB#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 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, * candidate default Gateway of last resort is not set B B B O B C O B O 200.200.10.0 [200/0] via 128.213.63.2, 00:01:07 195.211.10.0 [200/0] via 128.213.63.2, 00:01:07 192.208.10.0 [200/0] via 128.213.63.2, 00:01:07 203.250.13.0 is variably subnetted, 2 subnets, 2 masks 203.250.13.41 255.255.255.255 [110/75] via 203.250.15.1, 00:12:37, Serial0 203.250.13.0 255.255.255.0 [200/0] via 203.250.13.41, 00:01:08 203.250.15.0 255.255.255.252 is subnetted, 1 subnets 203.250.15.0 is directly connected, Serial0 203.250.14.0 [110/74] via 203.250.15.1, 00:12:37, Serial0 128.213.0.0 is variably subnetted, 2 subnets, 2 masks 128.213.0.0 255.255.0.0 [200/0] via 128.213.63.2, 00:01:08 128.213.63.0 255.255.255.252 [110/138] via 203.250.15.1, 00:12:37, Serial0 Por lo tanto, si se desactiva la sincronización en el router RTB, la tabla de encaminamiento del router RTB sería la adecuada, aunque no existiría conectividad debido a que el router intermedio RTF no sabría cómo llegar a esos destinos. La tabla de encaminamiento del router RTF sería la siguiente: RTF#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 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, * candidate default Gateway of last resort is not set O C C O 203.250.13.0 255.255.255.255 is subnetted, 1 subnets 203.250.13.41 [110/11] via 203.250.14.1, 00:14:15, Ethernet0 203.250.15.0 255.255.255.252 is subnetted, 1 subnets 203.250.15.0 is directly connected, Serial1 203.250.14.0 is directly connected, Ethernet0 128.213.0.0 255.255.255.252 is subnetted, 1 subnets 128.213.63.0 [110/74] via 203.250.14.1, 00:14:15, Ethernet0 De este modo, la desactivación de la sincronización en el router RTB no resuelve este problema, por lo que será necesario redistribuir las rutas BGP en OSPF (con una métrica de 2000 por ejemplo). La configuración del router RTA para solucionar este segundo problema es la siguiente: RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 203.250.13.41 255.255.255.0 interface Ethernet0 ip address 203.250.14.1 255.255.255.0 interface Serial0 ip address 128.213.63.1 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 203.250.0.0 0.0.255.255 area 0 network 128.213.0.0 0.0.255.255 area 0 router bgp 100 network 203.250.0.0 mask 255.255.0.0 neighbor 128.213.63.2 remote-as 200 neighbor 203.250.15.2 remote-as 100 neighbor 203.250.15.2 update-source Loopback0 En la tabla de encaminamiento del router RTB desaparecerían entonces las entradas BGP porque éstas se obtienen a partir de OSPF con un coste menor (110) que en el caso de BGP (200). RTB#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 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, * candidate default Gateway of last resort is not set O E2 200.200.10.0 [110/2000] via 203.250.15.1, 00:00:14, Serial0 O E2 195.211.10.0 [110/2000] via 203.250.15.1, 00:00:14, Serial0 O E2 192.208.10.0 [110/2000] via 203.250.15.1, 00:00:14, Serial0 203.250.13.0 is variably subnetted, 2 subnets, 2 masks O 203.250.13.41 255.255.255.255 [110/75] via 203.250.15.1, 00:00:15, Serial0 O E2 203.250.13.0 255.255.255.0 [110/2000] via 203.250.15.1, 00:00:15, Serial0 203.250.15.0 255.255.255.252 is subnetted, 2 subnets C 203.250.15.8 is directly connected, Loopback1 C 203.250.15.0 is directly connected, Serial0 O 203.250.14.0 [110/74] via 203.250.15.1, 00:00:15, Serial0 128.213.0.0 is variably subnetted, 2 subnets, 2 masks O E2 128.213.0.0 255.255.0.0 [110/2000] via 203.250.15.1, 00:00:15,Serial0 O 128.213.63.0 255.255.255.252 [110/138] via 203.250.15.1, 00:00:16, Serial0 Sin embargo, en la configuración final se va a desactivar la sincronización en el router RTA para anunciar la ruta 203.250.15.0 ya que no va a existir problema con OSPF debido a la diferencia de máscaras. Por la misma razón, también se va a desactivar la sincronización en el router RTB para anunciar la ruta 203.250.13.0. Además, también se va a activar la interfaz S1 en RTB para habilitar OSPF en ésta y se va a pasivar dicha interfaz para que RTA aprenda cómo llegar al NEXTHOP 192.208.10.5 mediante IGP. Así, las configuraciones de los routers RTA y RTB quedarían como sigue: RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 203.250.13.41 255.255.255.0 interface Ethernet0 ip address 203.250.14.1 255.255.255.0 interface Ethernet0 ip address 203.250.14.1 255.255.255.0 interface Serial0 ip address 128.213.63.1 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 203.250.0.0 0.0.255.255 area 0 network 128.213.0.0 0.0.255.255 area 0 router bgp 100 no synchronization network 203.250.0.0 mask 255.255.0.0 neighbor 128.213.63.2 remote-as 200 neighbor 203.250.15.2 remote-as 100 neighbor 203.250.15.2 update-source Loopback0 RTB# hostname RTB ip subnet-zero 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 ospf 10 redistribute bgp 100 metric 1000 subnets passive-interface Serial1 network 203.250.0.0 0.0.255.255 area 0 network 192.208.0.0 0.0.255.255 area 0 router bgp 100 no synchronization network 203.250.15.0 neighbor 192.208.10.5 remote-as 300 neighbor 203.250.13.41 remote-as 100 Las tablas BGP que resultan en los routers RTA y RTB tras poner en marcha la configuración anterior serían las siguientes: RTA#show ip bgp BGP table version is 117, local router ID is 203.250.13.41 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network *> 128.213.0.0 *>i192.208.10.0 *>i195.211.10.0 * i *> 200.200.10.0 *> 203.250.13.0 *> 203.250.14.0 *>i203.250.15.0 Next Hop 128.213.63.2 192.208.10.5 192.208.10.5 128.213.63.2 128.213.63.2 0.0.0.0 0.0.0.0 203.250.15.2 Metric LocPrf Weight Path 0 0 200 i 0 100 0 300 i 100 0 300 500 i 0 200 400 500 0 0 0 100 0 32768 32768 0 200 400 i i i i RTB#show ip bgp BGP table version is 12, local router ID is 203.250.15.10 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network *>i128.213.0.0 * Next Hop 128.213.63.2 192.208.10.5 Metric LocPrf Weight Path 0 100 0 200 i 0 300 500 400 200 i *> 192.208.10.0 *> 195.211.10.0 *>i200.200.10.0 * i *>i203.250.13.0 *>i203.250.14.0 *> 203.250.15.0 192.208.10.5 192.208.10.5 128.213.63.2 192.208.10.5 0 203.250.13.41 203.250.13.41 0.0.0.0 0 0 0 100 100 100 0 0 0 0 300 300 200 300 i 500 i 400 i 500 400 0 i 0 i 32768 i Después de haber solucionado el problema de la conexión entre routers BGP, el intercambio de rutas y la accesibilidad de los destinos, el siguiente aspecto a tener en cuenta es la forma en que el AS cliente (AS 100) accede a Internet a través de los dos ISPs (AS 200 y AS 300). Una posibilidad es utilizar uno de los ISP para el acceso primario y mantener el otro como backup, es decir, como ISP auxiliar para el caso de que falle el ISP primario. La política de encaminamiento elegida consiste en que el AS 100 reciba anuncios de rutas de cualquier otro AS a través del router RTA y sólo rutas locales pertenecientes al AS 300 a través del router RTB, de manera que el tráfico dirigido hacia el exterior con destino diferente a una ruta interna del AS 300 sólo pase por el router de borde RTA. Además, tanto RTA como RTB generan rutas por defecto con destino hacia el exterior (RTA hacia la ruta 200.200.0.0 y RTB hacia la ruta 192.208.10.0) dentro del AS 100 mediante OSPF, dando mayor preferencia a RTB para su ruta por defecto (métrica menor). De este modo, para el tráfico de salida por defecto se utiliza el ISP 300, mientras que para el tráfico con destino las rutas aprendidas del exterior mediante EBGP se utiliza el ISP conectado al router de borde RTA. Un posible problema podría ser que el tráfico que salga del AS 100 por RTA reciba respuesta por el router RTB, lo cual provocaría una situación de asimetría. Esto podría ocurrir en el caso de que se utilizase la misma supernet en las direcciones que las interfaces que ambos routers de borde tienen con el exterior del AS. De esta manera, la agregación de rutas provocaría que ambos puntos de acceso si viesen del mismo modo desde el exterior. Sin embargo, en esta configuración se han utilizado direcciones diferentes para las subredes que sirven para unir cada router de borde del AS 100 con cada ISP. Se ha visto que todo el tráfico saliente del AS 100 (excepto el tráfico por defecto que se envía hacia la dirección 192.208.10.0) va a pasar por el router RTA y por el AS 200. Esto se consigue modificando el atributo LOCAL_PREF de los anuncios recibidos desde el exterior, de forma que los anuncios recibidos por RTA tengan preferencia con respecto a los anuncios recibidos por RTB. Sin embargo, en el router RTB sólo va a modificarse el atributo LOCAL_PREF de las actualizaciones recibidas que no se correspondan con anuncios de redes internas del AS 300. De esta forma, para alcanzar las redes con origen en el AS 300 sí se va a preferir pasar por el router RTB. La configuración final del router RTA se muestra a continuación: RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 203.250.13.41 255.255.255.0 interface Ethernet0 ip address 203.250.14.1 255.255.255.0 interface Serial0 ip address 128.213.63.1 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 203.250.0.0 0.0.255.255 area 0 network 128.213.0.0 0.0.255.255 area 0 default-information originate metric 2000 router bgp 100 no synchronization network 203.250.13.0 network 203.250.14.0 neighbor 128.213.63.2 neighbor 128.213.63.2 neighbor 203.250.15.2 neighbor 203.250.15.2 remote-as 200 route-map setlocalpref in remote-as 100 update-source Loopback0 ip classless ip default-network 200.200.0.0 route-map setlocalpref permit 10 set local-preference 200 En la configuración anterior de RTA, el atributo LOCAL_PREF de las rutas que se reciben a través del AS 200 se modifica con un valor de 200. Como candidata a ruta por defecto se establece la red 200.200.0.0 mediante el comando ip defaultnetwork. Además, para poder inyectar la ruta por defecto anterior en el dominio OSPF, es necesario utilizar el comando default-information originate, lo cual no es necesario en otros protocolos IGP como RIP o IGRP al hacerse automáticamente. La configuración definitiva de los routers RTF y RTB quedaría como sigue: RTF# hostname RTF ip subnet-zero interface Ethernet0 ip address 203.250.14.2 255.255.255.0 interface Serial1 ip address 203.250.15.1 255.255.255.252 router ospf 10 network 203.250.0.0 0.0.255.255 area 0 ip classless RTB# hostname RTB ip subnet-zero interface Loopback1 ip address 203.250.15.10 255.255.255.252 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 ospf 10 redistribute bgp 100 metric 1000 subnets passive-interface Serial1 network 203.250.0.0 0.0.255.255 area 0 network 192.208.10.6 0.0.0.0 area 0 default-information originate metric 1000 ! router bgp 100 no synchronization network 203.250.15.0 neighbor 192.208.10.5 remote-as 300 neighbor 192.208.10.5 route-map localonly in neighbor 203.250.13.41 remote-as 100 ! ip classless ip default-network 192.208.10.0 ip as-path access-list 1 permit ^300$ route-map localonly permit 10 match as-path 1 set local-preference 300 En el router RTB se modifica el atributo LOCAL_PREF de los anuncios de las rutas locales del AS 300 y que provienen de dicho AS. De este modo, para llegar al AS 300 se seleccionan dichas rutas por tener un valor del atributo LOCAL_PREF (300) mayor que en el caso de las rutas con destino una red del AS 300 que llegan a RTB por la sesión IBGP con RTA (con LOCAL_PREF igual a 200). Por otro lado, los anuncios de rutas que lleguen a RTB con un AS_PATH diferente al indicado mediante la expresión ^300$ (que empiecen y terminen por el ASN 300) serán descartados. De este modo, cualquier ruta que sea anunciada por RTB de forma interna en el AS 100 y que tenga un AS_PATH distinto al valor 300 será anunciada con un valor del atributo LOCAL_PREF igual a 100 (<200), por lo que se preferirán las rutas provenientes de RTA. La tabla BGP del router RTB resultaría ser como sigue: RTB#sh ip bgp regexp ^300$ BGP table version is 14, local router ID is 203.250.15.10 Status codes: s suppressed, d damped, h history, * valid, > best, i internal Origin codes: i - IGP, e - EGP, ? - incomplete Network *> 192.208.10.0 Next Hop 192.208.10.5 Metric LocPrf Weight Path 0 300 0 300 A continuación se muestra la configuración definitiva del router RTC: RTC# hostname RTC ip subnet-zero interface Loopback0 ip address 128.213.63.130 255.255.255.192 interface Serial2/0 ip address 128.213.63.5 255.255.255.252 ! interface Serial2/1 ip address 128.213.63.2 255.255.255.252 router bgp 200 network 128.213.0.0 aggregate-address 128.213.0.0 255.255.0.0 summary-only neighbor 128.213.63.1 remote-as 100 neighbor 128.213.63.1 distribute-list 1 out neighbor 128.213.63.6 remote-as 400 ip classless access-list 1 deny 195.211.0.0 0.0.255.255 access-list 1 permit any En la configuración anterior, se han indicado las redes específicas para ser anunciadas al AS 100 y se han agregado todas éstas en la dirección 128.213.0.0/16. Por otra parte, también se ha añadido una lista de acceso para no anunciar a RTA las redes 195.211.0.0 (pertenecientes al AS 500). Las configuraciones definitivas de RTD y RTG son las siguientes: RTD# hostname RTD ip subnet-zero 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 ! interface Serial0/1 ip address 192.208.10.2 255.255.255.252 router bgp 300 network 192.208.10.0 neighbor 192.208.10.1 remote-as 500 neighbor 192.208.10.6 remote-as 100 RTG# hostname RTG ip subnet-zero interface Loopback0 ip address 195.211.10.174 255.255.255.192 interface Serial0 ip address 192.208.10.1 255.255.255.252 interface Serial1 ip address 195.211.10.1 255.255.255.252 router bgp 500 network 195.211.10.0 aggregate-address 195.211.0.0 255.255.0.0 summary-only neighbor 192.208.10.2 remote-as 300 neighbor 192.208.10.2 send-community neighbor 192.208.10.2 route-map setcommunity out neighbor 195.211.10.2 remote-as 400 ! ip classless access-list 1 permit 195.211.0.0 0.0.255.255 access-list 2 permit any access-list 101 permit ip 195.211.0.0 0.0.255.255 host 255.255.0.0 route-map setcommunity permit 20 match ip address 2 ! route-map setcommunity permit 10 match ip address 1 set community no-export En la configuración del router RTG se modifica el atributo COMMUNITY de los anuncios de las rutas 195.211.0.0 anunciadas a RTD con el valor no-export. De este modo, cuando el router RTD reciba dichas rutas de RTG, éste no las anunciará a RTB. De todos modos, en la configuración de RTB no se aceptaban ninguna ruta que no fuese local al AS 300. A continuación aparece la configuración final del router RTE, en la que se hace la agregación de las rutas con dirección dentro de 200.200.0.0/16: RTE# hostname RTE ip subnet-zero interface Loopback0 ip address 200.200.10.1 255.255.255.0 interface Serial0 ip address 195.211.10.2 255.255.255.252 interface Serial1 ip address 128.213.63.6 255.255.255.252 router bgp 400 network 200.200.10.0 aggregate-address 200.200.0.0 255.255.0.0 summary-only neighbor 128.213.63.5 remote-as 200 neighbor 195.211.10.1 remote-as 500 ip classless Finalmente, para la configuración final se adjuntan las tablas de encaminamiento y las tablas BGP de los routers RTA, RTF y RTB: RTA#show ip bgp BGP table version is 21, local router ID is 203.250.13.41 Status codes: s suppressed, d damped, h history, * valid, > best, i internal Origin codes: i - IGP, e - EGP, ? - incomplete Network *> 128.213.0.0 *>i192.208.10.0 *> 200.200.0.0/16 400 i *> 203.250.13.0 *> 203.250.14.0 *>i203.250.15.0 Next Hop 128.213.63.2 192.208.10.5 128.213.63.2 0.0.0.0 0.0.0.0 203.250.15.2 Metric LocPrf Weight Path 0 200 0 200 i 0 300 0 300 i 200 0 200 0 0 0 100 32768 i 32768 i 0 i RTA#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 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, * candidate default Gateway of last resort is 128.213.63.2 to network 200.200.0.0 192.208.10.0 is variably subnetted, 2 subnets, 2 masks 192.208.10.0 255.255.255.0 [110/1000] via 203.250.14.2, 00:41:25, Ethernet0 O 192.208.10.4 255.255.255.252 [110/138] via 203.250.14.2, 00:41:25, Ethernet0 C 203.250.13.0 is directly connected, Loopback0 203.250.15.0 is variably subnetted, 3 subnets, 3 masks O 203.250.15.10 255.255.255.255 [110/75] via 203.250.14.2, 00:41:25, Ethernet0 O 203.250.15.0 255.255.255.252 [110/74] via 203.250.14.2, 00:41:25, Ethernet0 B 203.250.15.0 255.255.255.0 [200/0] via 203.250.15.2, 00:41:25 C 203.250.14.0 is directly connected, Ethernet0 128.213.0.0 is variably subnetted, 2 subnets, 2 masks B 128.213.0.0 255.255.0.0 [20/0] via 128.213.63.2, 00:41:26 O E2 C 128.213.63.0 255.255.255.252 is directly connected, Serial0 B* 200.200.0.0 255.255.0.0 [20/0] via 128.213.63.2, 00:02:38 RTF#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 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, * candidate default Gateway of last resort is 203.250.15.2 to network 0.0.0.0 192.208.10.0 is variably subnetted, 2 subnets, 2 masks 192.208.10.0 255.255.255.0 [110/1000] via 203.250.15.2, 00:48:50, Serial1 O 192.208.10.4 255.255.255.252 [110/128] via 203.250.15.2, 01:12:09, Serial1 203.250.13.0 is variably subnetted, 2 subnets, 2 masks O 203.250.13.41 255.255.255.255 [110/11] via 203.250.14.1, 01:12:09, Ethernet0 O E2 203.250.13.0 255.255.255.0 [110/2000] via 203.250.14.1, 01:12:09, Ethernet0 203.250.15.0 is variably subnetted, 2 subnets, 2 masks O 203.250.15.10 255.255.255.255 [110/65] via 203.250.15.2, 01:12:09, Serial1 C 203.250.15.0 255.255.255.252 is directly connected, Serial1 C 203.250.14.0 is directly connected, Ethernet0 128.213.0.0 is variably subnetted, 2 subnets, 2 masks O E2 128.213.0.0 255.255.0.0 [110/2000] via 203.250.14.1, 00:45:01, Ethernet0 O 128.213.63.0 255.255.255.252 [110/74] via 203.250.14.1, 01:12:11, Ethernet0 O E2 200.200.0.0 255.255.0.0 [110/2000] via 203.250.14.1, 00:03:47, Ethernet0 O*E2 0.0.0.0 0.0.0.0 [110/1000] via 203.250.15.2, 00:03:33, Serial1 O E2 En la tabla de encaminamiento anterior se puede comprobar que RTF alcanza las redes locales del AS 300 (por ejemplo, la red 192.208.10.0) pasando por el router RTB. El resto de redes externas conocidas (como la red 200.200.0.0, por ejemplo) son alcnazables por RTF a través de RTA. Por otra parte, la ruta por defecto pasa por RTB, cambiando a pasar por RTA en caso de fallo del router RTB. Las tablas BGP y de encaminamiento del router RTB aparece a continuación: RTB#show ip bgp BGP table version is 14, local router ID is 203.250.15.10 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 *>i128.213.0.0 *> 192.208.10.0 *>i200.200.0.0/16 *>i203.250.13.0 *>i203.250.14.0 *> 203.250.15.0 128.213.63.2 192.208.10.5 128.213.63.2 203.250.13.41 203.250.13.41 0.0.0.0 0 0 0 0 0 200 300 200 100 100 0 0 0 0 0 32768 200 i 300 i 200 400 i i i i RTB#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 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, * candidate default Gateway of last resort is 192.208.10.5 to network 192.208.10.0 * B* C 192.208.10.0 is variably subnetted, 2 subnets, 2 masks 192.208.10.0 255.255.255.0 [20/0] via 192.208.10.5, 00:50:46 192.208.10.4 255.255.255.252 is directly connected, Serial1 203.250.13.0 is variably subnetted, 2 subnets, 2 masks O 203.250.13.41 255.255.255.255 [110/75] via 203.250.15.1, 01:20:33, Serial0 O E2 203.250.13.0 255.255.255.0 [110/2000] via 203.250.15.1, 01:15:40, Serial0 203.250.15.0 255.255.255.252 is subnetted, 2 subnets C 203.250.15.8 is directly connected, Loopback1 C 203.250.15.0 is directly connected, Serial0 O 203.250.14.0 [110/74] via 203.250.15.1, 01:20:33, Serial0 128.213.0.0 is variably subnetted, 2 subnets, 2 masks O E2 128.213.0.0 255.255.0.0 [110/2000] via 203.250.15.1, 00:46:55, Serial0 O 128.213.63.0 255.255.255.252 [110/138] via 203.250.15.1, 01:20:34, Serial0 O E2 200.200.0.0 255.255.0.0 [110/2000] via 203.250.15.1, 00:05:42, Serial0