OpenKeel: die souveräne französische Cloud-Lösung mit europäischer Reichweite der inherent-Gruppe inherent entdecken

Komponenten · Netzwerk

OVN-BGP-Agent

Kündigt über BGP die VM- und Floating-IPs an, die über den Knoten erreichbar sind.

Go FRR und OVNopenkeel-ovn-bgp-agent

Das Modul

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)

Auszug aus openkeel-ovn-bgp-agent/README.md (auf Englisch).

Wie die Kompatibilität getestet wird

Der Agent hat keine REST-API; die Kompatibilität wird daher mit Event-Match-Vektoren und vom Python-Agenten aufgezeichneten Nebeneffekt-Szenarien auf dem Knoten sowie auf einem echten Kernel geprüft.

Unit- und Golden Tests

Event-Match-Vektoren

Die Northbound-Ereignisfilter entsprechen genau den OVN-Zeilenänderungen, auf die der Python-Agent reagiert.

Ausführung

make test-vectors auf cases-event-match_stable-2026.2.json, mit nachgebildeter Python-Mock-Semantik.

Letztes Ergebnis 122 / 122 im Umfang (SB- und EVPN-Fälle außerhalb des Umfangs); 20 / 20 handgeschriebene Fälle für Filter ohne Vektoren.

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

Szenario

Nebeneffekt-Szenarien

Adressen, Links, Nachbarn, Routen, Regeln, Flows und FRR-Text auf dem Knoten entsprechen dem aufgezeichneten Python-Endzustand.

Ausführung

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

Letztes Ergebnis 10 / 10 im Umfang; 1 außerhalb des Umfangs (SB EVPN). Drei Python-Fehler bewusst nicht nachgebildet.

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

Unit- und Golden Tests

Übernahme eines von Python konfigurierten Knotens

Reihenfolgeregeln, Überreste und Idempotenz halten, und der Agent übernimmt einen vom Python-Agenten konfigurierten Knoten.

Ausführung

internal/reconcile/reconcile_test.go.

Letztes Ergebnis Bestanden.

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

Unit- und Golden Tests

Echte Kernel-Verdrahtung

Verdrahtung, Idempotenz und Rückbau über rtnetlink auf einem echten Kernel (OVS und FRR simuliert).

Ausführung

make test-linux in einem Wegwerf-Netzwerk-Namespace.

Letztes Ergebnis Bestanden.

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

Im Rewrite ausgelassen

Der BGP-Agent implementiert den Northbound-Treiber nur mit Underlay-Exposure, als ein einziger abgleichender Prozess, und weist die Modi Southbound, EVPN und Stretched L2 ab.

Vereinfachte interne Mechanik

Southbound-, EVPN- und Stretched-L2-Treiber

Warum es ausgelassen wurde

Umfang des Rewrites: nur nb_ovn_bgp_driver mit Underlay-Exposure, für den das Neutron von OpenKeel die Schlüssel schreibt.

Warum die Lösung nicht beeinträchtigt ist

Provider-IPs, Floating IPs, Router-Gateways, Mandanten-Subnetze und Load-Balancer-VIPs werden angekündigt. EVPN (vrf) und Stretched L2 werden beim Start abgewiesen.

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

Upstream veraltet oder ungenutzt

Exposure-Methoden l2vni und dynamic

Warum es ausgelassen wurde

Auch der Python-Agent hat dafür keine Anbindung.

Warum die Lösung nicht beeinträchtigt ist

Praktisch keine: Sie funktionierten upstream nicht; jetzt werden sie beim Start abgewiesen.

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

Vereinfachte interne Mechanik

privsep-Daemons und oslo.concurrency

Übernommen von Kubernetes DaemonSet

Warum es ausgelassen wurde

Ein einziger Prozess mit den nötigen Capabilities läuft in einem DaemonSet, und eine einzige Goroutine schreibt auf den Knoten.

Warum die Lösung nicht beeinträchtigt ist

Gleiche Gerätenamen, Routing-Tabellen, Flows und FRR-Texte, sodass ein vom Python-Agenten konfigurierter Knoten übernommen werden kann.

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

Hier ist nur aufgeführt, was bewusst ausgelassen wurde; noch nicht erledigte Arbeit steht in den Known gaps der docs/CONFORMANCE.md des Moduls. Alle Module

Spezifikationen