SctpPeer

Package: inet.applications.sctpapp

SctpPeer

simple module

C++ definition

Implements a versatile SCTP application that can function as both client and server simultaneously. Supports sending and receiving data with configurable parameters including multi-streaming, PR-SCTP, and stream reset capabilities. Provides options for echo functionality, ordered/unordered delivery, and configurable think times between transmissions.

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 ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

localAddress string ""

Comma-separated list of addresses

localPort int 0

Port number to listen on

echo bool false

Echoes received packages when true

echoDelay double 0s
delayFirstRead double 0s
numPacketsToSendPerClient int 0

Number of requests sent per session

numPacketsToReceivePerClient int 1
requestLength int 1452

Length of a request (bytes)

thinkTime double 0s

Time gap between requests

waitToClose double 0s

Time to wait between the last message sent and abort

ordered bool true
outboundStreams int 1
inboundStreams int 17
queueSize int 0
prMethod int 0

0=NONE, 1=PR_TTL, 2=PR_RTX, 3=PR_PRIO, 4=PR_STRRST

prValue double 0

For PR-SCTP

streamReset bool false
connectAddress string

Server address (may be symbolic)

connectPort int

Port number to connect to

startTime double 1s

Time the first session begins

numRequestsPerSession int 1

Number of requests sent per session

numPacketsToReceive int 0
streamPriorities string ""

Properties

Name Value Description
class SctpPeer
display i=block/app

Gates

Name Direction Size Description
socketIn input
socketOut output

Signals

Name Type Unit Description
packetReceived inet::Packet
packetSent inet::Packet
echoedPk 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
echoedPk packets echoed echoedPk count, sum(packetBytes), vector(packetBytes) none

Source code

//
// Implements a versatile SCTP application that can function as both client and
// server simultaneously. Supports sending and receiving data with configurable
// parameters including multi-streaming, PR-SCTP, and stream reset capabilities.
// Provides options for echo functionality, ordered/unordered delivery, and
// configurable think times between transmissions.
//
simple SctpPeer extends SimpleModule like IApp
{
    parameters:
        @class(SctpPeer);
        string localAddress = default(""); // Comma-separated list of addresses
        int localPort = default(0); // Port number to listen on
        bool echo = default(false);  // Echoes received packages when true
        double echoDelay @unit(s) = default(0s);
        double delayFirstRead @unit(s) = default(0s);
        int numPacketsToSendPerClient = default(0); // Number of requests sent per session
        int numPacketsToReceivePerClient = default(1);
        int requestLength = default(1452); // Length of a request (bytes)
        double thinkTime @unit(s) = default(0s); // Time gap between requests
        double waitToClose @unit(s) = default(0s); // Time to wait between the last message sent and abort
        bool ordered = default(true);
        int outboundStreams = default(1);
        int inboundStreams = default(17);
        int queueSize = default(0);
        int prMethod = default(0);  // 0=NONE, 1=PR_TTL, 2=PR_RTX, 3=PR_PRIO, 4=PR_STRRST
        double prValue = default(0); // For PR-SCTP
        bool streamReset = default(false);
        string connectAddress;  // Server address (may be symbolic)
        int connectPort; // Port number to connect to
        double startTime @unit(s) = default(1s); // Time the first session begins
        int numRequestsPerSession = default(1);  // Number of requests sent per session
        int numPacketsToReceive = default(0);
        string streamPriorities = default("");

        @display("i=block/app");
        @signal[packetSent](type=inet::Packet);
        @signal[packetReceived](type=inet::Packet);
        @signal[echoedPk](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[echoedPk](title="packets echoed"; source=echoedPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
    gates:
        input socketIn @labels(SctpCommand/up);
        output socketOut @labels(SctpCommand/down);
}

File: src/inet/applications/sctpapp/SctpPeer.ned