Feature Maturity¶
This page records the maturity of each component as of the current commit. It is the single source of truth for what is validated, what is scaffolded, and what is planned. The README carries a condensed summary that links here.
Tiers¶
- Supported: deploys through the standard flow, is documented, and has been exercised end to end (thesis result, automated test, or manual validation). Reproducible on a clean install. Enabled by default.
- Experimental: code and manifests exist and deploy, but the path is not
validated end to end, or it depends on an experimental component, or it has no
exercised use case. Often disabled by default (
replicas: 0or opt-in). - Planned: described as a direction, with no working code yet.
Tier assignment rule: a component is Supported only when all three conditions hold (deploys through the standard flow, is documented, exercised end to end). If one condition fails it is Experimental. With no working code it is Planned. Abandoned code is removed, not tiered.
A tier followed by * is an explicit exception: the component is shown at its
target tier while end-to-end validation is still in progress. The remaining work
is tracked in gaps.md, and the marker is removed once the component is
validated end to end.
The Validated by column records the evidence: a thesis reference, a test
path, manual, or —.
Components¶
| Component | Tier | Validated by | Default | Notes |
|---|---|---|---|---|
| Core deployment (K3s master + worker, Open5GS SBA NFs, MongoDB) | Supported | manual | on | 12 pods; AMF, SMF, UPF, NRF, PCF, AUSF, BSF, NSSF, UDM, UDR |
| Per-interface VXLAN overlays (N1-N4) on OVS | Supported | manual | on | one VNI per interface |
| Multus NADs + Whereabouts IPAM | Supported | manual | on | |
| IAM / Keycloak realm (phase 08) | Supported | manual | on | admin and viewer roles, orthogonal CAMARA role |
| Dashboard modules: cluster, 5G, network, and settings surfaces (listed in dashboard/modules.md) | Supported | manual | on | image hot-updatable on a running testbed; UE session data from a native Open5GS endpoint |
| Dashboard module: Northbound (positioning/CAMARA service console) | Experimental | — | on | inventory + adapter registry + deploy-from-image + fusion + contract guidance; deploy-from-image gated by allow_workload_create; needs e2e against the live stack |
| Dashboard module: Storage (node disk breakdown + reclaim actions) | Experimental | manual | on | breakdown (containerd layers vs blobs, per-claim volumes, registry, journald) and the estimated saving per action verified live against the worker; the reclaim actions themselves (image prune, journal vacuum, real registry GC) have only been exercised as dry runs |
testbed update (pull new commits, list phases to re-run) |
Experimental | manual | on | fast-forward pull, dirty-tree refusal, and the changed-path to phase mapping verified locally; not yet exercised on a checkout that was actually behind |
| Node and NF metrics (Prometheus to Metrics module and Overview) | Supported | manual | on | |
| Physical RAN attach (femtocell) | Supported | manual | on | validated as a working private 5G network, end to end |
| CAMARA Location + positioning demo (phase 10 northbound) | Supported * | manual: retrieve e2e + make iam | off | thesis core; opt-in via testbed northbound on; CAMARA retrieve returns a location end to end (client_credentials token to gateway to engine to mock, HTTP 200), make iam green; interactive demo/editor browser login still being exercised |
Standalone mock-positioning adapter (phase 10, positioning_engine) |
Supported * | manual | off | deployed in the lean baseline, seeded into the engine ADAPTER_URLS; exercises the real /measurement HTTP contract end to end |
placement-editor geometry UI (phase 10, placement_editor) |
Experimental | — | off | write-client to the engine blueprint store (PUT /blueprint, no PVC); always fronted by the generic frontdoor_gate (oauth2-proxy, NodePort 31950, Keycloak g-positioning-editors/g-dashboard-admins); gate verified live (302 to canonical login, dual-URL); interactive login + the v0.5.0 blueprint round trip (editor PUT → engine → demo via gateway) not yet exercised e2e (see docs/gaps.md) |
frontdoor_gate reusable Keycloak gate (phase 10) |
Experimental | manual | off | generic oauth2-proxy role (dual-URL: browser canonical issuer, server-side in-cluster); gates any no-auth surface; placement-editor is the first consumer; redirect-to-login proven, interactive e2e pending |
Custom adapter catalog (wifi-positioning, rest-adapter, bring-your-own image) |
Experimental | — | off | deployed on demand from the Northbound dashboard console, not by Ansible |
| 3GPP network-based positioning (LMF) | Planned | — | — | out of scope on current hardware; position is sourced from non-3GPP adapters instead. See known-issues/no-network-based-positioning.md |
| Guided contract-driven service setup (dashboard) | Experimental | manual | off | reads each service's /contract (0.3.0+) and walks required/recommended/optional fields; apply routes by sensitive to Secret vs ConfigMap (single mechanism), then rolls; first version, UX iterating |
| Single-origin front-door (phase 11) | Experimental | manual: --syntax-check + check-mode render | base-domain-conditional | in-cluster nginx routes <subdomain>.<base> by Host behind one Cloudflare wildcard; deploys only when external_base_domain is set; templates render clean, end-to-end routing through the wildcard not yet exercised on a live tunnel |
| Edge apps platform (phase 12: local registry + deploy-from-image + dynamic route) | Experimental | — | off | opt-in via testbed apps on; in-cluster registry:2 (insecure HTTP + basic-auth, NodePort only) + apps namespace + dashboard Apps page (deploy/list/delete, allow_workload_create gated); front-door routes <name>.<base> dynamically; not yet exercised e2e. See architecture/edge-apps.md |
| Idempotent re-provision and frontend image update (CLI/TUI) | Supported | manual | on | non-breaking upgrade of existing deployments is a v1 goal |
| Diagnostics / log management | Experimental | — | on | present, not extensively validated |
| Grafana advanced and alert rules (phase 07) | Experimental | — | opt-in | metrics pipeline works; alerting and log dashboards unvalidated |
| UERANSIM simulated RAN (phase 06) | Experimental | — | off | not currently exercised; see Reproducibility scope |
| KubeEdge edge node (phase 03) | Experimental | — | off | semi-implemented, no exercised use case |
| UPF-MEC | Experimental | — | replicas: 0 |
CNI route conflict, see known-issues/upf-edge-cni-route-conflict.md |
| Edge worker provisioning from dashboard | Planned | — | — | not built |
| MEC service scheduling (dashboard) | Planned | — | — | depends on the edge path |
| O-RAN near-RT RIC, NWDAF, NF update detection | Planned | — | — | directions, no code |
Companion repositories¶
The testbed consumes images produced by two separate repositories, bound by
image tags in ansible/group_vars/all.yml.
| Repository | Role | Status | Binding |
|---|---|---|---|
nf-platform |
Builds and patches Open5GS NF images, CI/CD, versioning | Image build pipeline in use; per-NF independent updates planned | image tags consumed via all.yml |
5g-northbound |
CAMARA and positioning application images | In active development | image tags pulled by phases 10-12 |
Reproducibility scope¶
The reproducible artifact is the software platform: the 5G core, SDN/NFV orchestration, overlay networking, IAM, dashboard, and the optional northbound addons all deploy in software on a single workstation from a clean install, with no RAN hardware required.
The RAN attaches at a clean boundary, in two modes:
- Physical femtocell: plug and play. A femtocell connected to the worker yields a working private 5G network end to end. This is the validated path today.
- UERANSIM (software RAN): a hardware-free end-to-end data plane. In progress, a v1 objective.
Hardware is needed only for an over-the-air data plane, not to deploy or operate the platform. See deployment/phases.md for the core vs optional phase split.