Package: inet.applications.generic
IpvxTrafGen
simple moduleSends 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
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the 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 | |
| lifecycleSupport | ||
| display | i=block/source |
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 |
|---|---|---|---|---|---|---|
| packetReceived | packets received | packetReceived | count, sum(packetBytes), vector(packetBytes) | none | ||
| packetSent | packets sent | packetSent | count, sum(packetBytes), vector(packetBytes) | none | ||
| endToEndDelay | end-to-end delay | dataAge(packetReceived) | 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 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