Load generation

POST /api/bng/demo/start                               read_only
POST /api/bng/demo/stop                                read_only
GET  /api/bng/demo/status                              read_only
POST /api/bng/demo/reset                               read_only
POST /api/bng/demo/deep-reset                          read_only
POST /api/bng/demo/trex/start                          read_write
POST /api/bng/demo/trex/stop                           read_write
GET  /api/bng/demo/trex/status                         read_write

These are lab and acceptance-test surfaces, and they exist for a specific reason
that matters during evaluation: a BNG can be driven to a realistic subscriber
and traffic state through its own API, with no external test equipment.

The session generator creates synthetic subscribers through the real DORA
path — they are genuine sessions in the controller's session table, with real
plans applied and real policers programmed — and optionally emits accounting.
Rate and packet size per session are configurable and clamped to sane bounds. It
reports live progress: sessions created, connected and captive counts, packets
and bytes sent, elapsed runtime, and any error.

reset tears down the synthetic sessions by their reserved MAC prefix, leaving
real subscribers untouched. deep-reset is destructive: it snapshots the
controller's BNG configuration, issues a full persistent reset, and replays the
configuration. It exists for a wedged state machine and returns the pre-reset
snapshot in its response so nothing is lost.

The traffic generator drives external load through a remote host, supporting
a steady rate or an oscillating pattern stepping through a list of rates. It is
read_write throughout, including its status endpoint.

For a competitive evaluation the practical value is that a bake-off script can,
through one API and one credential, bring a bare box to configured state, drive
subscribers onto it, generate representative traffic, and then read the QoS
counters, the retained time series, and the health verdict that result — with no
manual step in the loop.

Integration Patterns