OpenKeel: la solución Cloud soberana, francesa y de alcance europeo, del grupo inherent Descubrir inherent

Componentes · Redes

Neutron-FWaaS

Grupos, políticas y reglas de firewall (FWaaS v2).

Go ACL de OVNopenkeel-neutron-fwaas

El módulo

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

Extracto de openkeel-neutron-fwaas/README.md (en inglés).

API REST

23 operaciones de la API REST original (rutas y acciones de cuerpo) y su estado en OpenKeel.

  • 23Implementado

Cómo se prueba la compatibilidad

Los tests FWaaS de Python regrabados se reproducen contra el servicio Go, y el driver OVN se compara paso a paso con el driver real de Python sobre un Northbound real.

Replay de los intercambios grabados

Replay E2E de los tests regrabados

691 intercambios de 135 tests de Python, regrabados con la identidad de cada petición, dan las mismas respuestas.

Ejecución

make e2e-strict, en go-mysql-server y en MariaDB 11.4.

Último resultado 689 / 691 (2026-10-31); las 2 diferencias son una ruta fuera de la extensión, 404 en ambos casos.

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

Test diferencial

Comparación diferencial con el driver de Python

Los mismos pasos dan el mismo estado, el mismo estado de grupo y cada columna de las filas Port_Group y ACL que neutron-fwaas con ovsdbapp.

Ejecución

make ovn-test, test/ovn/differential, sobre un Northbound real.

Último resultado 47 / 47 pasos idénticos (2026-10-31).

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

Tests unitarios y golden tests

Vectores ACL de OVN y de validadores

Las ACL coinciden byte a byte con la función original; los conversores y validadores coinciden con el neutron-lib real.

Ejecución

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

Último resultado 935 / 935 vectores ACL; 97 / 97 vectores de validadores (2026-10-31).

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

Concurrencia en Galera

Concurrencia en MariaDB Galera

Las cuotas, la inserción de reglas, los grupos por defecto y los puertos se mantienen a través de tres nodos.

Ejecución

test/galera en un clúster de 3 nodos, escrituras de cuota e insert_rule a través de un solo nodo.

Último resultado 4 tests superados, 3 ejecuciones de 3. Hallazgo abierto: en lectura-modificación-escritura multinodo se pierden actualizaciones en el 3 % al 18 % de las ejecuciones.

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

De extremo a extremo en un laboratorio

Instalación del laboratorio a través de Neutron

Token, extensión, grupo de firewall ACTIVE, ACL en el Northbound, cuerpos de error y limpieza, todo a través del endpoint de Neutron.

Ejecución

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

Último resultado Superado (2026-10-31); el laboratorio no tiene plano de datos, no se filtró ningún paquete.

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

Tempest

neutron-tempest-plugin fwaas

Los tests de API y de escenario FWaaS upstream.

Ejecución

Requiere una nube con plano de datos.

Último resultado No ejecutado.

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

Excluido del rewrite

FWaaS v2 conserva su API solo en el driver OVN, por lo que desaparecen la ruta de agente con iptables, conntrack y NFLOG, el cargador de plugins y la herramienta de sincronización manual.

Asumido por la plataforma Cloud Native

Driver de agente, iptables, conntrack y NFLOG

Asumido por OVN

Por qué se excluyó

Las reglas de firewall son ACL y Port_Groups de OVN escritos por el servicio; las extensiones de los agentes L2 y L3 y sus topics RPC no son necesarias con OVN.

Por qué la solución no se ve afectada

Los grupos de firewall se aplican a los puertos de router como en el driver OVN de Python; los puertos de VM también se rechazan allí (409). El registro de red NFLOG no está disponible.

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

Mecánica interna simplificada

neutron-ovn-db-sync-util manual

Por qué se excluyó

Un bucle de reconciliación (300 s, una sola réplica mediante un bloqueo OVSDB) elimina las ACL obsoletas y vuelve a crear las que faltan.

Por qué la solución no se ve afectada

OVN converge sin intervención del operador; la API no cambia.

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

Mecánica interna simplificada

Carga de service_plugins dentro de neutron-server

Asumido por Kubernetes Deployments

Por qué se excluyó

FWaaS es un Deployment independiente; openkeel-neutron le redirige /v2.0/fwaas y anuncia fwaas_v2.

Por qué la solución no se ve afectada

Los clientes llaman al mismo endpoint y a las mismas rutas de Neutron.

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

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

Vista de servicio generada por la skill de diagramas a partir del modelo de OpenKeel.

Diagrama openkeel-neutron-fwaas.svg Pantalla completa
Las 2 interacciones del modelo
DeAProtocoloQué
Neutron serverNeutron FWaaSAPI RESTproxy /v2.0/fwaas/*, same token
Neutron FWaaSOVN Northbound DBOVSDBpg_* Port_Groups, stateless ACLs

Especificaciones