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

Komponenten · Netzwerk

Neutron-VPNaaS

Site-to-Site-IPsec-VPN: IKE, IPsec-Policies, Verbindungen.

Go IPsec-Agentopenkeel-neutron-vpnaas

Das Modul

OpenKeel implementation in Go of OpenStack neutron-vpnaas on the OVN path, generated from the reverse-specification of branch stable/2026.2 by the generate-go-from-spec skill. neutron-vpnaas-api serves the VPN API (/v2.0/vpn and the agent scheduler) and replaces the ovn-vpnaas service plugin and its driver: same routes, status codes, error bodies and policies, same tables. neutron-vpnaas-agent replaces neutron-ovn-vpn-agent: it runs strongSwan, the original's daemon, in one qvpn-<router> namespace per router. It runs beside openkeel-neutron, on its database and its OVN; clients reach it through a proxy in openkeel-neutron: see docs/NEUTRON-INTEGRATION.md. What is reproduced and what differs is in docs/CONFORMANCE.md; the security checklist is in docs/SECURITY.md.

  • Go module: github.com/openkeel/openkeel-neutron-vpnaas
  • Binaries: neutron-vpnaas-api (API on port 9696, agent API on 9697, health and metrics on 9090), neutron-vpnaas-agent (health on 9091; needs Linux, root and strongSwan: Dockerfile.agent)
  • Configuration: YAML, see config/config.example.yaml and config/agent.example.yaml
  • Setting up a development environment, the database and the tests: docs/GETTING-STARTED.md
  • Database schema, migrations and upgrades: docs/DATABASE.md

Auszug aus openkeel-neutron-vpnaas/README.md (auf Englisch).

REST-API

35 Operationen der Original-REST-API (Routen und Body-Aktionen) und ihr Status in OpenKeel.

  • 35Implementiert

Wie die Kompatibilität getestet wird

Aufgezeichnete Austausche des OVN-Profils werden gegen den Go-Dienst wiedergegeben, die Konfigurationsgenerierung wird mit den Original-Templates verglichen, und echte IPsec-Tunnel werden End-to-End aufgebaut.

Replay aufgezeichneter Austausche

E2E-Replay des OVN-Profils

Die aufgezeichneten VPNaaS-Austausche, die dieser Dienst bedient, liefern dieselben Antworten; die von Neutron bedienten werden auf dem echten Stack geprüft.

Ausführung

make e2e-strict, auf go-mysql-server und auf MariaDB 11.4.

Letztes Ergebnis 84 wiedergegeben, 84 bestanden (2026-10-31); 25 der 108 aufgezeichneten Austausche gehören zu Neutron oder sind nicht mehr anwendbar.

Quelle: openkeel-neutron-vpnaas/docs/CONFORMANCE.md

Unit- und Golden Tests

Vektoren zur Konfigurationsgenerierung

Die strongSwan-Konfiguration entspricht den Original-jinja2-Templates für jede Gruppe und jeden Algorithmus der API.

Ausführung

tools/gen_render_vectors.py, 50 Vektoren aus den Original-Templates.

Letztes Ergebnis 50 / 50, abgesehen von Leerzeilen (2026-10-31).

Quelle: openkeel-neutron-vpnaas/docs/CONFORMANCE.md

Szenario

Echter IPsec-Tunnel

IKEv1 und IKEv2 mit AES-GCM, Ping durch ESP, Admin down und up, beendeter und neu gestarteter Daemon, Entfernung.

Ausführung

make tunnel-test: strongSwan 5.9.13 auf beiden Seiten, echtes Kernel-XFRM.

Letztes Ergebnis Bestanden, 2 Durchläufe auf dem finalen Code (2026-10-31).

Quelle: openkeel-neutron-vpnaas/docs/CONFORMANCE.md

Szenario

Gesamter Stack mit Neutron und OVN

Über den Proxy von Neutron pingt ein Mandanten-Port ein Subnetz hinter einem strongSwan-Peer an, über den OVN-Router und den Tunnel.

Ausführung

make stack-test: openkeel-neutron, ovsdb-server, ovn-northd, ovn-controller, OVS, MariaDB, das Agent-Image.

Letztes Ergebnis Bestanden, 2 Durchläufe auf dem finalen Code (2026-10-31).

Quelle: openkeel-neutron-vpnaas/docs/CONFORMANCE.md

Nebenläufigkeit auf Galera

Nebenläufigkeit auf MariaDB Galera

VPN-Operationen bleiben konsistent, wenn Anfragen über drei Galera-Knoten eintreffen.

Ausführung

make galera-test auf einem Cluster mit 3 Knoten.

Letztes Ergebnis 3 Tests bestanden, 5 von 5 Durchläufen (2026-10-31).

Quelle: openkeel-neutron-vpnaas/docs/CONFORMANCE.md

Tempest

neutron-tempest-plugin vpnaas

Die Upstream-API- und Szenariotests von VPNaaS.

Ausführung

Erfordert eine bereitgestellte Cloud.

Letztes Ergebnis Nicht ausgeführt.

Quelle: openkeel-neutron-vpnaas/docs/CONFORMANCE.md

Im Rewrite ausgelassen

VPNaaS behält seine API mit einem einzigen strongSwan-Treiber auf OVN, ohne Libreswan, den alten L3-Pfad, rootwrap oder RabbitMQ.

Upstream veraltet oder ungenutzt

Libreswan-Treiber und alter L3-Agent-Pfad

Warum es ausgelassen wurde

Sie sind keine Ziele des Rewrites; ausgeliefert wird ein einziger Treiber, strongSwan in einem Namespace pro Router auf dem OVN-Chassis.

Warum die Lösung nicht beeinträchtigt ist

IPsec-Site-Verbindungen werden über dieselbe API angelegt; Deployments, die sich auf Libreswan-spezifisches Verhalten stützten, erhalten es nicht.

Quelle: openkeel-neutron-vpnaas/config/dropped-options.md

Vereinfachte interne Mechanik

RabbitMQ-RPC und Agent-Benachrichtigungen

Warum es ausgelassen wurde

Der Agent fragt alle 5 Sekunden eine Agent-API mit ETag ab statt RPC-Topics; kein OpenKeel-Dienst nutzte die vpn_agent-Benachrichtigungen.

Warum die Lösung nicht beeinträchtigt ist

Ein verlorenes Update ist ausgeschlossen, zum Preis einer Verzögerung von bis zu 5 s. Die Benachrichtigungen werden zu Logzeilen.

Quelle: openkeel-neutron-vpnaas/docs/CONFORMANCE.md

Vereinfachte interne Mechanik

rootwrap und Interface-Treiber

Übernommen von Kubernetes DaemonSet

Warum es ausgelassen wurde

Der Agent steuert OVS selbst und läuft in seinem Container mit den Privilegien, die er benötigt.

Warum die Lösung nicht beeinträchtigt ist

Gleiche Namespaces, Ports und strongSwan-Befehle auf dem Knoten; keine rootwrap-Filter zu pflegen.

Quelle: openkeel-neutron-vpnaas/config/dropped-options.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

Neutron-VPNaaS-Interaktionen

Dienstansicht, vom Diagramm-Skill aus dem OpenKeel-Modell generiert.

Diagramm openkeel-neutron-vpnaas.svg Vollbild
Die 5 Interaktionen des Modells
VonNachProtokollWas
Neutron serverNeutron VPNaaSREST-APIproxy /v2.0/vpn/*, vpn-agents, same token
Neutron VPNaaSNeutron serverREST-APIcore and L3 calls: gateway ports, routes
Neutron VPNaaSOVN Southbound DBOVSDBlists VPN agents (Chassis_Private)
VPNaaS agentNeutron VPNaaSREST-APIagent API :9697: services (ETag poll), status
VPNaaS agentOVN Southbound DBOVSDBregisters ovn-vpnagent, acks nb_cfg

Spezifikationen