NetPerfMeter

Package: inet.applications.netperfmeter

NetPerfMeter

simple module

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 (be0001/netperfmeter/)" target="_blank">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)

dataTransferMode string "object"

Data transfer mode for TCP socket (TCP 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
tcpIn input
tcpOut output
sctpIn input
sctpOut output
udpIn input
udpOut 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 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 INetPerfMeterApp
{
    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)

        string dataTransferMode = default("object");  // Data transfer mode for TCP socket (TCP 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 tcpIn;
        output tcpOut;
        input sctpIn;
        output sctpOut;
        input udpIn;
        output udpOut;
}
File: src/inet/applications/netperfmeter/NetPerfMeter.ned