OpenKeel: la soluzione Cloud sovrana, francese e di portata europea, del gruppo inherent Scopri inherent

Componenti · Rete

Neutron-VPNaaS

VPN IPsec site-to-site: IKE, policy IPsec, connessioni.

Go Agente IPsecopenkeel-neutron-vpnaas

Il modulo

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

Estratto da openkeel-neutron-vpnaas/README.md (in inglese).

API REST

35 operazioni dell'API REST originale (route e azioni nel corpo) e il loro stato in OpenKeel.

  • 35Implementato

Come viene testata la compatibilità

Gli scambi registrati del profilo OVN vengono riprodotti sul servizio Go, la generazione della configurazione viene confrontata con i template originali e tunnel IPsec reali vengono attivati end-to-end.

Replay degli scambi registrati

Replay E2E del profilo OVN

Gli scambi VPNaaS registrati serviti da questo servizio restituiscono le stesse risposte; quelli serviti da Neutron vengono verificati sullo stack reale.

Esecuzione

make e2e-strict, su go-mysql-server e su MariaDB 11.4.

Ultimo risultato 84 riprodotti, 84 superati (2026-10-31); 25 dei 108 scambi registrati appartengono a Neutron o non sono più applicabili.

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

Test unitari e golden test

Vettori di generazione della configurazione

La configurazione di strongSwan corrisponde ai template jinja2 originali per ogni gruppo e algoritmo dell'API.

Esecuzione

tools/gen_render_vectors.py, 50 vettori ricavati dai template originali.

Ultimo risultato 50 / 50, a parte le righe vuote (2026-10-31).

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

Scenario

Tunnel IPsec reale

IKEv1 e IKEv2 con AES-GCM, ping attraverso ESP, admin down e up, demone terminato e riavviato, rimozione.

Esecuzione

make tunnel-test: strongSwan 5.9.13 su entrambi i lati, XFRM reale del kernel.

Ultimo risultato Superato, 2 esecuzioni sul codice finale (2026-10-31).

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

Scenario

Stack completo con Neutron e OVN

Tramite il proxy di Neutron, una porta di tenant esegue il ping di una subnet dietro un peer strongSwan, attraverso il router OVN e il tunnel.

Esecuzione

make stack-test: openkeel-neutron, ovsdb-server, ovn-northd, ovn-controller, OVS, MariaDB, l'immagine dell'agente.

Ultimo risultato Superato, 2 esecuzioni sul codice finale (2026-10-31).

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

Concorrenza su Galera

Concorrenza su MariaDB Galera

Le operazioni VPN restano coerenti quando le richieste arrivano da tre nodi Galera.

Esecuzione

make galera-test su un cluster a 3 nodi.

Ultimo risultato 3 test superati, 5 esecuzioni su 5 (2026-10-31).

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

Tempest

neutron-tempest-plugin vpnaas

I test API e di scenario VPNaaS upstream.

Esecuzione

Richiede un cloud distribuito.

Ultimo risultato Non eseguito.

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

Escluso dal rewrite

VPNaaS mantiene la sua API con un unico driver strongSwan su OVN, senza Libreswan, il vecchio percorso L3, rootwrap né RabbitMQ.

Obsoleto o inutilizzato upstream

Driver Libreswan e vecchio percorso dell'agente L3

Perché è stato escluso

Non sono obiettivi del rewrite; viene fornito un solo driver, strongSwan in un namespace per router sullo chassis OVN.

Perché la soluzione non ne risente

Le connessioni IPsec site-to-site si creano tramite la stessa API; i deployment che si basavano su comportamenti specifici di Libreswan non li ritrovano.

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

Meccanismi interni semplificati

RPC RabbitMQ e notifiche degli agenti

Perché è stato escluso

L'agente interroga ogni 5 secondi un'API degli agenti con ETag anziché usare topic RPC; nessun servizio OpenKeel utilizzava le notifiche vpn_agent.

Perché la soluzione non ne risente

Nessun aggiornamento può andare perso, al prezzo di un ritardo fino a 5 s. Le notifiche diventano righe di log.

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

Meccanismi interni semplificati

rootwrap e driver di interfaccia

Gestito da Kubernetes DaemonSet

Perché è stato escluso

L'agente pilota OVS direttamente e gira nel suo container con i privilegi di cui ha bisogno.

Perché la soluzione non ne risente

Stessi namespace, porte e comandi strongSwan sul nodo; nessun filtro rootwrap da mantenere.

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

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-VPNaaS

Vista del servizio generata dalla skill dei diagrammi a partire dal modello OpenKeel.

Diagramma openkeel-neutron-vpnaas.svg Schermo intero
Le 5 interazioni del modello
DaAProtocolloCosa
Neutron serverNeutron VPNaaSAPI RESTproxy /v2.0/vpn/*, vpn-agents, same token
Neutron VPNaaSNeutron serverAPI RESTcore and L3 calls: gateway ports, routes
Neutron VPNaaSOVN Southbound DBOVSDBlists VPN agents (Chassis_Private)
VPNaaS agentNeutron VPNaaSAPI RESTagent API :9697: services (ETag poll), status
VPNaaS agentOVN Southbound DBOVSDBregisters ovn-vpnagent, acks nb_cfg

Specifiche