Known limitations

Being upfront about the shape of this alpha:

Control plane scale ceiling

The Quantum Controller currently processes roughly 5–10 subscriber state changes per second end-to-end (DHCP DORA + local-AAA lookup + session persist + interim tick). That's fine for:

  • Small pilots (up to ~500 concurrent subscribers with normal churn)
  • UI-driven ops (plan edits, pool changes, admin actions)
  • Bench / lab evaluation

It's not fine for ISP-scale churn scenarios (bursts of >100 sessions/sec, mass CPE reboots, aggressive re-DORA storms). Under sustained churn above that rate, the controller backlogs; we've seen orphaned sessions and over-drain under stress. The controller team is actively working the throughput ceiling; expect meaningful improvement in the next release.

Data plane performance is not the bottleneck — VPP hits line-rate at 40G+/port on Tier 1 NICs. The scale limit is entirely in the control-path RPCs.

RADIUS not shipped

Standalone deployments use local-AAA (per-line records + Option-82 identity). If you need real RADIUS auth/accounting/CoA against an external server, that's a follow-on release — the /bng/radius config API is inert (returns 503) in this build.

DSCP remarking of out-of-contract traffic (issue #19)

The 3-color meter classifies traffic into green (in-contract), yellow (over CIR, under PIR), and red (dropped). Counters increment correctly per color. Marking — rewriting DSCP on yellow packets — is not yet implemented. Forwarding decisions are correct; only the DSCP bit-flip is missing.

External captive portal — you host it

Local captive-portal mode works. External-URL redirect mode (where subscribers get bounced to a portal on your own infrastructure) requires you to serve the portal; QuantumBNG doesn't ship a hosted one. RFC 7710 / RFC 8910 (DHCP Option 114 / IPv6 RA captive-portal URL emission) is targeted for a follow-on.

Mellanox ConnectX drag-to-VPP rough edge

As noted in the NIC section: the wizard's DPDK Bind step assumes vfio-pci rebinding, which works for Intel PMDs. Mellanox mlx5 uses a bifurcated driver — the NIC stays on mlx5_core and the DPDK PMD grabs it in-place. If you drag a ConnectX in the wizard and it doesn't bind cleanly, you'll need to edit /etc/vpp/startup.conf by hand and add dpdk { dev 0000:XX:00.0 }, then restart VPP. We'll smooth this in a follow-on.

Setup wizard's DPDK Bind requires VPP briefly restart

Rebinding a NIC to VPP requires VPP to release its current port set. As of this release, dragging a NIC in the wizard will auto-stop + auto-restart VPP behind the scenes (the wizard is designed for fresh-install context where no subscribers are yet connected). On a live production box, the Settings-page ports panel prompts for confirmation first — active subscriber sessions will drop briefly during the VPP restart.

Deep-wipe / uninstall behavior

The bundled uninstall.sh now rebinds vfio-pci-owned NICs back to their kernel driver before purging VPP (fixed in this release). Prior to this fix, a uninstall.sh left NICs invisible to the kernel until manual dpdk-devbind --bind=<kdrv>. If you're upgrading from an earlier private build, run:

sudo dpdk-devbind.py --status                            # find vfio-pci NICs
sudo dpdk-devbind.py --bind=i40e 0000:01:00.0            # rebind XL710

before reinstalling.