3 ms·
Why was that dumb of SCTP? What should it have done instead?
by nfoz 9y ago
Why was that dumb of SCTP? What should it have done instead?
- tptacek 9y agoUsed a UDP port. Making new IP protocols is literally what UDP is for.
- JoshTriplett 9y agoOther than getting through broken routers, what's the advantage of building a protocol on top of UDP rather than IP? ("Getting through broken routers" is certainly a significant advantage; I'm just asking if that's the only good reason to not build directly on IP.)
- tptacek 9y agoThe only "advantage" to declaring an IP protocol is that you might save 8 bytes and a trivial checksum. Mostly, though, declaring an IP protocol is a vanity decision.
- JoshTriplett 9y agoI'm wondering the reverse: what's the advantage to building on UDP, other than passing routers that for some reason are inclined to pass UDP but reject IP protocols they don't know? You said that this was "what UDP was for", and I was hoping for some more detail there on why UDP helps. As you said, it's just 8 bytes and a trivial checksum.
- tptacek 9y agoThe advantage to building on UDP is that it gets through (some) middleboxes; that's what the 4 bytes of port numbers buys you. That, and the fact that UDP is designed to be the TCP/IP escape hatch for things like SCTP that don't want TCP's stream and congestion control semantics.
- catern 9y agoSo there's no advantage other than getting through broken middleboxes?
- tptacek 9y agoNo, another advantage is that you can do UDP entirely in userland without privilege. What allocating a new IP protocol says is pretty close to "all bets are off, and we're carefully taking responsibility for how every system that interacts with TCP/IP headers will handle these packets". Since SCTP doesn't need that, there's no upside. It's vanity and bloody-mindedness.