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.
Inheritance diagram¶
Extends¶
Name |
Type |
Description |
|---|---|---|
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 |
|||
packetReceived |
|||
packetSent |
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);
}