Cuando un RR propaga una ruta, le añade un atributo CLUSTER_LIST. En este atributo añade su propio CLUSTER_ID. Esto se usa para prevenir bucles, porque si le llega un UPDATE que contine su ID, directamente lo descarta.
Por defecto el CLUSTER ID es el mismo que el BGP ID, pero puede ser cualquier número de 32 bits. Existe la opción de tener múltiples ID para poder asignar un ID por vecino/s.
Tenemos 3 roles en esta arquitectura:
- RR -> equipo/s que hace/n de RR
- Client -> aquellos a los que les hemos configurado en el RR con el comando route-reflector-client
- Non-Client -> equipos que no les hemos configurado en el RR como client
El Route Reflector y sus clientes forman un Cluster. Los Non-Cliet tiene que tener full mesh contra todos los equipos.
El RR (Router Reflector) es un punto donde centralizar las sesiones BGP.
Hay dos reglas que se cumplen en el RR:
- Rutas aprendidas de un Non-Client pueden ser enviadas a un eBGP y a un Client, pero no pueden enviarse a otro Non-Client
- Ruta aprendidas de Clients se pueden enviar a eBGP, a Non-Clients y también a los Clients, excepto al que la origina.
Dentro de un AS el atributo AS_Path no cambia. Pero BGP usa dos atributos para Router Reflector:
- ORIGINATOR_ID
- CLUSTER_ID - dentro de cada AS puede haber muchos clusters.
Si el cluster solo tiene un RR, el CLUSTER_ID será el Router ID del RR. Si tiene más de uno, tiene que ser configurado manualmente.
Un ejemplo de Route Reflection
Los PE's solo forman vecindad con el RR. ASí nos evitamos el full mesh.
Configuraciones
P
interface Loopback0
ip address 4.4.4.4 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.3 255.255.255.254
!
interface Ethernet0/1
ip address 10.0.0.5 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 0.0.0.0 255.255.255.255 area 0
!
ip address 4.4.4.4 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.3 255.255.255.254
!
interface Ethernet0/1
ip address 10.0.0.5 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 0.0.0.0 255.255.255.255 area 0
!
PE1
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.0 255.255.255.254
!
interface Ethernet1/0
ip address 172.16.1.1 255.255.255.252
no keepalive
!
router ospf 1
mpls ldp autoconfig
network 1.1.1.1 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 next-hop-self
neighbor 172.16.1.2 remote-as 65501
!
ip address 1.1.1.1 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.0 255.255.255.254
!
interface Ethernet1/0
ip address 172.16.1.1 255.255.255.252
no keepalive
!
router ospf 1
mpls ldp autoconfig
network 1.1.1.1 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 next-hop-self
neighbor 172.16.1.2 remote-as 65501
!
PE2
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.2 255.255.255.254
!
interface Ethernet1/0
ip address 172.16.2.1 255.255.255.252
no keepalive
!
router ospf 1
mpls ldp autoconfig
network 2.2.2.2 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 next-hop-self
neighbor 172.16.2.2 remote-as 65502
!
ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.2 255.255.255.254
!
interface Ethernet1/0
ip address 172.16.2.1 255.255.255.252
no keepalive
!
router ospf 1
mpls ldp autoconfig
network 2.2.2.2 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 next-hop-self
neighbor 172.16.2.2 remote-as 65502
!
PE3
interface Loopback0
ip address 7.7.7.7 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.7 255.255.255.254
!
ip address 7.7.7.7 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.7 255.255.255.254
!
interface Ethernet0/1
ip address 172.16.3.1 255.255.255.252
!
interface Ethernet1/3
ip address 10.0.0.8 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 7.7.7.7 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0
ip address 172.16.3.1 255.255.255.252
!
interface Ethernet1/3
ip address 10.0.0.8 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 7.7.7.7 0.0.0.0 area 0
network 10.0.0.0 0.0.0.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 next-hop-self
neighbor 172.16.3.2 remote-as 65503
!
!
CE1
interface Loopback0
ip address 5.5.5.5 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.1.2 255.255.255.252
!
router bgp 65501
bgp log-neighbor-changes
redistribute connected
neighbor 172.16.1.1 remote-as 65000
!
ip address 5.5.5.5 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.1.2 255.255.255.252
!
router bgp 65501
bgp log-neighbor-changes
redistribute connected
neighbor 172.16.1.1 remote-as 65000
!
CE2
interface Loopback0
ip address 6.6.6.6 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.2.2 255.255.255.252
!
router bgp 65502
bgp log-neighbor-changes
redistribute connected
neighbor 172.16.2.1 remote-as 65000
!
ip address 6.6.6.6 255.255.255.255
!
interface Ethernet1/0
ip address 172.16.2.2 255.255.255.252
!
router bgp 65502
bgp log-neighbor-changes
redistribute connected
neighbor 172.16.2.1 remote-as 65000
!
CE3
interface Loopback0
ip address 8.8.8.8 255.255.255.255
!
interface Ethernet0/0
ip address 172.16.3.2 255.255.255.252
!
router bgp 65503
bgp log-neighbor-changes
redistribute connected
neighbor 172.16.3.1 remote-as 65000
!
ip address 8.8.8.8 255.255.255.255
!
interface Ethernet0/0
ip address 172.16.3.2 255.255.255.252
!
router bgp 65503
bgp log-neighbor-changes
redistribute connected
neighbor 172.16.3.1 remote-as 65000
!
RR
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.1 255.255.255.254
!
interface Ethernet0/1
ip address 10.0.0.4 255.255.255.254
!
interface Ethernet0/2
ip address 10.0.0.6 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 65000
neighbor 1.1.1.1 update-source Loopback0
neighbor 2.2.2.2 remote-as 65000
neighbor 2.2.2.2 update-source Loopback0
neighbor 7.7.7.7 remote-as 65000
neighbor 7.7.7.7 update-source Loopback0
!
ip address 3.3.3.3 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.0.1 255.255.255.254
!
interface Ethernet0/1
ip address 10.0.0.4 255.255.255.254
!
interface Ethernet0/2
ip address 10.0.0.6 255.255.255.254
!
router ospf 1
mpls ldp autoconfig
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 65000
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 65000
neighbor 1.1.1.1 update-source Loopback0
neighbor 2.2.2.2 remote-as 65000
neighbor 2.2.2.2 update-source Loopback0
neighbor 7.7.7.7 remote-as 65000
neighbor 7.7.7.7 update-source Loopback0
!
Ahora miramos primero las tablas de bgp y de la global.
RR recibe las rutas pero no las propaga. En cuanto configuramos el route-reflector-client, empieza a propagarlo todo.
En RR
router bgp 65000
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 route-reflector-client
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 route-reflector-client
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 route-reflector-client
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 route-reflector-client
exit-address-family
!
!
Se ven las rutas de los CE en todos los equipos y de CE1 a CE2 hay comunicación. Ahora todos se ven con todos.
En este escenario, aunque tenemos 2 Clients y 1 Non-Client se cumplen las reglas. Vamos a hacer ahora a PE2 tenga un rol de Non-Client.
RR
router bgp 65000
no neighbor 2.2.2.2 route-reflector-client
Aquí comprobamos que RR está recibiendo la loopback de CE3, la 8.8.8.8. Sin embargo, después vemos que no se las envía a PE2. Y esto sucede porque tiene que cumplir una de las dos reglas: si viene de un Non-Client no se puede enviar a otro Non-Client. Además, vemos que PE1 si que las recibe al ser un Client.
Ahora vamos a unir CE1 y CE3:
CE1
interface Ethernet0/3
ip address 192.168.0.1 255.255.255.0
!
CE3
interface Ethernet0/3
ip address 192.168.0.3 255.255.255.0
!
Si nos vamos a PE2, podemos ver que nos llega la ruta 192.168.0.0/24.
Si hacemos un show ip bgp 192.168.0.0 y show ip cef 192.168.0.0 vemos por donde se llega a esa ruta.
Vamos a configurar Additional Paths para que tenga una ruta de backup y cuando se caiga el vecino no tengan que recalcular, pues la tiene ya en la CEF.
PE1-PE2-PE3
router bgp 65000
address-family ipv4
bgp additional-paths select all
bgp additional-paths send receive
bgp additional-paths install
RR
router bgp 65000
address-family ipv4
bgp additional-paths select all - seleccionamos las rutas
bgp additional-paths send receive - habilitamos Additional paths
bgp additional-paths install
neighbor 1.1.1.1 advertise additional-paths all - propagamos las rutas
neighbor 2.2.2.2 advertise additional-paths all
neighbor 7.7.7.7 advertise additional-paths all
Si ahora vamos a PE vemos que tiene dos rutas BGP y una de ellas la marca como "backup/repair".También vemos que la tabla CEF tiene 2 entradas
Ahora vamos a unir CE1 y CE3:
CE1
interface Ethernet0/3
ip address 192.168.0.1 255.255.255.0
!
CE3
interface Ethernet0/3
ip address 192.168.0.3 255.255.255.0
!
Si nos vamos a PE2, podemos ver que nos llega la ruta 192.168.0.0/24.
Si hacemos un show ip bgp 192.168.0.0 y show ip cef 192.168.0.0 vemos por donde se llega a esa ruta.
Vamos a configurar Additional Paths para que tenga una ruta de backup y cuando se caiga el vecino no tengan que recalcular, pues la tiene ya en la CEF.
PE1-PE2-PE3
router bgp 65000
address-family ipv4
bgp additional-paths select all
bgp additional-paths send receive
bgp additional-paths install
RR
address-family ipv4
bgp additional-paths select all - seleccionamos las rutas
bgp additional-paths send receive - habilitamos Additional paths
bgp additional-paths install
neighbor 1.1.1.1 advertise additional-paths all - propagamos las rutas
neighbor 2.2.2.2 advertise additional-paths all
neighbor 7.7.7.7 advertise additional-paths all
Si ahora vamos a PE vemos que tiene dos rutas BGP y una de ellas la marca como "backup/repair".También vemos que la tabla CEF tiene 2 entradas
sh ip bgp 192.168.0.0 / sh ip cef 192.168.0.0 detail |
No hay comentarios:
Publicar un comentario