INET, Ad-hoc, AODV and DSDV, Comparison with the respective throughput, end-to-end delay and routing

578 views
Skip to first unread message

Oli Hül

unread,
May 22, 2019, 8:12:24 PM5/22/19
to OMNeT++ Users
Hello,

Hello, I am a beginner in Omnet ++ and i would like to compare the routing protocols ADOV and DSDV. For comparison, I want to use the results in throughput, end-to-end delay, and routing overhead.

I've looked at the TicToc and INET examples, but still I can not get on.
In some forums I looked for the same problem and also found some onces. Unfortunately, the discussions in the forums also did not help me why I now ask my question here.

The network should be kept small, which is why the NED looks easy. Also serves only for understanding.
There are 8 mobile nodes where one is the startup account and one is the destination node. (For later testing, I wanted to make the network even bigger).
One varinate is static and another is mobile

My idea was that  @statistic, ** througput.result-recording-modes and ** endToDelay.result-recording-modes help me to get my desired data so that I can compare the protocols with each other. Unfortunately that does not seem to work.

Can someone help me how I get to the data?
Do I need .cc files to solve the problem, or is everything synonymous only with the NED or INI file?

The NED file looks like this:

import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.node.inet.ManetRouter;
//import inet.node.gpsr.GpsrRouter;
//import inet.physicallayer.ieee80211.packetlevel.Ieee80211ScalarRadioMedium;
import inet.visualizer.integrated.IntegratedMultiVisualizer;
import inet.physicallayer.unitdisk.UnitDiskRadioMedium;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.common.scenario.ScenarioManager;



network Test
{
    parameters:
        @display("bgb=1000,1000;bgg=100,1,grey95");
        @figure[title](type=label; pos=0,-1; anchor=sw; color=darkblue);

        @figure[rcvdPkText](type=indicatorText; pos=380,20; anchor=w; font=,18; textFormat="packets received: %g"; initialValue=0);
        @statistic[packetReceived](source=destination.packetReceived; record=figure(count); targetFigure=rcvdPkText);
        
        
   
    submodules:
        source: ManetRouter {
            @display("p=50,200");
        }
        node1: ManetRouter {
            @display("p=100,200");
        }
        node2: ManetRouter {
            @display("p=150,200");
        }
        node3: ManetRouter {
            @display("p=200,200");
        }
        node4: ManetRouter {
            @display("p=250,200");
        }
        node5: ManetRouter {
            @display("p=300,200");
        }
        node6: ManetRouter {
            @display("p=350,200");
        }
        destination: ManetRouter {
            @display("p=400,200");
        }
        radioMedium: UnitDiskRadioMedium {
            @display("p=668,66");
        }
        configurator: Ipv4NetworkConfigurator {
            @display("p=668,134");
        }
        routingTableRecorder: RoutingTableRecorder {
            parameters:
                @display("p=667.83,279.11;is=s");
        }
        visualizer: IntegratedMultiVisualizer {
            @display("p=667.83,212.44");
        }
        scenarioManager: ScenarioManager {

                @display("p=667.83,345.78;is=s");
        }
connections allowunconnected:
        
}

The INI file: (focus on ADOV)

[General]

record-eventlog = true

sim-time-limit = 20s 

**.packetReceived.statistic-recording = true

**.vector-recording = true
**.throughput.result-recording-modes = mean
**.endToEndDelay.result-recording-modes = mean

#output-scalar-file=scalars1.sca


# ping app
*.source.numApps = 1
#*.source.app[0].typename = "PingApp"
#*.source.app[0].destAddr = "destination"
#*.source.app[0].printPing = true

**.wlan[*].bitrate = ${bitrate = 6,9,12,18,24,36,48,54}Mbps

*.source.app[0].typename = "UdpBasicApp"
*.source.app[*].destAddresses = "destination"
*.source.app[*].destPort = 5000
*.source.app[*].messageLength = ${packetLength = 100, 2268}byte
*.source.app[*].packetName = "UDPData-"
*.source.app[*].startTime = 0s
*.source.app[*].sendInterval = ${packetLength} * 8 / ${bitrate} * 1us

*.destination.numApps = 1
*.destination.app[0].typename = "UdpSink"
*.destination.app[*].localPort = 5000


# data link visualizer
*.visualizer.*.numDataLinkVisualizers = 5
*.visualizer.*.dataLinkVisualizer[*].activityLevel = "peer"
*.visualizer.*.dataLinkVisualizer[*].displayLinks = true
*.visualizer.*.dataLinkVisualizer[0].packetFilter = "aodv::Rreq"
*.visualizer.*.dataLinkVisualizer[1].packetFilter = "ping* or UDP*"
*.visualizer.*.dataLinkVisualizer[1].*Color = "blue"
*.visualizer.*.dataLinkVisualizer[2].packetFilter = "aodv::Rrep"
*.visualizer.*.dataLinkVisualizer[2].*Color = "darkslategray"
*.visualizer.*.dataLinkVisualizer[3].packetFilter = "aodv::Rerr"
*.visualizer.*.dataLinkVisualizer[3].*Color = "red"
*.visualizer.*.dataLinkVisualizer[4].packetFilter = "Hello"
*.visualizer.*.dataLinkVisualizer[4].*Color = "green"

# uncomment for video recording
#*.visualizer.*.networkRouteVisualizer[0].fadeOutMode = "animationTime"
#*.visualizer.*.dataLinkVisualizer[*].fadeOutMode = "animationTime"

# misc
**.wlan[*].typename = "AckingWirelessInterface"
**.wlan[*].radio.transmitter.communicationRange = 150m
**.wlan[*].radio.displayCommunicationRange = true

**.wlan[*].bitrate = 24Mbps

*.configurator.addStaticRoutes = false
**.netmaskRoutes = ""
**.arp.typename = "GlobalArp"

[Config Test]
network = Test

# tx power
**.transmitter.power = 1mW

# node movement
*.node*.mobility.typename = "LinearMobility"
*.node*.mobility.angle = uniform(0deg,360deg)
*.node*.mobility.speed = 10mps

**.constraintAreaMaxX = 1000m
**.constraintAreaMaxY = 1000m
**.constraintAreaMinX = 0m
**.constraintAreaMinY = 0m

# visualization
*.visualizer.*.routingTableVisualizer[0].displayLabels = false
*.visualizer.*.routingTableVisualizer[0].displayRoutesIndividually = false
*.visualizer.*.routingTableVisualizer[0].lineShift = 0

*.visualizer.*.networkRouteVisualizer[0].displayRoutes = true
*.visualizer.*.networkRouteVisualizer[0].packetFilter = "*ping*"

*.visualizer.*.interfaceTableVisualizer[0].displayInterfaceTables = true
*.visualizer.*.interfaceTableVisualizer[0].format = "%a/%l"

[Config Test_Aodv]
extends = Test

# routing protocol parameters
*.*.routing.typename = "Aodv"

*.*.routing.activeRouteTimeout = 1s
*.*.routing.deletePeriod = 0.5s

# visualization
*.visualizer.*.routingTableVisualizer[0].displayRoutingTables = true
*.visualizer.*.routingTableVisualizer[0].destinationFilter = "destination"

[Config Aodv_without_Mobilitiy]
extends = Test

# mobility
**.node*.mobility.typename = "StationaryMobility"
**.mobility.constraintAreaMinZ = 0m
**.mobility.constraintAreaMaxZ = 0m
**.mobility.constraintAreaMinX = 0m
**.mobility.constraintAreaMinY = 0m
**.mobility.constraintAreaMaxX = 1000m
**.mobility.constraintAreaMaxY = 1000m


# routing protocol parameters
*.*.routing.typename = "Aodv"

*.*.routing.activeRouteTimeout = 1s
*.*.routing.deletePeriod = 0.5s

# visualization
*.visualizer.*.routingTableVisualizer[0].displayRoutingTables = true
*.visualizer.*.routingTableVisualizer[0].destinationFilter = "destination"

[Config Test_Dsdv]
extends = Test

# routing protocol
*.*.routing.typename = "Dsdv"

*.*.routing.routeLifetime = 2s

# ping app
*.source.app[0].sendInterval = 0.5s

# visualization
*.visualizer.*.routingTableVisualizer[0].displayRoutingTables = true

Oli Hül

unread,
Jun 1, 2019, 10:43:29 AM6/1/19
to OMNeT++ Users
Nobody can say me how i  calculate the end-to-end-delay in Aodv?

Alfonso Ariza Quintana

unread,
Jun 1, 2019, 5:15:07 PM6/1/19
to omn...@googlegroups.com
The end to end delay is measured by the source, if you use a udp source this value is registered in the sca file.

De: omn...@googlegroups.com <omn...@googlegroups.com> en nombre de Oli Hül <olli...@gmail.com>
Enviado: sábado, 1 de junio de 2019 16:43
Para: OMNeT++ Users
Asunto: [Omnetpp-l] Re: INET, Ad-hoc, AODV and DSDV, Comparison with the respective throughput, end-to-end delay and routing
 
Nobody can say me how i  calculate the end-to-end-delay in Aodv?

--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.
To view this discussion on the web visit https://groups.google.com/d/msgid/omnetpp/88159de5-405a-474f-baed-be4845ac6651%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Oli Hül

unread,
Jun 1, 2019, 5:49:00 PM6/1/19
to OMNeT++ Users


Thanks for the answer!

When i change in the .ini the 

*.source.numApps = 1 to 
*.source.numUdpApps = 1 

came an warning: "Unused entry (does not match any parameter"

I don't know why. Did I forget something to import or why can it be?

Can you help me?

Alfonso Ariza Quintana

unread,
Jun 1, 2019, 5:50:53 PM6/1/19
to omn...@googlegroups.com
If you are using inet 4,

*.source.numApps = 1
See the examples. you use the typename to select the udp source

Enviado: sábado, 1 de junio de 2019 23:49

Para: OMNeT++ Users
Asunto: [Omnetpp-l] Re: INET, Ad-hoc, AODV and DSDV, Comparison with the respective throughput, end-to-end delay and routing

--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.

Oli Hül

unread,
Jun 1, 2019, 6:06:05 PM6/1/19
to OMNeT++ Users
Yes, i use inet 4.

in .ini i have 

**.scalar-recording = true

*.source.numApps = 1
*.source.app[0].typename = "UdpBasicApp"
*.source.app[*].destAddresses = "destination"
*.source.app[*].destPort = 5000
*.source.app[*].messageLength = ${packetLength = 100, 2268}byte
*.source.app[*].packetName = "UDPData-"
*.source.app[*].startTime = 0s
*.source.app[*].sendInterval = ${packetLength} * 8 / ${bitrate} * 1us

*.destination.numApps = 1
*.destination.app[0].typename = "UdpSink"
*.destination.app[*].localPort = 5000

So i used the typename to select the udp source, right?

Unfortunately, there is no end-to-end delay in the sca file.

I think it lacks only a trifle but unfortunately I don't find the error.

Which examples do you mean exactly? I looked at many and didn't find my mistake

Alfonso Ariza Quintana

unread,
Jun 1, 2019, 6:13:36 PM6/1/19
to omn...@googlegroups.com
endToEndDelay in histogram tab

Enviado: domingo, 2 de junio de 2019 0:06

Para: OMNeT++ Users
Asunto: [Omnetpp-l] Re: INET, Ad-hoc, AODV and DSDV, Comparison with the respective throughput, end-to-end delay and routing
--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.

Oli Hül

unread,
Jun 1, 2019, 6:22:44 PM6/1/19
to OMNeT++ Users
You're right. In the histogram tab, the endToEnd delay for destination.app [0] is displayed.

Is this the right end to end delay? =)

If so, thank you so much!

Alfonso Ariza Quintana

unread,
Jun 2, 2019, 3:41:46 AM6/2/19
to omn...@googlegroups.com
data end to end delay, the time that the packets take from the source to the destination.

Enviado: domingo, 2 de junio de 2019 0:22

Para: OMNeT++ Users
Asunto: [Omnetpp-l] Re: INET, Ad-hoc, AODV and DSDV, Comparison with the respective throughput, end-to-end delay and routing
You're right. In the histogram tab, the endToEnd delay for destination.app [0] is displayed.

Is this the right end to end delay? =)

If so, thank you so much!

--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.

Oli Hül

unread,
Jun 2, 2019, 5:20:55 AM6/2/19
to OMNeT++ Users
The question is now whether the end-to-end delay between source and destination is calculated in destiniation.app [0]? Because i find in histrogram and in the .vec tab only files to destination.app [0]. I can not find anything about source.app [0] end to end delay....

Can you tell me if that is the right end to end delay (destination.app[0] -> endtoEndDelay) between source and destination? I hope it's right.
If this is wrong, what do I have to do to calculate the correct end to end delay (between source and destination)?

Sorry for the many questions but I would like to know =)

Alfonso Ariza Quintana

unread,
Jun 2, 2019, 5:43:11 AM6/2/19
to omn...@googlegroups.com
only the receiver can compute the end to end delay, the source doesn't know the arrival time, but the destination has information about the arrival time and the creation time of the packet.

Enviado: domingo, 2 de junio de 2019 11:20

Para: OMNeT++ Users
Asunto: [Omnetpp-l] Re: INET, Ad-hoc, AODV and DSDV, Comparison with the respective throughput, end-to-end delay and routing
--
You received this message because you are subscribed to the Google Groups "OMNeT++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to omnetpp+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.

Oli Hül

unread,
Jun 2, 2019, 5:55:53 AM6/2/19
to OMNeT++ Users
Perfect! Then it is so right. 

This also explains why the throughput in the .vec file is displayed only in destination.app [0]. And source.app[0] have zero data.

With your help, I understood it. Many Thanks
Reply all
Reply to author
Forward
0 new messages