NED File src/simu5g/corenetwork/userPlaneNodeControl/UserPlaneNodeControl.ned¶
Name |
Type |
Description |
|---|---|---|
simple module |
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: |
Source code¶
//
// Simu5G
//
// Authors: Andras Varga (OpenSim Ltd)
//
// This file is part of a software released under the license included in file
// "license.pdf". Please read LICENSE and README files before using it.
// The above files and the present reference are part of the software itself,
// and cannot be removed from it.
//
package simu5g.corenetwork.userPlaneNodeControl;
//
// 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
}