Skip to content

Proposed congestion control requirement to recharter#241

Merged
LPardue merged 3 commits intorecharter-2025from
add-cc-requirement-to-recharter
Jul 3, 2025
Merged

Proposed congestion control requirement to recharter#241
LPardue merged 3 commits intorecharter-2025from
add-cc-requirement-to-recharter

Conversation

@LPardue
Copy link
Copy Markdown
Member

@LPardue LPardue commented Jun 25, 2025

I received an offlist comment about whether congestion control should be explicitly called out in the charter.

As an individual my response to the question is:

I don't think the reliable bidirectional stream itself needs to provide congestion control (e.g. TLS does not provide that itself, nor does it require it itself, but it does work on TCP which provides it). That said, in the prior work on draft-kazuho-quic-quic-on-streams @kazuho and I stated that it was designed to work on a transport that is congestion controlled when using a shared network. The rationale being that we can have a simple design and remain Internet congestion safe by delegating the congestion control requrements to the substrate.

This PR proposes an additional sentence to the charter to capture that we expect congestion control on shared networks.

This might be too broad brush for folks that were thinking of using RDMA, so pinging @nibanks .

I'd like to keep any text in this realm succinct.

One alternative to the "congestion control" phrase could to talk about the outcome we want to avoid:

"Deployments on a shared network must use a substrate that can avoid congesting the network."

Copy link
Copy Markdown
Member

@kazuho kazuho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for doing this!

Comment on lines +41 to +42
communication without a security provider. Deployments on a shared
network must use a substrate that provides congestion control.
Copy link
Copy Markdown
Member

@kazuho kazuho Jun 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about something like below?

  • I share the concern that "congestion control" might refer to an end-to-end approach and exclude hop-by-hop, flow-control-based congestion avoidance techniques. By switching to "congestion-management capabilities," we can be vague enough to have them in scope.
  • Start the sentence with "when," for consistency with the previous sentence.
Suggested change
communication without a security provider. Deployments on a shared
network must use a substrate that provides congestion control.
communication without a security provider. When operating over a shared path, the chosen substrate must provide congestion-management capabilities.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the suggestions, I think they make the text more broadly applicable while keeping the intent of avoiding damage in places we (the IETF) strongly care

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should avoid the words "congestion control" if we can because it both overly specifies the requirement while also opening us up to debates about what congestion control even is. I like "congestion management" since it conveys the spirit of not running it over a totally dumb channel.

Copy link
Copy Markdown
Member

@nibanks nibanks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this general direction is fine, whether you go with the text here or Kazuho's suggestion. I think the RDMA work will be fine regardless.

@wtarreau
Copy link
Copy Markdown

I think we shouldn't even start to enumerate cases (like "when substrate is shared ..."), instead we should probably say something along "any congestion management that may be required over the path is the sole responsibility of the chosen substrate".

For example, even when not shared, congestion management might be required to avoid excess queuing and buffer bloat on networks with different speeds at different points.

Another approach could be instead to just mention indicate the need for a lossless substrate, which indirectly implies that it is connection-managed as needed. Or even a "lossless, non-congestioned bidirectional stream".

Copy link
Copy Markdown

@guhetier guhetier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both versions seems good to me.
I like kazuho suggestion as a way to clarify that any type of congestion avoidance is valid for the substrate.

@LPardue
Copy link
Copy Markdown
Member Author

LPardue commented Jun 26, 2025

I think we shouldn't even start to enumerate cases (like "when substrate is shared ..."), instead we should probably say something along "any congestion management that may be required over the path is the sole responsibility of the chosen substrate".

For example, even when not shared, congestion management might be required to avoid excess queuing and buffer bloat on networks with different speeds at different points.

Another approach could be instead to just mention indicate the need for a lossless substrate, which indirectly implies that it is connection-managed as needed. Or even a "lossless, non-congestioned bidirectional stream".

I think I'm understanding the rationale here but I'm struggling with the concrete suggestions a little. We need the charter to be concise and clear enough that is obvious what the WG is agreeing to work on. The first suggestion - ""any congestion management that may be required over the path is the sole responsibility of the chosen substrate"" reads a bit to vague/wooly to me. The second suggestion - "lossless, non-congestioned bidirectional stream" - makes me nervous of inciting some pedantry about where congestion can happen (or where it can be detected to have happened), which could be a disctration.

However, I agree enumerating cases that are not critically relevant sounds good. So how about we take Kazuho's text but tweak it a bit to

"Substrates must provide congestion-management capabilities applicable to their deployment environments."

@LPardue LPardue requested a review from gorryfair June 26, 2025 01:25
@wtarreau
Copy link
Copy Markdown

Yeah sounds good like this! thanks!

@LPardue LPardue merged commit a213d6c into recharter-2025 Jul 3, 2025
1 check passed
@LPardue LPardue deleted the add-cc-requirement-to-recharter branch July 3, 2025 23:38
@LPardue
Copy link
Copy Markdown
Member Author

LPardue commented Jul 3, 2025

Thanks for the feedback folks, I've merged this into the main charter proposal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants