VPN IPsec site à site : IKE, policies IPsec, connexions.
Go Agent IPsecopenkeel-neutron-vpnaas
Le module
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
Extrait de openkeel-neutron-vpnaas/README.md (en anglais).
API REST
35 opérations de l'API REST d'origine (routes et actions de corps), et leur état dans OpenKeel.
Les échanges enregistrés du profil OVN sont rejoués contre le service Go, le rendu de configuration est comparé aux templates d'origine, et de vrais tunnels IPsec sont montés de bout en bout.
Rejeu des échanges enregistrés
Rejeu E2E du profil OVN
Les échanges VPNaaS enregistrés servis par ce service donnent les mêmes réponses ; ceux servis par Neutron sont vérifiés sur la vraie pile.
Exécution
make e2e-strict, sur go-mysql-server et sur MariaDB 11.4.
Dernier résultat 84 rejoués, 84 réussis (2026-10-31) ; 25 des 108 échanges enregistrés relèvent de Neutron ou ne s'appliquent plus.
VPNaaS conserve son API avec un seul driver strongSwan sur OVN, sans Libreswan, l'ancien chemin L3, rootwrap ni RabbitMQ.
Obsolète ou inutilisé en amont
Driver Libreswan et ancien chemin par agent L3
Pourquoi c'est écarté
Ils ne sont pas des cibles de la réécriture ; un seul driver est livré : strongSwan dans un namespace par routeur sur le chassis OVN.
Pourquoi la solution n'est pas affectée
Les connexions IPsec site à site se créent via la même API ; les déploiements qui dépendaient d'un comportement propre à Libreswan ne le retrouvent pas.
L'agent interroge une API d'agents avec ETag toutes les 5 secondes au lieu de topics RPC ; aucun service OpenKeel ne consommait les notifications vpn_agent.
Pourquoi la solution n'est pas affectée
Aucune mise à jour ne peut être perdue, au prix d'un délai allant jusqu'à 5 s. Les notifications deviennent des lignes de log.
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-VPNaaS
Vue « service » générée par la skill diagramme depuis le modèle d'OpenKeel.