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:
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.
| 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 |
| Name | Value | Description |
|---|---|---|
| isNetwork | ||
| display | bgb=$playgroundSizeX,$playgroundSizeY,white,,;bgp=10,50 |
| 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 |
// //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 }