Package: inet.transportlayer.sctp
SCTP
simple moduleImplements the SCTP protocol.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Parameters
Name | Type | Default value | Description |
---|---|---|---|
interfaceTableModule | string | ||
routingTableModule | string | ||
numGapReports | int | 3 | |
rtoInitial | double | 3s | |
rtoMin | double | 1s | |
rtoMax | double | 60s | |
rtoAlpha | double | 0.125 | |
rtoBeta | double | 0.250 | |
maxBurst | int | 4 | |
maxBurstVariant | string | "maxBurst" | |
initialWindow | int | 0 | |
assocMaxRetrans | int | 10 | |
pathMaxRetrans | int | 5 | |
maxInitRetrans | int | 8 | |
sackPeriod | double | 200ms | |
sackFrequency | int | 2 | |
reactivatePrimaryPath | bool | false | |
sendQueueLimit | int | 0 | |
validCookieLifetime | double | 10s | |
enableHeartbeats | bool | true | |
hbInterval | double | 30s | |
sendHeartbeatsOnActivePaths | bool | false | |
nagleEnabled | bool | true | |
naglePoint | int | 1468 | |
fragPoint | int | 1452 | |
fastRecoverySupported | bool | true | |
sctpAlgorithmClass | string | "SCTPAlg" | |
ccModule | int | 0 |
RFC4960=0 |
osbWithHeader | bool | false | |
RTXMethod | int | 0 |
0=Once after 3 Sacks; 1=once per RTT; 2=Switch off Fast Retransmit; 3=Always after 3 Sacks |
ssModule | int | 0 | |
arwnd | int | 65535 | |
swsLimit | int | 3000 |
Limit for SWS |
udpEncapsEnabled | bool | false | |
natFriendly | bool | false | |
bytesToAddPerRcvdChunk | int | 0 |
for flowcontrol |
bytesToAddPerPeerChunk | int | 0 |
for flowcontrol |
tellArwnd | bool | false |
for flowcontrol |
messageAcceptLimit | int | 0 |
for flowcontrol |
fairStart | double | 0s | |
fairStop | double | 0s | |
streamsToPaths | string | "" | |
startEndToEndDelay | int | 0 | |
stopEndToEndDelay | int | 10 | |
throughputInterval | double | 1 | |
auth | bool | false | |
chunks | string | "" | |
padding | bool | false | |
addIP | bool | false | |
addTime | double | 0s | |
addAddress | string | "" | |
addIpType | string | "0" |
SET_PRIMARY_ADDRESS=49156,ADD_IP_ADDRESS=49153,DELETE_IP_ADDRESS=49154 |
packetDrop | bool | false | |
sackNow | bool | false | |
highSpeedCC | bool | false | |
checkSackSeqNumber | bool | false | |
nrSack | bool | false | |
disableReneging | bool | false | |
gapReportLimit | int | 100000000 | |
gapListOptimizationVariant | string | "none" | |
smartOverfullSACKHandling | bool | false | |
allowQoSTracking | bool | false | |
qosTrackingInterval | double | 1.0s | |
cmtSendAllVariant | string | "normal" | |
cmtRetransmissionVariant | string | "normal" | |
cmtCUCVariant | string | "normal" | |
cmtBufferSplitVariant | string | "none" | |
cmtBufferSplittingUsesOSB | bool | false | |
cmtUseSFR | bool | true | |
cmtUseDAC | bool | true | |
cmtUseFRC | bool | true | |
cmtSmartT3Reset | bool | true | |
cmtSmartFastRTX | bool | true | |
cmtSmartReneging | bool | false | |
cmtSlowPathRTTUpdate | bool | false | |
cmtChunkReschedulingVariant | string | "none" | |
cmtChunkReschedulingThreshold | double | 0.5 | |
cmtMovedChunksReduceCwnd | bool | true | |
movedChunkFastRTXFactor | double | 2.0 | |
cmtSackPath | string | "standard" | |
strictCwndBooking | bool | false | |
cmtCCVariant | string | "off" |
CMT Congestion Control Variant off = use over every path the default RFC4960 CC (New Reno) lia = First resource pooling congestion control RFC6356 adapted for SCTP - https://datatracker.ietf.org/doc/rfc6356/ olia = alternative MPTCP CC, adapted for SCTP- https://tools.ietf.org/html/draft-khalili-mptcp-congestion-control-05 cmtrpv1 = First resource pooling based CC for SCTP - https://www.tdr.wiwi.uni-due.de/fileadmin/fileupload/I-TDR/SCTP/Paper/AINA2010.pdf cmtrpv2 = Updated version of cmtrpv1 - https://www.tdr.wiwi.uni-due.de/fileadmin/fileupload/I-TDR/SCTP/Paper/ConTEL2011.pdf |
cmtCCPathGroups | string | "" | |
rpPathBlocking | bool | false | |
rpScaleBlockingTimeout | bool | false | |
rpMinCwnd | int | 1 |
Properties
Name | Value | Description |
---|---|---|
display | i=block/wheelbarrow |
Gates
Name | Direction | Size | Description |
---|---|---|---|
from_appl [ ] | input | ||
from_ip | input | ||
to_appl [ ] | output | ||
to_ip | output |
Source code
// // Implements the SCTP protocol. // simple SCTP like ISCTP { parameters: string interfaceTableModule; string routingTableModule; //#====== SCTP Association Parameters ================================= int numGapReports = default(3); double rtoInitial @unit(s) = default(3s); double rtoMin @unit(s) = default(1s); double rtoMax @unit(s) = default(60s); double rtoAlpha = default(0.125); double rtoBeta = default(0.250); int maxBurst = default(4); string maxBurstVariant = default("maxBurst"); int initialWindow = default(0); int assocMaxRetrans = default(10); int pathMaxRetrans = default(5); int maxInitRetrans = default(8); double sackPeriod @unit(s) = default(200ms); int sackFrequency = default(2); bool reactivatePrimaryPath = default(false); int sendQueueLimit = default(0); double validCookieLifetime @unit(s) = default(10s); //#====== Testing ===================================================== //#====== Heartbeats ================================================== bool enableHeartbeats = default(true); double hbInterval @unit(s) = default(30s); bool sendHeartbeatsOnActivePaths = default(false); //#====== Nagle Algorithm ============================================= bool nagleEnabled = default(true); int naglePoint = default(1468); //#====== Fragmentation ============================================= int fragPoint = default(1452); // size of a message that has to be fragmented, i.e. maximum size of a fragment //#====== Congestion Control ========================================== bool fastRecoverySupported = default(true); string sctpAlgorithmClass = default("SCTPAlg"); int ccModule = default(0); // RFC4960=0 bool osbWithHeader = default(false); int RTXMethod = default(0); // 0=Once after 3 Sacks; 1=once per RTT; 2=Switch off Fast Retransmit; 3=Always after 3 Sacks //#====== Other Parameters ============================================ int ssModule = default(0); // ROUND_ROBIN=0 int arwnd = default(65535); int swsLimit = default(3000); // Limit for SWS bool udpEncapsEnabled = default(false); bool natFriendly = default(false); int bytesToAddPerRcvdChunk = default(0); // for flowcontrol int bytesToAddPerPeerChunk = default(0); // for flowcontrol bool tellArwnd = default(false); // for flowcontrol int messageAcceptLimit = default(0); // for flowcontrol double fairStart @unit(s) = default(0s); double fairStop @unit(s) = default(0s); string streamsToPaths = default(""); int startEndToEndDelay = default(0); int stopEndToEndDelay = default(10); double throughputInterval = default(1); //#====== Chunk Authentication ======================================== bool auth = default(false); string chunks = default(""); bool padding = default(false); //#====== Add-IP ====================================================== bool addIP = default(false); double addTime @unit(s) = default(0s); string addAddress = default(""); string addIpType = default("0"); // SET_PRIMARY_ADDRESS=49156,ADD_IP_ADDRESS=49153,DELETE_IP_ADDRESS=49154 //#====== Packet Drop ================================================= bool packetDrop = default(false); //#====== SACK Now ==================================================== bool sackNow = default(false); //#====== High-Speed CC =============================================== bool highSpeedCC = default(false); //#====== SACK Sequence Numbers ======================================= bool checkSackSeqNumber = default(false); //#====== NR-SACK ===================================================== bool nrSack = default(false); bool disableReneging = default(false); int gapReportLimit = default(100000000); string gapListOptimizationVariant = default("none"); bool smartOverfullSACKHandling = default(false); //#====== QoS-SCTP ==================================================== bool allowQoSTracking = default(false); double qosTrackingInterval @unit(s) = default(1.0s); //#====== CMT-SCTP ==================================================== string cmtSendAllVariant = default("normal"); string cmtRetransmissionVariant = default("normal"); string cmtCUCVariant = default("normal"); string cmtBufferSplitVariant = default("none"); bool cmtBufferSplittingUsesOSB = default(false); bool cmtUseSFR = default(true); bool cmtUseDAC = default(true); bool cmtUseFRC = default(true); bool cmtSmartT3Reset = default(true); bool cmtSmartFastRTX = default(true); bool cmtSmartReneging = default(false); bool cmtSlowPathRTTUpdate = default(false); string cmtChunkReschedulingVariant = default("none"); double cmtChunkReschedulingThreshold = default(0.5); bool cmtMovedChunksReduceCwnd = default(true); double movedChunkFastRTXFactor = default(2.0); string cmtSackPath = default("standard"); //#====== CMT/RP-SCTP ================================================= bool strictCwndBooking = default(false); // CMT Congestion Control Variant // off = use over every path the default RFC4960 CC (New Reno) // lia = First resource pooling congestion control RFC6356 adapted for SCTP - https://datatracker.ietf.org/doc/rfc6356/ // olia = alternative MPTCP CC, adapted for SCTP- https://tools.ietf.org/html/draft-khalili-mptcp-congestion-control-05 // cmtrpv1 = First resource pooling based CC for SCTP - https://www.tdr.wiwi.uni-due.de/fileadmin/fileupload/I-TDR/SCTP/Paper/AINA2010.pdf // cmtrpv2 = Updated version of cmtrpv1 - https://www.tdr.wiwi.uni-due.de/fileadmin/fileupload/I-TDR/SCTP/Paper/ConTEL2011.pdf string cmtCCVariant = default("off"); string cmtCCPathGroups = default(""); bool rpPathBlocking = default(false); bool rpScaleBlockingTimeout = default(false); int rpMinCwnd = default(1); @display("i=block/wheelbarrow"); gates: input from_appl[]; input from_ip; output to_appl[]; output to_ip; }File: src/inet/transportlayer/sctp/SCTP.ned