%description:
Testing dynamic behavior of RIP routing
Topology with 2 hosts and 4 routers:
RA
/ \
H1---R1 R2---H2
\ /
RB
Each link has metric 1, except between R1 and RB which has metric 2.
The link between R1 and RA is broken at 200s and restored at 400s.
It is checked that:
- initially the route from R1 to H2 goes through RA and has metric 3.
- at 220s R1 has a route to H2 through RB and has metric 4.
- at 430s R1 has a route to H2 through RA again and has metric 3.
%#--------------------------------------------------------------------------------------------------------------
%file: test.ned
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.node.inet.StandardHost;
import inet.node.rip.RIPRouter;
import inet.common.scenario.ScenarioManager;
import ned.DatarateChannel;
network Test1
{
types:
channel C extends DatarateChannel
{
delay = 0.1us;
datarate = 100Mbps;
}
submodules:
H1: StandardHost;
R1: RIPRouter { gates: ethg[3]; }
RA: RIPRouter { gates: ethg[2]; }
RB: RIPRouter { gates: ethg[2]; }
R2: RIPRouter { gates: ethg[3]; }
H2: StandardHost;
configurator: IPv4NetworkConfigurator {
parameters:
config = xml(""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ "");
addStaticRoutes = false;
addSubnetRoutes = false;
addDefaultRoutes = false;
}
scenarioManager: ScenarioManager;
routingTableLogger: RoutingTableLogger;
connections:
H1.ethg++ <--> C <--> R1.ethg[0];
R1.ethg[1] <--> C <--> RA.ethg[0];
R1.ethg[2] <--> C <--> RB.ethg[0];
RA.ethg[1] <--> C <--> R2.ethg[1];
RB.ethg[1] <--> C <--> R2.ethg[2];
R2.ethg[0] <--> C <--> H2.ethg++;
}
%#--------------------------------------------------------------------------------------------------------------
%file: RIPConfig.xml
%#--------------------------------------------------------------------------------------------------------------
%file: scenario1.xml
%#--------------------------------------------------------------------------------------------------------------
%inifile: omnetpp.ini
[General]
description = "Dynamic test"
network = Test1
ned-path = .;../../../../src;../../lib
# record-eventlog = true
# cmdenv-express-mode = false
# debug-on-errors = true
tkenv-plugin-path = ../../../etc/plugins
sim-time-limit = 600s
#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"
**.arp.cacheTimeout = 1s
**.ripConfig = xmldoc("RIPConfig.xml")
**.rip.startupTime = 0s
*.scenarioManager.script = xmldoc("scenario1.xml")
*.routingTableLogger.outputFile = "routes.txt"
# *.rtr.module-eventlog-recording = true
# **.module-eventlog-recording = true
%#--------------------------------------------------------------------------------------------------------------
%contains-regex: routes.txt
R1 0
10.0.0.0/30 eth1 IFACENETMASK .*
10.0.0.4/30 eth2 IFACENETMASK .*
192.168.1.0/30 eth0 IFACENETMASK .*
R1 10
10.0.0.0/30 eth1 IFACENETMASK .*
10.0.0.4/30 eth2 IFACENETMASK .*
10.0.0.8/30 10.0.0.2 eth1 RIP 2
10.0.0.12/30 10.0.0.6 eth2 RIP 3
192.168.1.0/30 eth0 IFACENETMASK .*
192.168.2.0/30 10.0.0.2 eth1 RIP 3
R1 220
10.0.0.4/30 eth2 IFACENETMASK .*
10.0.0.8/30 10.0.0.6 eth2 RIP 4
10.0.0.12/30 10.0.0.6 eth2 RIP 3
192.168.1.0/30 eth0 IFACENETMASK .*
192.168.2.0/30 10.0.0.6 eth2 RIP 4
R1 430
10.0.0.4/30 eth2 IFACENETMASK .*
10.0.0.8/30 10.0.0.2 eth1 RIP 2
10.0.0.12/30 10.0.0.6 eth2 RIP 3
192.168.1.0/30 eth0 IFACENETMASK .*
192.168.2.0/30 10.0.0.2 eth1 RIP 3
END