BGP como plano de control
- jogofus
- hace 4 días
- 4 Min. de lectura
La primera pregunta que tenemos que hacernos es: ¿conocemos BGP?
Siendo muy reduccionista, Internet funciona gracias a BGP. Todas las redes del mundo están conectadas entre ellas a través de BGP.
Pero, ¿qué es eso de BGP?
Como todos sabemos, Internet es una red de redes, compuesta por miles de redes a su vez más pequeñas. Cada red "pequeña" la llamamos sistema autónomo, o AS.
Recurriendo a Amazon, BGP significa Border Gateway Protocol , o protocolo de puerta de enlace fronteriza. Se trata de un conjunto de reglas que determina cuales son las mejores rutas en la red para alcanzar un punto concreto de todo ese tejido de redes.
Es decir, si yo quiero llegar desde el punto A al punto B, separados por miles de kilómetros, pasaré a través de varios routers haciendo la función de BGP, decidiendo cuál es el camino óptimo para llegar donde necesitamos.

Para poder disponer de un ASN (número de sistema autónomo) deberemos realizar los trámites correspondientes que, adelanto, no son baratos ni fáciles.
¿Esto significa que si no soy un ISP no puedo usar BGP? Ni mucho menos.
BGP es un estándar y protocolo abierto, por lo que es implementado en la gran mayoría de dispositivos de gama media-alta de red, y estoy seguro que si nos estamos planteando BGP tendremos uno de esos dispositivos para ello en nuestro CPD.
En el caso de grandes empresas que quieren compartir grandes tablas de rutas entre distintas sedes, iBGP es una gran solución. ¿Ventaja frente a OSPF? No usa multicast. Le tenemos que decir el peer al que nos vamos a conectar para generar adyacencia y "descargarnos" su tabla de rutas. De esta forma, como hacíamos con OSPF, las declarábamos en un único router y este las propagaba, o mejor dicho, las anunciaba, al resto de routers conectados a él.
Ventajas y desventajas
Como todo en esta vida, también tiene sus ventajas y desventajas.
A diferencia de OSPF, no es tán rápido a la hora de convergencia. Es decir, si un enlace se nos cae, tardará ligeramente más que OSPF, que es un protocolo state-link.
Pero BGP es más escalable y permite manejar un mayor número de rutas, además de redundancia controlada.
Como hemos dicho antes, no utiliza multicast, por lo que no inunda la red con anuncios como OSPF con sus OSPF Hello y demás para comprobar el estado de los enlaces y de las tablas de rutas.

BGP es incremental y envía las tablas de rutas cuando genera la primera adyacencia o cuando hay una modificación de las tablas. Pero hay que dejar claro que si hay una modificación, no se envía todo el RIB (Routing Information Base), sino que solo se envía la información modificada/añadida/eliminada.
Por defecto, BGP envia Keepalives para mantener viva la sesión TCP cada 60 segundos.
Vamos con el laboratorio
Como sabéis, me gusta demostrar las cosas con un laboratorio práctico, que me he encontrado en alguna ocasión o que planeo montar proximamente.
En este caso el esquema es el siguiente:
wg1: Servidor wireguard
wg2: Cliente wireguard
(Cada uno está en una sede separada geográficamente)
A él se conectan los router que generarán las adyacencias BGP a través del túnel.
r1 y r2 serán los encargados de generar esas tablas de rutas y serán la ruta por defecto de sw1 y sw2.
sw1 y sw2 compartirán sus redes con los routers mediante OSPF.

La creación del tunel Wireguard me la salto porque estoy seguro que es algo que casi todos vosotros ya hacéis en vuestro día a día.
Comenzamos configurando r1:
Primero las interfaces:
interface Ethernet0/0
ip address 10.50.0.2 255.255.255.0
duplex auto
!
interface Ethernet0/1
no ip address
duplex auto
!
interface Ethernet0/1.1
encapsulation dot1Q 1 native
ip address 192.168.150.1 255.255.255.0
!
interface Ethernet0/1.10
encapsulation dot1Q 10
!
interface Ethernet0/1.20
encapsulation dot1Q 20
!
Procedemos a configurar OSPF para que los Nexus nos pasen sus tablas de rutas:
router ospf 1
router-id 1.1.1.1
network 10.50.0.0 0.0.0.255 area 0
network 192.168.150.0 0.0.0.255 area 0
!
Y ya configuramos BGP:
router bgp 100
bgp log-neighbor-changes
neighbor 10.60.0.2 remote-as 200
neighbor 10.60.0.2 ebgp-multihop 4
neighbor 10.60.0.2 update-source Ethernet0/0
!
address-family ipv4
redistribute ospf 1
neighbor 10.60.0.2 activate
exit-address-family
!
Para r2 sería lo mismo pero modificando las direcciones IP, para que coincidan con las de r1.
Ahora vamos con los Nexus. Es cierto que los Nexus son un poco distintos a la hora de configurar OSPF, pero es bastante intuitivo.
Primero habilitamos las features necesarias:
feature ospf
feature bgp
feature interface-vlan
Creamos las VLAN y las interfaces correspondientes:
ip route 0.0.0.0/0 10.50.0.1
vlan 1,10,20
vrf context management
interface Vlan1
ip router ospf 1 area 0.0.0.0
interface Vlan10
no shutdown
ip address 10.0.10.1/24
ip router ospf 1 area 0.0.0.0
interface Vlan20
no shutdown
ip address 10.0.20.1/24
ip router ospf 1 area 0.0.0.0
Como podéis ver, aquí indicamos a qué proceso de OSPF y a qué área corresponde. Con esto me refería a que era un poco distinto la forma de configurarlo.
Configuramos OSPF:
router ospf 1
router-id 2.2.2.2
En el otro Nexus tendríamos que hacer lo propio.
Y ahora vamos con las comprobaciones.
¿Llegaremos desde la vlan 10 de sw1 a la vlan 30 de sw2?

En la tabla de rutas de r1 ya vemos como tenemos las rutas por OSPF (las marcadas con una O, y las de BGP, las marcadas con una B)

Como se ve, no tenemos ninguna ruta creada, más que el default gateway, y aún así podemos comunicarnos con las redes de la otra sede, anunciando las rutas por BGP a través de Wireguard.
¡Seguimos en el siguiente!
Comments