I am looking for practical solutions to address the problem of Bufferbloat on Android handsets. To narrow down the problem just a little bit, appropriate solutions would meet the following criteria:
- Can be applied to a stock ICS ROM without replacing huge pieces of the stack (e.g., it would not be acceptable to replace Bionic with glibc and the Android graphics stack with Xorg)
- Requiring root access is anticipated/fine
- Modifying/recompiling the kernel is fine
- Modifying userspace utilities is fine
- Modifying configuration settings is fine (preferred, actually)
- Should, at a minimum, affect bufferbloat for data coming from the cellular baseband; i.e., 3G or 4G data. Affecting bufferbloat on the wifi/ethernet/bluetooth links is praiseworthy, but is not what I am looking for.
A few things that I don't think would be practical:
- Upgrading the kernel to a new mainline version (so ideally any kernel modifications should be applicable to the 3.0.x series). This is impractical because all the proprietary blobs and hardware-specific drivers for your phone are probably not portable to a new kernel series, so you would be sacrificing major pieces of functionality (wifi, graphics, cellular baseband) for the sake of bufferbloat. Not cool.
- Patching/modifying the firmware in the cellular baseband. While I'm sure the baseband for most devices carries an unhealthy amount of bufferbloat, addressing the problem within that IC will most likely require the voluntary cooperation of carriers, baseband manufacturers (e.g. Qualcomm) and hardware manufacturers (e.g. Motorola).
Any appropriate solution to this problem should be testable and the results should be reproducible. The ideal test would be something similar to what Wikipedia's article on Bufferbloat describes (linked above). Your solution should show a consistent, measurable decrease in the latency of the ICMP pings on the saturated (full buffers) 3G/4G link.