SctpPeer

Package: inet.applications.sctpapp

simple module SctpPeer

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.

inet.applications.sctpapp.SctpPeerSctpPeersimple

Inheritance diagram

Extends

Name

Type

Description

SimpleModule

simple module

Base module for all INET simple modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“{statusStr}\nrcvd: {bytesRcvd} bytes\nsent: {bytesSent} bytes”

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

echoedPk

inet::Packet

packetReceived

inet::Packet

packetSent

inet::Packet

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

echoedPk

packets echoed

echoedPk

count,”sum(packetBytes)”,”vector(packetBytes)”

none

packetReceived

packets received

packetReceived

count,”sum(packetBytes)”,”vector(packetBytes)”

none

packetSent

packets sent

packetSent

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);
        displayStringTextFormat = default("{statusStr}\nrcvd: {bytesRcvd} bytes\nsent: {bytesSent} bytes");
        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