barra de menu

martes, 10 de septiembre de 2019

JNCIP - BGP - POLÍTICAS DE ENRUTAMIENTO - CORE NETWORK

Ya hemos comentado que BGP es el protocolo más configurable de todos. Fue creado con la intención de tener una amplia flexibilidad a la hora de configurar nuestras políticas de enrutamiento. Al contrario que los protocolos IGP, que están diseñados más bien para proveer una rápida convergencia y accesibilidad.

Al ser un protocolo de vector de distancia (distant vector) permite que sea muy escalable con tablas de rutas muy grandes, como por ejemplo Internet.

La característica menos buena de BGP es su lenta convergencia. Se pueden configurar las notificaciones de cambios en la red usando BFD, pero aún así, un protocolo IGP es converge mucho antes.

El uso de BGP en redes pequeñas no es rentable, puede crearnos más problemas que soluciones, pero para empresas con redes complejas, BGP en combinación con un IGP puede ofrecernos la solución apropiada.

Tenemos 2 puntos de vista que Juniper quiere que aprendamos mirando desde una empresa:
  • Diseño de la red central con BGP (esta misma página)
  • Implementación de la red externa

Todo esto con un ejemplo práctico se ve mejor:





Configuración básica de los routers:


vMX-1

set interfaces ge-0/0/0 speed 100m

set interfaces ge-0/0/0 unit 0 family inet address 10.0.12.1/30
set interfaces ge-0/0/1 unit 0 family inet address 10.0.13.1/30
set interfaces ge-0/0/3 unit 0 family inet address 1.5.0.1/30
set interfaces lo0 unit 0 family inet address 172.31.1.1/32
set routing-options router-id 172.31.1.1
set routing-options autonomous-system 65001
set protocols bgp group EBGP-64800 type external
set protocols bgp group EBGP-64800 neighbor 1.5.0.2 peer-as 64800
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 172.31.1.1
set protocols bgp group IBGP export CAMBIAR-NEXT-HOP
set protocols bgp group IBGP peer-as 65001
set protocols bgp group IBGP neighbor 172.31.1.2
set protocols bgp group IBGP neighbor 172.31.1.3
set protocols bgp group IBGP neighbor 172.31.1.4
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 interface-type p2p
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 interface-type p2p
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 from neighbor 1.5.0.2
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then next-hop self
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then accept


vMX-2

set interfaces ge-0/0/0 speed 100m

set interfaces ge-0/0/0 unit 0 family inet address 10.0.12.2/30
set interfaces ge-0/0/1 unit 0 family inet address 10.0.24.1/30
set interfaces ge-0/0/3 unit 0 family inet address 2.6.0.1/30
set interfaces lo0 unit 0 family inet address 172.31.1.2/32
set routing-options router-id 172.31.1.2
set routing-options autonomous-system 65001
set protocols bgp group EBGP-64900 type external
set protocols bgp group EBGP-64900 neighbor 2.6.0.2 peer-as 64900
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 172.31.1.2
set protocols bgp group IBGP export CAMBIAR-NEXT-HOP
set protocols bgp group IBGP peer-as 65001
set protocols bgp group IBGP neighbor 172.31.1.1
set protocols bgp group IBGP neighbor 172.31.1.3
set protocols bgp group IBGP neighbor 172.31.1.4
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 interface-type p2p
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 interface-type p2p
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 from neighbor 2.6.0.2
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then next-hop self
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then accept



vMX-3

set interfaces ge-0/0/0 speed 100m

set interfaces ge-0/0/0 unit 0 family inet address 10.0.34.1/30
set interfaces ge-0/0/1 unit 0 family inet address 10.0.13.2/30
set interfaces ge-0/0/3 unit 0 family inet address 3.9.0.1/30
set interfaces ge-0/0/5 unit 0 family inet address 3.7.0.1/30
set interfaces lo0 unit 0 family inet address 172.31.1.3/32
set routing-options router-id 172.31.1.3
set routing-options autonomous-system 65001
set protocols bgp group EBGP-MPLS neighbor 3.7.0.2 peer-as 1501
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 172.31.1.3
set protocols bgp group IBGP export CAMBIAR-NEXT-HOP
set protocols bgp group IBGP peer-as 65001
set protocols bgp group IBGP neighbor 172.31.1.1
set protocols bgp group IBGP neighbor 172.31.1.2
set protocols bgp group IBGP neighbor 172.31.1.4
set protocols bgp group EBGP-65100 peer-as 65100
set protocols bgp group EBGP-65100 neighbor 3.9.0.2
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 interface-type p2p
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 interface-type p2p
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 from neighbor 3.9.0.2
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 from neighbor 3.7.0.2
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then next-hop self
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then accept

vMX-4

set interfaces ge-0/0/0 speed 100m

set interfaces ge-0/0/0 unit 0 family inet address 10.0.34.2/30
set interfaces ge-0/0/1 unit 0 family inet address 10.0.24.2/30
set interfaces ge-0/0/3 unit 0 family inet address 4.9.0.1/30
set interfaces lo0 unit 0 family inet address 172.31.1.4/32
set routing-options router-id 172.31.1.4
set routing-options autonomous-system 65001
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 172.31.1.4
set protocols bgp group IBGP export CAMBIAR-NEXT-HOP
set protocols bgp group IBGP peer-as 65001
set protocols bgp group IBGP neighbor 172.31.1.1
set protocols bgp group IBGP neighbor 172.31.1.2
set protocols bgp group IBGP neighbor 172.31.1.3
set protocols bgp group EBGP-65100 neighbor 4.9.0.2 peer-as 65100
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 interface-type p2p
set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 interface-type p2p
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 from neighbor 4.9.0.2
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then next-hop self
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then accept


vMX-5

set interfaces ge-0/0/0 vlan-tagging
set interfaces ge-0/0/0 unit 20 vlan-id 20
set interfaces ge-0/0/0 unit 20 family inet address 192.168.20.1/24
set interfaces ge-0/0/0 unit 30 vlan-id 30
set interfaces ge-0/0/0 unit 30 family inet address 192.168.30.1/24
set interfaces ge-0/0/0 unit 40 vlan-id 40
set interfaces ge-0/0/0 unit 40 family inet address 192.168.40.1/24
set interfaces ge-0/0/0 unit 50 vlan-id 50
set interfaces ge-0/0/0 unit 50 family inet address 192.168.50.1/24
set interfaces ge-0/0/3 unit 0 family inet address 1.5.0.2/30
set routing-options static route 0.0.0.0/0 next-hop 1.5.0.1
set routing-options autonomous-system 64800
set protocols bgp export EXPORT-LAN
set protocols bgp group EBGP-CORE type external
set protocols bgp group EBGP-CORE peer-as 65001
set protocols bgp group EBGP-CORE neighbor 1.5.0.1
set policy-options policy-statement EXPORT-LAN term 1 from protocol direct
set policy-options policy-statement EXPORT-LAN term 1 from route-filter 192.168.20.0/24 exact
set policy-options policy-statement EXPORT-LAN term 1 from route-filter 192.168.30.0/24 exact
set policy-options policy-statement EXPORT-LAN term 1 from route-filter 192.168.40.0/24 exact
set policy-options policy-statement EXPORT-LAN term 1 from route-filter 192.168.50.0/24 exact
set policy-options policy-statement EXPORT-LAN term 1 then accept


vMX-6

set interfaces ge-0/0/0 vlan-tagging
set interfaces ge-0/0/0 unit 160 vlan-id 160
set interfaces ge-0/0/0 unit 160 family inet address 192.168.160.1/24
set interfaces ge-0/0/0 unit 170 vlan-id 170
set interfaces ge-0/0/0 unit 170 family inet address 192.168.170.1/24
set interfaces ge-0/0/0 unit 180 vlan-id 180
set interfaces ge-0/0/0 unit 180 family inet address 192.168.180.1/24
set interfaces ge-0/0/0 unit 190 vlan-id 190
set interfaces ge-0/0/0 unit 190 family inet address 192.168.190.1/24
set interfaces ge-0/0/3 unit 0 family inet address 2.6.0.2/30
set routing-options autonomous-system 64900
set protocols bgp export EXPORT-LAN
set protocols bgp group EBGP-CORE type external
set protocols bgp group EBGP-CORE neighbor 2.6.0.1 peer-as 65001
set policy-options policy-statement EXPORT-LAN from protocol direct
set policy-options policy-statement EXPORT-LAN from route-filter 192.168.160.0/24 exact
set policy-options policy-statement EXPORT-LAN from route-filter 192.168.170.0/24 exact
set policy-options policy-statement EXPORT-LAN from route-filter 192.168.180.0/24 exact
set policy-options policy-statement EXPORT-LAN from route-filter 192.168.190.0/24 exact
set policy-options policy-statement EXPORT-LAN then accept


vMX-7

set interfaces ge-0/0/0 unit 0 family inet address 10.0.78.1/30
set interfaces ge-0/0/0 unit 0 family iso
set interfaces ge-0/0/5 unit 0 family inet address 3.7.0.2/30
set interfaces lo0 unit 0 family inet address 172.30.15.7/32
set interfaces lo0 unit 0 family iso address 49.1501.7777.7777.7777.00
set routing-options autonomous-system 1501
set protocols bgp group EBGP-CORE type external
set protocols bgp group EBGP-CORE neighbor 3.7.0.1 peer-as 65001
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 172.30.15.7
set protocols bgp group IBGP export CAMBIAR-NEXT-HOP
set protocols bgp group IBGP peer-as 1501
set protocols bgp group IBGP neighbor 172.30.15.8
set protocols isis interface ge-0/0/0.0 level 2 disable
set protocols isis interface lo0.0 level 2 disable
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 from neighbor 3.7.0.1
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then next-hop self
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then accept


vMX-8

set interfaces ge-0/0/0 unit 0 family inet address 10.0.78.2/30
set interfaces ge-0/0/0 unit 0 family iso
set interfaces ge-0/0/3 unit 0 family inet address 8.10.0.1/30
set interfaces lo0 unit 0 family inet address 172.30.15.8/32
set interfaces lo0 unit 0 family iso address 49.1501.8888.8888.8888.00
set routing-options autonomous-system 1501
set protocols bgp group IBGP type internal
set protocols bgp group IBGP local-address 172.30.15.8
set protocols bgp group IBGP export CAMBIAR-NEXT-HOP
set protocols bgp group IBGP peer-as 1501
set protocols bgp group IBGP neighbor 172.30.15.7
set protocols bgp group EBGP-LISBOA type external
set protocols bgp group EBGP-LISBOA peer-as 65300
set protocols bgp group EBGP-LISBOA neighbor 8.10.0.2
set protocols isis interface ge-0/0/0.0 level 2 disable
set protocols isis interface lo0.0 level 2 disable
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 from neighbor 8.10.0.2
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then next-hop self
set policy-options policy-statement CAMBIAR-NEXT-HOP term 1 then accept


vMX-9

set interfaces ge-0/0/0 unit 0 family inet address 172.16.9.1/24
set interfaces ge-0/0/3 unit 0 family inet address 4.9.0.2/30
set interfaces ge-0/0/4 unit 0 family inet address 3.9.0.2/30
set routing-options autonomous-system 65100
set protocols bgp group EBGP-CUENCA export EXPORT-LAN
set protocols bgp group EBGP-CUENCA peer-as 65001
set protocols bgp group EBGP-CUENCA neighbor 4.9.0.1
set protocols bgp group EBGP-CUENCA neighbor 3.9.0.1
set policy-options policy-statement EXPORT-LAN from protocol direct
set policy-options policy-statement EXPORT-LAN from route-filter 172.16.9.0/24 exact
set policy-options policy-statement EXPORT-LAN then accept


vMX-10

set interfaces ge-0/0/0 unit 0 family inet address 172.16.10.1/24
set interfaces ge-0/0/3 unit 0 family inet address 8.10.0.2/30
set routing-options autonomous-system 65300
set protocols bgp group EBGP-MPLS type external
set protocols bgp group EBGP-MPLS export EXPORT-LAN
set protocols bgp group EBGP-MPLS peer-as 1501
set protocols bgp group EBGP-MPLS neighbor 8.10.0.1
set policy-options policy-statement EXPORT-LAN term 1 from protocol direct
set policy-options policy-statement EXPORT-LAN term 1 from route-filter 172.16.10.0/24 exact
set policy-options policy-statement EXPORT-LAN term 1 then accept


-------------------------------------------------------------------------------------------------------------------------------


Si miramos la tabla de rutas de los AS 65300 y AS 65100, vemos que recibimos todas las LAN de los AS 64800 y AS 64900. En este caso, Juniper nos quiere mostrar que reciben muchas rutas, aunque en este laboratorio veamos que no son tantas, pero tenemos que imaginar que estamos recibiendo miles de ellas para aplicar la política de limitación de prefijos/ redes que nos llegan. Obviamente no puedo emular que entren miles de rutas...


Imaginemos que son miles de rutas
Como vemos, estas redes las podemos sumarizar en una 192.168.0.0/16. Así que vamos a crear en vMX-3 y vMX-4 una "Agregado" y la política para reducir el envío de tantas subredes:


[edit routing-options]
   aggregate {
       route 192.168.0.0/16;
   }
[edit policy-options]
   policy-statement EXPORT-AGREGADO {
       term 1 {
           from {
               protocol aggregate;
               route-filter 192.168.0.0/16 exact;
           }
           then accept;
       }
       term 2 {
           then reject;
       }
   }



set protocols bgp group EBGP-MPLS export EXPORT-AGREGADO


Si miramos la tabla de rutas de vMX-10, vemos que ya solo nos llega el agregado:



Si ahora miramos en vMX-9:

Imaginemos que son miles de rutas

Seguimos teniendo todavía todas las rutas. ¿Por qué? Porque a la sesión EBGP que tenemos entre vMX-3 y vMX-9 no le hemos aplicado la política:

set protocols bgp group EBGP-65100 export EXPORT-AGREGADO

Ahora solo tiene el agregado y lo ve por 2 caminos

Como vemos, en la red CORE los enlaces entre vMX-1 - vMX2  y  vMX2 - vMX4, son enlaces de menor ancho de banda que los otros.

vMX-9 ahora llegará a las redes 192.168.0.0/16 en función del enlace que esté activo, en este caso el enlace que va a vMX-3 por la interface ge-0/0/4.0:



Pero si lo pensamos bien, aunque hayamos reducido el número de prefijos, cuando vMX-9 quiere llegar a las redes del AS 64900, dará un rodeo que no es eficiente.



Para optimizar este tráfico, vamos a crear otro "agregado" más preciso y lo añadimos a la política para que el tráfico que vaya al AS 64900 elija como primer salto el vMX-4 y, para el tráfico al AS 64800 se dirija a vMX-3:

vMX-3

set routing-options aggregate route 192.168.0.0/17

set policy-options policy-statement EXPORT-AGREGADO term 1 from route-filter 192.168.0.0/17 exact


vMX-4

set routing-options aggregate route 192.168.128.0/17

set policy-options policy-statement EXPORT-AGREGADO term 1 from route-filter 192.168.128.0/17 exact



El tráfico de vuelta escoge el camino más óptimo gracias al IGP.

Si se nos cayera uno de los dos equipos, ya sea vmX-3 o vMX-4, como seguimos propagando el agregado /16, seguiría siendo capaz de procesar ese tráfico aunque no se publique la ruta más óptima.


Ya tenemos la solución redundante para el AS 65100.

Sin embargo, vemos que el AS 65300 solo tiene un enlace. Queremos asegurar la disponibilidad de este AS, asi que vamos a montar un "Túnel GRE" a través de una conexión simple a Internet como solución de redundancia.



Configuraciones nuevas:

vMX-12

set interfaces ge-0/0/0 unit 0 family inet address 11.12.0.2/30
set interfaces ge-0/0/7 unit 0 family inet address 12.10.0.2/30
set routing-options autonomous-system 8010
set protocols bgp export EXPORT-CONECTADAS
set protocols bgp group INTERNET-5409 type external
set protocols bgp group INTERNET-5409 peer-as 5409
set protocols bgp group INTERNET-5409 neighbor 11.12.0.1
set policy-options policy-statement EXPORT-CONECTADAS term 1 from protocol direct
set policy-options policy-statement EXPORT-CONECTADAS term 1 then accept



vMX-11

set interfaces ge-0/0/0 unit 0 family inet address 11.12.0.1/30
set interfaces ge-0/0/7 unit 0 family inet address 1.11.0.2/30
set routing-options autonomous-system 5409
set protocols bgp export EXPORT-CONECTADAS
set protocols bgp group INTERNET-8010 type external
set protocols bgp group INTERNET-8010 peer-as 8010
set protocols bgp group INTERNET-8010 neighbor 11.12.0.2
set policy-options policy-statement EXPORT-CONECTADAS term 1 from protocol direct
set policy-options policy-statement EXPORT-CONECTADAS term 1 then accept



vMX-10

set interfaces ge-0/0/7 unit 0 family inet address 12.10.0.1/30
set interfaces gre unit 0 tunnel source 12.10.0.1
set interfaces gre unit 0 tunnel destination 1.11.0.1
set interfaces gre unit 0 family inet
set routing-options static route 1.11.0.1/32 next-hop 12.10.0.2






vMX-1

set interfaces ge-0/0/7 unit 0 family inet address 1.11.0.1/30
set interfaces gre unit 0 tunnel source 1.11.0.1
set interfaces gre unit 0 tunnel destination 12.10.0.1
set interfaces lo0 unit 0 family inet address 172.31.1.1/32

set routing-options static route 12.10.0.1/32 next-hop 1.11.0.2

-----------------------------------------------------------------------------------------------------------------------

Comprobamos que el túnel está levantado:




Ahora vamos a montar una sesión EBGP entre vMX-1 y vMX-10 a través de túnel. Este túnel no va a procesar tráfico a menos que se pierda la conectividad con la MPLS.

Creamos una Lo0.0 - 172.31.1.10/32 en vMX-10 para montar la sesión con esta y la Lo0.0 de vMX-1


vMX-10

set interfaces lo0 unit 0 family inet address 172.31.1.10/32
set protocols bgp group EBGP-GRE local-address 172.31.1.10
set protocols bgp group EBGP-GRE export EXPORT-LAN
set protocols bgp group EBGP-GRE neighbor 172.31.1.1 multihop ttl 1
set protocols bgp group EBGP-GRE neighbor 172.31.1.1 peer-as 65001

set routing-options static route 172.31.1.1/32 next-hop gre.0


vMX-1

set protocols bgp group EBGP-GRE local-address 172.31.1.1
set protocols bgp group EBGP-GRE neighbor 172.31.1.10 multihop ttl 1
set protocols bgp group EBGP-GRE neighbor 172.31.1.10 peer-as 65300

set routing-options static route 172.31.1.10/32 next-hop gre.0








Comprobamos que nos levanta la sesión EBGP a través del túnel:



Vemos que lasesión está levantada, pero también vemos que vMX-1 nos está pasando todas las redes 192.168.X.X.

Creamos un "agregado" en vMX-1


 set routing-options aggregate route 192.168.0.0/16 as-path path 65001


Y luego la política:


policy-statement EBGP-GRE-AGREGADO {
        term 1 {
            from {
                protocol aggregate;
                route-filter 192.168.0.0/16 exact;
            }
            then {                     
                as-path-expand last-as count 4; -  igual que un Prepend
                accept;
            }
        }
        term 2 {
            then reject;
        }
    }



Por último, lo aplicamos como export en el sesión EBGP del GRE:


set protocols bgp group EBGP-GRE export EBGP-GRE-AGREGADO



Ahora el acceso a través del túnel GRE es la opción secundaria, y hasta que no se caiga el enlace con la MPLS, el GRE no será el enlace activo. Fijaos que se le ha añadido al AS PATH el número del AS del CORE las veces que le hemos configurado, es decir, 4. Así hemos hecho que sea el secundario.








No hay comentarios:

Publicar un comentario