s2n-quic
s2n-quic copied to clipboard
Select Congestion Control per Connection
Problem:
We would like the ability to be able to pick a congestion control (eg. Cubic, BBR, others) based on different workflows, currently congestion control algorithm is applied to all connections in a server.
Solution:
One possible API could be to take a callback eg.
on_ip_connected(ctx) -> ctx.set_congestion_control(CUBIC)
on_server_name(name, ctx) -> ctx.set_congestion_control(BBR)
Requirements / Acceptance Criteria:
- being able to switch per SNI in addition to ip addresses
- a stretch goal to have different congestion control parameters dynamically
In cases where there's more than 1 round trips till s2n-quic gets a server name, s2n-quic could either 1) transfer/share/cache state between congestion control 2) discard congestion control state when switching. 2 might be acceptable for simplicity as since given the congestion control would be in ramping up phase.
- RFC links: Links to relevant RFC(s)
- Related Issues: Link any relevant issues
- Will the Usage Guide or other documentation need to be updated?
- Testing: How will this change be tested? Call out new integration tests, functional tests, or particularly interesting/important unit tests. -->