Resulta que toda la vida que algún cliente desea tener alta disponibilidad en su red, nosotros como ISP le ofrecemos realizar un Dual-Homed a nivel WAN, es decir, le proporcionamos un par de enlaces ya sea MPLS o Internet y a través de un atributo de BGP (Communities) enviamos los mismos segmentos de red por ambos enlaces, los routers que se encuentran en la nube, hacen su magia y convierten ese valor de comunidad en un valor de Local Preference de esta forma ambos enlaces se encuentran propagando las mismas redes pero nunca se genera un loop ya que la nube siempre preferirá el enlace con un mayor valor de Local Preference.
Hace poco, debido a una limitante en la tecnología de ultima milla en los enlaces que entregamos no fue posible realizar dicha configuración, por lo cual, fue necesario encontrar un workaround y simular la configuración del Dual-Homed, así fue como encontramos una opción llamada “as-path prepend”. Básicamente el comando te permite anteponer sistemas autónomos antes de llegar a un destino. Pero para que esto quede más claro veamos un ejemplo.
Escenario
Nuestro cliente cuenta con un segmento de red público en donde tiene publicaciones de paginas de internet y acceso a algunos servidores. La empresa ha contratado un par de enlaces pero como he comentado no podemos utilizar el método tradicional de Alta disponibilidad. Tendremos dos routers uno de ellos para la función de equipo principal mientras que el otro será nuestro respaldo. El direccionamiento público que se respaldará es 200.200.31.0/24.
Veamos la distribución de funciones y el direccionamiento de los routers.
Router 1: Realizará la función de ISP, utilizará el sistema autónomo 8151 y tendrá dos enlaces hacia los equipos del cliente.
- Hacia R2 tendrá el direccionamiento 192.168.1.0/24. Router 1 ocupará la dirección 192.168.1.1/24 mientras que R2 utilizará la dirección IP 192.168.1.2
- Hacia R3 tendrá el direccionameinto 192.168.2./24. Router 1 ocupará la dirección 192.168.2.1/24 mientras que R3 utilizará la dirección IP 192.168.2.2
- Los equipos del cliente (R2 & R3) utilizarán el sistema autónomo 21692.
Configuración Inicial.
R1
'' interface Ethernet0/0 '' description CONEXIÓN CON R2 '' ip address 192.168.1.1 255.255.255.0 '' ! '' interface Ethernet0/1 '' description CONEXIÓN CON R3 '' ip address 192.168.2.1 255.255.255.0 '' ! '' router bgp 8151 '' bgp log-neighbor-changes '' neighbor 192.168.1.2 remote-as 21692 '' neighbor 192.168.1.2 default-originate '' neighbor 192.168.2.2 remote-as 21692 '' neighbor 192.168.2.2 default-originate '' !
R2
interface Loopback2 description SEGMENTO PUBLICO ip address 200.200.31.2 255.255.255.0 ! interface Ethernet0/0 ip address 192.168.1.2 255.255.255.0 ! router bgp 21692 bgp log-neighbor-changes network 200.200.31.0 neighbor 192.168.1.1 remote-as 8151
R3
interface Loopback3 description SEGMENTO PUBLICO ip address 200.200.31.3 255.255.255.0 ! interface Ethernet0/0 ip address 192.168.2.2 255.255.255.0 ! router bgp 21692 bgp log-neighbor-changes network 200.200.31.0 neighbor 192.168.2.1 remote-as 8151
Si echaremos un vistazo al ISP este vería la red 200.200.31.0/24 en igualdad de circunstancias, sin embargo, debido a los parámetros que utiliza BGP para el desempate de redes le dará preferencia al enlace que mayor tiempo lleva arriba. Simulando una falla en enlace principal vemos que la red publica es conocido por el enlace de respaldo.
SP#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route Gateway of last resort is not set 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.1.0/24 is directly connected, Ethernet0/0 L 192.168.1.1/32 is directly connected, Ethernet0/0 192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.2.0/24 is directly connected, Ethernet0/1 L 192.168.2.1/32 is directly connected, Ethernet0/1 B 200.200.31.0/24 [20/0] via 192.168.2.2, 00:05:50 ISP#
Pero qué pasa cuando el enlace principal vuelve a estar operativo? ¿Cómo hacemos para que nuestro segmento de red vuelva a ser conocido por nuestro enlace principal sin tener que tirar nuestro enlace secundario? Hasta que no haya una caída del enlace secundario BGP seguirá prefiriendo en enlace de respaldo, aquí es dónde entra nuestro amigo “as-path prepend”.
Dentro de router 3 crearemos un route-map en el cual antepondremos el sistema autónomo un par de veces.
R3
route-map PREPEND permit 10 set as-path prepend 21692 21692
Después aplicaremos el route map dentro de nuestra configuración de BGP. Lo aplicaremos a la salida.
router bgp 21692 neighbor 192.168.2.1 route-map PREPEND out
Revisando el tiempo de ambos sesiones desde el router ISP veremos que en enlace de respaldo tiene mayor tiempo operando que el principal.
ISP#show ip bgp summary BGP router identifier 192.168.2.1, local AS number 8151 BGP table version is 7, main routing table version 7 2 network entries using 280 bytes of memory 3 path entries using 240 bytes of memory 3/1 BGP path/bestpath attribute entries using 432 bytes of memory 2 BGP AS-PATH entries using 48 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 1000 total bytes of memory BGP activity 2/0 prefixes, 4/1 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.2 4 21692 35 40 7 0 0 00:28:36 1 192.168.2.2 4 21692 107 109 7 0 0 01:30:20 1
Ahora bien, si revisamos la ruta podremos ver que esta es conocido ya por el enlace principal.
ISP#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route 192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.1.0/24 is directly connected, Ethernet0/0 L 192.168.1.1/32 is directly connected, Ethernet0/0 192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.2.0/24 is directly connected, Ethernet0/1 L 192.168.2.1/32 is directly connected, Ethernet0/1 B 200.200.31.0/24 [20/0] via 192.168.1.2, 00:03:15 ISP#
¿Y cómo validamos que nuestro comando funciona? Vemos la salida del comando “show ip bgp”
ISP#show ip bgp BGP table version is 7, local router ID is 192.168.2.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path 0.0.0.0 0.0.0.0 0 i *> 200.33.31.0 192.168.1.2 0 0 21692 i * 192.168.2.2 0 0 21692 21692 21692 i ISP#
Con esta configuración podremos manipular el anuncio de nuestra redes y hacer nuestro pequeño proceso de alta disponibilidad.