IpvxTrafGen

Package: inet.applications.generic

simple module IpvxTrafGen

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 chosen 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).

inet.applications.generic.IpvxTrafGenIpvxTrafGensimple

Inheritance diagram

Extends

Name

Type

Description

SimpleModule

simple module

Base module for all INET simple modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“rcvd: {numReceived} pks\nsent: {numSent} pks”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

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 IPv4, IPv6 protocol field, accepts only between 143 and 254

packetLength

int

Packet length in bytes

destAddresses

string

“”

List of destination addresses, separated by spaces

Properties

Name

Value

Description

class

IpvxTrafGen

display

i=block/source

lifecycleSupport

Gates

Name

Direction

Size

Description

ipIn

input

ipOut

output

Signals

Name

Type

Unit

Description

packetReceived

inet::Packet

packetSent

inet::Packet

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

endToEndDelay

end-to-end delay

dataAge(packetReceived)

histogram,vector

s

none

packetReceived

packets received

packetReceived

count,”sum(packetBytes)”,”vector(packetBytes)”

none

packetSent

packets sent

packetSent

count,”sum(packetBytes)”,”vector(packetBytes)”

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 chosen 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 extends SimpleModule like IIpvxTrafficGenerator
{
    parameters:
        @class(IpvxTrafGen);
        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 IPv4, IPv6 protocol field, accepts only between 143 and 254
        volatile int packetLength @unit(B); // Packet length in bytes
        string destAddresses = default(""); // List of destination addresses, separated by spaces
        displayStringTextFormat = default("rcvd: {numReceived} pks\nsent: {numSent} pks");
        @lifecycleSupport;
        @display("i=block/source");
        @signal[packetSent](type=inet::Packet);
        @signal[packetReceived](type=inet::Packet);
        @statistic[packetReceived](title="packets received"; source=packetReceived; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @statistic[packetSent](title="packets sent"; source=packetSent; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @statistic[endToEndDelay](title="end-to-end delay"; source="dataAge(packetReceived)"; unit=s; record=histogram,vector; interpolationmode=none);
    gates:
        input ipIn @labels(Ipv4ControlInfo/up,Ipv6ControlInfo/up);
        output ipOut @labels(Ipv4ControlInfo/down,Ipv6ControlInfo/down);
}

File: src/inet/applications/generic/IpvxTrafGen.ned