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).
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
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 |
|||
packetSent |
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);
}