Ir al contenido

BGP y OSPF

El router habla BGP y OSPF por medio de BIRD 2, que el instalador deja configurado con el enrutamiento apagado. Usted nunca edita la configuración de BIRD: configura BGP y OSPF con dtvsol bgp … / dtvsol ospf …, la API o la pestaña Routing del monitor, y el router escribe /etc/bird/bird.conf por usted, lo verifica con BIRD antes de cargarlo y lo mantiene al día con sus ajustes.

Qué hace por un operador:

  • Anuncia sus propios bloques de direcciones (IPv4 e IPv6 públicas) a uno o más proveedores.
  • Toma rutas de cada proveedor: solo una ruta por defecto, o la tabla completa de Internet.
  • Conmuta por sí solo ante una falla: un proveedor principal y uno de respaldo; cuando el principal cae, el tráfico pasa al de respaldo.
  • Envía a blackhole una dirección bajo un ataque DDoS: se pide a los proveedores que descarten todo el tráfico hacia ella.
  • iBGP entre varios Super Routers del mismo AS, y OSPF con los demás routers de su red.
  • Solo salen sus prefijos. A un par (peer) se le envían solo los prefijos que usted lista con dtvsol bgp announce add (y las direcciones en blackhole, a los proveedores que tienen una comunidad de blackhole). Nada más puede filtrarse, aprenda lo que aprenda BIRD.
  • Solo entran rutas sensatas. De un proveedor: una ruta por defecto, o la tabla completa sin redes privadas ni reservadas y sin nada más largo que /24 (IPv4) o /48 (IPv6). Cada sesión tiene un límite de prefijos.
  • Todo cambio se puede deshacer. Un cambio que podría dejar al router sin conexión (sesiones, prefijos, OSPF) se carga con un temporizador de 120 segundos: verifique que las sesiones vuelvan y luego ejecute dtvsol bgp confirm. Sin la confirmación, BIRD vuelve por sí solo a la configuración anterior, y los ajustes del router lo siguen. dtvsol bgp undo lo hace de inmediato. Mientras un cambio espera, no se acepta ningún otro.
  • Solo se pueden anunciar bloques públicos: IPv4 de /8 a /24, IPv6 de /16 a /48.
  1. Su número de AS y un router id (una dirección IPv4 de este router):

    Ventana de terminal
    dtvsol bgp set asn 65010
    dtvsol bgp set router-id XXX.XXX.XXX.2
  2. Sus bloques de direcciones:

    Ventana de terminal
    dtvsol bgp announce add XXX.XXX.XXX.0/22
    dtvsol bgp announce add XXXX:XXXX::/32
  3. Sus proveedores (su dirección y su AS; la contraseña solo si le dieron una):

    Ventana de terminal
    dtvsol bgp peer add isp-a XXX.XXX.XXX.1 64500 upstream default primary blackhole 64500:666
    dtvsol bgp peer add isp-b XXX.XXX.XXX.5 64501 upstream default backup password 'secret'
    dtvsol bgp peer add isp-a6 XXXX:XXXX::1 64500 upstream default primary
  4. Encienda BGP, revise las sesiones y conserve el cambio:

    Ventana de terminal
    dtvsol bgp set on
    dtvsol bgp # the sessions should reach Established
    dtvsol bgp confirm # within 120 s, or it is undone

Mientras BGP está apagado, los ajustes se guardan de inmediato, sin temporizador: todavía no hay nada que cortar.

routes Qué le envía el proveedor Memoria
default Solo su ruta por defecto. Sencillo, y la conmutación ante fallas funciona igual. Nada apreciable
full La tabla completa de Internet (alrededor de 1 millón de rutas IPv4 y 200 000 IPv6): cada destino sale por el mejor proveedor. Unos 2 GB más por cada sesión con tabla completa

Un proveedor principal (primary) es el preferido para el tráfico de salida (local preference 200). Un proveedor de respaldo (backup) recibe local preference 50 y se le envían sus prefijos con su AS repetido tres veces, de modo que Internet también prefiere al principal para el tráfico de entrada. Cuando la sesión del principal cae, ambos sentidos pasan al de respaldo por sí solos.

Las rutas de BGP entran al kernel con métrica 32. Una ruta por defecto estática con una métrica más alta queda detrás de ellas como respaldo. Las rutas estáticas IPv6 suelen tener métrica 1024, así que allí BGP va primero. Una ruta por defecto estática IPv4 sin métrica (0) queda delante de BGP: dele una métrica mayor que 32 (Settings → Interfaces en el monitor, o dtvsol netcfg) para que BGP sea la ruta principal.

Sin BFD, BGP detecta un proveedor caído solo cuando vence su temporizador de espera (hold timer): de 90 a 240 segundos, salvo que se caiga el enlace mismo. Con BFD en un par, el router y el par se comprueban cada 300 ms, y un par que calla se declara caído en menos de un segundo (0,9 s en nuestro laboratorio); sus rutas salen de inmediato y el tráfico pasa al otro proveedor.

Ventana de terminal
dtvsol bgp peer add isp-a XXX.XXX.XXX.1 64500 bfd # nobfd lo apaga

El proveedor también debe activar BFD de su lado — pídaselo. dtvsol bgp muestra el estado de BFD debajo de cada par.

Con la tabla completa, una ruta equivocada o secuestrada (alguien anunciando su bloque o el de una red grande) sería creída. RPKI compara el origen de cada ruta con las autorizaciones de origen que los dueños de las direcciones firmaron en su registro (LACNIC, ARIN, RIPE, APNIC, AFRINIC):

Ventana de terminal
dtvsol bgp set rpki on
  • Las rutas cuyo origen está probado como falso (invalid) se descartan de los proveedores con tabla completa. Las rutas sin autorización (unknown) se conservan, como hoy en todo Internet.
  • Los datos validados vienen de rpki-client, que el instalador prepara con los cinco registros y que se ejecuta cada hora, solo con la CPU que el router no usa, mientras RPKI está activo (cada vez tarda unos diez minutos). El router vuelve a cargar los datos solo cuando cambian.
  • Se genera una advertencia cuando faltan los datos o tienen más de dos horas.

Cuando una de sus direcciones está bajo ataque:

Ventana de terminal
dtvsol bgp blackhole add XXX.XXX.XXX.66

La dirección se envía como ruta de host (/32 o /128) a cada proveedor que tenga una comunidad de blackhole (blackhole <as:n> en el par: pida a su proveedor la suya; 65535:666 es la habitual), y el router también descarta el tráfico hacia ella. El abonado que está detrás queda sin servicio hasta que usted la quite:

Ventana de terminal
dtvsol bgp blackhole del XXX.XXX.XXX.66

Un blackhole se carga de inmediato, sin el temporizador de 120 segundos. Solo se pueden enviar a blackhole direcciones públicas.

Varios Super Routers del mismo AS (uno por grupo de OLT, por ejemplo) pueden compartir sus rutas:

Ventana de terminal
dtvsol bgp peer add sr-2 10.0.0.2 65010 ibgp

Cada uno le envía al otro sus propios prefijos y las rutas que aprendió de sus proveedores, consigo mismo como siguiente salto. Un par en un enlace compartido no necesita nada más. Para un par que no está conectado directamente, agregue multihop <n> y asegúrese de que su dirección sea alcanzable (OSPF se encarga de eso).

OSPF aprende y comunica las rutas de su propia red con sus otros routers (IPv4 con OSPFv2, IPv6 con OSPFv3, en un área):

Ventana de terminal
dtvsol ospf iface add vlan20 cost 10 # talk OSPF with the routers on vlan20
dtvsol ospf iface add vlan100 passive # tell vlan100's network, talk to no one there
dtvsol ospf default on # tell the OSPF routers our (BGP) default route
dtvsol ospf on
dtvsol ospf # neighbours should reach Full
dtvsol bgp confirm
  • passive: la red de la interfaz se anuncia, pero no se busca ningún vecino en ella (las VLAN de los abonados, por ejemplo).
  • ospf default on: la ruta por defecto que este router tiene de BGP se anuncia en OSPF, de modo que los routers detrás de él envían aquí su tráfico de Internet.
  • ospf accept-default on: toma una ruta por defecto de OSPF. Déjelo apagado en el router de borde.
  • ospf area <id>: el área, 0.0.0.0 por defecto.

OSPF necesita el router id (dtvsol bgp set router-id …) pero no BGP.

  • Sesión BGP caída: crítica para un proveedor principal, una advertencia para los demás. Se mantiene hasta que la sesión vuelve a estar Established.
  • OSPF: ningún vecino en una interfaz: una advertencia por cada interfaz OSPF activa (no pasiva) sin un vecino en estado Full.
  • bird.service detenido es crítico mientras BGP u OSPF está encendido.

Estas alarmas están en el área Network. La pantalla 24/7 muestra un recuadro Routing (sesiones activas, rutas recibidas, vecinos OSPF, blackholes) mientras BGP u OSPF está encendido.

  • Pestaña Routing: lo mismo, desde el navegador.
  • API de enrutamiento: GET /bgp, POST /bgp/<op>.
  • dtvsol bgp config imprime la configuración que ejecuta BIRD, con las contraseñas ocultas.

Este sitio fue escrito con ayuda de IA y revisado por nuestro equipo.