4. First demo run

Configure and start

  1. Navigate to Simulator in the left nav.

    Simulator page, idle

  2. 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.

  3. 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.

  4. 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.

  5. Once onboarding completes, the dashboard populates:

    Simulator page, running

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_PACKET socket bound inside the cpesim-subs network 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:8080 on the other side of the BNG) and download a 2 GB video.mp4 in realistic mode — paced to offered_mbps per 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.