Package: inet.applications.netperfmeter
NetPerfMeter
simple moduleApplication 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 behaviour 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 parametrisation and features are similar to the real-world application, the model also makes comparisons of simulation results and real-world measurements easy.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Parameters
Name | Type | Default value | Description |
---|---|---|---|
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 |
Gates
Name | Direction | Size | Description |
---|---|---|---|
socketIn | input | ||
socketOut | output |
Scheduled messages (observed)
msg | kind | ctrl | tags | msgname | context |
---|---|---|---|---|---|
NetPerfMeterTransmitTimer | 5 | TransmitTimer | |||
omnetpp::cMessage | 1 | ConnectTimer | |||
omnetpp::cMessage | 2 | StartTimer | |||
omnetpp::cMessage | 3 | ResetTimer |
Direct method calls (observed)
call to | function | info |
---|---|---|
MessageDispatcher | inet::MessageDispatcher::arrived | arrived |
InterfaceTable | inet::InterfaceTable::findInterfaceByName | findInterfaceByName |
Incoming messages (observed)
Outgoing messages (observed)
Packet operations (observed)
chunkType | packetAction |
---|---|
peekData | |
BytesChunk | insertAtBack |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
DispatchProtocolReq | addTag, addTagIfAbsent |
SctpAvailableReq | addTag, getTag |
SctpCommandReq | getTag |
SctpConnectReq | findTag, getTag |
SctpInfoReq | addTag |
SctpOpenReq | addTag |
SctpRcvReq | findTag |
SctpSendQueueAbatedReq | getTag |
SctpSendReq | addTag |
SocketInd | getTag |
SocketReq | addTag, addTagIfAbsent |
Region Tagging operations (observed)
tagType | tagAction |
---|---|
CreationTimeTag | addTag, getAllTags |
Tagging operations (observed)
tagType | tagAction |
---|---|
inet::Ipv4InterfaceData | findTag |
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 behaviour 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 parametrisation and features are similar to the real-world // application, the model also makes comparisons of simulation results and // real-world measurements easy. // simple NetPerfMeter like IApp { parameters: 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; }File: src/inet/applications/netperfmeter/NetPerfMeter.ned