OpenKeel: la solución Cloud soberana, francesa y de alcance europeo, del grupo inherent Descubrir inherent

Componentes · Redes

OVN-BGP-Agent

Anuncia por BGP las IP de las VM y las IP flotantes accesibles a través del nodo.

Go FRR y OVNopenkeel-ovn-bgp-agent

El módulo

OpenKeel's Go implementation of OpenStack ovn-bgp-agent (stable/2026.2, f770768b41dc), written from the reverse-spec reverse-spec-ovn-bgp-agent/.

The agent runs on every node whose FRR peers with the BGP fabric. It watches the OVN Northbound database (read-only) and, for every IP reachable through this node, it does two things:

  • it wires the kernel and OVS so that traffic reaches OVN: ip rule and route in a per-bridge routing table, permanent neighbour, NDP proxy, and the MAC-tweak flow (cookie 999);
  • it announces the IP by adding it to the dummy bgp-nic in VRF bgp-vrf, which the local FRR redistributes.

The IPs it covers are provider-network VM IPs, floating IPs (distributed and centralized, switched at run time by NB_Global external_ids:neutron:fip-distributed), router gateways, tenant subnets (host or subnet advertisement, SNAT filter, address scopes, GUA-only), OVN load-balancer VIPs and VIP-FIPs, and port-forwarding FIPs.

Modulegithub.com/openkeel/openkeel-ovn-bgp-agent
Executableovn-bgp-agent (cmd/ovn-bgp-agent)
Driver / exposing methodnb_ovn_bgp_driver / underlay (the others are refused at start: docs/CONFORMANCE.md)
APInone; :9750 serves /healthz, /readyz, /metrics
Statenone (derived from OVN and the node); /etc/iproute2/rt_tables keeps the table numbers
DeliveryDaemonSet, host network, NET_ADMIN SYS_ADMIN DAC_OVERRIDE (docs/SECURITY.md)

Extracto de openkeel-ovn-bgp-agent/README.md (en inglés).

Cómo se prueba la compatibilidad

El agente no tiene API REST, por lo que la compatibilidad se verifica con vectores de coincidencia de eventos y escenarios de efectos secundarios en el nodo grabados desde el agente de Python, así como en un kernel real.

Tests unitarios y golden tests

Vectores de coincidencia de eventos

Los filtros de eventos del Northbound coinciden exactamente con los cambios de filas OVN a los que reacciona el agente de Python.

Ejecución

make test-vectors sobre cases-event-match_stable-2026.2.json, con la semántica de Mock de Python reproducida.

Último resultado 122 / 122 dentro del alcance (casos SB y EVPN fuera del alcance); 20 / 20 casos escritos a mano para los filtros sin vectores.

Fuente: openkeel-ovn-bgp-agent/docs/CONFORMANCE.md

Escenario

Escenarios de efectos secundarios

Las direcciones, enlaces, vecinos, rutas, reglas, flujos y el texto FRR que quedan en el nodo coinciden con el estado final de Python grabado.

Ejecución

internal/reconcile/scenarios_test.go sobre side-effects_stable-2026.2.json, make test-vectors.

Último resultado 10 / 10 dentro del alcance; 1 fuera del alcance (SB EVPN). Tres defectos de Python no reproducidos deliberadamente.

Fuente: openkeel-ovn-bgp-agent/docs/CONFORMANCE.md

Tests unitarios y golden tests

Toma de control de un nodo configurado por Python

Las reglas de orden, los residuos y la idempotencia se mantienen, y el agente asume un nodo configurado por el agente de Python.

Ejecución

internal/reconcile/reconcile_test.go.

Último resultado Superado.

Fuente: openkeel-ovn-bgp-agent/docs/CONFORMANCE.md

Tests unitarios y golden tests

Cableado real del kernel

Cableado, idempotencia y retirada mediante rtnetlink en un kernel real (OVS y FRR simulados).

Ejecución

make test-linux en un namespace de red desechable.

Último resultado Superado.

Fuente: openkeel-ovn-bgp-agent/docs/CONFORMANCE.md

Excluido del rewrite

El agente BGP implementa el driver Northbound solo con exposición underlay, como un único proceso de reconciliación, y rechaza los modos Southbound, EVPN y L2 extendido.

Mecánica interna simplificada

Drivers Southbound, EVPN y L2 extendido

Por qué se excluyó

Alcance del rewrite: solo nb_ovn_bgp_driver con exposición underlay, cuyas claves escribe el Neutron de OpenKeel.

Por qué la solución no se ve afectada

Se anuncian las IP de provider, IP flotantes, pasarelas de router, subredes de tenant y VIP de load balancer. EVPN (vrf) y L2 extendido se rechazan al arrancar.

Fuente: openkeel-ovn-bgp-agent/docs/CONFORMANCE.md

Obsoleto o sin uso en upstream

Métodos de exposición l2vni y dinámicos

Por qué se excluyó

El agente Python tampoco tiene conexión para ellos.

Por qué la solución no se ve afectada

Ninguno en la práctica: no funcionaban en upstream; ahora se rechazan al arrancar.

Fuente: openkeel-ovn-bgp-agent/docs/CONFORMANCE.md

Mecánica interna simplificada

Demonios privsep y oslo.concurrency

Asumido por Kubernetes DaemonSet

Por qué se excluyó

Un único proceso con las capacidades necesarias se ejecuta en un DaemonSet, y una sola goroutine escribe en el nodo.

Por qué la solución no se ve afectada

Mismos nombres de dispositivo, tablas de enrutamiento, flujos y texto FRR, de modo que se puede retomar un nodo configurado por el agente Python.

Fuente: openkeel-ovn-bgp-agent/docs/CONFORMANCE.md

Aquí solo figura lo que se excluyó por diseño; el trabajo aún no realizado está en los Known gaps del docs/CONFORMANCE.md del módulo. Todos los módulos

Especificaciones