quiche icon indicating copy to clipboard operation
quiche copied to clipboard

Support Copa congestion control

Open rafibaum opened this issue 4 years ago • 3 comments

Copa is a novel congestion control algorithm which has seen some usage, including at Facebook. It's generally more suited to use-cases which are more latency dependent rather than throughput, since its target bitrate estimation algorithm has realistic outputs in the <100 Mb/sec range. I've created a draft of what a Copa implementation could look like over on this branch based on the work going on at #770. That being said, it's a bit rough around the edges and is based on my limited understanding both of the Copa algorithm and how congestion control works in quiche. I'm just documenting it here for anyone else who would wish to implement Copa. Also of interest may be Facebook's QUIC implementation of Copa.

rafibaum avatar Apr 06 '21 15:04 rafibaum

Thanks for letting us know @rafibaum, this looks like some interesting work. I guess the most interesting aspect would be on how this works in practice, have you got any experimental results you can share?

LPardue avatar Apr 06 '21 19:04 LPardue

This implementation is part of some research I'm working on so I do plan on putting it through the gauntlet during evaluation. I'm focusing more on bulk file transfer workloads where Copa isn't expected to perform well since it's designed for more "bursty" workloads like web browsing or video streaming but it should still be enough to prove that the implementation is functional under a realistic scenario. I'll share my data once it's finalised (probably around June).

If you meant how Copa performs more generally, then the Facebook blog post and paper I linked in the original comment are the best sources for that. Generally Copa exhibits similar throughput to BBR (in workloads like video streaming where the bitrate is application-limited under 50Mbit/sec) while inducing less latency on high-RTT connections. Additionally, Copa is entirely insensitive to packet loss so it would outperform CUBIC over inherently lossy connections. The paper also alleges that it can compete fairly with CUBIC but Facebook was unable to verify that in their blog post.

rafibaum avatar Apr 06 '21 23:04 rafibaum

This implementation is part of some research I'm working on so I do plan on putting it through the gauntlet during evaluation. I'm focusing more on bulk file transfer workloads where Copa isn't expected to perform well since it's designed for more "bursty" workloads like web browsing or video streaming but it should still be enough to prove that the implementation is functional under a realistic scenario. I'll share my data once it's finalised (probably around June).

Sounds great! Keep us posted, we'd be interesting in hearing about your research as you progress. If you have questions that you'd prefer to ask in a less public forum (before you publish) we can take it to email.

LPardue avatar Apr 07 '21 00:04 LPardue

It looks like the GH repo was deleted. @rafibaum shall we close this issue? The project is open to enhancement proposals but there doesn't seem anything concrete here any more.

LPardue avatar Aug 24 '23 02:08 LPardue

Closing as inactive but feel free to reopen .

LPardue avatar Nov 21 '23 22:11 LPardue