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.
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.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, plusCAP_NET_ADMINfor 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:
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:
Confirm each binary runs:
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):
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:
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
Terminal 2 — DPF (seeded)
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:
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:
-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
- Bring up a lab core and Register a UE and open a session — the same path, step by step, including the Docker lab (which starts all six NFs).
- Forward user-plane traffic — switch the UPF to its userspace datapath so a UE really reaches the Internet.
- Architecture and Registration & authentication — how the pieces fit and what happens on attach.