UserPlaneNodeControl.ned
NED File src/simu5g/corenetwork/userPlaneNodeControl/UserPlaneNodeControl.ned
| Name | Type | Description |
|---|---|---|
| UserPlaneNodeControl | 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 }