cc: BBR congestion control module
Implementing bbr congestion control algorithm module.
To try this module, you'll need quiche-server supports packet pacing only with SO_TXTIME feature in recent linux kernel (#1138). Also you'll need to configure fq in tc qdisc on the server for pacing to work properly.
Currently this PR is rebased on #1238 implementing GSO-friendly pacer. You can test with quiche-server using GSO in #1138
TODOs
- [x] fix bug/issues
- [x] add more unit tests
Haven't reviewed the whole thing yet, but one comment I have is that I don't think BBR should be the default algorithm due to the requirement for pacing, which could lead applications to be kinda broken as we have no way to enforce that they pace, and its other other side-effects (e.g. fairness to other algorithms, increase in spurious retransmissions, ...).
CUBIC seems like a saner default (in line with what Linux does).
We can change the default in the apps once the pacing PR is merged, but even then we might need to limit it to Linux.
CUBIC seems like a saner default (in line with what Linux does).
Sure - I removed the commit which makes bbr default.