The Case for Intentional Networking

Jason Flinn, T. J. Giuli, Brett Higgins, Brian Noble, Azarias Reda, and David Watson



Wireless infrastructures are increasingly diverse, complex, and difficult to manage. Those who restrict themselves to homogeneous, managed campus or corporate networks are a vanishing breed. In the wild, users are confronted with many overlapping infrastructures with a broad variety of strengths and weaknesses. Such diversity of infrastructure is both a challenge and an opportunity. The challenge lies in presenting the alternatives to applications and users in a way that provides the best possible utility to both. However, by managing these many alternatives, we can provide significant benefits, exploiting multiple networks concurrently and planning future transmissions intelligently.

To this end, we are developing Intentional Networking—a set of interfaces and mechanisms that allow applications, users, and the operating system to proactively manage current and expected future connectivity. We do this through extensions to the networking API. Applications can classify sockets or individual transmissions with a \emph{label}, a qualitative statement about the flow. The operating system can then best match each flow with network capabilities. In some cases this requires a re-ordering of the application’s send order; our API offers both blocking and event-based interfaces to allow this reordering.