%description:
This example tests the AODV's lifecycle capability. When intermediateNodeA shuts down at 12.3s
sender gets a link break signal and then discovers a new route to the receiver node.
%#--------------------------------------------------------------------------------------------------------------
%file: test.ned
import inet.common.lifecycle.LifecycleController;
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.node.aodv.AODVRouter;
import inet.physicallayer.idealradio.IdealRadioMedium;
import inet.common.scenario.ScenarioManager;
network AODVTest
{
parameters:
@display("bgb=961,662");
submodules:
radioMedium: IdealRadioMedium {
parameters:
@display("p=50,50");
}
configurator: IPv4NetworkConfigurator {
parameters:
addDefaultRoutes = false;
addStaticRoutes = false;
addSubnetRoutes = false;
config = xml("");
@display("p=50,100");
}
routingTableRecorder: RoutingTableRecorder {
parameters:
@display("p=50,150");
}
lifecycleController: LifecycleController {
parameters:
@display("p=50,200");
}
scenarioManager: ScenarioManager {
parameters:
script = default(xml(""));
@display("p=50,250");
}
sender: AODVRouter {
parameters:
@display("i=device/pocketpc_s;r=,,#707070;p=284,51");
}
intermediateNodeA: AODVRouter {
parameters:
@display("i=device/pocketpc_s;r=,,#707070;p=203,206");
}
intermediateNodeB: AODVRouter {
parameters:
@display("i=device/pocketpc_s;r=,,#707070;p=386,206");
}
receiver: AODVRouter {
parameters:
@display("i=device/pocketpc_s;r=,,#707070;p=284,378");
}
connections allowunconnected:
}
%#--------------------------------------------------------------------------------------------------------------
%inifile: omnetpp.ini
[General]
network = AODVTest
record-eventlog = true
sim-time-limit = 100s
num-rngs = 3
tkenv-plugin-path = ../../../etc/plugins
ned-path = .;../../../../src;../../lib
#omnetpp 5.0 - 5.1 compatibility:
eventlog-file = "${resultdir}/${configname}-${runnumber}.elog"
output-scalar-file = "${resultdir}/${configname}-${runnumber}.sca"
output-vector-file = "${resultdir}/${configname}-${runnumber}.vec"
snapshot-file = "${resultdir}/${configname}-${runnumber}.sna"
**.mobility.rng-0 = 1
**.wlan[*].mac.rng-0 = 2
**.aodv.useHelloMessages = false
*.sender.aodv.jitter = 1ms
*.receiver.aodv.jitter = 2ms
*.intermediateNodeA.aodv.jitter = 3ms
*.intermediateNodeB.aodv.jitter = 4ms
# mobility
**.mobilityType = "StationaryMobility"
**.mobility.constraintAreaMinZ = 0m
**.mobility.constraintAreaMaxZ = 0m
**.mobility.constraintAreaMinX = 0m
**.mobility.constraintAreaMinY = 0m
**.mobility.constraintAreaMaxX = 600m
**.mobility.constraintAreaMaxY = 600m
# ping app (host[0] pinged by others)
**.sender.numPingApps = 1
**.sender.pingApp[0].startTime = uniform(1s,5s)
**.sender.pingApp[0].printPing = true
**.sender.pingApp[0].destAddr = "receiver(ipv4)"
# nic settings
**.wlan[*].typename = "IdealWirelessNic"
**.wlan[*].radio.transmitter.communicationRange = 240m
**.wlan[*].bitrate = 2Mbps
**.wlan[*].mac.address = "auto"
**.wlan[*].mac.headerLength = 20B
**.hasStatus = true
*.scenarioManager.script = xmldoc("scenario.xml")
%#--------------------------------------------------------------------------------------------------------------
%file: scenario.xml
%#--------------------------------------------------------------------------------------------------------------
%contains-regex: results/General-0.rt
\+R \d+ 3\.1965\d+ 8 145\.236\.0\.2 145\.236\.0\.1 32 145\.236\.0\.1
\+R \d+ 3\.1965\d+ 9 145\.236\.0\.3 145\.236\.0\.1 32 145\.236\.0\.1
\+R \d+ 3\.1998\d+ 7 145\.236\.0\.1 145\.236\.0\.2 32 145\.236\.0\.2
\+R \d+ 3\.1998\d+ 9 145\.236\.0\.3 145\.236\.0\.2 32 145\.236\.0\.2
\+R \d+ 3\.1998\d+ 10 145\.236\.0\.4 145\.236\.0\.2 32 145\.236\.0\.2
\+R \d+ 3\.1998\d+ 10 145\.236\.0\.4 145\.236\.0\.1 32 145\.236\.0\.2
\+R \d+ 3\.2004\d+ 8 145\.236\.0\.2 145\.236\.0\.4 32 145\.236\.0\.4
\+R \d+ 3\.2008\d+ 8 145\.236\.0\.2 145\.236\.0\.3 32 145\.236\.0\.3
\+R \d+ 3\.2008\d+ 7 145\.236\.0\.1 145\.236\.0\.3 32 145\.236\.0\.3
\+R \d+ 3\.2008\d+ 10 145\.236\.0\.4 145\.236\.0\.3 32 145\.236\.0\.3
\+R \d+ 3\.2041\d+ 7 145\.236\.0\.1 145\.236\.0\.4 32 145\.236\.0\.2
\-R \d+ 12\.3 8 145\.236\.0\.2 145\.236\.0\.1 32 145\.236\.0\.1
\-R \d+ 12\.3 8 145\.236\.0\.2 145\.236\.0\.3 32 145\.236\.0\.3
\-R \d+ 12\.3 8 145\.236\.0\.2 145\.236\.0\.4 32 145\.236\.0\.4
\-R \d+ 12\.3 8 145\.236\.0\.2 145\.236\.0\.0 16
\-R \d+ 12\.3 8 145\.236\.0\.2 127\.0\.0\.0 8
\*R \d+ 14\.2008\d+ 10 145\.236\.0\.4 145\.236\.0\.1 32 145\.236\.0\.3
\+R \d+ 14\.2014\d+ 9 145\.236\.0\.3 145\.236\.0\.4 32 145\.236\.0\.4
\*R \d+ 14\.2061\d+ 7 145\.236\.0\.1 145\.236\.0\.4 32 145\.236\.0\.3
\-R \d+ 21\.1998\d+ 9 145\.236\.0\.3 145\.236\.0\.2 32 145\.236\.0\.2
\-R \d+ 28\.2952\d+ 7 145\.236\.0\.1 145\.236\.0\.2 32 145\.236\.0\.2
\-R \d+ 30\.1960\d+ 10 145\.236\.0\.4 145\.236\.0\.2 32 145\.236\.0\.2
%#--------------------------------------------------------------------------------------------------------------
%not-contains: stdout
undisposed object:
%not-contains: stdout
-- check module destructor
%#--------------------------------------------------------------------------------------------------------------