[erlang-questions] SCTP support (was EPIPE and TCP sockets)

Serge Aleynikov <>
Sat Oct 13 16:01:43 CEST 2007

Per Hedeland wrote:
> Bruce Fitzsimons <> wrote:
>> Throughput is unlikely to be a benefit; considering we have many years 
>> experience in TCP behaviour and tuning and not much at all with SCTP. 
>> SCTP is a more complex protocol, but does avoid several TCP corner cases 
>> including head of line blocking 
>> http://en.wikipedia.org/wiki/Head-of-line_blocking.
> Hm, I can't quite see how that relates to TCP vs SCTP. Presumably you're
> not actually referring to the situation in a network switch (i.e. layer
> 2 device), since the upper-layer protocol won't make a difference there?
> I can see how this phenomenon could occur with "naive" multiplexing of
> multiple "channels" on a single TCP session, like, um, the Erlang
> distribution does (though I can't see it happening with Erlang
> distribution since the "channels", i.e. inter-process messages, won't be
> blocked at the receiving end) - is that the connection?

I also think that Head-of-line blocking (HOLB) wiki description is not 
very representative in regards to TCP/SCTP.  The HOL means that if you 
have consecutive packets 1,2,3 sent from A to B, and packet 3 is lost, 
then B holds 1 and 2 until it gets 3 retransmitted, so that it would 
preserve the byte ordering.  In SCTP this may not be a problem because 
packet 3 could belong to a different stream.

> Of course this can be handled by per-channel flow control (like e.g. SSH
> does) when using TCP, but I guess this user-level complexity can be
> avoided by using SCTP instead.

Hmm, will the session-level per-channel flow control resolve the issue 
above?  At the transport (TCP) layer it would still have to guarantee 
the proper byte ordering, therefore forcing HOLB.


More information about the erlang-questions mailing list