Multi-interface connectivity on Android
MetadataShow full item record
Recent studies have shown that a major fraction of data usage in mobile phones is web traffic. Modern smart phones are equipped with multiple network interfaces such as Wi-Fi, cellular radio, Bluetooth, NFC, and others. Each of these interfaces could potentially be used to connect to the web. However, mobile platforms such as Android and iOS allow only one interface to be operational at any given time. This thesis studies a new software architecture to enable efficient use of multiple network interfaces concurrently for a single download in modern mobile devices. Multi-interface connectivity can be supported at various layers in the network stack such as TCP (MPTCP), sockets, and the HTTP layer. The design choice to use the HTTP layer was motivated by our desire to seamlessly support existing applications without modifications from the apps or the web server. We exploit an existing option of byte range requests in the HTTP protocol specification. Our design proposes modifying HttpUrlConnection, a HTTP library in the Android Open Source Platform (AOSP). Our modifications allow the HttpUrlConnection library to concurrently maintain multiple open connections and use as many active interfaces available at any given time for one download while retaining the existing interface to applications. One tradeoff in this design is the size of each byte range request. We call this parameter chunk size . Larger sizes enable better utilization of the pipe (between the server and the client) by filling the TCP congestion window but increase the delay on slow connections. We study this tradeoff over Wi-Fi, 3G, and 4G connections. Our design allows variable chunk sizes, and give an efficient way to calculate it at runtime that trades off this latency. Due to the nature of range requests, our design introduces one round trip delay after every chunk. We also utilize HTTP pipelining to reduce one round-trip delay in request-response pairs, and demonstrate efficient utilization of multiple interfaces for large file downloads. Our current design enables usage of multiple interfaces concurrently over a single download. Future work includes extending this to multiple download.