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