Skip to content
Docs / dflux TinyCore
ContactGet started

Register a UE and open a session

Drive a simulated gNB through the lab core to perform NGSetup, register a UE with 5G-AKA, and establish a PDU session.

With the lab core up, the next step is to put a gNB in front of it and watch a UE come on the network. dflux TinyCore uses dflux Runner as the gNB simulator: it speaks real NGAP over SCTP to the DMF on N2, runs a UE through the 5G-AKA authentication exchange, and asks for a PDU session. For the protocol background, see Registration and authentication and PDU sessions.

Prerequisites
You need the things from Bring up a lab core (Docker and the installed NF binaries), plus dflux Runner and a checkout of the public d3x-templates repo. Keep the lab up while you run the simulator so Compose DNS names such as dmf still resolve.

1. Identities must match on both sides

Authentication only succeeds if the UE the gNB simulator presents is one the core actually knows, with the same secret keys. There are two sources of truth, and they are kept in sync deliberately:

  • The DPF seed. The lab DPF runs with -seed, which loads five test subscribers (imsi-001010000000001 through imsi-001010000000005) using the canonical open5gs test vectors — key 465B5CE8B199B49FAA5F0A2EE238A6BC, OPc E8ED289DEBA952E4283B54E88E6183CA, PLMN 001/01. Subscribers 1–4 authenticate with 5G-AKA; subscriber 5 is provisioned for EAP-AKA′.
  • The gNB simulator subscribers. deploy/lab/config/lab-subscribers.yaml declares the first three of those SUPIs (in dashed form imsi-001-01-0000000001 through …0003) with the same key/OPc, so the UE dflux Runner drives presents credentials the DPF can verify.

The PLMN, TAC, and slice must line up too. The DMF is started with -plmn 001-01 -tac 000001 -sst 1, and deploy/lab/config/lab-gnb.yaml advertises exactly that PLMN/TAC/slice and dials the DMF by its Compose service name on N2:

YAML
Mismatch = rejection
Change the SUPI, key, or OPc in lab-subscribers.yaml without provisioning the same subscriber in the DPF and authentication fails. Change the PLMN/TAC/slice in lab-gnb.yaml away from the DMF flags and NGSetup or registration is rejected before you ever reach 5G-AKA. To add your own subscribers, see Provisioning subscribers.

2. Run a registration with dflux Runner

Point dflux Runner at the lab gNB config and a seeded subscriber. The registration flow drives NGSetup, UE registration, 5G-AKA, and PDU session establishment. Join the lab Compose network so the peer address dmf in lab-gnb.yaml resolves:

Bash

If you run Runner as a container on the lab bridge, mount the same config directory and pass the same flags. The gNB config's peers entry uses the Compose DNS name dmf on port 38412; a native DMF instead wants 127.0.0.1:38412 — see Connect a gNB.

3. What to watch

Read the Runner output for the pass/fail of each step. Then tail the DMF to follow the flow from the core's side — you will see the NGSetup handshake, the UE's registration request, the authentication challenge and response (5G-AKA), and the PDU session establishment that hands off to the UPF over PFCP:

Bash

A seeded SUPI such as imsi-001010000000001 (compact form; the same digits as imsi-001-01-0000000001 in the Runner YAML) should complete registration and leave an active PDU session on the stub UPF.

Where to go next

At this point a UE has authenticated and the core has set up a PDU session — but in the default lab the UPF datapath is a stub, so no real packets move. To make the UPF forward traffic, see Forward user-plane traffic. To connect a real gNB instead of the simulator, see Connecting a gNB.