Implements the SCTP protocol.
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
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 |
Name | Value | Description |
---|---|---|
display | i=block/wheelbarrow |
Name | Direction | Size | Description |
---|---|---|---|
from_appl [ ] | input | ||
from_ip | input | ||
to_appl [ ] | output | ||
to_ip | output |
// // 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; }