Talk: "Networking in your pocket: how the Linux networking stack is made to work on Android devices" (Lorenzo Colitti, Erik Kline)


The Linux networking stack is regularly used by over a billion mobile devices such as phones, tablets, and watches. The networking problems faced by these devices are very different from non-mobile hosts such as workstations, servers and routers.

The challenges posed by inescapable requirements such as simultaneous connection to multiple networks in different administrative domains, intermittent connectivity, fast seamless mobility, untrusted networks, captive portals and disconnected hotspots, per-application network policies, accounting and metering, and the need for good battery life - features that users are not willing to compromise on - may not be obvious to the kernel networking development community. Perhaps owing to the lack of a clear problem statement, some of the currently-shipping solutions to those problems have been seen as inappropriate for inclusion in mainline Linux networking.

This talk will cover how the Android networking stack has addressed some of the challenges and how much userspace configuration and out-of tree work was necessary to do so. We will cover the current state of Android networking today - particularly the amount of complex userspace configuration necessary to support connection to multiple administrative domains using a networking stack that implements the weak host model - and work that was successfully upstreamed. We will also cover current features that were not accepted upstream and potential alternative approaches that could be implemented. We will touch on the limitations of the current design and how kernel support would help resolve them. Finally, we will cover future work, such as the IETF multiple provisioning domain API work, which has the potential to pose even greater challenges.