NetPerfMeter.ned

NED File src/inet/applications/netperfmeter/NetPerfMeter.ned

Name Type Description
NetPerfMeter simple module

Application model for comparing the performance of various transport protocols.

Source code

// * --------------------------------------------------------------------------
// *
// *     //====//  //===== <===//===>  //====//
// *    //        //          //      //    //    SCTP Optimization Project
// *   //=====   //          //      //====//   ==============================
// *        //  //          //      //           University of Duisburg-Essen
// *  =====//  //=====     //      //
// *
// * --------------------------------------------------------------------------
// *
//
// Copyright (C) 2009-2015 by Thomas Dreibholz <[email protected]>
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//


package inet.applications.netperfmeter;

import inet.applications.contract.IApp;


//
// 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;
}