SCTP Programmer's Guide

may occur because of continued failure to send DATA to the primary address. As a
result, all DATA chunks are transmitted to the alternate address until the HEARTBEAT
chunks have re-established contact with the primary address
During the initiation of an association, the SCTP endpoints exchange the list of IP
addresses, so that each endpoint can receive messages from any of the addresses
associated with the remote endpoint. For security reasons, SCTP sends response
messages to the source address in the message that prompted the response.
An endpoint can receive messages that are out of sequence or with different address
pairs, because multi-homing supports multiple IP addresses. To overcome this problem,
SCTP incorporates procedures to resolve parallel initiation attempts into a single
association.
Multistreaming
Multistreaming enables data to be sent in multiple, independent streams in parallel,
so that data loss in one stream does not affect or stop the delivery of data in other
streams. Each stream in an SCTP association uses two sets of sequence numbers, namely
a Transmission Sequence Number (TSN) that governs the transmission of messages
and the detection of message loss, and the Stream ID/Stream Sequence Number
(SID/SSN) pair that determines the sequence of delivery of the received data.
TCP transmits data sequentially in the form of bytes in a single stream and ensures
that all the bytes are delivered in a particular order. Therefore, a second byte is sent
only after the first byte has safely reached the destination. The sequential delivery of
data causes delay when a message loss or sequence error occurs within the network.
An additional delay occurs when TCP stops sending data until the correct sequencing
is restored, either upon receiving an out-of-sequence message or by retransmitting a
lost message.
The strict preservation of message sequence in TCP poses a limitation for certain
applications. These applications require sequencing of messages that affect the same
resource (such as the same call or the same channel), so that messages are loosely
correlated and delivered without maintaining the overall sequence integrity.
The multistreaming feature in an SCTP, in which reliable data transmission and data
delivery are independent of each other, overcomes this problem. This feature also
avoids HOL blocking. This independence improves the flexibility of an application, by
allowing it to define semantically different streams of data inside the overall SCTP
message flow, and by enforcing message ordering only within each of the streams. As
a result, message loss in one particular stream does not affect the delivery of messages
in a different stream. The receiver can immediately determine if there is a gap in the
transmission sequence (for example, caused by message loss), and also can determine
whether messages received following the gap are within the affected stream. If SCTP
receives a message that belongs to the affected stream, a corresponding gap occurs in
SSN. The sender can continue to deliver messages to the unaffected streams while
buffering messages in the affected stream until retransmission occurs.
30 Introduction