Package: simu5g.nodes
BackgroundCell
compound moduleImplements a lightweight model for a 4G eNodeB or 5G gNodeB for generating configurable inter-cell interference in the simulated network.
Compared to the eNodeB and gNodeB modules, this module occupies time-frequency resources in both the uplink and downlink bandwidth without simulating the actual transmission or reception of data packets to or from User Equipments (UEs). Therefore, it is significantly more efficient from a simulation speed perspective. To achieve this, it includes a BackgroundTrafficGenerator to customize the level of background traffic to be simulated, a BackgroundCellChannelModel to configure channel parameters, and a BackgroundScheduler that manages the allocation of time-frequency resources based on the traffic generator. Note that this module can generate interference on only one Component Carrier, as configured in the BackgroundScheduler module. To produce interference across multiple carriers, it is possible to use multiple instances of this module, each configured with the desired carrier frequency.
For further details, refer to: G. Nardini, G. Stea, A. Virdis, "Scalable Real-time Emulation of 5G Networks with Simu5G", IEEE Access, vol. 9, pp. 148504-148520, 2021
Usage diagram
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
Used in
| Name | Type | Description |
|---|---|---|
| ExtClientServer_bgCells | network |
ExtClientServerExample with background cells instead of external ones: one gNodeB served by a Upf core, a router in front of the Upf, one NrUe, and numBgCells BackgroundCell cells. The router has no simulated peer: the host it talks to, and the applications on the NrUe, are configured in the ini file. |
| MultiCell_Standalone | network |
Two gNodeB cells served by a 5G core: the anchor Upf faces the data network (a router and a server), an intermediate Upf feeds both gNodeBs, and an X2 link joins them. numUe NrUe terminals attach, and numBgCells BackgroundCell cells can be added as interferers. |
| MultiCell_withSecondaryGnb | network |
The two-cell version of SingleCell_withSecondaryGnb: two eNodeB masters, each paired over X2 with its own gNodeB secondary, and a further X2 link between the two masters. Both eNodeBs connect to the EPC PgwStandard, which faces a router and a server; neither gNodeB has a core-network link. numUe NrUe terminals attach, and numBgCells BackgroundCell cells can be added as interferers. |
| MultiMecHost | network |
Two gNodeB cells, each on an intermediate Upf of its own with a MecHost hung off it, so every cell has its own MEC host. Both intermediate Upf nodes meet at the anchor Upf, which carries the Ualcmp and, behind it, the MecOrchestrator. An X2 link joins the two gNodeBs. numUe NrUe terminals attach, and numBgCells BackgroundCell cells can be added as interferers. |
| MultiMecHost_delay | network |
MultiMecHost with the two intermediate Upf nodes linked directly to each other, and with no X2 link between the gNodeBs. The length of that link -- and so its propagation delay -- follows the routersDelay parameter, which makes the distance between the two MEC hosts configurable. |
| MultiOperator | network |
Two operator networks side by side. Each has three gNodeB cells chained by X2, an intermediate Upf that feeds them and carries the operator's MecHost, an anchor Upf, and a Ualcmp with its MecOrchestrator. The two anchor Upf nodes meet at a shared router, the only node the operators have in common. numUe_A and numUe_B NrUe terminals attach to operator A and B respectively, and numBgCells BackgroundCell cells can be added as interferers. |
| SingleCell_Standalone | network |
One gNodeB served by a 5G core: the anchor Upf faces the data network (a router and a server), and an intermediate Upf sits between it and the gNodeB. numUe NrUe terminals attach to the gNodeB, and numBgCells BackgroundCell cells can be added around it as interferers. |
| SingleCell_Standalone_D2D | network |
SingleCell_Standalone with its UEs split into three vectors, so that a configuration can address cellular terminals (ueCell), D2D transmitters (ueD2DTx) and D2D receivers (ueD2DRx) separately. The rest of the topology is the same: one gNodeB behind an intermediate and an anchor Upf, with a router and a server on the data network, plus numBgCells BackgroundCell interferers. |
| SingleCell_withSecondaryEnb | network |
The mirror image of SingleCell_withSecondaryGnb: here the gNodeB is the master node and the eNodeB is its secondary, so the UE is anchored on its NR stack and its LTE stack carries the secondary cell group. All data-plane traffic enters at the gNodeB. |
| SingleCell_withSecondaryGnb | network |
An EN-DC topology: an eNodeB master paired over X2 with a gNodeB secondary. The eNodeB is the only node with a core-network link -- an EPC PgwStandard facing a router and a server -- so all data-plane traffic enters there, and the gNodeB contributes its radio leg alone. numUe NrUe terminals attach to both, and numBgCells BackgroundCell cells can be added as interferers. |
| UrbanNetwork | network | (no description) |
Properties
| Name | Value | Description |
|---|---|---|
| display | i=device/antennatower;bgb=430,163 |
Unassigned submodule parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| mobility.subjectModule | string | "^" |
module path which determines the subject module, the motion of which this mobility model describes, the default value is the parent module |
| mobility.coordinateSystemModule | string | "" |
module path of the geographic coordinate system module |
| mobility.displayStringTextFormat | string | "p: %p\nv: %v" |
format string for the mobility module's display string text |
| mobility.updateDisplayString | bool | true |
enables continuous update of the subject module's position via modifying its display string |
| mobility.constraintAreaMinX | double | -inf m |
min x position of the constraint area, unconstrained by default (negative infinity) |
| mobility.constraintAreaMinY | double | -inf m |
min y position of the constraint area, unconstrained by default (negative infinity) |
| mobility.constraintAreaMinZ | double | -inf m |
min z position of the constraint area, unconstrained by default (negative infinity) |
| mobility.constraintAreaMaxX | double | inf m |
max x position of the constraint area, unconstrained by default (positive infinity) |
| mobility.constraintAreaMaxY | double | inf m |
max y position of the constraint area, unconstrained by default (positive infinity) |
| mobility.constraintAreaMaxZ | double | inf m |
max z position of the constraint area, unconstrained by default (positive infinity) |
| mobility.initialX | double | uniform(this.constraintAreaMinX, this.constraintAreaMaxX) | |
| mobility.initialY | double | uniform(this.constraintAreaMinY, this.constraintAreaMaxY) | |
| mobility.initialZ | double | nanToZero(uniform(this.constraintAreaMinZ, this.constraintAreaMaxZ)) | |
| mobility.initialLatitude | double | nan deg | |
| mobility.initialLongitude | double | nan deg | |
| mobility.initialAltitude | double | 0m | |
| mobility.initialHeading | double | 0deg | |
| mobility.initialElevation | double | 0deg | |
| mobility.initialBank | double | 0deg | |
| mobility.initFromDisplayString | bool | true |
enables one time initialization from the subject module's display string |
| mobility.updateFromDisplayString | bool | true |
enables continuous update from the subject module's display string for dragging and rotating it |
| bgChannelModel.binderModule | string | "binder" |
Module references |
| bgChannelModel.shadowing | bool | true |
Enable/disable shadowing |
| bgChannelModel.scenario | string | "URBAN_MACROCELL" |
Path loss scenario, in ITU terminology |
| bgChannelModel.nodebHeight | double | 25m |
eNodeB height |
| bgChannelModel.buildingHeight | double | 20m |
Building height |
| bgChannelModel.insideBuilding | bool | false |
Determines if the UE is inside a building |
| bgChannelModel.streetWidth | double | 20m |
TODO width |
| bgChannelModel.ueHeight | double | 1.5m | |
| bgChannelModel.tolerateMaxDistViolation | bool | false | |
| bgChannelModel.correlationDistance | double | 50m | |
| bgChannelModel.antennaGainUe | double | 0dBi |
Antenna gain of the UE, relative to an isotropic antenna |
| bgChannelModel.antennGainEnB | double | 18dBi |
Antenna gain of the eNodeB |
| bgChannelModel.antennGainMicro | double | 5dBi |
Antenna gain of the micro node |
| bgChannelModel.thermalNoise | double | -104.5dBm |
Thermal noise for 10 MHz of bandwidth |
| bgChannelModel.ueNoiseFigure | double | 7dBm |
UE noise figure |
| bgChannelModel.bsNoiseFigure | double | 5dBm |
eNodeB noise figure |
| bgChannelModel.cableLoss | double | 2dB |
Cable loss |
| bgChannelModel.dynamicLos | bool | false |
Whether LOS/NLOS is drawn per link from the scenario's LOS probability; when false, it is fixed to fixedLos |
| bgChannelModel.fixedLos | bool | false |
LOS state of every link when dynamicLos is false: true = LOS, false = NLOS |
| bgChannelModel.fading | bool | true |
Enable/disable fading |
| bgChannelModel.fadingType | string | "JAKES" |
Fading type (JAKES or RAYLEIGH) |
| bgChannelModel.numFadingPaths | int | 6 |
If Jakes fading, this parameter specifies the number of paths (tap channel) |
| bgChannelModel.delayRms | double | 363ns | |
| bgChannelModel.bgCellInterference | bool | true |
Whether interference from the other background cells is included in the SINR, in both UL and DL |
| bgChannelModel.downlinkInterference | bool | true |
Whether interference from other base stations is included in the DL SINR |
| bgChannelModel.uplinkInterference | bool | true |
Whether interference from the UEs of other cells is included in the UL SINR |
| bgScheduler.binderModule | string | "binder" | |
| bgScheduler.channelModelModule | string | "^.bgChannelModel" | |
| bgScheduler.txPower | double | 46dBm |
Transmission power |
| bgScheduler.txDirection | string | "OMNI" |
Transmission direction |
| bgScheduler.txAngle | double | 0deg |
Transmission angle |
| bgScheduler.isNr | bool | false |
Flag to indicate whether this is a NR base station |
| bgScheduler.numerologyIndex | int | 0 |
Operating carrier |
| bgScheduler.carrierFrequency | double | 2GHz |
Operating carrier |
| bgScheduler.numBands | int | 6 |
Carrier bandwidth |
Source code
// // Implements a lightweight model for a 4G eNodeB or 5G gNodeB for generating // configurable inter-cell interference in the simulated network. // // Compared to the ~eNodeB and ~gNodeB modules, this module occupies time-frequency // resources in both the uplink and downlink bandwidth without simulating the actual // transmission or reception of data packets to or from User Equipments (UEs). // Therefore, it is significantly more efficient from a simulation speed perspective. // To achieve this, it includes a ~BackgroundTrafficGenerator to customize the level of background // traffic to be simulated, a ~BackgroundCellChannelModel to configure channel parameters, and a // ~BackgroundScheduler that manages the allocation of time-frequency resources based on the traffic // generator. // Note that this module can generate interference on only one Component Carrier, as configured // in the ~BackgroundScheduler module. To produce interference across multiple carriers, it is // possible to use multiple instances of this module, each configured with the desired carrier frequency. // // For further details, refer to: // G. Nardini, G. Stea, A. Virdis, "Scalable Real-time Emulation of 5G Networks with Simu5G", // IEEE Access, vol. 9, pp. 148504-148520, 2021 // module BackgroundCell { parameters: @display("i=device/antennatower;bgb=430,163"); submodules: // mobility module for the background base station mobility: StationaryMobility { @display("p=100,38;is=s"); } // channel model for the background cell bgChannelModel: BackgroundCellChannelModel { @display("p=100,105;is=s"); } // perform the scheduling for the BackgroundCell bgScheduler: BackgroundScheduler { @display("p=222,38,row"); trafficManagerModule = "^.bgTrafficGenerator.manager"; } // traffic generator for the background UEs within the BackgroundCell bgTrafficGenerator: BackgroundTrafficGenerator { @display("p=347,38,row"); manager.typename = default("BackgroundCellTrafficManager"); } }File: src/simu5g/nodes/BackgroundCell.ned