Simple Module DTApp

Package: ECMM.DT_App
File: src/DT_App/DTApp.ned

C++ definition

The Delay-Tolerant Application

It is actually quite similar to the UDPBasicBurst Application module. Sends UDP packets to the given IP address at the given interval. Compatible with both IPv4 and IPv6. Their only difference it that the DTApp has a bit more advanced duplicate message detection mechanism and it is able to compute a percentage outcome of the delivered packages. This percentage does not indicate anything on its own, but by averaging all the metrics from all the modules, the actual delivery percentage can be extracted.

The interval can be a constant or a random value (e.g. exponential(1)). If the destAddresses parameter contains more than one address, one of them is randomly chosen for each packet. An address may be given in the dotted decimal notation, or with the module name. (The IPAddressResolver class is used to resolve the address.) To disable the model, set destAddresses to "".

The peer can be UDPSink or another DTApp

Author: Nikolaos Vastardis

DTApp

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.

Parameters:

Name Type Default value Description
localPort int
destPort int
messageLength int

length of messages to generate, in bytes

messageFreq double

should usually be a random value, e.g. exponential(1), if -1 the application is a sink

message_freq_jitter double

should usually be a random value, e.g. uniform(-0.001,0.001)

destAddresses string

list of IP addresses, separated by spaces, it's admit the macros radom("node type") and random_name("node name")

time_off double

time without transmision

burstDuration double

burst duration time

activeBurst bool

if false the address is selected in the begining and never change

time_end double

time of the last transmision packet

time_begin double

begin transmission time

rand_generator int

ID random generator

limitDelay double

maximun delay for a packet, every packet with bigger delay is delete and lost

fixedDestination bool false

if true the destination address is selected at the begining and never change

Properties:

Name Value Description
display i=block/delay

Gates:

Name Direction Size Description
udpIn input
udpOut output

Source code:

//
// <b> The Delay-Tolerant Application </b>
//
// It is actually quite similar to the UDPBasicBurst Application module.
// Sends \UDP packets to the given \IP address at the given interval.
// Compatible with both IPv4 and IPv6. Their only difference it that
// the DTApp has a bit more advanced duplicate message detection mechanism
// and it is able to compute a percentage outcome of the delivered packages.
// This percentage does not indicate anything on its own, but by averaging
// all the metrics from all the modules, the actual delivery percentage can
// be extracted. 
//
// The interval can be a constant or a random value (e.g. exponential(1)).
// If the destAddresses parameter contains more than one address, one
// of them is randomly chosen for each packet. An address may be given in the
// dotted decimal notation, or with the module name. (The IPAddressResolver
// class is used to resolve the address.) To disable the model, set
// destAddresses to "". 
//
// The peer can be UDPSink or another DTApp
//
// @author Nikolaos Vastardis
//
simple DTApp like UDPApp
{
    parameters:
        int localPort;
        int destPort;
        volatile int messageLength @unit("B"); 			//  length of messages to generate, in bytes
        volatile double messageFreq @unit("s"); 		// should usually be a random value, e.g. exponential(1), if -1 the application is a sink
        volatile double message_freq_jitter @unit("s"); // should usually be a random value, e.g. uniform(-0.001,0.001)
        string destAddresses; 							// list of \IP addresses, separated by spaces, it's admit the macros radom("node type") and random_name("node name")
        volatile double time_off @unit("s"); 			// time without transmision
        volatile double burstDuration @unit("s");  		// burst duration time
        bool activeBurst; 								// if false the address is selected in the begining and never change
        double time_end @unit("s"); 					// time of the last transmision packet 
        double time_begin @unit("s");					// begin transmission time
        int rand_generator;								// ID random generator
        double limitDelay @unit("s"); 					// maximun delay for a packet, every packet with bigger delay is delete and lost
        bool fixedDestination = default(false);  		// if true the destination address is selected at the begining and never change

        @display("i=block/delay");
    gates:
        input udpIn @labels(UDPControlInfo/up);
        output udpOut @labels(UDPControlInfo/down);
}