BackgroundCell

Package: simu5g.nodes

compound module BackgroundCell

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

Usage 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.

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.

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.

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.

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.

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 ↗.displayStringTextFormat

string

“p: {position}\nv: {velocity}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

mobility ↗.subjectModule

string

“^”

The module path that determines the subject module, the motion of which this mobility model describes. The default value is the parent module

mobility ↗.coordinateSystemModule

string

“”

The module path of the geographic coordinate system module; optional, empty disables geographic conversion (and the {geo_position} directive)

mobility ↗.updateDisplayString

bool

true

Enables continuous update of the subject module’s position by modifying its display string

mobility ↗.constraintAreaMinX

double

-inf m

The minimum x position of the constraint area. It is unconstrained by default (negative infinity)

mobility ↗.constraintAreaMinY

double

-inf m

The minimum y position of the constraint area. It is unconstrained by default (negative infinity)

mobility ↗.constraintAreaMinZ

double

-inf m

The minimum z position of the constraint area. It is unconstrained by default (negative infinity)

mobility ↗.constraintAreaMaxX

double

inf m

The maximum x position of the constraint area. It is unconstrained by default (positive infinity)

mobility ↗.constraintAreaMaxY

double

inf m

The maximum y position of the constraint area. It is unconstrained by default (positive infinity)

mobility ↗.constraintAreaMaxZ

double

inf m

The maximum z position of the constraint area. It is 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

bgTrafficGenerator.bgUE.mobility ↗.displayStringTextFormat

string

“p: {position}\nv: {velocity}”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

bgTrafficGenerator.bgUE.mobility ↗.subjectModule

string

“^”

The module path that determines the subject module, the motion of which this mobility model describes. The default value is the parent module

bgTrafficGenerator.bgUE.mobility ↗.coordinateSystemModule

string

“”

The module path of the geographic coordinate system module; optional, empty disables geographic conversion (and the {geo_position} directive)

bgTrafficGenerator.bgUE.mobility ↗.updateDisplayString

bool

true

Enables continuous update of the subject module’s position by modifying its display string

bgTrafficGenerator.bgUE.mobility ↗.constraintAreaMinX

double

-inf m

The minimum x position of the constraint area. It is unconstrained by default (negative infinity)

bgTrafficGenerator.bgUE.mobility ↗.constraintAreaMinY

double

-inf m

The minimum y position of the constraint area. It is unconstrained by default (negative infinity)

bgTrafficGenerator.bgUE.mobility ↗.constraintAreaMinZ

double

-inf m

The minimum z position of the constraint area. It is unconstrained by default (negative infinity)

bgTrafficGenerator.bgUE.mobility ↗.constraintAreaMaxX

double

inf m

The maximum x position of the constraint area. It is unconstrained by default (positive infinity)

bgTrafficGenerator.bgUE.mobility ↗.constraintAreaMaxY

double

inf m

The maximum y position of the constraint area. It is unconstrained by default (positive infinity)

bgTrafficGenerator.bgUE.mobility ↗.constraintAreaMaxZ

double

inf m

The maximum z position of the constraint area. It is unconstrained by default (positive infinity)

bgTrafficGenerator.bgUE.mobility ↗.initialX

double

uniform(this.constraintAreaMinX, this.constraintAreaMaxX)

bgTrafficGenerator.bgUE.mobility ↗.initialY

double

uniform(this.constraintAreaMinY, this.constraintAreaMaxY)

bgTrafficGenerator.bgUE.mobility ↗.initialZ

double

nanToZero(uniform(this.constraintAreaMinZ, this.constraintAreaMaxZ))

bgTrafficGenerator.bgUE.mobility ↗.initialLatitude

double

nan deg

bgTrafficGenerator.bgUE.mobility ↗.initialLongitude

double

nan deg

bgTrafficGenerator.bgUE.mobility ↗.initialAltitude

double

0m

bgTrafficGenerator.bgUE.mobility ↗.initialHeading

double

0deg

bgTrafficGenerator.bgUE.mobility ↗.initialElevation

double

0deg

bgTrafficGenerator.bgUE.mobility ↗.initialBank

double

0deg

bgTrafficGenerator.bgUE.mobility ↗.initFromDisplayString

bool

true

Enables one-time initialization from the subject module’s display string

bgTrafficGenerator.bgUE.mobility ↗.updateFromDisplayString

bool

true

Enables continuous update from the subject module’s display string for dragging and rotating it

bgTrafficGenerator.bgUE.generator.computeAvgInterference

bool

bgTrafficGenerator.bgUE.generator.enablePeriodicCqiUpdate

bool

bgTrafficGenerator.bgUE.generator.useProbabilisticCqi

bool

bgTrafficGenerator.bgUE.generator.backgroundTrafficManagerModule

string

“^.^.manager”

bgTrafficGenerator.bgUE.generator.startTimeDl

double

-1s

bgTrafficGenerator.bgUE.generator.startTimeUl

double

-1s

bgTrafficGenerator.bgUE.generator.headerLen

int

33B

bgTrafficGenerator.bgUE.generator.txPower

double

26dBm

bgTrafficGenerator.bgUE.generator.fbPeriod

int

6tti

bgTrafficGenerator.bgUE.generator.periodDl

double

uniform(10ms,50ms)

bgTrafficGenerator.bgUE.generator.periodUl

double

uniform(10ms,50ms)

bgTrafficGenerator.bgUE.generator.packetSizeDl

int

intuniform(20B,100B)

bgTrafficGenerator.bgUE.generator.packetSizeUl

int

intuniform(20B,100B)

bgTrafficGenerator.bgUE.generator.rtxRateDl

double

0.1

bgTrafficGenerator.bgUE.generator.rtxDelayDl

double

0.006s

bgTrafficGenerator.bgUE.generator.rtxRateUl

double

0.1

bgTrafficGenerator.bgUE.generator.rtxDelayUl

double

0.006s

bgTrafficGenerator.bgUE.generator.cqiMeanDl

double

15

These values are only considered when periodicCqi == false && computeAvgInterference == false

bgTrafficGenerator.bgUE.generator.cqiMeanUl

double

15

bgTrafficGenerator.bgUE.generator.cqiStddevDl

double

0

bgTrafficGenerator.bgUE.generator.cqiStddevUl

double

0

bgTrafficGenerator.manager.binderModule

string

“binder”

bgTrafficGenerator.manager.numBgUes

int

bgTrafficGenerator.manager.macModule

string

“^.^.mac”

bgTrafficGenerator.manager.phyModule

string

“^.^.phy”

bgTrafficGenerator.manager.enablePeriodicCqiUpdate

bool

bgTrafficGenerator.manager.computeAvgInterference

bool

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