Name | Type | Description |
---|---|---|
DTApp | simple module |
The Delay-Tolerant Application |
// // Copyright (C) 2012 Nikolaos Vastardis // Copyright (C) 2012 University of Essex // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see <http://www.gnu.org/licenses/>. // package ECMM.DT_App; import inet.applications.udpapp.UDPApp; // // <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); }