4. First demo run
Configure and start
-
Navigate to Simulator in the left nav.

-
The default configuration is a reasonable starting point: 50 subscribers, 20% captive (unauthenticated), the rest provisioned; 50 Mbps offered per subscriber; downstream traffic enabled; run-until-stopped (Duration 0); trickle churn every 25 s. For your first run, leave the defaults and click Start.
-
The status changes to starting while access wiring runs (veth pair creation, network-namespace setup, VPP host-interface attach, BNG enable_disable). This takes 5–10 seconds.
-
Then the demo enters the onboarding phase — CPESIM sends DHCP DISCOVER for each subscriber and waits for the BNG to move them to BOUND. For 50 subs this typically finishes within 20–45 seconds.
-
Once onboarding completes, the dashboard populates:

What each status box means
| Box | Meaning |
|---|---|
| Connected | Number of provisioned subscribers currently in the BNG's BOUND state. |
| Captive | Number of subscribers stuck in the captive portal state (unprovisioned — deliberately included so the demo shows both flows). |
| Elapsed | Seconds since the current run started. |
| Throughput | Live downstream Mbps, sampled directly from VPP's host-demo0p tx bytes counter — the same source the BNG dashboard uses. The two numbers will agree. |
| Last error | null under normal operation. Any string here is a diagnostic worth investigating (see §6). |
What's happening under the hood
- Each subscriber is a real DHCP client (Scapy-based) sending frames on an
AF_PACKETsocket bound inside thecpesim-subsnetwork namespace. The BNG sees identical wire behavior to real CPEs. - Once BOUND, subscribers open TCP connections to the origin server (bundled with the plugin, listening on
10.0.0.1:8080on the other side of the BNG) and download a 2 GBvideo.mp4inrealisticmode — paced tooffered_mbpsper subscriber. - Traffic runs in two overlapping 60-second bursts (phased 30 s apart) so the downstream stays continuous even during between-burst engine restarts.
- Every 25 seconds one provisioned subscriber is disconnected and re-DORAs — a visible "churn" event you can watch on the sessions timeline.
Stop and restart
Click Stop to end the current run. The demo unwinds: subscribers RELEASE, VPP host-interfaces detach, veths and the netns are torn down. This takes 10–20 seconds.
You can click Start again immediately — a defensive cleanup pass runs at the top of every access_setup and handles any state left behind by an aborted teardown.