OpenKeel : la solution Cloud souveraine, française à portée européenne du groupe inherent Découvrir inherent

Composants · Réseau

Neutron-FWaaS

Firewall groups, policies et rules (FWaaS v2).

Go ACL OVNopenkeel-neutron-fwaas

Le module

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

Extrait de openkeel-neutron-fwaas/README.md (en anglais).

API REST

23 opérations de l'API REST d'origine (routes et actions de corps), et leur état dans OpenKeel.

  • 23Implémenté

Comment la compatibilité est testée

Les tests FWaaS Python réenregistrés sont rejoués contre le service Go, et le pilote OVN est comparé étape par étape avec le vrai pilote Python sur un vrai Northbound.

Rejeu des échanges enregistrés

Rejeu E2E des tests réenregistrés

691 échanges de 135 tests Python, réenregistrés avec l'identité de chaque requête, donnent les mêmes réponses.

Exécution

make e2e-strict, sur go-mysql-server et sur MariaDB 11.4.

Dernier résultat 689 / 691 (2026-10-31) ; les 2 différences sont un chemin hors de l'extension, 404 dans les deux cas.

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

Test différentiel

Comparaison différentielle avec le pilote Python

Les mêmes étapes donnent le même statut, le même statut de groupe et chaque colonne des lignes Port_Group et ACL que neutron-fwaas avec ovsdbapp.

Exécution

make ovn-test, test/ovn/differential, sur un vrai Northbound.

Dernier résultat 47 / 47 étapes identiques (2026-10-31).

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

Tests unitaires et golden tests

Vecteurs ACL OVN et de validateurs

Les ACL correspondent à la fonction d'origine octet pour octet ; convertisseurs et validateurs correspondent au vrai neutron-lib.

Exécution

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

Dernier résultat 935 / 935 vecteurs ACL ; 97 / 97 vecteurs de validateurs (2026-10-31).

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

Concurrence sur Galera

Concurrence sur MariaDB Galera

Quotas, insertion de règles, groupes par défaut et ports tiennent sur trois nœuds.

Exécution

test/galera sur un cluster à 3 nœuds, écritures de quota et insert_rule via un seul nœud.

Dernier résultat 4 tests réussis, 3 exécutions sur 3. Constat ouvert : en lecture-modification-écriture multi-nœuds, des mises à jour sont perdues dans 3 % à 18 % des exécutions.

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

De bout en bout sur un lab

Installation du lab via Neutron

Jeton, extension, groupe de pare-feu ACTIVE, ACL dans le Northbound, corps d'erreur et nettoyage, le tout via l'endpoint de Neutron.

Exécution

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

Dernier résultat Réussi (2026-10-31) ; le lab n'a pas de plan de données, aucun paquet n'a été filtré.

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

Tempest

neutron-tempest-plugin fwaas

Les tests d'API et de scénario FWaaS amont.

Exécution

Nécessite un cloud avec un plan de données.

Dernier résultat Non exécuté.

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

Écarté de la réécriture

FWaaS v2 conserve son API sur le seul driver OVN : le chemin d'agent avec iptables, conntrack et NFLOG, le chargeur de plugins et l'outil de synchronisation manuelle disparaissent.

Assuré par la plateforme Cloud Native

Driver d'agent, iptables, conntrack et NFLOG

Repris par OVN

Pourquoi c'est écarté

Les règles de pare-feu sont des ACL et Port_Groups OVN écrits par le service ; les extensions des agents L2 et L3 et leurs topics RPC sont inutiles avec OVN.

Pourquoi la solution n'est pas affectée

Les groupes de pare-feu s'appliquent aux ports de routeur comme avec le driver OVN de Python ; les ports de VM y sont aussi refusés (409). La journalisation réseau NFLOG n'est pas disponible.

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

Mécanique interne simplifiée

neutron-ovn-db-sync-util manuel

Pourquoi c'est écarté

Une boucle de réconciliation (300 s, une seule réplique grâce à un verrou OVSDB) supprime les ACL obsolètes et recrée celles qui manquent.

Pourquoi la solution n'est pas affectée

OVN converge sans action de l'opérateur ; l'API est inchangée.

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

Mécanique interne simplifiée

Chargement des service_plugins dans neutron-server

Repris par Kubernetes Deployments

Pourquoi c'est écarté

FWaaS est un Deployment à part ; openkeel-neutron lui relaie /v2.0/fwaas et annonce fwaas_v2.

Pourquoi la solution n'est pas affectée

Les clients appellent le même endpoint Neutron et les mêmes chemins.

Source : openkeel-neutron-fwaas/config/dropped-options.md

Seul ce qui a été écarté par choix de conception figure ici ; le travail pas encore fait se trouve dans les Known gaps du docs/CONFORMANCE.md du module. Tous les modules

Interactions de Neutron-FWaaS

Vue « service » générée par la skill diagramme depuis le modèle d'OpenKeel.

Diagramme openkeel-neutron-fwaas.svg Plein écran
Les 2 interactions du modèle
DeVersProtocoleQuoi
Neutron serverNeutron FWaaSAPI RESTproxy /v2.0/fwaas/*, same token
Neutron FWaaSOVN Northbound DBOVSDBpg_* Port_Groups, stateless ACLs

Spécifications