Package: simu5g.stack.rrc
ConnectionControlEnb
simple moduleThe control-plane entry point of a base station: the one module of the node that the control plane of other nodes -- the CoreControl, the other base stations, and the UEs' ConnectionControlUe -- talks to, and that the node's own data path turns to when it needs a bearer.
Tunnels. It owns the node's GTP-U tunnel endpoint id (TEID) space, and programs the node's tunnel endpoints, GtpUser (the N3/S1-U end) and GtpUserX2 (the X2-U end), as the calls of the CoreControl and of the other base stations say:
- sessionTunnelSetup(): a session's tunnels at this base station: the downlink tunnel, under a TEID allocated here, which also receives the downlink a handover source forwards over X2-U, and the uplink tunnels into the core network; set up once per session, whichever side asks first
- setForwardingTeid(): the session's downlink TEID at another base station, to forward the downlink to it with during a handover
- sessionRelease(): the session's tunnels here are forgotten
- addDcTunnel(), setDcTunnelTeid(): the X2-U tunnels of a dual connectivity bearer, one per direction, each allocated at its receiving end
Bearers. It establishes the data radio bearers of the UEs it serves, from the bearer definitions the BearerConfigurator holds (which it reads and never writes): a flow the data path could not place gets the bearer of the definition it matches, an unmapped QFI the bearer of the definition that maps it, and each bearer's entities are installed at this node, at the UE, and at a dual connectivity secondary, through their control-plane entry points -- the RRC signaling the model does not have. It also owns the DRB identities of its UEs (one pool per UE-and-node pair), which a torn-down bearer's returns to.
Attach. A UE's leg connects here with connectionSetupRequest() (at initialization, at its configured serving cell; during the run, when a detached leg finds a cell), stating the type of the session the UE requests; the base station takes it on at its AMC and registers the UE with the CoreControl (the INITIAL UE MESSAGE of S1AP/NGAP), which establishes the UE's session and asks this base station to set up its resources (sessionResourceSetup(): the tunnels, which keep the session's type, the UE's uplink QoS rules, and the static bearers of the leg that carries them). A leg that lost its cell, or whose UE leaves, says so with connectionLost(): the base station releases its state for the leg and tells the core network.
Handover. The serving base station decides on a leg's measurementReport() and prepares the handover with the target over Xn: handoverRequest() carries the leg's context to the target, which sets the UE's session tunnels up at the base station the downlink will enter the RAN at, installs the leg's bearer configuration, and starts holding the leg's downlink; handoverRequestAck() brings the source the target's downlink TEIDs, on which the source commands the leg (the UE's handoverCommand()) and forwards its downlink over X2-U from then on. When the leg arrives (reconfigurationComplete()), the target takes it on, has the CoreControl switch the session's downlink path (PATH SWITCH REQUEST, reporting the tunnels the preparation set up; the base station the downlink enters at learns of the switch with downlinkPathSwitched()), and releases the leg at the source (ueContextRelease(), the UE CONTEXT RELEASE of Xn), which stops forwarding and drops its state for the leg. A source that loses the leg meanwhile cancels the handover at the target (handoverCancel()).
Radio link failure. Either end's RLC may detect it; the detecting node releases its end of the link and tells the other through its control-plane entry point (radioLinkFailure() here, from a UE leg; the UE's from this base station), which releases its end the same way -- and starts RRC re-establishment if configured (see BearerManagement).
Nothing outside the node reaches its GtpUser, GtpUserX2 or BearerManagement directly; how the node is composed is its own business. Other nodes find this module through the Binder's node directory. The D2D-capable variant, ConnectionControlEnbD2D, adds the sidelink and multicast bearers.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Known subclasses
| Name | Type | Description |
|---|---|---|
| ConnectionControlEnbD2D | simple module |
D2D-capable variant of the ConnectionControlEnb. It adds the sidelink bearers of the UEs the base station serves: a D2D unicast or multicast flow gets a bearer with a fixed transitional configuration (RLC UM on LCG 3), outside the bearer definition system; a multicast bearer's TX leg is installed at the sender and an RX leg at each group member, and a node joining a group later gets the RX legs of the group's known senders. The sidelink node pairs' DRB identities and the established multicast flows are kept network-wide in the D2dBinder, since a sidelink bearer's ends are UEs whose serving base stations may differ and change. |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| binderModule | string | "binder" | |
| bearerConfiguratorModule | string | "bearerConfigurator" | |
| coreControlModule | string | "coreControl" | |
| bearerManagementModule | string | "^.bearerManagement" | |
| macModule | string | "^.^.mac" | |
| handoverPacketHolderModule | string | "^.^.handoverPacketHolder" | |
| gtpUserModule | string | "^.^.^.relay.gtpUser" | |
| gtpUserX2Module | string | "^.^.^.gtpUserX2" | |
| macNodeId | int |
The base station's node id; the NIC sets it from the node's |
|
| gateway | string | "" |
The node's core network gateway, as its gateway parameter names it; ignored at a node not connected to a core network (a secondary node) |
Properties
| Name | Value | Description |
|---|---|---|
| display | i=block/control |
Source code
// // The control-plane entry point of a base station: the one module of the node that // the control plane of other nodes -- the ~CoreControl, the other base stations, and // the UEs' ~ConnectionControlUe -- talks to, and that the node's own data path turns // to when it needs a bearer. // // Tunnels. It owns the node's GTP-U tunnel endpoint id (TEID) space, and programs the // node's tunnel endpoints, ~GtpUser (the N3/S1-U end) and ~GtpUserX2 (the X2-U end), // as the calls of the ~CoreControl and of the other base stations say: // - sessionTunnelSetup(): a session's tunnels at this base station: the downlink // tunnel, under a TEID allocated here, which also receives the downlink a handover // source forwards over X2-U, and the uplink tunnels into the core network; set up // once per session, whichever side asks first // - setForwardingTeid(): the session's downlink TEID at another base station, to // forward the downlink to it with during a handover // - sessionRelease(): the session's tunnels here are forgotten // - addDcTunnel(), setDcTunnelTeid(): the X2-U tunnels of a dual connectivity // bearer, one per direction, each allocated at its receiving end // // Bearers. It establishes the data radio bearers of the UEs it serves, from the bearer // definitions the ~BearerConfigurator holds (which it reads and never writes): a flow // the data path could not place gets the bearer of the definition it matches, an // unmapped QFI the bearer of the definition that maps it, and each bearer's entities // are installed at this node, at the UE, and at a dual connectivity secondary, through // their control-plane entry points -- the RRC signaling the model does not have. It // also owns the DRB identities of its UEs (one pool per UE-and-node pair), which a // torn-down bearer's returns to. // // Attach. A UE's leg connects here with connectionSetupRequest() (at initialization, at its // configured serving cell; during the run, when a detached leg finds a cell), stating // the type of the session the UE requests; the base station takes it on at its AMC and // registers the UE with the ~CoreControl (the INITIAL UE MESSAGE of S1AP/NGAP), which // establishes the UE's session and asks this base station to set up its resources // (sessionResourceSetup(): the tunnels, which keep the session's type, the UE's uplink // QoS rules, and the static bearers of the leg that carries them). A // leg that lost its cell, or whose UE leaves, says so with connectionLost(): the base // station releases its state for the leg and tells the core network. // // Handover. The serving base station decides on a leg's measurementReport() and // prepares the handover with the target over Xn: handoverRequest() carries the leg's // context to the target, which sets the UE's session tunnels up at the base station // the downlink will enter the RAN at, installs the leg's bearer configuration, and // starts holding the leg's downlink; // handoverRequestAck() brings the source the target's downlink TEIDs, on which the // source commands the leg (the UE's handoverCommand()) and forwards its downlink over // X2-U from then on. When the leg arrives (reconfigurationComplete()), the target // takes it on, has the ~CoreControl switch the session's downlink path (PATH SWITCH // REQUEST, reporting the tunnels the preparation set up; the base station the // downlink enters at learns of the switch with downlinkPathSwitched()), and releases // the leg at the source (ueContextRelease(), the UE CONTEXT RELEASE of Xn), which // stops forwarding and drops its state for the leg. A source that loses the leg // meanwhile cancels the handover at the target (handoverCancel()). // // Radio link failure. Either end's RLC may detect it; the detecting node releases its // end of the link and tells the other through its control-plane entry point // (radioLinkFailure() here, from a UE leg; the UE's from this base station), which // releases its end the same way -- and starts RRC re-establishment if configured // (see ~BearerManagement). // // Nothing outside the node reaches its ~GtpUser, ~GtpUserX2 or ~BearerManagement // directly; how the node is composed is its own business. Other nodes find this // module through the ~Binder's node directory. The D2D-capable variant, // ~ConnectionControlEnbD2D, adds the sidelink and multicast bearers. // simple ConnectionControlEnb like IConnectionControl { parameters: @display("i=block/control"); string binderModule = default("binder"); string bearerConfiguratorModule = default("bearerConfigurator"); string coreControlModule = default("coreControl"); string bearerManagementModule = default("^.bearerManagement"); string macModule = default("^.^.mac"); string handoverPacketHolderModule = default("^.^.handoverPacketHolder"); string gtpUserModule = default("^.^.^.relay.gtpUser"); string gtpUserX2Module = default("^.^.^.gtpUserX2"); int macNodeId; // The base station's node id; the NIC sets it from the node's string gateway = default(""); // The node's core network gateway, as its gateway parameter names it; ignored at a node not connected to a core network (a secondary node) }File: src/simu5g/stack/rrc/ConnectionControlEnb.ned