Saltar a contenido

OSPF Watcher

OSPF Watcher es una herramienta de monitoreo para cambios de topología OSPF. Escucha de forma pasiva el plano de control de OSPF — mediante una adyacencia GRE o BGP-LS — y registra cada cambio y/o lo exporta (mediante Logstash o Fluent Bit) hacia ELK, Zabbix, WebHooks, y el panel de monitoreo de Topolograph. Todo se distribuye como contenedores, así que arranca rápido.

vadims06/ospfwatcher

Arquitectura de OSPF Watcher + Topolograph con reglas XDP

Eventos detectados

  • Adyacencia de vecino OSPF arriba/abajo
  • Cambios de costo de enlace OSPF
  • Redes OSPF que aparecen/desaparecen
  • Atributos de TE de OSPF (mediante opaque LSA o BGP-LS): grupo administrativo, ancho de banda máximo del enlace, ancho de banda máximo reservable, ancho de banda no reservado, métrica de TE por defecto, y shared risk link group (SRLG)
  • Cambios de rol de nodo en OSPF: un router que se convierte (o deja de ser) en ABR (Area Border Router), ASBR (AS Boundary Router), o que entra/sale de max-metric (RFC 3137, stub router — todos los enlaces de tránsito se anuncian con la métrica máxima para desviar el tráfico de tránsito; el equivalente en OSPF del overload bit de IS-IS)

Monitoreo OSPF — evento de nueva subred

Monitoreo OSPF — cambio de métrica, costo anterior y nuevo

Monitoreo OSPF — eventos de enlace arriba/abajo en la línea de tiempo

Conectarlo

La conexión en sí se configura en Cómo Obtener la Topología:

  • Modo GRE — FRR forma una adyacencia OSPF mediante un túnel GRE. Un filtro OSPF XDP garantiza que el Watcher se mantenga en modo de solo escucha.
  • Modo BGP-LS — el router exporta la topología OSPF mediante BGP-LS; GoBGP + el reenviador alimentan al Watcher. Requiere la imagen vadims06/ospf-watcher:v3.1.0 o posterior.

Compatibilidad

Los cambios de red OSPF aparecen en el grafo de Topolograph a partir de topolograph v2.27 o posterior.

Laboratorio rápido (containerlab)

Un laboratorio ya preparado en containerlab/frr01 le permite observar cambios de OSPF sin hardware real:

./containerlab/frr01/prepare.sh
sudo clab deploy --topo ./containerlab/frr01/frr01.clab.yml

Registros del laboratorio containerlab de OSPF Watcher

En esta configuración mínima, el Watcher imprime los cambios de topología en un archivo de texto. Agregue Topolograph y/o ELK para visualizarlos y buscarlos — consulte la tabla de tamaños de implementación.

¿Sin dispositivo? Modo de prueba

Establezca TEST_MODE=True para reproducir una LSDB de demostración y eventos de ejemplo (pérdida de adyacencia, cambio de métrica) de extremo a extremo a través del flujo.

Formato del registro de eventos

Los eventos del Watcher son líneas simples separadas por comas. Un evento de host (adyacencia):

2023-01-01T00:00:00Z,demo-watcher,host,10.10.10.4,down,10.10.10.5,01Jan2023_00h00m00s_7_hosts,0,1234,192.168.145.5

10.10.10.5 detectó que el host 10.10.10.4, en la interfaz con 192.168.145.5, en el área 0 / AS 1234, quedó abajo en la marca de tiempo indicada.

Un evento de cambio de métrica:

2023-01-01T00:00:00Z,demo-watcher,network,192.168.13.0/24,changed,old_cost:10,new_cost:12,10.10.10.1,01Jan2023_00h00m00s_7_hosts,0.0.0.0,1234,internal,0

10.10.10.1 detectó que la métrica de la red stub interna 192.168.13.0/24 cambió de 10 a 12.

Un evento de cambio de flag de nodo:

2023-01-01T00:00:00Z,demo-watcher,node,10.1.1.3,changed,attr:abr,old:0,new:1,10.1.1.3,01Jan2023_00h00m00s_7_hosts,0,1234

10.1.1.3 se anunció a sí mismo como ABR (abr 01). Se emite un evento por cada flag cambiado (abr, asbr, maxmetric para OSPF; overload, attached para IS-IS). Entrar en max-metric también emite un evento metric por enlace, ya que el costo de cada enlace de tránsito salta a su máximo.

Estos registros son los que Logstash/Fluent Bit reenvían a ELK, Zabbix y Webhooks.

Modo de solo escucha (XDP)

En modo GRE, el Watcher ejecuta una instancia real de FRR — así que es crítico que nunca pueda inyectar prefijos en su dominio OSPF. Un filtro XDP inspecciona cada mensaje OSPF que FRR intenta enviar y descarta cualquier cosa que anuncie más que la propia red del túnel GRE del Watcher.

Wireshark antes/después del filtro XDP

Por ejemplo, si 8.8.8.8/32 se redistribuyera accidentalmente en el Watcher, la LSA 5 es descartada por XDP y nunca llega a la red. La misma protección se aplica a los mensajes Database Description y a las redes stub adicionales en LSA 1.

Comandos útiles:

# Watch XDP drop logs
sudo cat /sys/kernel/debug/tracing/trace_pipe

# Confirm the XDP program is attached to the Watcher's interface
ip l show dev it-vhost1025      # look for "prog/xdp id ..."

# Enable / disable the filter
sudo docker run -it --rm -v ./:/home/watcher/watcher/ --cap-add=NET_ADMIN \
  -u root --network host vadims06/ospf-watcher:latest \
  python3 ./client.py --action enable_xdp --watcher_num <num>

Solución de problemas

Modo GRE — confirme la adyacencia:

show ip ospf neighbor

Su dispositivo debería aparecer como vecino. Si no aparece, ejecute el script de diagnóstico del Watcher (consulte la sección de solución de problemas del repositorio).

Modo BGP-LS — el Watcher publica en Topolograph solo después de que la sesión BGP está activa. Verifíquelo:

docker logs watcher<num>-bgpls-ospf-bgplswatcher
docker exec -it watcher<num>-bgpls-ospf-bgplswatcher gobgp neighbor
docker exec -it watcher<num>-bgpls-ospf-bgplswatcher gobgp global rib -a ls

Consulte Sesión BGP-LS para el flujo de verificación completo.


Relacionado: IS-IS Watcher · ELK / Kibana · Zabbix · Webhooks