CP/UP split — Why the function that forwards packets holds no session state
The core network
Where it sits
What it is
What it is. The rule that the function which decides what happens to a packet is not the function that forwards it. The SMF holds the session state and the UPF holds the packets, and they are joined by N4. TS 23.501 §6.2.2 gives the SMF "Selection and control of UP function" and "Configures traffic steering at UPF to route traffic to proper destination"; §6.2.3 gives the UPF "Packet routing & forwarding" and "User Plane part of policy rule enforcement".
The division, line by line:
| The SMF decides | The UPF does |
|---|---|
| which UPF serves this session | forwards the packets |
| the device's IP address | answers ARP / IPv6 ND for it |
| the rules: detect this, treat it thus | matches packets and applies the rule |
| that the session should move | is replaced, or added to over N9 |
| what to measure | counts it and reports |
Why this is the precondition for the edge. A UPF holds no session state of its own — everything it does was programmed into it over N4. So a UPF can be put anywhere: in a central data centre, at a regional site, or in a cabinet at the foot of the mast, and the SMF that controls it does not have to move. That is the entire mechanism behind edge computing in 5G, and behind SSC mode 3's ability to add a new anchor before removing the old one.
And why the user plane is the part that scales. Control traffic grows with the number of events — registrations, session setups, handovers. User traffic grows with bytes. Separating them lets an operator buy forwarding capacity without buying signalling capacity, which is the practical reason the split exists at all.
It is not an HTTP interface. N4 is PFCP, not SBI — the service-based architecture covers the control plane among control functions, and the control of the user plane is a different job with different requirements. Worth remembering whenever someone says the 5G core is "all REST": the part that touches packets is not.
Read on
This concept is read as part of one argument in ref-core, alongside the rest of its group.
Before this concept, the hierarchy says to learn the following — the full chain, in order: