Overview
Runik (rk) is a protocol load and conformance tester for 5G and 4G cores:
- it drives signalling (NGAP, Diameter, SBI, REST, PFCP) and GTP-U user-plane traffic against real network functions;
- you describe each procedure as a YAML state machine (a flow), not code;
- it all runs from one binary.
What you can do with it
- Check that procedures work: registration, PDU sessions, handover and more, against an AMF, SMF, UPF, UDM, HSS, or a vendor's admin API. Each run ends in a verdict and an exit code that CI can act on.
- Find the load your core sustains: stepped load runs raise the rate until a rule you set trips, and report the knee. See Load runs.
- Play either side:
rkcan be the gNB or the AMF, the client or the server, the SMF or the UPF, so you can test one network function on its own. See Test a UPF. - Measure the user plane: send traffic through the tunnels the core sets up, over kernel sockets or DPDK. See User plane.
- Fuzz: mutate messages and catch crashes with an oracle. See Fuzzing.
Two ways to run
- One-shot, from the command line:
rk run-flowandrk run-suiteread files, run, print a report and exit. No server, no database. This is the mode for engineers and CI. - As a worker:
rk daemonconnects to Runik Control, which schedules jobs across many workers and keeps their reports. See Daemon mode.
Start here
- Install
rk. - Follow the Quickstart to register UEs against your AMF.
- Read Licensing to see what runs without a licence.
rk runs on Linux, amd64 and arm64.