Porting Congestion Control Protocols [Sprout] to Android

72 views
Skip to first unread message

Ahmad Hassan

unread,
Nov 9, 2020, 6:02:41 PM11/9/20
to kei...@cs.stanford.edu, pantheon...@googlegroups.com
Hi Keith,

I hope you and your loved ones are keeping safe and healthy.

I have a confusion regarding the experimental setup of not just sprout but also other cellular congestion control protocols that use trace-driven emulation or a laptop tethered to the mobile device or a combination of two. The recurrent theme among them is to run the control scheme on a laptop while it is tethered to the mobile phone. Why not implement it directly on android and test it on device without any tethering?
And how difficult it is to port Sprout or similar cellular congestion control schemes to Android? Since you have a lot of experience working with these schemes, you can provide a better insight into what's the actual reason for evaluating the schemes like this. And if one's looking for porting these schemes for android devices what is the best route in this direction? One possible way I can think of is to implement it as a client/server application by using the same c/c++ code, changing the build scripts according to the requirements of Android and providing an API for the apps to use it. Another way could be to implement it in the linux kernel and use the congestion scheme as a loadable kernel module just as we load tcp flavors. Let me know what you think about this.

Your help will be highly appreciated.

With many thanks,
Ahmad Hassan


Francis Y. Yan

unread,
Nov 14, 2020, 6:07:04 PM11/14/20
to Ahmad Hassan, Keith Winstein, Pantheon
Hi Ahmad,

(Correct me if I am wrong, Keith) My understanding is that you can absolutely implement cellular congestion controls on Android directly, but it requires learning Android's socket programming (in Java), prevents other researchers from easily reproducing the work, limits the other common libraries or tools such as Mahimahi, etc. In short, it is simply more convenient to implement them using Unix sockets and when it comes to evaluation on cellular networks, you could either tether a laptop to a mobile device or use a LTE dongle.

Porting existing congestion-control schemes to Android is not trivial. The same C/C++ code cannot directly run on Android; you would have to extract the algorithm's essence of the code, compile C/C++ into a native library, and somehow call the functions from Java; by contrast, re-implementing the logic in Java from scratch would probably be easier.

Implementing a congestion-control scheme in the Linux kernel is much harder than in the user space. I wouldn't recommend this route unless you have done this before or are ready to commit a large amount of time. Maybe you want to check out this paper CCP first.

Best,
Francis

--
You received this message because you are subscribed to the Google Groups "Pantheon" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pantheon-stanf...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pantheon-stanford/CAAMaOAMhAGe6wkr%3DY4DvKThbPJQsypoHDx7xOwihb3_8CkZGKg%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages