Skip to content

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: rk can 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-flow and rk run-suite read files, run, print a report and exit. No server, no database. This is the mode for engineers and CI.
  • As a worker: rk daemon connects to Runik Control, which schedules jobs across many workers and keeps their reports. See Daemon mode.

Start here

  1. Install rk.
  2. Follow the Quickstart to register UEs against your AMF.
  3. Read Licensing to see what runs without a licence.

rk runs on Linux, amd64 and arm64.