Enabling Innovation Below the Communication API - Ananthanarayanan, Ganesh; Heimerl, Kurtis; Zaharia, Matei; Demmer, Michael; Koponen, Teemu; Tavakoli, Arsalan; Shenker, Scott; Stoica, Ion (2009)
Innovation in the network is notoriously difficult due to the need to support legacy applications. We argue that this difficulty stems from the API used to access the network. The ubiquitous Sockets API lets applications choose from a number of communication mechanisms, but binds them tightly to their chosen mechanism (e.g. specifying a destination using IPv4). Applications must therefore be modified in order to benefit from new network technologies. To address this problem, we propose a new communication API called NetAPI that lets applications specify their communication intents without binding to particular network mechanisms, enabling evolution below the API. We have built a NetAPI prototype for the iPhone, and use it to show that we can add disconnection tolerance, content shaping and power saving policies under NetAPI without application modifications.