OpenKeel: la soluzione Cloud sovrana, francese e di portata europea, del gruppo inherent Scopri inherent

Componenti · Rete

OVN-BGP-Agent

Annuncia tramite BGP gli IP delle VM e gli IP flottanti raggiungibili attraverso il nodo.

Go FRR e OVNopenkeel-ovn-bgp-agent

Il modulo

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)

Estratto da openkeel-ovn-bgp-agent/README.md (in inglese).

Come viene testata la compatibilità

L'agente non ha un'API REST, quindi la compatibilità viene verificata con vettori di corrispondenza degli eventi e scenari di effetti collaterali sul nodo registrati dall'agente Python, nonché su un kernel reale.

Test unitari e golden test

Vettori di corrispondenza degli eventi

I filtri di eventi del Northbound corrispondono esattamente alle modifiche di righe OVN a cui reagisce l'agente Python.

Esecuzione

make test-vectors su cases-event-match_stable-2026.2.json, con la semantica di Mock di Python riprodotta.

Ultimo risultato 122 / 122 nell'ambito (casi SB ed EVPN fuori ambito); 20 / 20 casi scritti a mano per i filtri senza vettori.

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

Scenario

Scenari di effetti collaterali

Indirizzi, link, vicini, route, regole, flussi e testo FRR lasciati sul nodo corrispondono allo stato finale Python registrato.

Esecuzione

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

Ultimo risultato 10 / 10 nell'ambito; 1 fuori ambito (SB EVPN). Tre difetti di Python deliberatamente non riprodotti.

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

Test unitari e golden test

Presa in carico di un nodo configurato da Python

Le regole di ordinamento, i residui e l'idempotenza reggono, e l'agente prende in carico un nodo configurato dall'agente Python.

Esecuzione

internal/reconcile/reconcile_test.go.

Ultimo risultato Superato.

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

Test unitari e golden test

Cablaggio reale del kernel

Cablaggio, idempotenza e rimozione tramite rtnetlink su un kernel reale (OVS e FRR simulati).

Esecuzione

make test-linux in un namespace di rete usa e getta.

Ultimo risultato Superato.

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

Escluso dal rewrite

L'agente BGP implementa il driver Northbound solo con esposizione underlay, come un unico processo di riconciliazione, e rifiuta le modalità Southbound, EVPN e L2 esteso.

Meccanismi interni semplificati

Driver Southbound, EVPN e L2 esteso

Perché è stato escluso

Ambito del rewrite: solo nb_ovn_bgp_driver con esposizione underlay, di cui il Neutron di OpenKeel scrive le chiavi.

Perché la soluzione non ne risente

Vengono annunciati IP dei provider, IP flottanti, gateway dei router, subnet dei tenant e VIP dei load balancer. EVPN (vrf) e L2 esteso vengono rifiutati all'avvio.

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

Obsoleto o inutilizzato upstream

Metodi di esposizione l2vni e dinamici

Perché è stato escluso

Neanche l'agente Python ha un collegamento per essi.

Perché la soluzione non ne risente

Nessuno in pratica: upstream non funzionavano; ora vengono rifiutati all'avvio.

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

Meccanismi interni semplificati

Daemon privsep e oslo.concurrency

Gestito da Kubernetes DaemonSet

Perché è stato escluso

Un unico processo con le capability necessarie gira in un DaemonSet, e una sola goroutine scrive sul nodo.

Perché la soluzione non ne risente

Stessi nomi di dispositivo, tabelle di routing, flussi e testo FRR, così un nodo configurato dall'agente Python può essere preso in carico.

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

Qui è elencato solo ciò che è stato escluso per scelta progettuale; il lavoro non ancora svolto si trova nei Known gaps del docs/CONFORMANCE.md del modulo. Tutti i moduli

Specifiche