Skip to content
Docs / dflux TinyCore
ContactGet started

Run the core natively

Start NRF, DPF, UPF, and DMF as plain host processes and wire them together on localhost.

What you are starting

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 DPF, NRF, and UPF it was told about. The flag sets below retarget the canonical deploy/lab/docker-compose.yml topology at localhost. Optional NSSF and SMSF are not required for this bring-up.

N2/SCTP needs Linux
The DMF binds N2 over SCTP on port 38412. SCTP is a kernel feature that is available on Linux but not on macOS, so attaching a gNB to a natively-run DMF only works on a Linux host. On macOS use the Docker lab instead. The SBI and PFCP paths run natively anywhere.
Type d3x-core-nrf, not nrf
Native commands on this page use the installed binaries (d3x-core-nrf, and so on). Compose files keep the short names because the lab image entrypoint expects command: ["nrf", …].

Install first

These commands assume the four required NF binaries are on your PATH. If they are not, install the binaries first.

Four terminals, in order

Open four terminals and start each required NF in its own. Wait for the NRF to be up before launching the rest.

Terminal 1 — NRF

Bash

The NRF listens for SBI registrations on :8080. Note its -plmn takes comma-separated mcc,mnc, unlike the dash form the DMF and DPF use.

Terminal 2 — DPF (seeded)

Bash

-seed installs the built-in test subscribers into the in-memory store so you have something to register with. -rate-disable turns off per-IP rate limiting, which is convenient in a lab. See Provision subscribers for persistent stores and the seeded vectors.

Terminal 3 — UPF

Bash

The UPF defaults to the stub datapath, which accepts PFCP sessions and does the full control-plane dance but does not forward real packets. That is the right choice for verifying registration and session establishment. To forward actual traffic you switch to -datapath userspace (which opens a TUN and needs CAP_NET_ADMIN) — see the UPF datapath guide.

Terminal 4 — DMF (AMF + SMF)

DMF and UPF both default to UDP :8805 for PFCP. On one host, bind the DMF's N4 listener on :8806 and point -upf at the UPF's address.

Bash

The DMF ties the core together: -dpf for authentication and subscriber data, -nrf for registration and discovery, and one or more repeatable -upf flags naming the UPF's PFCP address. -pfcp-ip is the IPv4 the DMF advertises in its PFCP F-SEID; on localhost set it to 127.0.0.1 so the UPF replies to the right address. The -plmn, -tac, and -sst values must match what your gNB advertises — see Connect a gNB.

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.

Where to go next