At the Network Layer, we see currently a change of Internet Protocol from IPv4 to IPv6, mainly driven by the shortage of addresses in IPv4, but the new protocol, published in 1998, offers also better features concerning mobility, security etc.

Transport Layer Protocols

In what follows, you can find a short description of TCP, UDP and SCTP.

TCP

TCP offers a reliable transmission: i.e the data you send, will arrive correctly and in the right order. It is connection oriented, meaning that you have to setup a connection first before you can transmit real data. It also provides congestion control, mechanisms to reduce congestion (too much traffic and thus delays, packet loss, ...).

UDP

UDP offers a reliable transmission method for data transmissions where faults can be tolerated and reliability costs too much time: e.g. when streaming video and a packet is lost, there is too little time to retransmit the lost packet and wait for it too arrive: the video would stall. Video codecs are also fault tolerant and have ways to cope in a less obtrusive way than stalling.

SCTP

SCTP offers reliable but also partial reliable data transfer. Partial reliability enables the applications to choose how persistent the data transfer should be. In SCTP partial reliability is defined per packet and in time, i.e. for each packet a time-out can be set after which no further retransmission is attempted.
SCTP is connection oriented and has a congestion control mechanism. All data, also the partially reliable or unreliable falls under the same congestion control and thus SCTP is fully TCP-friendly, whereas UDP has no congestion control. UDP pushes away TCP connections as it keeps sending packets when the network is congested: TCP backs off using its congestion control mechanism but UDP continues to flood the network.
SCTP also offers multi-streaming and multi-homing, which are explained separately below the table.

In the following table, you can see a comparison of SCTP, TCP and UDP. Not all features are explained in this article.

Services/Features

SCTP

TCP

UDP

Connection-oriented

yes

yes

no

Full duplex

yes

yes

yes

Reliable data transfer

yes

yes

no

Partial-reliable data transfer

optional

no

no

Ordered data delivery

yes

yes

no

Unordered data delivery

yes

no

yes

Flow control

yes

yes

no

Congestion control

yes

yes

no

ECN capable

yes

yes

no

Selective ACKs

yes

optional

no

Preservation of message boundaries

yes

no

yes

Path MTU discovery

yes

yes

no

Application PDU fragmentation

yes

yes

no

Application PDU bundling

yes

yes

no

Multi-streaming

yes

no

no

Multi-homing

yes

no

no

Protection against SYN flooding attacks

yes

no

n/a

Allows half-closed connections

no

yes

n/a

Reachability check

yes

yes

no

Psuedo-header for checksum

no (uses vtags)

yes

yes

Time wait state

for vtags

for 4-tuple

n/a

The lines in bold red are the features I am currently focussing on in the QoCON project of iMinds, a Flemish research institute. These features offer possibilities as yet not available in the Internet.

Features of SCTP

Multi-homing

Multi-homing means that your device has multiple connections over multiple network interfaces at the same time: e.g. a WiFi connection and a cellular connection. Multi-homing has many useful applications in the Internet of today.

Many Internet users are mobile and have access to cellular (3G or 4G) networks. At home or at the office there are also WiFi networks. If we look at smartphones or tablets with both cellular and WiFi networks, we see that they prefer WiFi access, but as soon as that fails, they switch easily to cellular networks.
For some applications however, this is a problem as they have persistent connections. The device changes its IP address as soon as it roams to the other network and all existing connections are lost, interrupting your Youtube video, Skype call, chats, etc. SCTP can offer the solution here by multi-homing: using the WiFi connection as primary one, but keeping the cellular connection as a backup to switch to without interruption when the WiFi fails.

Another scenario is providing high availability for a server by using two different Internet connections: when one connection fails, the other can keep all existing connections online.

Multi-streaming

Multi-streaming allows for data to be sent in multiple streams, independent of each other. Data loss in one stream does not affect other streams and different streams can be given different parameters like e.g. partial reliability (which can even be chosen on a per packet basis), ordered or unordered data, etc. The different streams have the same congestion control, so you do not need the connection setup and slow start phase for every stream. This web page could actually be a good example: in the current Internet several TCP connections are set up when you download this page, while this could be done with one SCTP connection (per web server) containing multiple streams.

The future

It is hard to tell when SCTP will become more popular. Currently it is only used in specialized scenarios, while the Internet could really profit from its use. The introduction of SCTP in such a large scale network is hard though: where to start? Why would a client applications support SCTP connections if no servers do so? And why would servers support SCTP connections if no client applications do so? For the introduction of IPv6 there is a clear need and even that takes (too) long, thus it is unclear when we will see the introduction of SCTP and/or other transport layer protocols on a larger scale.

Conclusion

Many of the protocols currently still in use in the Internet are quite old (in terms of computer science). For the network layer there is one clear successor for IPv4: IPv6, but for the transport layer this is less obvious. In this article I have explained SCTP a bit, which has many advantages over TCP and UDP, but Internet-wide introduction of such a protocol is very hard. This article was rather high-level and not too technical, the next article(s) will focus on some functionality of SCTP, e.g. mutli-homing, and how to program and configure it in a Linux environment.

Currently I am working as a Linux engineer at 21Net, implementing solutions for Internet on trains using cellular, satellite and Wi-Fi technology, and building and supporting a backend of Linux hosts for various services.

In my spare time I like to play badminton, which I do with Active Company. Another hobby is playing go, an Asian board game, which is unfortunately not that popular in Belgium. You can find more information on the site of the Belgian Go Federation.Besides that, I love to spend time with friends, playing other board games, watching movies and going out.