barra de menu

domingo, 4 de febrero de 2018

NOTAS CCIE WRITTEN - ROUTER REFLECTOR

Como ya sabemos, una de las reglas de BGP es que un iBGP no propaga a un iBGP las rutas que ha aprendido de otro iBGP. Esto es así para evitar bucles (Split Horizon). Con los Router Reflector evitamos la necesidad de tener configurado full mesh.




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
!

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
!
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
!

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
!
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
 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
!

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
!

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
!


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
 !


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
 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


sh ip bgp 192.168.0.0 / sh ip cef 192.168.0.0 detail

 
sh ip route repair




No hay comentarios:

Publicar un comentario