What is Stream Control Transmission Protocol (SCTP)?
Stream Control Transmission Protocol (SCTP) is a connection-oriented network protocol for transmitting multiple streams of data simultaneously between two endpoints that have established a connection in a computer network.
SCTP is an Internet Protocol (IP) transport layer protocol. It ensures reliable and in-sequence data transmission so that data units sent over the network arrive completely, and in the right sequence, to the application or user at the endpoint. For some transmissions, such as a file or record, this sequence preservation is essential.
SCTP is a standard protocol (Request for Comments 2960) developed by the Transport Area Working Group (TSVWG) of the Internet Engineering Task Force (IETF). The group's intention was to develop a system similar to the telephone Signaling System 7 (SS7) switching network to carry call control signals using IP networks.
It is similar to TCP, but it also provides message-oriented data transfer, like User Datagram Protocol (UDP), making it useful for end-to-end internet communications. In many ways, both TCP and UDP are the underlying concepts that made SCTP possible. Also, unlike TCP, SCTP ensures the complete concurrent transmission of several streams of data -- in units called messages -- between connected endpoints. It's also more efficient than TCP when it comes to data reordering, thus relieving the server of the unnecessary overhead of reordering.
A telephone connection requires the signaling information that controls the connection is sent simultaneously with voice and other data. SCTP is designed to make this task easier. It also simplifies the management of connections over a wireless network and the transmission of multimedia data.
What is multihoming in SCTP?
Telecommunications systems are highly susceptible to time delays. Multihoming enables systems with multiple interfaces to use one over the other without having to wait. SCTP's multihoming support means that a connected endpoint can have alternate IP addresses associated with it. In simple terms, multihoming refers to the ability to send data to an alternate IP address if the primary IP address becomes unreachable or if it fails for any reason. Therefore, SCTP can establish multiple connection paths between two endpoints.
In a multihoming setup, there is a primary interface and secondary interfaces. While establishing connections, a heartbeat/heartbeat acknowledgement process validates addresses and maintains a round-trip time (RTT) calculation for each address. RTT enables communications to migrate to a secondary interface.
In SCTP, multihoming enables the endpoint to negotiate around a network failure or changing conditions. It also enables transparent failover between redundant network paths. Moreover, it does not rely on the IP layer for resilience.
What are data streams in SCTP?
TCP transmits data in a single stream that's sometimes called a byte stream. If there is data loss or a sequencing error during transmission, delivery must be delayed until the lost data is retransmitted or an out-of-sequence message is received.
Multistreaming is another SCTP capability that enables data to be delivered in multiple, independent streams. So, if there is data loss in one stream, delivery will not be affected for the other streams. As a result, the entire transmission will not be delayed.
SCTP's multistreaming eliminates the problem of web browsers limited to handling only two simultaneous connections. The client can immediately open additional streams to reduce the burden on servers to service numerous separate connections. It also reduces overall latency. Multistreaming is also useful in infrastructures where multiple means of communications, like voice, video, shared applications, etc., are connected simultaneously.
Multihoming and multistreaming are two of the biggest benefits of SCTP. However, SCTP also delivers other advantages over both TCP and UDP.
What are other benefits of SCTP?
As a full-duplex connection, SCTP enables data to be sent and received simultaneously. Data is delivered in chunks and in an ordered fashion within an independent stream, while isolating data from different streams. So, it eliminates head-of-line blocking, which often happens with TCP. This is a phenomenon that occurs when a line of packets is held up by the first packet, thus limiting the network's performance. SCTP also enables half-closed connections.
Like TCP and unlike UDP, SCTP provides mechanisms for the following:
- Flow control. Adjusts data transmission, in particular its quantity.
- Congestion control. SCTP checks the network prior to transmission to prevent congesting the links.
- Fault tolerance. Uses IP addresses from different internet service providers so, even if one ISP fails, another could be used for connections.
Unlike TCP, SCTP is message-oriented rather than byte-oriented. The application does have to split messages, and the message's boundaries are always maintained.
SCTP provides path selection functionality to select a primary data transmission path and a monitoring function to test the connectivity of the transmission path. Built-in validation and acknowledgment mechanisms protect the network from flooding attacks. They also deliver notification of duplicated or missing data chunks to improve network and transmission reliability.
Security is another feature of SCTP, something lacking with TCP and UDP. In SCTP, resource allocation during association setup only happens after the client's identity is verified using a cookie exchange mechanism (INIT ACK). This minimizes the possibility of denial-of-service and man-in-the-middle attacks. Moreover, SCTP is more resilient to network flooding and masquerade attacks since it doesn't enable half-open connections.