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
Estratto da openkeel-neutron-fwaas/README.md (in inglese).
API REST
23 operazioni dell'API REST originale (route e azioni nel corpo) e il loro stato in OpenKeel.
I test FWaaS Python riregistrati vengono riprodotti sul servizio Go, e il driver OVN viene confrontato passo per passo con il vero driver Python su un Northbound reale.
Replay degli scambi registrati
Replay E2E dei test riregistrati
691 scambi di 135 test Python, riregistrati con l'identità di ciascuna richiesta, restituiscono le stesse risposte.
Esecuzione
make e2e-strict, su go-mysql-server e su MariaDB 11.4.
Ultimo risultato 689 / 691 (2026-10-31); le 2 differenze riguardano un percorso esterno all'estensione, 404 in entrambi i casi.
Fonte: openkeel-neutron-fwaas/docs/CONFORMANCE.md
Test differenziale
Confronto differenziale con il driver Python
Gli stessi passi restituiscono lo stesso stato, lo stesso stato di gruppo e ogni colonna delle righe Port_Group e ACL di neutron-fwaas con ovsdbapp.
Esecuzione
make ovn-test, test/ovn/differential, su un Northbound reale.
Quote, inserimento di regole, gruppi predefiniti e porte reggono su tre nodi.
Esecuzione
test/galera su un cluster a 3 nodi, scritture di quota e insert_rule tramite un solo nodo.
Ultimo risultato 4 test superati, 3 esecuzioni su 3. Rilievo aperto: in lettura-modifica-scrittura multinodo si perdono aggiornamenti dal 3 % al 18 % delle esecuzioni.
Fonte: openkeel-neutron-fwaas/docs/CONFORMANCE.md
End-to-end su un laboratorio
Installazione del laboratorio tramite Neutron
Token, estensione, firewall group ACTIVE, ACL nel Northbound, corpi di errore e pulizia, tutto tramite l'endpoint di Neutron.
Esecuzione
okadm install --mode lab --components neutron-fwaas su kind.
Ultimo risultato Superato (2026-10-31); il laboratorio non ha data plane, nessun pacchetto è stato filtrato.
Fonte: openkeel-neutron-fwaas/docs/CONFORMANCE.md
Tempest
neutron-tempest-plugin fwaas
I test API e di scenario FWaaS upstream.
Esecuzione
Richiede un cloud con data plane.
Ultimo risultato Non eseguito.
Fonte: openkeel-neutron-fwaas/docs/CONFORMANCE.md
Escluso dal rewrite
FWaaS v2 mantiene la sua API solo sul driver OVN, per cui scompaiono il percorso dell'agente con iptables, conntrack e NFLOG, il caricatore di plugin e lo strumento di sincronizzazione manuale.
Gestito dalla piattaforma Cloud Native
Driver dell'agente, iptables, conntrack e NFLOG
Gestito da OVN
Perché è stato escluso
Le regole firewall sono ACL e Port_Groups OVN scritti dal servizio; le estensioni degli agenti L2 e L3 e i loro topic RPC non servono con OVN.
Perché la soluzione non ne risente
I gruppi firewall si applicano alle porte dei router come con il driver OVN di Python; anche lì le porte delle VM vengono rifiutate (409). Il logging di rete NFLOG non è disponibile.
Fonte: openkeel-neutron-fwaas/docs/CONFORMANCE.md
Meccanismi interni semplificati
neutron-ovn-db-sync-util manuale
Perché è stato escluso
Un ciclo di riconciliazione (300 s, una sola replica tramite un lock OVSDB) rimuove le ACL obsolete e ricrea quelle mancanti.
Perché la soluzione non ne risente
OVN converge senza intervento dell'operatore; l'API resta invariata.
Fonte: openkeel-neutron-fwaas/docs/CONFORMANCE.md
Meccanismi interni semplificati
Caricamento dei service_plugins in neutron-server
Gestito da Kubernetes Deployments
Perché è stato escluso
FWaaS è un Deployment separato; openkeel-neutron gli inoltra /v2.0/fwaas e annuncia fwaas_v2.
Perché la soluzione non ne risente
I client chiamano lo stesso endpoint e gli stessi percorsi di Neutron.
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
Interazioni Neutron-FWaaS
Vista del servizio generata dalla skill dei diagrammi a partire dal modello OpenKeel.