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
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
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 |
Name | Value | Description |
---|---|---|
display | i=block/delay |
Name | Direction | Size | Description |
---|---|---|---|
udpIn | input | ||
udpOut | output |
// // <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); }