Notes and Study Materials

Error Control in SCTP 

 

 

SCTP, like TCP, is a reliable transport layer protocol. It uses a SACK chunk to report the state of the receiver buffer to the sender. Each implementation uses a different set of entities and timers for the receiver and sender sites.

Receiver Site

The receiver stores all chunks that have arrived in its queue including the out-of-order ones. However, it leaves spaces for any missing chunks. It discards duplicate messages, but keeps track of them for reports to the sender. The following figure shows a typical design for the receiver site and the state of the receiving queue at a particular point in time.

 

error control in sctp_receiver site

 

The last acknowledgment sent was for data chunk 20. The available window size is 1000 bytes. Chunks 21 to 23 have been received in order. The first out-of-order block contains chunks 26 to 28. The second out-of-order block contains chunks 31 to 34. A variable holds the value of cumTSN. An array of variables keeps track of the beginning and the end of each block that is out of order. An array of variables holds the duplicate chunks received. Note that there is no need for storing duplicate chunks in the queue and they will be discarded.
The figure also shows the SACK chunk that will be sent to report the state of the receiver to the sender. The TSN numbers for out-of-order chunks are relative (offsets) to the cumulative TSN.

 

 

Sender Site

At the sender site, it needs two buffers (queues): a sending queue and a retransmission queue. We also use the three variables rwnd, inTransit, and curTSN as described in the previous section. The following figure shows a typical design.


error control in sctp_sender site

 

The sending queue holds chunks 23 to 40. The chunks 23 to 36 have already been sent, but not acknowledged; they are outstanding chunks. The curTSN points to the next chunk to be sent (37). We assume that each chunk is 100 bytes, which means that 1400 bytes of data (chunks 23 to 36) is in transit.

The sender at this moment has a retransmission queue. When a packet is sent, a retransmission timer starts for that packet (all data chunks in that packet). Some implementations use one single timer for the entire association, but we continue with our tradition of one timer for each packet for simplification.

 

 

When the retransmission timer for a packet expires, or four duplicate SACKs arrive that declare a packet as missing the chunks in that packet are moved to the retransmission queue to be resent. These chunks are considered lost, rather than outstanding. The chunks in the retransmission queue have priority.

For Further Reading:  

Different Services of SCTP
SCTP Features
Packet Format in SCTP
SCTP Association
Flow Control in SCTP
Back to DCN Questions and Answers