Rrc¶
Package: simu5g.stack.rrc
compound module Rrc
RRC (Radio Resource Control) layer for LTE/NR networks.
Contains functional submodules corresponding to RRC procedures:
registration: registers the node with the Binder, sets up the interface
drbTable: the configuration of the node’s data radio bearers
bearerManagement: sets up and tears down data radio bearers
connectionControl: the node’s control-plane entry point, which the control plane of other nodes and the node’s own data path talk to: ConnectionControlEnb at a base station, ConnectionControlUe at a UE (the LTE leg’s; its handover decisions are the serving base station’s, its execution the UE’s)
nrConnectionControl: the NR leg’s ConnectionControlUe at a dual-stack UE
The D2D-specific submodules (d2dModeController, d2dModeSelection) are added by the RrcD2D subtype.
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
compound module |
The LteNicBase module serves as the foundational building block for LTE networking in Simu5G. It integrates protocols for LTE communication, including PDCP, RLC, MAC, and PHY layers. This base module allows higher-level modules, such as User Equipment (UE) and eNodeB (evolved Node B), to configure and utilize these layers according to their specific requirements. |
Known subclasses¶
Name |
Type |
Description |
|---|---|---|
compound module |
D2D-capable variant of the Rrc layer. It adds the D2D mode controller (which coordinates RLC TX-queue draining across a mode switch) and, on the eNB/gNB side (hasD2DModeSelection==true), the periodic D2D mode selection module. Selected via ‘rrc.typename’ by the D2D-capable NICs. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
interfaceTableModule |
string |
||
routingTableModule |
string |
||
hasConnectionControl |
bool |
false |
|
hasNrConnectionControl |
bool |
false |
Properties¶
Name |
Value |
Description |
|---|---|---|
display |
i=block/control |
Unassigned submodule parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
registration.interfaceTableModule |
string |
||
registration.interfaceName |
string |
“cellular” |
|
registration.routingTableModule |
string |
||
registration.binderModule |
string |
“binder” |
|
registration.connectionControlModule |
string |
“^.connectionControl” |
The node’s control-plane entry point (see Rrc), told about a multicast group join |
registration.sessionType |
string |
“” |
UE only: the type of the UE’s session (see LteUe): a UE created during the run gets an IPv4 default route through the NIC only on an IP session, and the NIC of an Ethernet session is an Ethernet port; set by the NIC |
bearerManagement.binderModule |
string |
“binder” |
To reach a peer’s BearerManagement on RLF |
bearerManagement.connectionControlModule |
string |
“^.connectionControl” |
The node’s control-plane entry point (see Rrc), which a torn-down bearer’s DRB identity goes back through |
bearerManagement.t311 |
double |
0s |
RRC re-establishment cell-selection timer (0 => release-to-IDLE) |
bearerManagement.t301 |
double |
0.1s |
RRC re-establishment (request -> complete) timer |
bearerManagement.headerCompressedSize |
int |
-1B |
Removed, an error if set: header compression is configured per bearer (the rohc field of BearerConfigurator’s bearer definitions) |
bearerManagement.pdcpEntityModuleType |
string |
“simu5g.stack.pdcp.LtePdcpEntity” |
PDCP entity types: the full PDCP entity is a compound (PdcpEntityBase, TX+RX sides plus the leg split/join stage of a multi-leg bearer); the instantiable types are its subclasses (LtePdcpEntity, NrPdcpEntity). At a DC secondary a bearer’s PDCP lives at the master, so the secondary installs an PdcpRelayEntity (tunnels PDUs to/from the master) in its place. |
bearerManagement.pdcpRelayEntityModuleType |
string |
“simu5g.stack.pdcp.PdcpRelayEntity” |
|
bearerManagement.dualConnectivityEnabled |
bool |
false |
Set by the NIC; two-leg (split-capable) bearers |
bearerManagement.rlcTmEntityModuleType |
string |
“simu5g.stack.rlc.RlcTmEntity” |
RLC entity types (compound modules): lteRlc* = LTE-FI bearers (TS 36.322), nrRlc* = NR bearers (SI/SO wire format, TS 38.322) |
bearerManagement.lteRlcUmEntityModuleType |
string |
“simu5g.stack.rlc.LteRlcUmEntity” |
|
bearerManagement.lteRlcAmEntityModuleType |
string |
“simu5g.stack.rlc.LteRlcAmEntity” |
|
bearerManagement.nrRlcUmEntityModuleType |
string |
“simu5g.stack.rlc.NrRlcUmEntity” |
|
bearerManagement.nrRlcAmEntityModuleType |
string |
“simu5g.stack.rlc.NrRlcAmEntity” |
|
bearerManagement.registrationModule |
string |
“^.registration” |
Module references for accessing other stack layers |
bearerManagement.drbTableModule |
string |
“^.drbTable” |
|
bearerManagement.ip2nicModule |
string |
“^.^.ip2nic” |
|
bearerManagement.handoverPacketHolderModule |
string |
“^.^.handoverPacketHolder” |
Attachment-ledger push target (UE only) |
bearerManagement.pdcpMuxModule |
string |
“^.^.pdcpMux” |
|
bearerManagement.pdcpDcMuxModule |
string |
“^.^.pdcpDcMux” |
|
bearerManagement.d2dModeControllerModule |
string |
“^.d2dModeController” |
|
bearerManagement.rlcMuxModule |
string |
“^.^.rlcMux” |
|
bearerManagement.nrRlcMuxModule |
string |
“^.^.nrRlcMux” |
|
bearerManagement.macModule |
string |
“^.^.mac” |
|
bearerManagement.nrMacModule |
string |
“^.^.nrMac” |
|
bearerManagement.sdapModule |
string |
“^.^.sdap” |
Configuration push target; unresolvable (no SDAP on the NIC) = no pushes |
bearerManagement.qosFlowClassifierModule |
string |
“^.^.qosFlowClassifier” |
Uplink QFI rule push target; unresolvable (not a UE stack with SDAP) = no pushes |
connectionControl.binderModule |
string |
“binder” |
|
connectionControl.bearerConfiguratorModule |
string |
“bearerConfigurator” |
|
connectionControl.coreControlModule |
string |
“coreControl” |
|
connectionControl.bearerManagementModule |
string |
“^.bearerManagement” |
|
connectionControl.macModule |
string |
“^.^.mac” |
|
connectionControl.handoverPacketHolderModule |
string |
“^.^.handoverPacketHolder” |
|
connectionControl.gtpUserModule |
string |
“^.^.^.relay.gtpUser” |
|
connectionControl.gtpUserX2Module |
string |
“^.^.^.gtpUserX2” |
|
connectionControl.macNodeId |
int |
The base station’s node id; the NIC sets it from the node’s |
|
connectionControl.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) |
nrConnectionControl.dynamicCellAssociation |
bool |
false |
|
nrConnectionControl.enableHandover |
bool |
false |
Allows handovers in the UE |
nrConnectionControl.isNr |
bool |
Whether this instance is associated with the NR or the LTE stack |
|
nrConnectionControl.macNodeId |
int |
MacNodeId of the stack leg this controller belongs to (set by the NIC) |
|
nrConnectionControl.sessionType |
string |
The type of the session the UE requests at connection setup (see LteUe), set by the NIC |
|
nrConnectionControl.handoverLatency |
double |
50ms |
Handover duration |
nrConnectionControl.handoverDetachmentTime |
double |
handoverLatency > 0s ? handoverLatency/2 : 25ms |
|
nrConnectionControl.handoverAttachmentTime |
double |
handoverLatency > 0s ? handoverLatency-handoverDetachmentTime : handoverDetachmentTime |
|
nrConnectionControl.minRssiDefault |
bool |
true |
Whether minRssi is taken from PhyPisaData instead of the minRssi parameter |
nrConnectionControl.minRssi |
double |
-99.0dB |
Configurable minimum threshold RSSI for attaching to an eNB (meaningful only if minRssiDefault==false) |
nrConnectionControl.hysteresisFactor |
double |
10 |
|
nrConnectionControl.binderModule |
string |
“binder” |
|
nrConnectionControl.macModule |
string |
“^.^.mac” |
|
nrConnectionControl.bearerManagementModule |
string |
“^.bearerManagement” |
|
nrConnectionControl.handoverPacketHolderModule |
string |
“^.^.handoverPacketHolder” |
|
nrConnectionControl.feedbackGeneratorModule |
string |
“^.^.dlFbGen” |
TODO or “^.^.nrDlFbGen” |
nrConnectionControl.otherConnectionControlModule |
string |
“” |
|
nrConnectionControl.hasCollector |
bool |
false |
True when node has a collector module (ueCollector/nrUeCollector) for this PHY module |
Source code¶
//
// RRC (Radio Resource Control) layer for LTE/NR networks.
//
// Contains functional submodules corresponding to RRC procedures:
// - registration: registers the node with the Binder, sets up the interface
// - drbTable: the configuration of the node's data radio bearers
// - bearerManagement: sets up and tears down data radio bearers
// - connectionControl: the node's control-plane entry point, which the control
// plane of other nodes and the node's own data path talk to: ~ConnectionControlEnb
// at a base station, ~ConnectionControlUe at a UE (the LTE leg's; its handover
// decisions are the serving base station's, its execution the UE's)
// - nrConnectionControl: the NR leg's ~ConnectionControlUe at a dual-stack UE
//
// The D2D-specific submodules (d2dModeController, d2dModeSelection) are added by
// the ~RrcD2D subtype.
//
module Rrc like IRrc
{
parameters:
@display("i=block/control");
string interfaceTableModule;
string routingTableModule;
bool hasConnectionControl = default(false);
bool hasNrConnectionControl = default(false);
*.interfaceTableModule = default(absPath(this.interfaceTableModule));
*.routingTableModule = default(absPath(this.routingTableModule));
submodules:
registration: <default("Registration")> like IRegistration {
@display("p=100,80");
}
drbTable: <default("DrbTable")> like IDrbTable {
@display("p=250,80");
}
bearerManagement: <default("BearerManagement")> like IBearerManagement {
@display("p=400,80");
}
connectionControl: <default("ConnectionControlEnb")> like IConnectionControl if hasConnectionControl {
@display("p=550,80");
}
nrConnectionControl: <default("ConnectionControlUe")> like IConnectionControl if hasNrConnectionControl {
@display("p=700,80");
}
}