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
Extracto de openkeel-neutron-vpnaas/README.md (en inglés).
API REST
35 operaciones de la API REST original (rutas y acciones de cuerpo) y su estado en OpenKeel.
Los intercambios grabados del perfil OVN se reproducen contra el servicio Go, la generación de configuración se compara con las plantillas originales y se establecen túneles IPsec reales de extremo a extremo.
Replay de los intercambios grabados
Replay E2E del perfil OVN
Los intercambios VPNaaS grabados que sirve este servicio dan las mismas respuestas; los que sirve Neutron se verifican en la pila real.
Ejecución
make e2e-strict, en go-mysql-server y en MariaDB 11.4.
Último resultado 84 reproducidos, 84 superados (2026-10-31); 25 de los 108 intercambios grabados corresponden a Neutron o ya no aplican.
VPNaaS conserva su API con un único driver strongSwan sobre OVN, sin Libreswan, la antigua ruta L3, rootwrap ni RabbitMQ.
Obsoleto o sin uso en upstream
Driver Libreswan y antigua ruta del agente L3
Por qué se excluyó
No son objetivos del rewrite; se incluye un único driver, strongSwan en un namespace por router en el chassis OVN.
Por qué la solución no se ve afectada
Las conexiones IPsec entre sitios se crean con la misma API; los despliegues que dependían de un comportamiento específico de Libreswan no lo obtienen.
El agente consulta cada 5 segundos una API de agentes con ETag en lugar de topics RPC; ningún servicio de OpenKeel consumía las notificaciones vpn_agent.
Por qué la solución no se ve afectada
No puede perderse ninguna actualización, a costa de un retraso de hasta 5 s. Las notificaciones pasan a ser líneas de log.
Aquí solo figura lo que se excluyó por diseño; el trabajo aún no realizado está en los Known gaps del docs/CONFORMANCE.md del módulo. Todos los módulos
Interacciones Neutron-VPNaaS
Vista de servicio generada por la skill de diagramas a partir del modelo de OpenKeel.