For more than three decades, the Internet’s transport layer has essentially supported just two protocols: TCP, for applications that need reliable in-sequence delivery; UDP, for applications that assume nothing but port numbers and a checksum. Applications have been built using these protocols, and other transport protocols have even been layered over these. UDP has become a substrate upon which user-space transport protocols are being developed—with most of these customized for speciﬁc applications, as with the recent QUIC protocol from Google. In these cases, much effort is expended re-implementing many common transport functions. This paper proposes an alternative approach to realize a new transport API that allows applications to request the service they need, but is agnostic to the speciﬁc choice of transport protocol underneath. This not only allows applications to take advantages of common protocol machinery, it also eases introduction of new network mechanisms and transport protocols. We present NEAT, a user-space library that achieves this goal, and then illustrate important beneﬁts that can be gained from this approach. NEAT was designed in accordance with the standardization efforts on Transport Services (TAPS) in the Internet Engineering Task Force (IETF), but its features exceed the envisioned functionality of a TAPS system.
Khademi, N., Ros, D., Welzl, M., Bozakov, Z., Brunstrom, A., Fairhurst, G., ... Weinrank, F. (2017). NEAT: A Platform- And Protocol-Independent Internet Transport API. IEEE Communications Magazine, 55(6), 46-54. https://doi.org/10.1109/MCOM.2017.1601052