|
|
|
|
|
by colanderman
4211 days ago
|
|
Or use an internal work queue instead of buffering in the kernel and/or network; or use multiple TCP connections; or use a single SCTP (or SCTP/UDP) connection. Any of these is less work and less bug-prone than "reinventing the wheel on top of UDP". |
|
Using a large number of TCP connections breaks some of the assumptions behind TCP congestion control; this is one of the reasons why the SPDY/HTTP2 guys decided to layer a multi-stream protocol on top of a single TCP connection - and it still falls prey to head-of-line blocking.
Not sure what you mean by using an internal work queue - short of running a custom TCP/IP stack in kernel space or using some non-standard socket API, there's no way to work around TCP's ordered delivery.
Given these constraints, I can understand why designing a transport protocol on top of UDP might be reasonable. There probably is no need to roll your own, though - just use SCTP over UDP [1]. (Edit: I only noticed you did mention SCTP/UDP after I wrote my reply, sorry!)
[1] https://tools.ietf.org/html/rfc6951