Network MultiConnectionManager

Package: org.mixim.examples.multiConnectionManager
File: examples/multiConnectionManager/MultiConnectionManager.ned

This example shows how to use multiple ConnectionManagers in your simulation.

The network contains two independent ConnectionManagers: "ISMChannel" and "GSMChannel". There also is its own list of hosts for each channel "ISMNode" and "GSMNode". Both types of hosts use BurstApplLayer <-> BaseNetwLayer <-> CSMAMacLayer <-> PhyLayer as network stack. Whereas the PhyLayer uses "SimplePathlossModel" as AnalogueModel and "SNRThresholdDecider" as Decider.

The channel a host uses is defined in its NICs "connectionManagerName" parameter.

Since the settings for the SimplePathlossModel differ for the GSM- and ISM-Nodes there are two seperate <config>.xml for them (GSMmodels.xml and ISMmodels.xml).

The omnetpp.ini contains the following run configurations:

BaseWorldUtility ConnectionManager ConnectionManager PhyMacHost PhyMacHost

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Parameters:

Name Type Default value Description
playgroundSizeX double

x size of the area the nodes are in (in meters)

playgroundSizeY double

y size of the area the nodes are in (in meters)

playgroundSizeZ double

z size of the area the nodes are in (in meters)

numGSMHosts double

total number of weak hosts in the network

numISMHosts double

total number of strong hosts in the network

Properties:

Name Value Description
isNetwork
display bgb=$playgroundSizeX,$playgroundSizeY,white,,;bgp=10,50

Unassigned submodule parameters:

Name Type Default value Description
world.coreDebug bool

debug switch for the base framework

world.useTorus bool

use the playground as torus?

world.use2D bool

use a 2-dimensional world?

ISMChannel.coreDebug bool

debug switch for core framework

ISMChannel.sendDirect bool

send directly to the node or create separate gates for every connection

ISMChannel.pMax double

maximum sending power used for this network [mW]

ISMChannel.sat double

minimum signal attenuation threshold [dBm]

ISMChannel.alpha double

minimum path loss coefficient

ISMChannel.carrierFrequency double

minimum carrier frequency of the channel [Hz]

ISMChannel.drawMaxIntfDist bool false

should the maximum interference distance be displayed for each node?

GSMChannel.coreDebug bool

debug switch for core framework

GSMChannel.sendDirect bool

send directly to the node or create separate gates for every connection

GSMChannel.pMax double

maximum sending power used for this network [mW]

GSMChannel.sat double

minimum signal attenuation threshold [dBm]

GSMChannel.alpha double

minimum path loss coefficient

GSMChannel.carrierFrequency double

minimum carrier frequency of the channel [Hz]

GSMChannel.drawMaxIntfDist bool false

should the maximum interference distance be displayed for each node?

GSMNode.utility.coreDebug bool

debug switch for the base framework

GSMNode.mobility.coreDebug bool

debug switch for the core framework

GSMNode.mobility.x double

x coordinate of the nodes' position (-1 = random)

GSMNode.mobility.y double

y coordinate of the nodes' position (-1 = random)

GSMNode.mobility.z double

z coordinate of the nodes' position (-1 = random)

GSMNode.arp.coreDebug bool

debug switch for the core framework

GSMNode.appl.coreDebug bool false

debug switch for base class (TestApplLayer)

GSMNode.appl.debug bool

debug switch

GSMNode.appl.headerLength int

length of the application message header (in bits)

GSMNode.appl.burstSize int

size of the burst

GSMNode.net.notAffectedByHostState bool false
GSMNode.net.coreDebug bool

debug switch for core framework

GSMNode.net.stats bool

stats switch

GSMNode.net.headerLength double

length of the network packet header (in bits)

GSMNode.nic.phy.coreDebug bool

debug switch for core framework

GSMNode.nic.phy.recordStats bool false

enable/disable tracking of statistics (eg. cOutvectors)

GSMNode.nic.phy.headerLength int 0

defines the length of the phy header (/preamble)

GSMNode.nic.phy.usePropagationDelay bool

Should transmission delay be simulated?

GSMNode.nic.phy.thermalNoise double

the strength of the thermal noise [dBm]

GSMNode.nic.phy.useThermalNoise bool

should thermal noise be considered?

GSMNode.nic.phy.analogueModels xml

Specification of the analogue models to use and their parameters

GSMNode.nic.phy.decider xml

Specification of the decider to use and its parameters

GSMNode.nic.phy.sensitivity double

The sensitivity of the physical layer [dBm]

GSMNode.nic.phy.maxTXPower double

The maximum transimission power of the physical layer [mW]

GSMNode.nic.phy.timeRXToTX double 0

switchTimes [s]:

GSMNode.nic.phy.timeRXToSleep double 0
GSMNode.nic.phy.timeTXToRX double 0
GSMNode.nic.phy.timeTXToSleep double 0
GSMNode.nic.phy.timeSleepToRX double 0
GSMNode.nic.phy.timeSleepToTX double 0
GSMNode.nic.phy.initialRadioState int 0

state the radio is initially in

GSMNode.nic.phy.radioMinAtt double 1.0

radios gain factor (attenuation) while receiving

GSMNode.nic.phy.radioMaxAtt double 0.0

radios gain factor (attenuation) while not receiving

GSMNode.nic.phy.nbRadioChannels int 1

Number of available radio channels. Defaults to single channel radio.

GSMNode.nic.phy.initialRadioChannel int 0

Initial radio channel.

GSMNode.nic.mac.notAffectedByHostState bool false
GSMNode.nic.mac.coreDebug bool

debug switch

GSMNode.nic.mac.headerLength double

length of the MAC packet header (in bits)

GSMNode.nic.mac.debug bool false

enable debugging for this module

GSMNode.nic.mac.slotDuration double

how long is a slot? [s]

GSMNode.nic.mac.difs double

maximum time between a packet and its ack [s]

GSMNode.nic.mac.maxTxAttempts double

maximum number of transmission attempts

GSMNode.nic.mac.queueLength int

length of the MAC queue

GSMNode.nic.mac.defaultChannel double

default channel

GSMNode.nic.mac.bitrate double

bit rate [bps]

GSMNode.nic.mac.txPower double

tx power [mW]

GSMNode.nic.mac.contentionWindow double

contention window

ISMNode.utility.coreDebug bool

debug switch for the base framework

ISMNode.mobility.coreDebug bool

debug switch for the core framework

ISMNode.mobility.x double

x coordinate of the nodes' position (-1 = random)

ISMNode.mobility.y double

y coordinate of the nodes' position (-1 = random)

ISMNode.mobility.z double

z coordinate of the nodes' position (-1 = random)

ISMNode.arp.coreDebug bool

debug switch for the core framework

ISMNode.appl.coreDebug bool false

debug switch for base class (TestApplLayer)

ISMNode.appl.debug bool

debug switch

ISMNode.appl.headerLength int

length of the application message header (in bits)

ISMNode.appl.burstSize int

size of the burst

ISMNode.net.notAffectedByHostState bool false
ISMNode.net.coreDebug bool

debug switch for core framework

ISMNode.net.stats bool

stats switch

ISMNode.net.headerLength double

length of the network packet header (in bits)

ISMNode.nic.phy.coreDebug bool

debug switch for core framework

ISMNode.nic.phy.recordStats bool false

enable/disable tracking of statistics (eg. cOutvectors)

ISMNode.nic.phy.headerLength int 0

defines the length of the phy header (/preamble)

ISMNode.nic.phy.usePropagationDelay bool

Should transmission delay be simulated?

ISMNode.nic.phy.thermalNoise double

the strength of the thermal noise [dBm]

ISMNode.nic.phy.useThermalNoise bool

should thermal noise be considered?

ISMNode.nic.phy.analogueModels xml

Specification of the analogue models to use and their parameters

ISMNode.nic.phy.decider xml

Specification of the decider to use and its parameters

ISMNode.nic.phy.sensitivity double

The sensitivity of the physical layer [dBm]

ISMNode.nic.phy.maxTXPower double

The maximum transimission power of the physical layer [mW]

ISMNode.nic.phy.timeRXToTX double 0

switchTimes [s]:

ISMNode.nic.phy.timeRXToSleep double 0
ISMNode.nic.phy.timeTXToRX double 0
ISMNode.nic.phy.timeTXToSleep double 0
ISMNode.nic.phy.timeSleepToRX double 0
ISMNode.nic.phy.timeSleepToTX double 0
ISMNode.nic.phy.initialRadioState int 0

state the radio is initially in

ISMNode.nic.phy.radioMinAtt double 1.0

radios gain factor (attenuation) while receiving

ISMNode.nic.phy.radioMaxAtt double 0.0

radios gain factor (attenuation) while not receiving

ISMNode.nic.phy.nbRadioChannels int 1

Number of available radio channels. Defaults to single channel radio.

ISMNode.nic.phy.initialRadioChannel int 0

Initial radio channel.

ISMNode.nic.mac.notAffectedByHostState bool false
ISMNode.nic.mac.coreDebug bool

debug switch

ISMNode.nic.mac.headerLength double

length of the MAC packet header (in bits)

ISMNode.nic.mac.debug bool false

enable debugging for this module

ISMNode.nic.mac.slotDuration double

how long is a slot? [s]

ISMNode.nic.mac.difs double

maximum time between a packet and its ack [s]

ISMNode.nic.mac.maxTxAttempts double

maximum number of transmission attempts

ISMNode.nic.mac.queueLength int

length of the MAC queue

ISMNode.nic.mac.defaultChannel double

default channel

ISMNode.nic.mac.bitrate double

bit rate [bps]

ISMNode.nic.mac.txPower double

tx power [mW]

ISMNode.nic.mac.contentionWindow double

contention window

Source code:

//
//This example shows how to use multiple ConnectionManagers in your simulation. 
//
//The network contains two independent ConnectionManagers: "ISMChannel" and "GSMChannel".
//There also is its own list of hosts for each channel "ISMNode" and "GSMNode".
//Both types of hosts use BurstApplLayer <-> BaseNetwLayer <-> CSMAMacLayer <-> 
//PhyLayer as network stack. Whereas the PhyLayer uses "SimplePathlossModel" 
//as AnalogueModel and "SNRThresholdDecider" as Decider.
//
//The channel a host uses is defined in its NICs "connectionManagerName" parameter.
//
//Since the settings for the SimplePathlossModel differ for the GSM- and ISM-Nodes
//there are two seperate <config>.xml for them (GSMmodels.xml and ISMmodels.xml).
//
//The omnetpp.ini contains the following run configurations:
//
//- Config1 - Three hosts which use the same ConnectionManager. No propagation delay.
//- Config2 - Same as Config1 but with propagation delay.
//- Config3 - Two hosts using the GSMChannel ConnectionManager and two host using
//		  	  the ISMChannel ConnectionManager. No propagation delay.
//- Config4 - Same as Config3 but with propagation delay.
//- General - Same as Config3
//
network MultiConnectionManager
{
    parameters:
        double playgroundSizeX @unit(m); // x size of the area the nodes are in (in meters)
        double playgroundSizeY @unit(m); // y size of the area the nodes are in (in meters)
        double playgroundSizeZ @unit(m); // z size of the area the nodes are in (in meters)
        double numGSMHosts; // total number of weak hosts in the network
        double numISMHosts; // total number of strong hosts in the network

        @display("bgb=$playgroundSizeX,$playgroundSizeY,white,,;bgp=10,50");
    submodules:
        world: BaseWorldUtility {
            parameters:
                playgroundSizeX = playgroundSizeX;
                playgroundSizeY = playgroundSizeY;
                playgroundSizeZ = playgroundSizeZ;
                @display("p=250,0;i=misc/globe");

        }
        ISMChannel: ConnectionManager {
            parameters:
                @display("p=350,0;b=42,42,rect,green,,;i=abstract/multicast");
        }
        GSMChannel: ConnectionManager {
            parameters:
                @display("p=450,0;b=42,42,rect,red,,;i=abstract/multicast");

        }
        GSMNode[numGSMHosts]: PhyMacHost {
            parameters:
                numHosts = numGSMHosts;
                @display("p=50,50;b=42,42,rect,red,,;i=device/palm");

        }
        ISMNode[numISMHosts]: PhyMacHost {
            parameters:
                numHosts = numISMHosts;
                @display("p=75,50;b=42,42,rect,green,,;i=device/wifilaptop");

        }
    connections allowunconnected:
                         // all connections and gates are to be generated dynamically

}