Am 14.09.2016 um 18:33 schrieb Jeroen Massar jeroen@massar.ch:
On 2016-09-14 18:13, Andreas Fink wrote:
I could do a presentation on the SCTP networking protocol which combines some features of TCP and UDP and offers some unique features neither TCP nor UDP have.
Is there any tool that actually uses SCTP ? :)
I'm using it day in day out since 15 years. And theres no alternative to it for me. The Sigtran family (SS7 signalling over IP) requires it mandatory. Theres no other option there. SCTP was mainly developed because signalling over IP needed reliable multipath support. So protocols which 100% depend on SCTP are at least M2UA, M2PA, M3UA, SUA, IUA.
IPFIX is supposed to use it, but everybody still sends over UDP, rare support for SCTP (except for purists like me who did implement it and then also never really used it).
Great. why did you not use it? UDP is not a reliable datagram service. SCTP is.
WebRTC is supposed to go partially over SCTP, never seen it actually used.
WebRTC requires it (but can work around by encapsulating it into UDP which just means more useless overhead).
Apple chose to use Multipath TCP instead...
OS X has a implementation of SCTP since OS X 10.3.8. Its open source. Apple has not added it to the kernel (besides promising it many many many times) because it would mean changing their NAT & Firewall as well and as there is no user demand, they where too lazy and rather wanted to spend time on nice shiny guy stuff. The kext is kernel dependent due to a missing API to link in a layer4 protocol so every new version needs awaiting new kernel sources to be published and recompiling (10.12 however worked out of the box with 10.11 sources). I have like 20 radars open with Apple about it (*big sight*).
Linux has SCTP built in since a long time. Solaris, has it. HP/UX has it. Windows I actually don't know.
Part of the problem is: If desktops don't have it, then developers don't tend to use it. If developers don't want to use it, then the OS vendors dont tend to implement it. This however also applies to other layer 4 transport protocol. Thats why everyone uses plain old TCP and UDP.
Also 10$ crap ADSL routers who don't understand how to properly implement NAT don't help either. Hopefully NAT will be a relict of the past soon due to IPv6 (*cough cough*).
The article on Wikipedia does not list much more: https://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol
Apparently some variant of SSH should support it, but no actual implementations mentioned there either.
Any application which uses TCP or UDP could be changed into using SCTP by a single line of code. (hint: IPPROTO_SCTP on socket()) However there are additional features which neither TCP or UDP have such as seamless adding removing IP's on a established session, Multipath support. stream multiplexing, concurrent establishment of a connection from both sides (think of tunnels for example) and others. From a developers point of view there's a lot in it, especially if you care about reliability. SCTP is proven, reliable, established and well supported in the Unix arena. Developers just have to know about that its there and it is useful for many things.
That's why I think the key is to let developers know that there's a cherry to be picked up. And I would be happy to present its benefits and features.
But if we only have java developers here who usually encode a boolean into a UTF16 string into XML over SOAP over HTTP over a 10G fiber link, then it would be a waste of time of course.
Andreas Fink