BackgroundCell

Package: simu5g.nodes

BackgroundCell

compound module

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

mobility : StationaryMobility
[from inet] ↗

This mobility module does nothing; it can be used for stationary nodes.

Source:
mobility: StationaryMobility {
    @display("p=100,38;is=s");
} bgChannelModel : BackgroundCellChannelModel

Configures the channel parameters associated with a ~BackgroundCell.

Source:
bgChannelModel: BackgroundCellChannelModel {
    @display("p=100,105;is=s");
} bgScheduler : BackgroundScheduler

Computes the allocation of time-frequency resources for background UEs in a ~BackgroundCell, taking...

Source:
bgScheduler: BackgroundScheduler {
    @display("p=222,38,row");
    trafficManagerModule = "^.bgTrafficGenerator.manager";
} bgTrafficGenerator : BackgroundTrafficGenerator

Part of a ~BackgroundCell module and is responsible for instantiating a configurable number of...

Source:
bgTrafficGenerator: BackgroundTrafficGenerator {
    @display("p=347,38,row");
    manager.typename = default("BackgroundCellTrafficManager");
}

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