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

Komponenten · Netzwerk

Neutron-FWaaS

Firewall-Gruppen, -Policies und -Regeln (FWaaS v2).

Go OVN-ACLsopenkeel-neutron-fwaas

Das Modul

OpenKeel implementation in Go of OpenStack neutron-fwaas (neutron-fwaas-api), generated from the reverse-specification of branch stable/2026.2 by the generate-go-from-spec skill. It serves the FWaaS v2 API (/v2.0/fwaas) and programs firewall groups as OVN Port_Groups and stateless ACLs, replacing the firewall_v2 service plugin and its OVN driver: same routes, status codes, error bodies and policies, same NB rows. 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-fwaas
  • Binary: neutron-fwaas-api (API on port 9696, health and metrics on 9090)
  • Configuration: YAML, see config/config.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-fwaas/README.md (auf Englisch).

REST-API

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

  • 23Implementiert

Wie die Kompatibilität getestet wird

Neu aufgezeichnete Python-FWaaS-Tests werden gegen den Go-Dienst wiedergegeben, und der OVN-Treiber wird Schritt für Schritt mit dem echten Python-Treiber auf einem echten Northbound verglichen.

Replay aufgezeichneter Austausche

E2E-Replay der neu aufgezeichneten Tests

691 Austausche aus 135 Python-Tests, mit der Identität jeder Anfrage neu aufgezeichnet, liefern dieselben Antworten.

Ausführung

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

Letztes Ergebnis 689 / 691 (2026-10-31); die 2 Unterschiede betreffen einen Pfad außerhalb der Erweiterung, in beiden Fällen 404.

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

Differenzieller Test

Differenzieller Vergleich mit dem Python-Treiber

Dieselben Schritte liefern denselben Status, denselben Gruppenstatus und jede Spalte der Port_Group- und ACL-Zeilen wie neutron-fwaas mit ovsdbapp.

Ausführung

make ovn-test, test/ovn/differential, auf einem echten Northbound.

Letztes Ergebnis 47 / 47 Schritte identisch (2026-10-31).

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

Unit- und Golden Tests

OVN-ACL- und Validator-Vektoren

ACLs stimmen Byte für Byte mit der Originalfunktion überein; Konverter und Validatoren entsprechen dem echten neutron-lib.

Ausführung

internal/ovnfw/acl_test.go; tools/gen_validator_vectors.py und internal/fwaas/attrs_test.go.

Letztes Ergebnis 935 / 935 ACL-Vektoren; 97 / 97 Validator-Vektoren (2026-10-31).

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

Nebenläufigkeit auf Galera

Nebenläufigkeit auf MariaDB Galera

Kontingente, Regeleinfügung, Standardgruppen und Ports halten über drei Knoten.

Ausführung

test/galera auf einem Cluster mit 3 Knoten, Kontingent- und insert_rule-Schreibvorgänge über einen Knoten.

Letztes Ergebnis 4 Tests bestanden, 3 von 3 Durchläufen. Offener Befund: Bei Read-Modify-Write über mehrere Knoten gehen in 3 % bis 18 % der Durchläufe Aktualisierungen verloren.

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

End-to-End in einem Lab

Lab-Installation über Neutron

Token, Erweiterung, Firewall-Gruppe ACTIVE, ACLs im Northbound, Fehler-Bodies und Bereinigung, alles über den Endpoint von Neutron.

Ausführung

okadm install --mode lab --components neutron-fwaas auf kind.

Letztes Ergebnis Bestanden (2026-10-31); das Lab hat keine Datenebene, kein Paket wurde gefiltert.

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

Tempest

neutron-tempest-plugin fwaas

Die Upstream-API- und Szenariotests von FWaaS.

Ausführung

Erfordert eine Cloud mit Datenebene.

Letztes Ergebnis Nicht ausgeführt.

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

Im Rewrite ausgelassen

FWaaS v2 behält seine API nur auf dem OVN-Treiber; damit entfallen der Agent-Pfad mit iptables, conntrack und NFLOG, der Plugin-Loader und das manuelle Sync-Werkzeug.

Von der Cloud-Native-Plattform übernommen

Agent-Treiber, iptables, conntrack und NFLOG

Übernommen von OVN

Warum es ausgelassen wurde

Firewall-Regeln sind OVN-ACLs und Port_Groups, die der Dienst schreibt; die Erweiterungen der L2- und L3-Agenten und ihre RPC-Topics werden mit OVN nicht benötigt.

Warum die Lösung nicht beeinträchtigt ist

Firewall-Gruppen gelten für Router-Ports wie beim OVN-Treiber von Python; VM-Ports werden auch dort abgewiesen (409). NFLOG-Netzwerkprotokollierung ist nicht verfügbar.

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

Vereinfachte interne Mechanik

Manuelles neutron-ovn-db-sync-util

Warum es ausgelassen wurde

Eine Reconcile-Schleife (300 s, eine Replik per OVSDB-Sperre) entfernt veraltete ACLs und legt fehlende neu an.

Warum die Lösung nicht beeinträchtigt ist

OVN konvergiert ohne Eingriff des Betreibers; die API bleibt unverändert.

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

Vereinfachte interne Mechanik

Laden von service_plugins in neutron-server

Übernommen von Kubernetes Deployments

Warum es ausgelassen wurde

FWaaS ist ein eigenes Deployment; openkeel-neutron leitet /v2.0/fwaas dorthin weiter und kündigt fwaas_v2 an.

Warum die Lösung nicht beeinträchtigt ist

Clients rufen denselben Neutron-Endpoint und dieselben Pfade auf.

Quelle: openkeel-neutron-fwaas/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-FWaaS-Interaktionen

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

Diagramm openkeel-neutron-fwaas.svg Vollbild
Die 2 Interaktionen des Modells
VonNachProtokollWas
Neutron serverNeutron FWaaSREST-APIproxy /v2.0/fwaas/*, same token
Neutron FWaaSOVN Northbound DBOVSDBpg_* Port_Groups, stateless ACLs

Spezifikationen