Laboratorio de BGP

En el fichero lab-BGP.tgz se encuentran los ficheros de configuración para crear un escenario de red como el que se muestra en la figura.

Figura lab-BGP.tgz

En esta figura hay tres AS (Sistemas Autónomos): AS10, AS20 y AS30. Se ha configurado OSPF dentro de AS20 y AS30 y se desea configurar BGP para conectar los 3 sistemas autónomos. En AS10 no se utilizará ningún protocolo de encaminamiento interior ya que sólo hay una red interna.

Se realizará la configuración por pasos. Supondremos para la configuración de BGP que AS10 y AS20 mantienen una relación de tránsito y que AS10 y AS30 mantienen una relación de tránsito, siendo en ambos casos AS10 el proveedor.

Relaciones de tránsito

pcs y routers de AS20 con OSPF

  1. Descomprime el fichero de configuración del escenario lab-BGP.tgz. Al arrancar NetGUI debes abrir el escenario definido en el directorio lab-BGP.

  2. Arranca de una en una sólo las máquinas de AS20.

  3. Las máquinas tienen configurada una dirección IP en cada una de sus interfaces de red. Los pcs además tienen configurada una ruta por defecto al único router al que están directamente conectados.

  4. Los routers de AS20 (as20-r1, as20-r2 y as20-r3) tienen configurado el protocolo OSPF para que intercambien información de encaminamiento dentro de AS20 (consulta los ficheros daemons y ospfd.conf de estos routers). Arranca quagga en todos los routers de AS20.

  5. Consulta las tablas de encaminamiento utilizando la interfaz VTY con los procesos ospfd de cada router y mediante el comando route.

  6. Comprueba utilizando ping que todos los pcs y routers tienen conectividad dentro de AS20.

  7. Modifica la configuración de quagga en as20-r1 para que utilice además de OSPF el protocolo BGP. Define como vecino suyo a as10-r1. Utiliza únicamente la redistribución de las subredes directamente conectadas (redistribute connected). No uses aún la redistribución de rutas entre OSPF y BGP. Reinicia quagga en as20-r1.

  8. ¿Debería haber aprendido alguna ruta as20-r1 por BGP? Compruébalo consultando la tabla de encaminamiento mediante el mandato route y conectándote a la interfaz VTY del proceso bgpd.

  9. ¿Deberían haber aprendido alguna ruta as20-r2 y as20-r3?

pc y router de AS10

  1. Arranca as10-pc1 y as10-r1. La máquina as10-pc1 tiene configurada una dirección IP y una ruta por defecto al router al que está directamente conectado. El router as10-r1 tiene configuradas direcciones IP, una en cada interfaz, pero no tiene configurada ninguna ruta adicional a las de las subredes a las que está directamente conectado.

  2. Configura quagga en as10-r1 para que utilice el protocolo BGP. Define como vecinos suyos a as20-r1 y a as30-r1.

  3. Captura el tráfico con tcpdump en as20-r1(eth0), con la opción -s para capturar paquetes enteros y -w para guardar la captura en un fichero.

  4. Arranca quagga en as10-r1. Espera un minuto e interrumple la captura.

  5. Analiza la captura realizada:

    • Observa que el tráfico de BGP va dentro de una conexión TCP.

    • Localiza los mensajes OPEN que intercambian los routers vecinos. Observa en ambos mensajes OPEN los siguientes campos:

      • My AS

      • Identificador del router BGP

      • Hold time

      • En los parámetros opcionales, el campo Capabilities Advertisement que contiene información del número de sistema autónomo de 32 bits.

    • Localiza los mensajes KEEPALIVE que intercambian los routers. Además de la cabecera obligatoria de BGP (Marker, Length y Type) ¿qué otra información viaja en este tipo de mensajes?

    • Localiza los mensajes UPDATE que intercambian los routers. Observa en ambos mensajes UPDATE los siguientes campos:

      • Rutas eliminadas

      • Rutas anunciadas

      • Atributos, en particular el valor de NEXT_HOP y AS_PATH.

      • El atributo ORIGIN tiene como valor INCOMPLETE porque esas subredes se anuncian debido a la redistribución de subredes y no a través de líneas network. Elimina en el fichero bgpd.conf de as10-r1 la línea:

        redistribute connected
        

        y añade las siguientes líneas:

        network 11.1.0.0/16
        network 20.1.0.0/16
        network 20.2.0.0/16
        

        Interrumpe quagga en as10-r1, inicia una captura de tráfico en as20-r1(eth0) y arranca quagga en as10-r1 de nuevo. Pasado 2 minutos aproximadamente, fíjate en el valor del atributo ORIGIN en el mensaje UPDATE que genera as10-r1 para dichas subredes. Puedes observar como el valor de este atributo (i=IGP, e=EGP, ?=incomplete) también se observa en la tabla BGP, en la columna Path, junto al ASN que originó el anuncio.

  6. Consulta la tabla de encaminamiento utilizando la interfaz VTY con el proceso bgpd y con el comando route en los routers as10-r1 y as20-r1. Observa las diferencias.

  7. Prueba a hacer un ping desde as10-pc1 hacia as20-pc2 y comprueba que no funciona. ¿Por qué? (Explica la tabla de encaminamiento que tiene as10-r1).

  8. Modifica la configuración del fichero bgpd.conf de as20-r1 para que se redistribuyan las rutas aprendidas por OSPF de AS20 a otros ASs utilizando BGP. Reinicia quagga en as20-r1. Comprueba que ahora as10-r1 tiene rutas a todas las redes de AS20. En la tabla BGP de as10-r1 fíjate en el atributo ORIGIN para las subredes de AS20.

  9. Prueba a hacer un ping desde as10-pc1 hacia as20-pc2 y comprueba que todavía no funciona. ¿Por qué? (Explica la tabla de encaminamiento que tiene as20-r2).

  10. Modifica la configuración del fichero ospfd.conf de as20-r1 para que se redistribuyan las rutas aprendidas por BGP a los routers de AS20 mediante OSPF. Reinicia quagga en as20-r1. Comprueba que as20-r2 tiene ruta a la red de AS10.

  11. Comprueba que ahora sí funciona el ping entre as10-pc1 y as20-pc2.

pcs y routers de AS30 con OSPF

  1. Arranca todas las máquinas de AS30 de una en una. Los routers tienen configurada una dirección IP por cada una de sus interfaces. Los pcs tienen configurada una dirección IP y una ruta por defecto al router al que están directamente conectados.

  2. Los routers de AS30 (as30-r1, as30-r2 y as30-r3) tienen configurado el protocolo OSPF para que intercambien información de encaminamiento dentro de AS30 (consulta los ficheros daemons y ospfd.conf de estos routers). Arranca quagga en todos los routers de AS30.

  3. Consulta las tablas de encaminamiento utilizando la interfaz VTY con los procesos ospfd de cada router y mediante el comando route.

  4. Comprueba utilizando ping que todos los pcs y routers tienen conectividad dentro de AS30.

  5. Modifica la configuración de quagga en as30-r1 para que utilice además el protocolo BGP. Define como vecino suyo a as10-r1. No uses aún la redistribución de rutas entre OSPF y BGP.

  6. Captura el tráfico con tcpdump en as10-r1(eth2), con la opción -s para capturar paquetes enteros y -w para guardar la captura en un fichero.

  7. Reinicia quagga en as30-r1. Espera un minuto e interrumpe la captura.

  8. Analiza la captura realizada:

    • Observa que el tráfico de BGP va dentro de una conexión TCP.

    • Localiza los mensajes OPEN que intercambian los routers vecinos. Observa en ambos mensajes OPEN los siguientes campos:

      • My AS

      • Identificador del router BGP

      • Hold time

      • En los parámetros opcionales, el campo Capabilities Advertisement que contiene información del número de sistema autónomo de 32 bits.

    • Localiza los mensajes KEEPALIVE que intercambian los routers. Comprueba que son similares a los que ya observaste en el apartado anterior

    • Trata de suponer qué rutas le anunciará as10-r1 a as30-r1 en sus mensajes UPDATE. ¿Qué AS_PATH crees que traerán esas rutas? Como los atributos de un mensaje UPDATE son comunes a todas las rutas anunciadas, ¿podrá anunciar as10-r1 todas las subredes que conoce en un solo mensaje UPDATE?

    • Trata de suponer qué rutas le anunciará as30-r1 a as10-r1 en sus mensajes UPDATE.

    • Localiza en la captura los mensajes UPDATE que intercambian los routers y confirma si tus suposiciones son ciertas. Observa el valor de los atributos NEXT_HOP y AS_PATH.

  9. ¿Debería haber aprendido alguna ruta as30-r1? Compruébalo consultando la tabla de encaminamiento mediante el mandato route.

  10. El resto de routers de AS30 ¿deberían haber aprendido alguna otra ruta? Compruébalo.

  11. Prueba a hacer un ping desde as10-pc1 hacia as30-pc3 y comprueba que no funciona. ¿Por qué? (Explica la tabla de encaminamiento de as10-r1).

  12. Modifica la configuración del fichero bgpd.conf de as30-r1 para que se redistribuyan las rutas aprendidas por OSPF de AS30 a otros ASs utilizando BGP. Reinicia quagga en as30-r1. Comprueba que ahora as10-r1 tiene rutas a todas las redes de AS30. En la tabla BGP de as10-r1 fíjate en el atributo ORIGIN para las subredes de AS30.

  13. Prueba a hacer un ping desde as10-pc1 hacia as30-pc3 y comprueba que todavía no funciona. ¿Por qué? (Explica la tabla de encaminamiento de as30-r3).

  14. Modifica la configuración del fichero ospfd.conf de as30-r1 para que se redistribuyan las rutas aprendidas por BGP a los routers de AS30 mediante OSPF. Reinicia quagga en as30-r1. Comprueba que ahora as30-r3 tiene ruta a la red de AS10.

  15. Comprueba que ahora sí funciona el ping entre as10-pc1 y as30-pc3.

  16. Comprueba que hay conectividad entre todos los pcs de la figura.

Agregación de rutas

La configuración de BGP realizada en el apartado anterior provoca que las subredes del sistema autónomo AS20 se almacenen de forma independiente, ocupando cada una de ellas una entrada diferente en las tablas de encaminamiento de los routers de AS10 y AS30. De forma equivalente, cada una de las subredes de AS30 ocupan entradas diferentes en las tablas de encaminamiento de los routers de AS10 y AS20.

Utilizando CIDR pueden agruparse estas entradas para que los anuncios por BGP que emiten AS20 y AS30 optimicen el número de entradas en las tablas de encaminamiento en los routers externos a dichos sistemas autónomos.

  1. Interrumpe la ejecución de quagga en as20-r1 y as30-r1.

  2. Configura BGP en AS20 para que se optimice el número de entradas en las tablas de encaminamiento de los routers de AS10 y AS30. Ten en cuenta que al realizar la agregación de rutas, dicha agregación sólo puede referirse a subredes que pertenezcan a AS20.

  3. Configura BGP en AS30 para que se optimice el número de entradas en las tablas de encaminamiento de los routers de AS10 y AS20. Ten en cuenta que al realizar la agregación de rutas, dicha agregación sólo puede referirse a subredes que pertenezcan a AS30.

  4. Captura el tráfico con tcpdump en as10-r1(eth2), con la opción -s para capturar paquetes enteros y -w para guardar la captura en un fichero.

  5. Inicia quagga en as20-r1 y as30-r1.

  6. Analiza la captura realizada:

    • Trata de suponer cómo serán los nuevos mensajes UPDATE que intercambien los routers anunciando las redes de AS20 y AS30. Localízalos en la captura y confirma si tus suposiciones son ciertas.

    • Fíjate en el atributo ORIGIN para estas subredes en los mensajes UPDATE y en la tabla BGP de as10-r1, su valor es diferente después de realizar la agregación.

  7. Consulta las tablas de encaminamiento de los routers de AS20 y AS30 mediante el comando route, para ver cómo se han agregado las rutas hacia el sistema autónomo externo.

  8. Consulta la tabla BGP en as20-r1, observarás como las subredes de AS20 con el prefijo agregado aparecen como ruta preferida y serán las que se anuncian a otros vecinos BGP. Además, las subredes que se anunciaban previamente de forma independiente y ahora se anuncian dentro del prefijo agregado también aparecen pero marcadas con una s que indica que se suprimen. Consulta esta misma información en la tabla BGP de as30-r1 para las subredes de AS30 que agrega este router.

Relación entre iguales

AS20 y AS30 se dan cuenta de que intercambian mucho tráfico entre ellos y deciden conectar directamente as20-r1 y as30-r1 definiendo una relación entre iguales entre los mismos.

  1. Interrumpe quagga en as20-r1 y as30-r1.

  2. Interrumpe la ejecución de los routers as20-r1 y as30-r1, apagando cada uno de ellos desde la interfaz gráfica de NetGUI. Dibuja un enlace directo entre ambos routers y arráncalos de nuevo, uno después de otro.

  3. Asigna la dirección 20.3.0.20 a la nueva interfaz de as20-r1 y la dirección 20.3.0.30 a la nueva interfaz de as30-r1, ambas direcciones de la red 20.3.0.0/16.

  4. No apliques por ahora ninguna política de exportación de rutas. Modifica la configuración de BGP de as20-r1 y as30-r1 para añadir en cada uno al otro como nuevo vecino. Por defecto si no se configuran políticas de exportación, se anuncian todas las rutas seleccionadas como preferidas.

  5. Arranca quagga en as20-r1 y as30-r1.

  6. Comprueba mediante route en as20-r1 la ruta hacia las redes de AS30, y en as30-r1 la ruta hacia las redes de AS20. Utilizando la interfaz VTY en ambos routers observa cómo cada uno tiene dos rutas alternativas para el sistema autónomo vecino, y ha elegido una de ellas. ¿Cuál? ¿Por qué? Ten en cuenta que LOCAL_PREF no se ha modificado y por tanto valdrá para todas las interfaces su valor por defecto, 100.

  7. Observa la tabla BGP de as20-r1 e indica cuántas rutas alternativas existen para las subredes 20.1.0.0/16, 20.2.0.0/16 y 20.3.0.0/16. Indica cómo as20-r1 ha aprendido estas rutas alternativas y cuál se ha seleccionado como preferida.

  8. ¿Qué ruta crees que seguirán los paquetes intercambiados entre as20-pc3 y as30-pc2? Compruébalo.

  9. ¿Qué ruta crees que seguirán los paquetes enviados desde as30-pc3 con destino as10-pc1? Compruébalo utilizando traceroute. Utilizando la interfaz VTY en as30-r1 comprueba cómo tiene dos rutas alternativas para la red 11.1.0.0/16. Observa cuál es la elegida y por qué.

  10. Apaga la interfaz eth0 de as30-r1 con ifconfig eth0 down. Espera unos 3 minutos. ¿Qué habrá pasado ahora con la ruta que seguirán los paquetes enviados desde as30-pc3 con destino as10-pc1? Compruébalo utilizando traceroute. Utilizando la interfaz VTY en as30-r1 comprueba que ahora sólo tiene una ruta para la red 11.1.0.0/16. Dada las relaciones entre AS10, AS20 y AS30 indica si esta situación perjudica a alguno de los AS y por qué.

  11. Teniendo en cuenta las relaciones entre AS10, AS20 y AS30:

    1. ¿Qué rutas debería exportar AS20 a AS30, y qué rutas no debería exportarle?

    2. ¿Qué rutas debería exportar AS30 a AS20, y qué rutas no debería exportarle?

  12. Teniendo en cuenta las rutas que deben exportarse y las que no, vuelve a configurar BGP en as20-r1 y as30-r1 para que se anuncien y se exporten sólo las rutas que a cada AS le interesa.

  13. Vuelve a levantar la interfaz eth0 de as30-r1 con ifconfig eth0 up. Reinicia quagga en los 3 routers BGP: as10-r1, as20-r1 y as30-r1.

  14. Comprueba ahora las tablas de encaminamiento en as20-r1 y as30-r1, tanto con route como con la interfaz VTY.

  15. ¿Qué ruta crees que seguirán ahora los paquetes intercambiados entre as20-pc3 y as30-pc2? Compruébalo.

  16. ¿Qué ruta crees que seguirán ahora los paquetes enviados desde as30-pc3 con destino as10-pc1? Compruébalo utilizando traceroute. Utilizando la interfaz VTY en as30-r1 comprueba qué rutas tiene disponibles hacia la red 11.1.0.0/16.

  17. Apaga la interfaz eth0 de as30-r1 con ifconfig eth0 down. ¿Qué habrá pasado ahora con la ruta que seguirán los paquetes enviados desde as30-pc3 con destino as10-pc1? Compruébalo utilizando traceroute. Utilizando la interfaz VTY en as30-r1 comprueba qué rutas hay ahora para la red 11.1.0.0/16.

Políticas de exportación y orden de preferencia en la selección de rutas

En el fichero lab-BGP2.tgz se encuentran los ficheros de configuración para crear un escenario de red como el que se muestra en la siguiente figura.

Figura del escenario lab-BGP2.tgz

En esta figura hay 6 AS (Sistemas Autónomos): AS10, AS20, AS30, AS40, AS50 y AS60. Se ha configurado OSPF dentro de AS20, OSPF dentro de AS30 y BGP en todos ellos para intercambiar la información de encaminamiento. Se desea que:

  • AS30 y AS10 tengan una relación de tránsito, donde AS30 sea el proveedor y AS10 el cliente.

  • AS30 y AS40 tengan una relación de tránsito, donde AS30 sea el proveedor y AS40 el cliente.

  • AS40 y AS50 tengan una relación de tránsito, donde AS40 sea el proveedor y AS50 el cliente.

  • AS40 y AS60 tengan una relación de tránsito, donde AS40 sea el proveedor y AS60 el cliente.

  • AS10 y AS20 tengan una relación de tránsito, donde AS10 sea el proveedor y AS20 el cliente.

  • AS20 y AS60 tengan una relación de tránsito, donde AS20 sea el proveedor y AS60 el cliente.

  • AS10 y AS40 tengan una relación entre iguales.

  • AS20 y AS50 tengan una relación entre iguales.

Arranca todas las máquinas de una en una. Por defecto, al arrancar las máquinas se arranca quagga. En el escenario se ha configurado OSPF y BGP. Sin embargo, no se han configurado las políticas de exportación ni el atributo LOCAL PREF de BGP.

  1. Piensa en qué routers debería existir una lista de exportación de rutas e indica qué rutas deberían estar en dicha lista y a qué router/s se le exportaría. Interrumpe quagga en los routers en los que necesites cambiar la configuración y realiza dicha configuración. Inicia nuevamente quagga en dichos routers.

  2. Comprueba en tu nueva configuración las siguientes reglas consultando cada una de las tablas BGP de los routers de la figura:

    • Un AS no anuncia a su proveedor las subredes aprendidas de otro AS proveedor o de un AS con relación entre iguales.

    • Un AS no anuncia a un AS con relación entre iguales las subredes aprendidas de un AS proveedor o de otro AS con relación entre iguales.

  3. Fíjate en la tabla BGP de as50-r1. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?

  4. Interrumpe quagga en as20-r1. Fíjate en la tabla BGP de as50-r1. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?

  5. ¿Cuál es la ruta que aparece en la tabla de encaminamiento de as50-r1 para alcanzar AS60?

  6. Inicia quagga en as20-r1. Espera 2 minutos aproximadamente para que as50-r1 y as20-r1 hayan intercambiado la información de encaminamiento BGP. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?

  7. ¿Cuál es la ruta que aparece en la tabla de encaminamiento de as50-r1 para alcanzar AS60?

  8. ¿Es consistente esta ruta con las relaciones entre ASs definidas previamente?

  9. Piensa en los atributos LOCAL PREF que configurarías en as50-r1 y realiza dicha configuración en el escenario. Reinicia quagga en as50-r1.

  10. Interrumpe quagga nuevamente en as20-r1. Fíjate en la tabla BGP de as50-r1. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?

  11. Inicia quagga en as20-r1. Espera 2 minutos aproximadamente para que as50-r1 y as20-r1 hayan intercambiado la información de encaminamiento BGP. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?

  12. ¿Cuál es la ruta que aparece en la tabla de encaminamiento de as50-r1 para alcanzar AS60? Ahora debería ser consistente con las relaciones entre ASs definidas previamente.

Ruta por defecto

  1. Cambia la configuración de as40-r1 de forma que AS40 anuncie a AS50 una ruta por defecto. No elimines aún los anuncios de las subredes individuales.

  2. Reinicia quagga en as40-r1 y observa la tabla de encaminamiento y la tabla BGP de as50-r1. Comprueba que en ambas tablas hay una ruta por defecto, pero siguen estando las rutas individuales. Las rutas a las subredes individuales, al ser más específicas serán las utilizadas, sin llegar a usarse nunca la ruta por defecto.

  3. Cambia la configuración en as40-r1 para evitar que siga anunciando a AS50 las subredes individuales.

  4. Reinicia quagga en as40-r1 y comprueba que la tabla de encaminamiento y la tabla BGP de as50-r1 ahora sólo tienen la ruta por defecto.

results matching ""

    No results matching ""