BackgroundTrafficGenerator

Package: simu5g.background.trafficGenerator

compound module BackgroundTrafficGenerator

Part of a BackgroundCell module and is responsible for instantiating a configurable number of background UEs (see BackgroundUe module) and setting up their method for computing the channel status information required by the BackgroundScheduler module.

Usage diagram

Used in compound modules

Name

Type

Description

BackgroundCell

compound module

Implements a lightweight model for a 4G eNodeB or 5G gNodeB for generating configurable inter-cell interference in the simulated network.

LteNicEnb

compound module

The LteNicEnb module is a network interface that provides LTE connectivity within an eNodeB. It implements the data and signaling planes of the LTE stack, which includes the PDCP, RLC, MAC, and PHY layers. The parameters and submodules allow customization of the eNodeB’s behavior, including whether it supports D2D communication, CoMP (Coordinated MultiPoint), or dual connectivity.

Parameters

Name

Type

Default value

Description

numBgUes

int

0

enablePeriodicCqiUpdate

bool

true

useProbabilisticCqi

bool

false

computeAvgInterference

bool

false

Properties

Name

Value

Description

display

i=block/source

Unassigned submodule parameters

Name

Type

Default value

Description

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

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

bgUE.mobility ↗.coordinateSystemModule

string

“”

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

bgUE.mobility ↗.updateDisplayString

bool

true

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

bgUE.mobility ↗.constraintAreaMinX

double

-inf m

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

bgUE.mobility ↗.constraintAreaMinY

double

-inf m

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

bgUE.mobility ↗.constraintAreaMinZ

double

-inf m

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

bgUE.mobility ↗.constraintAreaMaxX

double

inf m

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

bgUE.mobility ↗.constraintAreaMaxY

double

inf m

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

bgUE.mobility ↗.constraintAreaMaxZ

double

inf m

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

bgUE.mobility ↗.initialX

double

uniform(this.constraintAreaMinX, this.constraintAreaMaxX)

bgUE.mobility ↗.initialY

double

uniform(this.constraintAreaMinY, this.constraintAreaMaxY)

bgUE.mobility ↗.initialZ

double

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

bgUE.mobility ↗.initialLatitude

double

nan deg

bgUE.mobility ↗.initialLongitude

double

nan deg

bgUE.mobility ↗.initialAltitude

double

0m

bgUE.mobility ↗.initialHeading

double

0deg

bgUE.mobility ↗.initialElevation

double

0deg

bgUE.mobility ↗.initialBank

double

0deg

bgUE.mobility ↗.initFromDisplayString

bool

true

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

bgUE.mobility ↗.updateFromDisplayString

bool

true

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

bgUE.generator.computeAvgInterference

bool

bgUE.generator.enablePeriodicCqiUpdate

bool

bgUE.generator.useProbabilisticCqi

bool

bgUE.generator.backgroundTrafficManagerModule

string

“^.^.manager”

bgUE.generator.startTimeDl

double

-1s

bgUE.generator.startTimeUl

double

-1s

bgUE.generator.headerLen

int

33B

bgUE.generator.txPower

double

26dBm

bgUE.generator.fbPeriod

int

6tti

bgUE.generator.periodDl

double

uniform(10ms,50ms)

bgUE.generator.periodUl

double

uniform(10ms,50ms)

bgUE.generator.packetSizeDl

int

intuniform(20B,100B)

bgUE.generator.packetSizeUl

int

intuniform(20B,100B)

bgUE.generator.rtxRateDl

double

0.1

bgUE.generator.rtxDelayDl

double

0.006s

bgUE.generator.rtxRateUl

double

0.1

bgUE.generator.rtxDelayUl

double

0.006s

bgUE.generator.cqiMeanDl

double

15

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

bgUE.generator.cqiMeanUl

double

15

bgUE.generator.cqiStddevDl

double

0

bgUE.generator.cqiStddevUl

double

0

manager.binderModule

string

“binder”

manager.numBgUes

int

manager.macModule

string

“^.^.mac”

manager.phyModule

string

“^.^.phy”

manager.enablePeriodicCqiUpdate

bool

manager.computeAvgInterference

bool

Source code

//
// Part of a ~BackgroundCell module and is responsible for instantiating a
// configurable number of background UEs (see ~BackgroundUe module) and setting up
// their method for computing the channel status information required by the
// ~BackgroundScheduler module.
//
module BackgroundTrafficGenerator
{
    parameters:
        @display("i=block/source");
        int numBgUes = default(0);
        bool enablePeriodicCqiUpdate = default(true);
        bool useProbabilisticCqi = default(false);
        bool computeAvgInterference = default(false);
        *.computeAvgInterference = this.computeAvgInterference;
        *.enablePeriodicCqiUpdate = this.enablePeriodicCqiUpdate;
        *.useProbabilisticCqi = this.useProbabilisticCqi;
        *.numBgUes = this.numBgUes;

    submodules:
        bgUE[numBgUes]: BackgroundUe {
            @display("p=77,118");
        }
        manager: <default("BackgroundTrafficManager")> like IBackgroundTrafficManager {
            @display("p=77,41");
        }
}

File: src/simu5g/background/trafficGenerator/BackgroundTrafficGenerator.ned