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 | ||
crcMode | string | "declared" | |
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 |
---|---|---|---|
appIn | input | ||
ipIn | input | ||
appOut | output | ||
ipOut | output |
Scheduled messages (observed)
msg | kind | ctrl | tags | msgname | context |
---|---|---|---|---|---|
omnetpp::cMessage | 0 | SctpPathInfo | CWND_TIMER N:NN.N.N.N | filled | |
omnetpp::cMessage | 0 | SctpPathInfo | HB_INT_TIMER N:NN.N.N.N | filled | |
omnetpp::cMessage | 0 | SctpPathInfo | HB_INT_TIMER NN:NN.N.N.N | filled | |
omnetpp::cMessage | 0 | SctpPathInfo | HB_INT_TIMER NN:NN.N.N.NN | filled | |
omnetpp::cMessage | 0 | SctpPathInfo | HB_TIMER NN:NN.N.N.N | filled | |
omnetpp::cMessage | 0 | SctpPathInfo | RTX_TIMER N:NN.N.N.N | filled | |
omnetpp::cMessage | 0 | SctpPathInfo | RTX_TIMER NN:NN.N.N.NN | filled | |
omnetpp::cMessage | 0 | SctpPathInfo | SACK_TIMER of assoc NN | filled |
Direct method calls (observed)
call to | function | info |
---|---|---|
MessageDispatcher | inet::MessageDispatcher::arrived | arrived |
MessageDispatcher | inet::MessageDispatcher::handleRegisterProtocol | handleRegisterProtocol |
MessageDispatcher | inet::MessageDispatcher::handleRegisterService | handleRegisterService |
Ipv4 | inet::Ipv4::registerHook | registerHook() |
Ipv4RoutingTable | inet::Ipv4RoutingTable::getInterfaceForDestAddr | getInterfaceForDestAddr(%u.%u.%u.%u) |
Ipv6RoutingTable | inet::Ipv6RoutingTable::doLongestPrefixMatch | doLongestPrefixMatch(%s) |
Incoming messages (observed)
Outgoing messages (observed)
Packet operations (observed)
chunkType | packetAction |
---|---|
peekDataAsBytes | |
BytesChunk | insertAtBack |
SctpHeader | insertAtFront, peekAtFront |
Shared Tagging operations (observed)
tagType | tagAction |
---|---|
DispatchProtocolReq | addTag, addTagIfAbsent |
InterfaceReq | findTag |
L3AddressInd | getTag |
L3AddressReq | addTag, addTagIfAbsent |
PacketProtocolTag | addTagIfAbsent, getTag |
SctpAvailableReq | addTag, findTag |
SctpCommandReq | addTag, findTag |
SctpConnectReq | addTag |
SctpInfoReq | findTag |
SctpOpenReq | findTag |
SctpRcvReq | addTag |
SctpResetReq | findTag |
SctpSendQueueAbatedReq | addTag |
SctpSendReq | findTag, getTag |
SocketInd | addTag, addTagIfAbsent |
SocketReq | addTagIfAbsent, getTag |
TransportProtocolInd | addTagIfAbsent |
Region Tagging operations (observed)
tagType | tagAction |
---|---|
CreationTimeTag | addTag |
Tagging operations (observed)
tagType | tagAction |
---|---|
inet::Ipv4InterfaceData | findTag |
inet::Ipv6InterfaceData | findTag |
Source code
// // Implements the SCTP protocol. // simple Sctp like ISctp { parameters: string interfaceTableModule; string routingTableModule; string crcMode @enum("declared","computed") = default("declared"); //#====== 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 appIn @messageKinds(inet::SctpCommandCode); input ipIn; output appOut @labels(SctpCommand/up) @messageKinds(inet::SctpStatusInd); output ipOut; }File: src/inet/transportlayer/sctp/Sctp.ned