Package: simu5g.corenetwork.userPlaneNodeControl
UserPlaneNodeControl
simple moduleThe control-plane entry point of a user plane node (Upf, PgwStandard, a MEC host's UPF): the node's end of the interface over which the core network's control plane (CoreControl) programs the user plane -- N4 with PFCP (TS 29.244) in a 5G core; in an EPC, GTP-C over S11/S5 (TS 29.274), or Sx with PFCP under CUPS. The signaling is not modeled as packets; it is modeled as the calls this module answers:
- setDownlinkClassifierRules(): the node's downlink QFI classification rules (in 5GC terms the packet detection and QoS enforcement rules, PDR/QER), installed into the node's TrafficFlowFilter
- establishUserPlaneSession(): a session's uplink tunnel at this node (PFCP Session Establishment; GTP-C Create Session), installed into the node's GtpUser under a tunnel endpoint id (TEID) allocated from the node's own TEID space, with the session's type (the PDU session type / PDN type these messages carry), which the tunnel end attaches to every datagram of the session (see SessionTag)
- updateDownlinkTunnel(): the session's downlink tunnel, i.e. the F-TEID at the base station the downlink enters the RAN at, and the End Marker that closes the old path after a path switch (PFCP Session Modification; GTP-C Modify Bearer; TS 23.502 4.9.1.2.2, TS 23.401 5.5.1.1.2)
- releaseUserPlaneSession(): the session's tunnels are forgotten (PFCP Session Deletion; GTP-C Delete Session)
Unstructured sessions. A UPF anchors a UE's Unstructured session (see the sessionType parameter of LteUe) with an N6 point-to-point tunnel based on UDP/IP to one application server (TS 29.561 9.2): the session's uplink payload leaves the node in a UDP/IP datagram from the session's N6 address and the unstructuredPort to the unstructuredServer at the unstructuredServerPort, and a datagram of the data network to the session's N6 address and the unstructuredPort is the session's downlink, whose payload goes into the session's tunnel without the UDP/IP headers. The node originates and ends those datagrams itself, as a forwarding node, on its N6 interface. The CoreControl (the SMF) allocates each session's N6 address from the unstructuredPrefix, one address per session, and hands it over with the session's establishment; the data network routes the prefix to this node. TS 29.561 defines no port numbers: the UPF and the server use ports configured alike at both ends, which is why the two port parameters have no default. The prefix, the server and the ports are the node's, not per data network: a UPF serves one data network here. Both address families work; the server is resolved in the prefix's family.
Ethernet sessions. A UPF with an EthernetSessionBridge anchors a UE's Ethernet session: its establishment adds the session's port to the anchor's bridge, its release removes it (flushing the addresses learned on it). A UPF without one rejects the session.
Nothing outside the node reaches its GtpUser or TrafficFlowFilter directly; how the node is composed is its own business. The module registers with the Binder at initialization as the node's control-plane entry point, which is how the CoreControl finds the user plane nodes of the network and the core network gateway a MEC host's UPF sits behind.
Used in compound modules
| Name | Type | Description |
|---|---|---|
| PgwStandard | compound module |
Implements a simplified EPC PDN Gateway (P-GW) of a 4G LTE network. It serves as the entry point to the core network of an LTE network, thus bridging it to the rest of the Internet. Packets arriving from the Internet are tunneled to the appropriate next hop in the core network (e.g., the eNodeB that will transmit the packet to the destination User Equipment through the radio access network) using the GPRS Tunneling Protocol (GTP). Conversely, packets received from the core network are detunneled and sent to the Internet (e.g., towards a remote server). To accomplish this, it utilizes a UserPlaneRelay, whose GtpUser handles GTP (de)tunneling and whose TrafficFlowFilter classifies incoming packets. |
| Upf | compound module |
Implements the 5G Core User Plane Function (UPF). |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| binderModule | string | "binder" | |
| gtpUserModule | string | "^.relay.gtpUser" | |
| trafficFlowFilterModule | string | "^.relay.trafficFlowFilter" | |
| ethernetBridgeModule | string | "^.ethBridge.sessionMux" |
The node's Ethernet session bridge (see EthernetSessionBridge), if it has one |
| nodeType | string |
The type of the containing node, which sets it |
|
| gateway | string | "" |
A MEC host UPF's core network gateway, the anchor UPF whose sessions it serves; empty at an anchor |
| unstructuredPrefix | string | "" |
The prefix the N6 addresses of Unstructured sessions are allocated from, e.g. "2001:db8:5::/64" or "10.5.0.0/16"; empty = the node anchors no Unstructured session (see the main comment) |
| unstructuredServer | string | "" |
The application server the Unstructured sessions' uplink goes to: a module path relative to the network, resolved in the family of unstructuredPrefix |
| unstructuredServerPort | int | -1 |
The UDP port of unstructuredServer the uplink goes to; must be set for Unstructured sessions |
| unstructuredPort | int | -1 |
The UDP port the node receives the Unstructured sessions' downlink on, and sends their uplink from; must be set for Unstructured sessions |
Properties
| Name | Value | Description |
|---|---|---|
| display | i=block/cogwheel |
Source code
// // The control-plane entry point of a user plane node (~Upf, ~PgwStandard, a MEC // host's UPF): the node's end of the interface over which the core network's control // plane (~CoreControl) programs the user plane -- N4 with PFCP (TS 29.244) in a 5G // core; in an EPC, GTP-C over S11/S5 (TS 29.274), or Sx with PFCP under CUPS. The // signaling is not modeled as packets; it is modeled as the calls this module // answers: // - setDownlinkClassifierRules(): the node's downlink QFI classification rules (in // 5GC terms the packet detection and QoS enforcement rules, PDR/QER), installed // into the node's ~TrafficFlowFilter // - establishUserPlaneSession(): a session's uplink tunnel at this node (PFCP Session // Establishment; GTP-C Create Session), installed into the node's ~GtpUser under a // tunnel endpoint id (TEID) allocated from the node's own TEID space, with the // session's type (the PDU session type / PDN type these messages carry), which the // tunnel end attaches to every datagram of the session (see ~SessionTag) // - updateDownlinkTunnel(): the session's downlink tunnel, i.e. the F-TEID at the // base station the downlink enters the RAN at, and the End Marker that closes the // old path after a path switch (PFCP Session Modification; GTP-C Modify Bearer; // TS 23.502 4.9.1.2.2, TS 23.401 5.5.1.1.2) // - releaseUserPlaneSession(): the session's tunnels are forgotten (PFCP Session // Deletion; GTP-C Delete Session) // // Unstructured sessions. A UPF anchors a UE's Unstructured session (see the // sessionType parameter of ~LteUe) with an N6 point-to-point tunnel based on UDP/IP to // one application server (TS 29.561 9.2): the session's uplink payload leaves the node // in a UDP/IP datagram from the session's N6 address and the unstructuredPort to the // unstructuredServer at the unstructuredServerPort, and a datagram of the data network // to the session's N6 address and the unstructuredPort is the session's downlink, // whose payload goes into the session's tunnel without the UDP/IP headers. The node // originates and ends those datagrams itself, as a forwarding node, on its N6 // interface. The ~CoreControl (the SMF) allocates each session's N6 address from the // unstructuredPrefix, one address per session, and hands it over with the session's // establishment; the data network routes the prefix to this node. TS 29.561 defines // no port numbers: the UPF and the server use ports configured alike at both ends, // which is why the two port parameters have no default. The prefix, the server and the // ports are the node's, not per data network: a UPF serves one data network here. // Both address families work; the server is resolved in the prefix's family. // // Ethernet sessions. A UPF with an ~EthernetSessionBridge anchors a UE's Ethernet session: its // establishment adds the session's port to the anchor's bridge, its release removes it // (flushing the addresses learned on it). A UPF without one rejects the session. // // Nothing outside the node reaches its ~GtpUser or ~TrafficFlowFilter directly; how // the node is composed is its own business. The module registers with the ~Binder // at initialization as the node's control-plane entry point, which is how the // ~CoreControl finds the user plane nodes of the network and the core network // gateway a MEC host's UPF sits behind. // simple UserPlaneNodeControl { parameters: @display("i=block/cogwheel"); string binderModule = default("binder"); string gtpUserModule = default("^.relay.gtpUser"); string trafficFlowFilterModule = default("^.relay.trafficFlowFilter"); string ethernetBridgeModule = default("^.ethBridge.sessionMux"); // The node's Ethernet session bridge (see ~EthernetSessionBridge), if it has one string nodeType @enum(PGW,UPF,UPF_MEC); // The type of the containing node, which sets it string gateway = default(""); // A MEC host UPF's core network gateway, the anchor UPF whose sessions it serves; empty at an anchor string unstructuredPrefix = default(""); // The prefix the N6 addresses of Unstructured sessions are allocated from, e.g. "2001:db8:5::/64" or "10.5.0.0/16"; empty = the node anchors no Unstructured session (see the main comment) string unstructuredServer = default(""); // The application server the Unstructured sessions' uplink goes to: a module path relative to the network, resolved in the family of unstructuredPrefix int unstructuredServerPort = default(-1); // The UDP port of unstructuredServer the uplink goes to; must be set for Unstructured sessions int unstructuredPort = default(-1); // The UDP port the node receives the Unstructured sessions' downlink on, and sends their uplink from; must be set for Unstructured sessions }File: src/simu5g/corenetwork/userPlaneNodeControl/UserPlaneNodeControl.ned