Simple Module IPvXTrafGen

Package: inet.applications.generic
File: src/inet/applications/generic/IPvXTrafGen.ned

C++ definition

Sends IP or IPv6 datagrams to the given address at the given sendInterval. The sendInterval 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 for each packet. An address may be given in the dotted decimal notation (or, for IPv6, in the usual notation with colons), or with the module name. (The L3AddressResolver class is used to resolve the address.) To disable the model, set destAddresses to "".

The peer can be IPvXTrafSink or another IPvXTrafGen (it handles received packets exactly like IPvXTrafSink).

IPvXTrafGen

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
startTime double 1s

time of sending the first packet

stopTime double -1s

time of finishing sending, negative values mean forever

sendInterval double 10ms

may be a random value, e.g. exponential(1)

numPackets int -1

max number of packets to generate, -1 means forever

protocol int

value for IPv4ControlInfo / IPv6ControlInfo protocol field

packetLength int

packet length in bytes

destAddresses string ""

list of destination addresses, separated by spaces

Properties:

Name Value Description
display i=block/source

Gates:

Name Direction Size Description
ipIn input
ipOut output

Signals:

Name Type Unit
sentPk cPacket
rcvdPk cPacket

Statistics:

Name Title Source Record Unit Interpolation Mode
sentPk packets sent sentPk count, sum(packetBytes), vector(packetBytes) none
rcvdPk packets received rcvdPk count, sum(packetBytes), vector(packetBytes) none
endToEndDelay end-to-end delay messageAge(rcvdPk) histogram, vector s none

Source code:

//
// Sends IP or IPv6 datagrams to the given address at the given sendInterval.
// The sendInterval 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 for each packet. An address may be given in the
// dotted decimal notation (or, for IPv6, in the usual notation with colons),
// or with the module name. (The L3AddressResolver class is used to resolve
// the address.) To disable the model, set destAddresses to "".
//
// The peer can be ~IPvXTrafSink or another ~IPvXTrafGen (it handles received packets
// exactly like ~IPvXTrafSink).
//
simple IPvXTrafGen like IIPvXTrafficGenerator
{
    parameters:
        double startTime @unit("s") = default(1s); // time of sending the first packet
        double stopTime @unit("s") = default(-1s);  // time of finishing sending, negative values mean forever
        volatile double sendInterval @unit("s") = default(10ms); // may be a random value, e.g. exponential(1)
        int numPackets = default(-1); // max number of packets to generate, -1 means forever
        int protocol; // value for ~IPv4ControlInfo / ~IPv6ControlInfo protocol field
        volatile int packetLength @unit("B"); // packet length in bytes
        string destAddresses = default(""); // list of destination addresses, separated by spaces
        @display("i=block/source");
        @signal[sentPk](type=cPacket);
        @signal[rcvdPk](type=cPacket);
        @statistic[rcvdPk](title="packets received"; source=rcvdPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @statistic[sentPk](title="packets sent"; source=sentPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @statistic[endToEndDelay](title="end-to-end delay"; source="messageAge(rcvdPk)"; unit=s; record=histogram,vector; interpolationmode=none);
    gates:
        input ipIn @labels(IPv4ControlInfo/up,IPv6ControlInfo/up);
        output ipOut @labels(IPv4ControlInfo/down,IPv6ControlInfo/down);
}