Skip to content
Docs / dflux TinyCore
ContactGet started

Quickstart

Install dflux TinyCore on a Linux host, activate your license, run the four required network functions natively, and drive a real UE registration — about ten minutes start to finish.

If you want the conceptual model before the hands-on walk-through, read the architecture overview first. The rest of this page assumes you're happy to learn by doing.

What dflux gives you
dflux TinyCore ships six prebuilt binaries: four required — d3x-core-nrf, d3x-core-dmf, d3x-core-dpf, and d3x-core-upf — plus optional d3x-core-nssf and d3x-core-smsf. You'll have received a download link and a single license file for the tinycore product from d3x — keep both handy. The download link is time-limited; the license file is yours to keep and is shared by all NFs.
Native binaries vs Compose short names
On a host PATH the installed commands are d3x-core-<nf>. If the d3x umbrella is also on your PATH, d3x core nrf (and the other NFs) execs the same binary. Each process's --help still prints Usage: nrf / Usage: dmf — that is the internal process name, not the command you type. The Docker lab image is different: deploy/lab/docker-compose.yml starts each container with the short name ( command: ["nrf", "-debug", …]) because that is what the lab image entrypoint expects. Do not mix the two.

Prerequisites

  • A Linux host (amd64 or arm64). The required NFs drive NGAP over kernel SCTP and the UPF opens a TUN for its userspace datapath — both are Linux-only.
  • root (or sudo) to install the binaries, plus CAP_NET_ADMIN for the UPF if you want it to forward real packets.
  • A gNB simulator to drive the golden path — dflux Runner is the one used throughout these docs. It speaks real NGAP over SCTP to the DMF and runs a UE through registration and 5G-AKA.

Step 1 — Download and install the binaries

Download the release archive using the link dflux gave you, then verify and unpack it:

Bash

The archive contains the four required NF binaries — d3x-core-nrf, d3x-core-dmf, d3x-core-dpf, d3x-core-upf — plus optional d3x-core-nssf / d3x-core-smsf when included, and an examples/ directory with ready-to-run configs. Install the required binaries onto your PATH:

Bash

Confirm each binary runs:

Bash

Step 2 — Activate your license

All NFs read the same tinycore grant. Drop the file dflux gave you at the product path, /etc/dflux/tinycore.lic (or a compound /etc/dflux/d3x.lic):

Bash

Each NF logs who it's licensed to and when the license expires as it starts. A missing or invalid license is fail-closed — the process refuses to start. You'll see a line like:

Code
License location
Resolution order: D3X_LICENSE_FILE if set, else /etc/dflux/d3x.lic when that compound file exists, else /etc/dflux/tinycore.lic. Verification is fully offline; nothing phones home. After a successful start, expiry is re-checked daily and only warns. See Licensing for the full picture.

Step 3 — Run the four required NFs natively

The golden path uses the four required functions. Optional NSSF and SMSF are not needed for registration. A working core comes up in a fixed order: the NRF first (everyone registers with it), then the DPF (subscribers and policy), the UPF (user plane), and finally the DMF (AMF + SMF), which dials the others. Open four terminals and start each NF in its own. For the full flag rationale, see Run the core natively.

Terminal 1 — NRF

Bash

Terminal 2 — DPF (seeded)

Bash

Terminal 3 — UPF

For registration alone the stub datapath is enough. If you want the UPF to forward real packets, grant it the TUN capability once on the installed binary first:

Bash
Bash

Terminal 4 — DMF (AMF + SMF)

DMF and UPF both default to UDP :8805 for PFCP. On a single host, bind the DMF's N4 listener on a different port so it does not collide with the UPF:

Bash
Watch the NRF
As each NF starts it registers with the NRF. If a downstream NF does not appear, the most common cause is a wrong -nrf URL or starting out of order. Stop, fix, and restart from the NRF down.

Step 4 — Drive a registration

With the core up, point your gNB simulator at the DMF's N2 listener on 127.0.0.1:38412 over SCTP. With dflux Runner as the gNB, run its registration flow against the DMF and watch the UE register, complete 5G-AKA, and establish a PDU session. The DMF log shows the same flow from the core's side — NGSetup, the registration request, the authentication challenge and response, and the SMF programming the UPF over N4.

Use a seeded subscriber so the DPF can verify it — for example imsi-001010000000001 with key 465B5CE8B199B49FAA5F0A2EE238A6BC and OPc E8ED289DEBA952E4283B54E88E6183CA, exactly as in Register a UE and open a session.

What you did

You've installed and licensed the required dflux TinyCore NFs, run them natively on a Linux host, and driven a real UE registration with full authentication and a PDU session.

Where to go next