Troubleshooting

Header shows VPP ? for > 10s

The controller can't talk to vpp-bridge. Usually a punt-socket or vpp-bridge health issue:

sudo systemctl status vpp vpp-bridge quantum-controller
sudo vppctl show errors | grep -i punt      # if "Socket TX" errors, vpp-bridge lost the socket

Restart in the right order (vpp first, then vpp-bridge, then controller):

sudo systemctl restart vpp
sleep 3
sudo systemctl restart vpp-bridge
sleep 2
sudo systemctl restart quantum-controller

DHCP DISCOVERs are being dropped

Controller journal will tell you why:

sudo journalctl -u quantum-controller --since '5 minutes ago' | grep onDiscover

Common causes:

Message Cause Fix
captive required but no captive portal IP configured, dropping Gated AAA + no portal_ip set Portal Config → set portal_ip
pool 'default' exhausted DHCP pool full Pools & DNS → add capacity
unknown line identity, unknown=reject Gated AAA, unlisted line, policy set to reject Provision the line or flip unknown to captive
session cap reached 1000-session Community Edition cap Contact BlueDot for a larger license

Sessions header shows N but Sessions page table is empty

The header polls one endpoint; the page polls a different one. Usually a transient auth race just after login — hard-refresh the page (Cmd+Shift+R / Ctrl+Shift+R). If it persists across refreshes, check that the session cookie is still valid: User menu (top-right) → Profile → Session info.

CPESIM demo won't start — pool gateway 10.50.0.1/24 is already held by host-demo0p

The controller has a stale access_interfaces binding from a previous CPESIM run that didn't teardown cleanly. Reset:

sudo /usr/local/bin/reset-cpesim

This clears the stale record + restarts the whole CPESIM engine in the right order (vpp → vpp-bridge → controller → bng-demo).

AAA (LOCAL) DOWN — provider unreachable on the dashboard

The AAA local-provider file isn't readable. Usually a permissions issue after a manual API key mint:

sudo ls -la /var/lib/quantum-controller/api_keys.json
# should be owned by quantum-controller:quantum-controller, mode 0600
sudo chown quantum-controller:quantum-controller /var/lib/quantum-controller/api_keys.json
sudo systemctl restart quantum-controller

Long-running API calls (e.g., snapshot restore) return HTTP 500

Gunicorn's per-worker timeout killed the request. The installer drops in a 180s override at /etc/systemd/system/bng-deploy.service.d/10-timeout.conf — check it's still there. If you're doing something that takes longer than 180s (e.g., importing 5000 subscribers), bump the override:

sudo sed -i 's/--timeout 180/--timeout 300/' /etc/systemd/system/bng-deploy.service.d/10-timeout.conf
sudo systemctl daemon-reload
sudo systemctl restart bng-deploy