NetPerfMeter¶
Package: inet.applications.netperfmeter
simple module NetPerfMeter
Application model for comparing the performance of various transport protocols.
The NetPerfMeter model simultaneously transmits bidirectional flows to an endpoint, and measures the resulting flow bandwidths and QoS. Since the application behavior is the same for all underlying transport layer protocols, it allows for comparing the performance of various transport protocols, e.g. TCP vs. SCTP.
The model closely mimics the operation of the real-world NetPerfMeter application (https://www.uni-due.de/~~be0001/netperfmeter/), a tool for measuring UDP, TCP, MPTCP, SCTP and DCCP performance over IPv4 and IPv6. Since the parametrization and features are similar to the real-world application, the model also makes comparisons of simulation results and real-world measurements easy.
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
simple module |
Base module for all INET simple modules. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“In: {totalReceivedBytes}, Out: {totalSentBytes}” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
activeMode |
bool |
true |
Server (false) or client (true) |
localAddress |
string |
“” |
May be left empty (“”) |
localPort |
int |
9000 |
Port number to listen on |
remoteAddress |
string |
“” |
Server address (may be symbolic) |
remotePort |
int |
9000 |
Port number to connect to |
connectTime |
double |
0s |
Absolute time to establish connection |
startTime |
double |
1s |
Transmission start, relative to “connectTime” |
resetTime |
double |
5s |
Statistics reset, relative to “connectTime” |
stopTime |
double |
30s |
Transmission stop, relative to “resetTime” |
queueSize |
int |
1000000 B |
Size of the transmission queue (SCTP/TCP only) |
onTime |
double |
-1s |
Online time; disconnect when timer expires |
offTime |
double |
-1s |
Offline time; reconnect when timer expires |
maxOnOffCycles |
int |
0 |
Maximum number of on-off cycles (-1 for unlimited) |
outboundStreams |
int |
1 |
Number of outbound streams (SCTP only) |
maxInboundStreams |
int |
16 |
Maximum number of inbound streams (SCTP only) |
protocol |
string |
“SCTP” |
Transport protocol to use |
primaryPath |
string |
“” |
Primary path (may be symbolic; SCTP only) |
frameRate |
double |
1 Hz |
Outgoing frame rate |
frameSize |
int |
1452 B |
Outgoing frame size |
frameRateString |
string |
“” |
Outgoing frame rate per stream, separated by “;” |
frameSizeString |
string |
“” |
Outgoing frame size per stream, separated by “;” |
traceFile |
string |
“” |
Use trace file instead of frame rate/frame size |
maxMsgSize |
int |
1000 B |
Maximum message size |
unordered |
double |
0.0 |
Fraction of unordered messages (SCTP only) |
unreliable |
double |
0.0 |
Fraction of unreliable messages (SCTP only) |
decoupleSaturatedStreams |
bool |
true |
Apply buffer splitting when using multiple streams |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
NetPerfMeter |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
socketIn |
input |
||
socketOut |
output |
Source code¶
//
// Application model for comparing the performance of various transport
// protocols.
//
// The ~NetPerfMeter model simultaneously transmits bidirectional flows to an
// endpoint, and measures the resulting flow bandwidths and QoS. Since the
// application behavior is the same for all underlying transport layer
// protocols, it allows for comparing the performance of various transport
// protocols, e.g. TCP vs. SCTP.
//
// The model closely mimics the operation of the real-world NetPerfMeter
// application (https://www.uni-due.de/~~be0001/netperfmeter/), a tool for
// measuring UDP, TCP, MPTCP, SCTP and DCCP performance over IPv4 and IPv6.
// Since the parametrization and features are similar to the real-world
// application, the model also makes comparisons of simulation results and
// real-world measurements easy.
//
simple NetPerfMeter extends SimpleModule like IApp
{
parameters:
@class(NetPerfMeter);
displayStringTextFormat = default("In: {totalReceivedBytes}, Out: {totalSentBytes}");
bool activeMode = default(true); // Server (false) or client (true)
string localAddress = default(""); // May be left empty ("")
int localPort = default(9000); // Port number to listen on
string remoteAddress = default(""); // Server address (may be symbolic)
int remotePort = default(9000); // Port number to connect to
double connectTime @unit(s) = default(0s); // Absolute time to establish connection
double startTime @unit(s) = default(1s); // Transmission start, relative to "connectTime"
double resetTime @unit(s) = default(5s); // Statistics reset, relative to "connectTime"
double stopTime @unit(s) = default(30s); // Transmission stop, relative to "resetTime"
int queueSize @unit(B) = default(1000000 B); // Size of the transmission queue (SCTP/TCP only)
double onTime @unit(s) = default(-1s); // Online time; disconnect when timer expires
double offTime @unit(s) = default(-1s); // Offline time; reconnect when timer expires
int maxOnOffCycles = default(0); // Maximum number of on-off cycles (-1 for unlimited)
int outboundStreams = default(1); // Number of outbound streams (SCTP only)
int maxInboundStreams = default(16); // Maximum number of inbound streams (SCTP only)
string protocol = default("SCTP"); // Transport protocol to use
string primaryPath = default(""); // Primary path (may be symbolic; SCTP only)
volatile double frameRate @unit(Hz) = default(1 Hz); // Outgoing frame rate
volatile int frameSize @unit(B) = default(1452 B); // Outgoing frame size
string frameRateString = default(""); // Outgoing frame rate per stream, separated by ";"
string frameSizeString = default(""); // Outgoing frame size per stream, separated by ";"
string traceFile = default(""); // Use trace file instead of frame rate/frame size
int maxMsgSize @unit(B) = default(1000 B); // Maximum message size
double unordered = default(0.0); // Fraction of unordered messages (SCTP only)
double unreliable = default(0.0); // Fraction of unreliable messages (SCTP only)
bool decoupleSaturatedStreams = default(true); // Apply buffer splitting when using multiple streams
gates:
input socketIn;
output socketOut;
}