msocket: multiple stack support for the berkeley socket API

The de-facto standard for network programming, the Berkeley socket API, supports several protocol families. Unfortunately, it has a significant limitation in only allowing a single implementation for each supported protocol family. Hence, using Berkeley sockets, it is impossible to access multiple distinct networking stacks for the same protocol, e.g. multiple TCP/IP stacks. This paper defines, msocket, an extension to the Berkeley socket API which overcomes this limitation. msocket has been implemented as a feature of the View-OS project. Finally, we illustrate the utility and effectiveness of our extended API by providing some examples of its use.

[1]  Dan Hildebrand,et al.  An Architectural Overview of QNX , 1992, USENIX Workshop on Microkernels and Other Kernel Architectures.

[2]  Dror Goldenberg,et al.  Zero copy sockets direct protocol over infiniband-preliminary implementation and performance analysis , 2005, 13th Symposium on High Performance Interconnects (HOTI'05).

[3]  Renzo Davoli,et al.  Internet of Threads: Processes as Internet Nodes , 2013, ICIW 2013.

[4]  Michael Goldweber,et al.  View-OS: A New Unifying Approach Against the Global View Assumption , 2008, ICCS.