Laboratorio de BGP
- Relaciones de tránsito
- Relación entre iguales
- Políticas de exportación y orden de preferencia en la selección de rutas
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.
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
Descomprime el fichero de configuración del escenario
lab-BGP.tgz
. Al arrancar NetGUI debes abrir el escenario definido en el directoriolab-BGP
.Arranca de una en una sólo las máquinas de AS20.
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.
Los routers de AS20 (
as20-r1
,as20-r2
yas20-r3
) tienen configurado el protocolo OSPF para que intercambien información de encaminamiento dentro de AS20 (consulta los ficherosdaemons
yospfd.conf
de estos routers). Arrancaquagga
en todos los routers de AS20.Consulta las tablas de encaminamiento utilizando la interfaz VTY con los procesos
ospfd
de cada router y mediante el comandoroute
.Comprueba utilizando
ping
que todos los pcs y routers tienen conectividad dentro de AS20.Modifica la configuración de
quagga
enas20-r1
para que utilice además de OSPF el protocolo BGP. Define como vecino suyo aas10-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. Reiniciaquagga
enas20-r1
.¿Debería haber aprendido alguna ruta
as20-r1
por BGP? Compruébalo consultando la tabla de encaminamiento mediante el mandatoroute
y conectándote a la interfaz VTY del procesobgpd
.¿Deberían haber aprendido alguna ruta
as20-r2
yas20-r3
?
pc y router de AS10
Arranca
as10-pc1
yas10-r1
. La máquinaas10-pc1
tiene configurada una dirección IP y una ruta por defecto al router al que está directamente conectado. El routeras10-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.Configura
quagga
enas10-r1
para que utilice el protocolo BGP. Define como vecinos suyos aas20-r1
y aas30-r1
.Captura el tráfico con
tcpdump
enas20-r1(eth0)
, con la opción-s
para capturar paquetes enteros y-w
para guardar la captura en un fichero.Arranca
quagga
enas10-r1
. Espera un minuto e interrumple la captura.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 mensajesOPEN
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
yType
) ¿qué otra información viaja en este tipo de mensajes?Localiza los mensajes
UPDATE
que intercambian los routers. Observa en ambos mensajesUPDATE
los siguientes campos:Rutas eliminadas
Rutas anunciadas
Atributos, en particular el valor de
NEXT_HOP
yAS_PATH
.El atributo
ORIGIN
tiene como valorINCOMPLETE
porque esas subredes se anuncian debido a la redistribución de subredes y no a través de líneasnetwork
. Elimina en el ficherobgpd.conf
deas10-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
enas10-r1
, inicia una captura de tráfico enas20-r1(eth0)
y arrancaquagga
enas10-r1
de nuevo. Pasado 2 minutos aproximadamente, fíjate en el valor del atributoORIGIN
en el mensaje UPDATE que generaas10-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 columnaPath
, junto al ASN que originó el anuncio.
Consulta la tabla de encaminamiento utilizando la interfaz VTY con el proceso
bgpd
y con el comandoroute
en los routersas10-r1
yas20-r1
. Observa las diferencias.Prueba a hacer un
ping
desdeas10-pc1
haciaas20-pc2
y comprueba que no funciona. ¿Por qué? (Explica la tabla de encaminamiento que tieneas10-r1
).Modifica la configuración del fichero
bgpd.conf
deas20-r1
para que se redistribuyan las rutas aprendidas por OSPF de AS20 a otros ASs utilizando BGP. Reiniciaquagga
enas20-r1
. Comprueba que ahoraas10-r1
tiene rutas a todas las redes de AS20. En la tabla BGP deas10-r1
fíjate en el atributoORIGIN
para las subredes de AS20.Prueba a hacer un
ping
desdeas10-pc1
haciaas20-pc2
y comprueba que todavía no funciona. ¿Por qué? (Explica la tabla de encaminamiento que tieneas20-r2
).Modifica la configuración del fichero
ospfd.conf
deas20-r1
para que se redistribuyan las rutas aprendidas por BGP a los routers de AS20 mediante OSPF. Reiniciaquagga
enas20-r1
. Comprueba queas20-r2
tiene ruta a la red de AS10.Comprueba que ahora sí funciona el
ping
entreas10-pc1
yas20-pc2
.
pcs y routers de AS30 con OSPF
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.
Los routers de AS30 (
as30-r1
,as30-r2
yas30-r3
) tienen configurado el protocolo OSPF para que intercambien información de encaminamiento dentro de AS30 (consulta los ficherosdaemons
yospfd.conf
de estos routers). Arrancaquagga
en todos los routers de AS30.Consulta las tablas de encaminamiento utilizando la interfaz VTY con los procesos
ospfd
de cada router y mediante el comandoroute
.Comprueba utilizando
ping
que todos los pcs y routers tienen conectividad dentro de AS30.Modifica la configuración de
quagga
enas30-r1
para que utilice además el protocolo BGP. Define como vecino suyo aas10-r1
. No uses aún la redistribución de rutas entre OSPF y BGP.Captura el tráfico con
tcpdump
enas10-r1(eth2)
, con la opción-s
para capturar paquetes enteros y-w
para guardar la captura en un fichero.Reinicia
quagga
enas30-r1
. Espera un minuto e interrumpe la captura.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 mensajesOPEN
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 anteriorTrata de suponer qué rutas le anunciará
as10-r1
aas30-r1
en sus mensajesUPDATE
. ¿QuéAS_PATH
crees que traerán esas rutas? Como los atributos de un mensajeUPDATE
son comunes a todas las rutas anunciadas, ¿podrá anunciaras10-r1
todas las subredes que conoce en un solo mensajeUPDATE
?Trata de suponer qué rutas le anunciará
as30-r1
aas10-r1
en sus mensajesUPDATE
.Localiza en la captura los mensajes
UPDATE
que intercambian los routers y confirma si tus suposiciones son ciertas. Observa el valor de los atributosNEXT_HOP
yAS_PATH
.
¿Debería haber aprendido alguna ruta
as30-r1
? Compruébalo consultando la tabla de encaminamiento mediante el mandatoroute
.El resto de routers de AS30 ¿deberían haber aprendido alguna otra ruta? Compruébalo.
Prueba a hacer un
ping
desdeas10-pc1
haciaas30-pc3
y comprueba que no funciona. ¿Por qué? (Explica la tabla de encaminamiento deas10-r1
).Modifica la configuración del fichero
bgpd.conf
deas30-r1
para que se redistribuyan las rutas aprendidas por OSPF de AS30 a otros ASs utilizando BGP. Reiniciaquagga
enas30-r1
. Comprueba que ahoraas10-r1
tiene rutas a todas las redes de AS30. En la tabla BGP deas10-r1
fíjate en el atributoORIGIN
para las subredes de AS30.Prueba a hacer un
ping
desdeas10-pc1
haciaas30-pc3
y comprueba que todavía no funciona. ¿Por qué? (Explica la tabla de encaminamiento deas30-r3
).Modifica la configuración del fichero
ospfd.conf
deas30-r1
para que se redistribuyan las rutas aprendidas por BGP a los routers de AS30 mediante OSPF. Reiniciaquagga
enas30-r1
. Comprueba que ahoraas30-r3
tiene ruta a la red de AS10.Comprueba que ahora sí funciona el
ping
entreas10-pc1
yas30-pc3
.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.
Interrumpe la ejecución de
quagga
enas20-r1
yas30-r1
.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.
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.
Captura el tráfico con
tcpdump
enas10-r1(eth2)
, con la opción-s
para capturar paquetes enteros y-w
para guardar la captura en un fichero.Inicia
quagga
enas20-r1
yas30-r1
.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 mensajesUPDATE
y en la tabla BGP deas10-r1
, su valor es diferente después de realizar la agregación.
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.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 unas
que indica que se suprimen. Consulta esta misma información en la tabla BGP deas30-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.
Interrumpe quagga en
as20-r1
yas30-r1
.Interrumpe la ejecución de los routers
as20-r1
yas30-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.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 deas30-r1
, ambas direcciones de la red 20.3.0.0/16.No apliques por ahora ninguna política de exportación de rutas. Modifica la configuración de BGP de
as20-r1
yas30-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.Arranca
quagga
enas20-r1
yas30-r1
.Comprueba mediante
route
enas20-r1
la ruta hacia las redes de AS30, y enas30-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 queLOCAL_PREF
no se ha modificado y por tanto valdrá para todas las interfaces su valor por defecto, 100.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ómoas20-r1
ha aprendido estas rutas alternativas y cuál se ha seleccionado como preferida.¿Qué ruta crees que seguirán los paquetes intercambiados entre
as20-pc3
yas30-pc2
? Compruébalo.¿Qué ruta crees que seguirán los paquetes enviados desde
as30-pc3
con destinoas10-pc1
? Compruébalo utilizandotraceroute
. Utilizando la interfaz VTY enas30-r1
comprueba cómo tiene dos rutas alternativas para la red11.1.0.0/16
. Observa cuál es la elegida y por qué.Apaga la interfaz
eth0
deas30-r1
conifconfig eth0 down
. Espera unos 3 minutos. ¿Qué habrá pasado ahora con la ruta que seguirán los paquetes enviados desdeas30-pc3
con destinoas10-pc1
? Compruébalo utilizandotraceroute
. Utilizando la interfaz VTY enas30-r1
comprueba que ahora sólo tiene una ruta para la red11.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é.Teniendo en cuenta las relaciones entre AS10, AS20 y AS30:
¿Qué rutas debería exportar AS20 a AS30, y qué rutas no debería exportarle?
¿Qué rutas debería exportar AS30 a AS20, y qué rutas no debería exportarle?
Teniendo en cuenta las rutas que deben exportarse y las que no, vuelve a configurar BGP en
as20-r1
yas30-r1
para que se anuncien y se exporten sólo las rutas que a cada AS le interesa.Vuelve a levantar la interfaz
eth0
deas30-r1
conifconfig eth0 up
. Reiniciaquagga
en los 3 routers BGP:as10-r1
,as20-r1
yas30-r1
.Comprueba ahora las tablas de encaminamiento en
as20-r1
yas30-r1
, tanto conroute
como con la interfaz VTY.¿Qué ruta crees que seguirán ahora los paquetes intercambiados entre
as20-pc3
yas30-pc2
? Compruébalo.¿Qué ruta crees que seguirán ahora los paquetes enviados desde
as30-pc3
con destinoas10-pc1
? Compruébalo utilizandotraceroute
. Utilizando la interfaz VTY enas30-r1
comprueba qué rutas tiene disponibles hacia la red11.1.0.0/16
.Apaga la interfaz
eth0
deas30-r1
conifconfig eth0 down
. ¿Qué habrá pasado ahora con la ruta que seguirán los paquetes enviados desdeas30-pc3
con destinoas10-pc1
? Compruébalo utilizandotraceroute
. Utilizando la interfaz VTY enas30-r1
comprueba qué rutas hay ahora para la red11.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.
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.
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 nuevamentequagga
en dichos routers.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.
Fíjate en la tabla BGP de
as50-r1
. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?Interrumpe
quagga
enas20-r1
. Fíjate en la tabla BGP deas50-r1
. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?¿Cuál es la ruta que aparece en la tabla de encaminamiento de
as50-r1
para alcanzar AS60?Inicia
quagga
enas20-r1
. Espera 2 minutos aproximadamente para queas50-r1
yas20-r1
hayan intercambiado la información de encaminamiento BGP. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?¿Cuál es la ruta que aparece en la tabla de encaminamiento de
as50-r1
para alcanzar AS60?¿Es consistente esta ruta con las relaciones entre ASs definidas previamente?
Piensa en los atributos LOCAL PREF que configurarías en
as50-r1
y realiza dicha configuración en el escenario. Reiniciaquagga
enas50-r1
.Interrumpe
quagga
nuevamente enas20-r1
. Fíjate en la tabla BGP deas50-r1
. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?Inicia
quagga
enas20-r1
. Espera 2 minutos aproximadamente para queas50-r1
yas20-r1
hayan intercambiado la información de encaminamiento BGP. ¿Cuántas rutas hay en la tabla BGP para alcanzar AS60?¿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
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.Reinicia
quagga
enas40-r1
y observa la tabla de encaminamiento y la tabla BGP deas50-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.Cambia la configuración en
as40-r1
para evitar que siga anunciando a AS50 las subredes individuales.Reinicia
quagga
enas40-r1
y comprueba que la tabla de encaminamiento y la tabla BGP deas50-r1
ahora sólo tienen la ruta por defecto.