s2n-quic icon indicating copy to clipboard operation
s2n-quic copied to clipboard

Select Congestion Control per Connection

Open zz85 opened this issue 1 year ago • 0 comments

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. -->

Out of scope:

zz85 avatar Sep 22 '22 17:09 zz85