Compound Module MobileDTRoutingHost

Package: saors.simulations
File: simulations/MobileDTRoutingHost.ned

Models a mobile host with a wireless (802.11g) card in ad-hoc mode. This model contains the new IEEE 802.11 implementation, Ieee80211gNicAdhoc, and IP, TCP and UDP protocols. The mobility model can be dynamically specified with the mobilityType parameter.Supports opportunistic routing protocols by setting the **dtrouting.saorsmanager.routingProtocol parameter.

See also: MFMobileHost, WirelessHost, DTRouting, SaorsManager

Author:: Nikolaos Vastardis

NotificationBoard InterfaceTable RoutingTable TCPApp TCP UDPApp UDP PingApp NetworkLayerGlobalArp DTRouting Ieee80211gNicAdhoc BasicMobility

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Networks:

Name Type Description
TestingGround network (no description)

Parameters:

Name Type Default value Description
numTcpApps int 0
numUdpApps int 0
tcpAppType string ""
udpAppType string ""
routingFile string ""
mobilityType string "NullMobility"

Properties:

Name Value Description
node
display i=device/pocketpc_s;bgb=591,451

Gates:

Name Direction Size Description
radioIn input

Unassigned submodule parameters:

Name Type Default value Description
tcp.advertisedWindow int 14*this.mss

in bytes, corresponds with the maximal receiver buffer capacity (Note: normally, NIC queues should be at least this size)

tcp.delayedAcksEnabled bool false

delayed ACK algorithm (RFC 1122) enabled/disabled

tcp.nagleEnabled bool true

Nagle's algorithm (RFC 896) enabled/disabled

tcp.limitedTransmitEnabled bool false

Limited Transmit algorithm (RFC 3042) enabled/disabled (can be used for TCPReno/TCPTahoe/TCPNewReno/TCPNoCongestionControl)

tcp.increasedIWEnabled bool false

Increased Initial Window (RFC 3390) enabled/disabled

tcp.sackSupport bool false

Selective Acknowledgment (RFC 2018, 2883, 3517) support (header option) (SACK will be enabled for a connection if both endpoints support it)

tcp.windowScalingSupport bool false

Window Scale (RFC 1323) support (header option) (WS will be enabled for a connection if both endpoints support it)

tcp.timestampSupport bool false

Timestamps (RFC 1323) support (header option) (TS will be enabled for a connection if both endpoints support it)

tcp.mss int 536

Maximum Segment Size (RFC 793) (header option)

tcp.tcpAlgorithmClass string "TCPReno"

TCPReno/TCPTahoe/TCPNewReno/TCPNoCongestionControl/DumbTCP

tcp.sendQueueClass string "TCPVirtualDataSendQueue"

TCPVirtualDataSendQueue/TCPMsgBasedSendQueue

tcp.receiveQueueClass string "TCPVirtualDataRcvQueue"

TCPVirtualDataRcvQueue/TCPMsgBasedRcvQueue

tcp.recordStats bool true

recording of seqNum etc. into output vectors enabled/disabled

pingApp.destAddr string ""

destination IP or IPv6 address

pingApp.srcAddr string ""

source IP or IPv6 address (useful with multi-homing)

pingApp.packetSize double 56B

of ping payload, in bytes

pingApp.interval double 1s

time to wait between pings (can be random)

pingApp.hopLimit double 32

TTL or hopLimit for IP packets

pingApp.count double 0

stop after count ping requests, 0 means continuously

pingApp.startTime double uniform(0s,this.interval)

send first ping at startTime

pingApp.stopTime double 0s

send no pings after stopTime, 0 means forever

pingApp.printPing bool true

dump on stdout

networkLayer.ip.procDelay double 0s
networkLayer.ip.forceBroadcast bool false
networkLayer.arp.retryTimeout double 1s

number seconds ARP waits between retries to resolve an IP address

networkLayer.arp.retryCount int 3

number of times ARP will attempt to resolve an IP address

networkLayer.arp.cacheTimeout double 120s

number seconds unused entries in the cache will time out

networkLayer.arp.updateTimeOut bool false

if true, update the cache time out if the entry is used

dtrouting.manetmanager.routingProtocol string
dtrouting.manetmanager.manetPurgeRoutingTables bool true
dtrouting.manetmanager.AUTOASSIGN_ADDRESS bool false
dtrouting.manetmanager.AUTOASSIGN_ADDRESS_BASE string "10.0.0.0"
wlan.mgmt.UseQos80211e bool false
wlan.mgmt.classifierClass string "Ieee80211eClassifier"
wlan.mgmt.frameCapacity int 100
wlan.mac.address string "auto"

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0.

wlan.mac.maxQueueSize int

max queue length in frames; only used if queueModule==""

wlan.mac.bitrate double
wlan.mac.rtsThresholdBytes int 2346B

longer messages will be sent using RTS/CTS

wlan.mac.retryLimit int -1

maximum number of retries per message, -1 means default

wlan.mac.cwMinData int -1

contention window for normal data frames, -1 means default

wlan.mac.cwMinBroadcast int -1

contention window for broadcast messages, -1 means default

wlan.mac.opMode int 2

1=b 2= g

wlan.mac.slotTime double 9us
wlan.mac.basicBitrate double 2e6bps
wlan.mac.AIFSN double 2.0
wlan.mac.mtu int 1500
wlan.mac.fixFSM bool false
wlan.mac.PHY_HEADER_LENGTH double -1

if negative the code use 26 usec

wlan.mac.ForceBitRate bool false

if true the mac force the bitrate to the physical layer

wlan.mac.autoBitrate int 0

autobitrate algorithm by default is disabled

wlan.mac.minSuccessThreshold int 10

parameters used by the autobitrate

wlan.mac.minTimerTimeout int 15
wlan.mac.timerTimeout int 15
wlan.mac.successThreshold int 10
wlan.mac.maxSuccessThreshold int 60
wlan.mac.successCoeff double 2.0
wlan.radio.TransmissionAntennaGainIndB double 0dB

Transmission Antenna Gain

wlan.radio.ReceiveAntennaGainIndB double 0dB

Receive Antenna Gain

wlan.radio.SystemLossFactor double 0dB

System Loss of Hardware

wlan.radio.sigma double 1

LogNormalShadowingModel

wlan.radio.nak_m double 1

NakagamiModel

wlan.radio.KdB double 8

RiceModel

wlan.radio.TransmiterAntennaHigh double 1m

Transmitter Antenna High

wlan.radio.ReceiverAntennaHigh double 1m

Receiver Antenna High

wlan.radio.channelNumber int 0

channel identifier

wlan.radio.carrierFrequency double 2.4GHz
wlan.radio.transmitterPower double 20mW

power used for transmission of messages (in mW)

wlan.radio.bitrate double

(in bits/s)

wlan.radio.thermalNoise double -110dBm

base noise level (dBm)

wlan.radio.pathLossAlpha double 2

used by the path loss calculation

wlan.radio.shadowingDeviation double 0dB

used by the shadowing model calculation

wlan.radio.snirThreshold double 4dB

if signal-noise ratio is below this threshold, frame is considered noise (in dB)

wlan.radio.sensitivity double

received signals with power below sensitivity are ignored

wlan.radio.berTableFile string ""
wlan.radio.useBerClass bool false
wlan.radio.PHY_HEADER_LENGTH double -1

must be the same that PHY_HEADER_LENGTH in the mac, double PHY_HEADER_LENGTH = default(-1), if negative the code use 26 usec

wlan.radio.phyOpMode string "g"

1='b', 2='g'

wlan.radio.channelModel string "RAYLEIGH"

RAYLEIGH or AWGN

wlan.radio.attenuationModel string "PathLossReceptionModel"

Values "pathlost" or "tworay"

wlan.radio.drawCoverage bool true
wlan.radio.refresCoverageInterval double 5s
wlan.radio.usage_radio_idle double -1mA

disable battery registration

wlan.radio.usage_radio_recv double -1mA

disable battery registration

wlan.radio.usage_radio_sleep double -1mA

disable battery registration

wlan.radio.usage_radio_send double -1mA

disable battery registration

Source code:

//
// Models a mobile host with a wireless (802.11g) card in ad-hoc mode.
// This model contains the new IEEE 802.11 implementation, Ieee80211gNicAdhoc,
// and IP, TCP and UDP protocols. The mobility model can be dynamically 
// specified with the mobilityType parameter.Supports opportunistic routing
// protocols by setting the
// **dtrouting.saorsmanager.routingProtocol
// parameter.
//
// @see MFMobileHost, WirelessHost, DTRouting, SaorsManager
//
// @author: Nikolaos Vastardis
//
module MobileDTRoutingHost
{
    parameters:
        @node();
        int numTcpApps = default(0);
        int numUdpApps = default(0);
        string tcpAppType = default("");
        string udpAppType = default("");
        string routingFile = default("");
        string mobilityType = default("NullMobility");
        @display("i=device/pocketpc_s;bgb=591,451");
    gates:
        input radioIn @directIn;
    submodules:
        notificationBoard: NotificationBoard {
            parameters:
                @display("p=83,54");
        }
        interfaceTable: InterfaceTable {
            parameters:
                @display("p=83,173");
        }
        routingTable: RoutingTable {
            parameters:
                IPForward = true;
                routerId = "";
                routingFile = routingFile;
                @display("p=83,277");
        }
        tcpApp[numTcpApps]: <tcpAppType> like TCPApp {
            parameters:
                @display("p=227,54");
        }
        tcp: TCP {
            parameters:
                @display("p=227,173");
        }
        udpApp[numUdpApps]: <udpAppType> like UDPApp {
            parameters:
                @display("p=385,54");
        }
        udp: UDP {
            parameters:
                @display("p=385,173");
        }
        pingApp: PingApp {
            parameters:
                @display("p=524,233");
        }
        networkLayer: NetworkLayerGlobalArp {
            parameters:
                proxyARP = false;
                globalARP = true;
                @display("p=385,277;q=queue");
            gates:
                ifIn[1];
                ifOut[1];
        }
        dtrouting: DTRouting {
            parameters:
                @display("p=227,277");
        }
        wlan: Ieee80211gNicAdhoc {
            //wlan: Ieee80211NewNicAdhoc {
            parameters:
                @display("p=385,379;q=queue");
        }
        mobility: <mobilityType> like BasicMobility {
            parameters:
                @display("p=227,366");
        }
    connections allowunconnected:
        for i=0..numTcpApps-1 {
            tcpApp[i].tcpOut --> tcp.appIn++;
            tcpApp[i].tcpIn <-- tcp.appOut++;
        }

        tcp.ipOut --> networkLayer.tcpIn;
        tcp.ipIn <-- networkLayer.tcpOut;

        for i=0..numUdpApps-1 {
            udpApp[i].udpOut --> udp.appIn++;
            udpApp[i].udpIn <-- udp.appOut++;
        }

        udp.ipOut --> networkLayer.udpIn;
        udp.ipIn <-- networkLayer.udpOut;

        networkLayer.pingOut --> pingApp.pingIn;
        networkLayer.pingIn <-- pingApp.pingOut;

        networkLayer.MANETOut --> dtrouting.from_ip;
        networkLayer.MANETIn <-- dtrouting.to_ip;

        // connections to network outside
        radioIn --> wlan.radioIn;
        wlan.uppergateOut --> networkLayer.ifIn[0];
        wlan.uppergateIn <-- networkLayer.ifOut[0];
}