MAMI partner ETH Zürich hosted a small workshop last month to discuss a topic central to our vision: how to move network programming beyond the 1980s-era BSD sockets API. The workshop had two main goals. First, to sync up and share concepts about abstract programming interfaces among researchers and developers working on future networking stacks. Several partners from our H2020 sister project NEAT, which has a more explicit focus on how applications see the network and transport layer, were in attendance.
Our second goal with the workshop was to further develop the concepts in the Post Sockets
abstract programming interface. Post Sockets is explicitly asynchronous
and message oriented, which is a better match to most network
applications and all future transport protocols than the
SOCK_STREAM service offered by TCP. It
breaks the hard relationship between a connection (called a “carrier”
in Post, since it carries messages) and the path(s) carrying it, and
separates short-term transport layer state (“transients” which hold
transport-protocol specific information such as current sequence
numbers and flow control windows) from longer-term state (“associations”
which hold state such as cryptographic resumption parameters), allowing
generalized fast resumption of sessions for commonly-communicating
endpoint pairs. Like the NEAT API, it is intended to be
transport-protocol independent, and interoperating with NEAT’s policy
engine and transport protocol selection machinery is a goal of MAMI’s
Post Sockets work.
Our current work on Post Sockets in MAMI focuses on implementation details: how message carriers, associations, and transients bind to underlying transport protocol implementations, specifically in situations with multiple candidate transport and network layer protocols, and where network address translation makes rendezvous non-trivial. Tommy Pauly from Apple will present Post Sockets at the IETF taps session next week in Chicago (checkout remote participation). Also watch this space for future announcements.
We thank the workshop attendees for a very productive conversation, and look forward to working together in the future to drag network APIs into the twenty-first century!