CoreControl.ned
NED File src/simu5g/corenetwork/coreControl/CoreControl.ned
| Name | Type | Description |
|---|---|---|
| CoreControl | simple module |
The control plane of the core network, one per cellular network alongside its Binder and BearerConfigurator: the MME and the control plane of the gateways of an EPC, or the AMF and the SMF of a 5G core, in one module. |
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.coreControl; // // The control plane of the core network, one per cellular network alongside its // ~Binder and ~BearerConfigurator: the MME and the control plane of the gateways of // an EPC, or the AMF and the SMF of a 5G core, in one module. // // As the MME/AMF, it takes the UEs' registrations: a UE's leg that connects at a // base station is announced here by that base station (initialUeMessage(), the // INITIAL UE MESSAGE of S1AP/NGAP; at initialization, every leg attached to its // configured cell). As the gateways' control plane/SMF, it keeps a session per // UE (session id 1), of the type the UE requests with its registration (the // sessionType parameter of ~LteUe), established at the UE's first registration and // released when the UE leaves the simulation. A type the anchor's core network cannot // carry is an error: an EPC (a ~PgwStandard anchor) carries the IP types only. An // Unstructured session (a 5G core's) needs a UE stack with SDAP, and has one QoS // flow and no QoS rules: no ulQfiRules entry may be scoped to its UE. The module // allocates its N6 address from the anchor UPF's unstructuredPrefix (see // ~UserPlaneNodeControl), and gives it no MEC host tunnels, as MEC steering goes by // the IP destination. The module programs the nodes that end the session's // tunnels, and tells them the session's type, through their control-plane entry // points: the user plane nodes' ~UserPlaneNodeControl and the base stations' // connection controls (~ConnectionControlEnb, whose sessionResourceSetup() also // installs the UE's uplink QoS rules and static bearers). A session has an uplink // tunnel at the anchor UPF (or PGW) and at each MEC host UPF of the anchor's core // network, and a downlink tunnel at each base station the session's downlink has // entered the RAN at; the tunnel endpoint ids (TEIDs) are allocated by the receiving // node itself. The anchor is the core network gateway of the base station the UE's // downlink enters the RAN at when the session is established, and it stays for the // lifetime of the session (SSC mode 1): a handover only moves the downlink end of the // tunnel (the path switch, TS 23.502 4.9.1.2.2), on the target base station's PATH // SWITCH REQUEST, and the anchor closes the old path with an End Marker. The target's // tunnels are set up at handover preparation, between the base stations over Xn, and // reported with the request. // // The module also delivers the QFI classification rules authored in the // ~BearerConfigurator (its dlQfiRules and ulQfiRules parameters) to their evaluation // sites: the downlink rules to each user plane node, the uplink rules to each // SDAP UE's classifier (the QoS rules NAS signaling installs into a UE at PDU session // establishment, TS 23.501 5.7.1.4). // // Like the ~Binder, the module is reached through module paths supplied in // parameters (coreControlModule), so several cellular networks -- each with its own // Binder, BearerConfigurator and CoreControl -- can coexist in one simulation. The // signaling toward the user plane nodes (GTP-C/PFCP) and the base stations (S1AP/NGAP) // is modeled as calls; a separate S-GW, intermediate UPFs (I-UPF) and SSC modes 2 and // 3 are not modeled. // simple CoreControl { parameters: @display("i=block/cogwheel"); string binderModule = default("binder"); string bearerConfiguratorModule = default("bearerConfigurator"); }