Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify congestion and rate control #134

Merged
merged 6 commits into from
Oct 23, 2023

Conversation

mengelbart
Copy link
Owner

close #128

mengelbart added a commit that referenced this pull request Oct 11, 2023
I don't think normative SHOULD's are useful for describing API
considerations. This also clarifies the datagram/stream acknowledgement
mappings.

Additionally, I removed the API write functions section. I think
resetting streams is a core feature of QUIC and it shouldn't be
necessary to be listed explicitly. And congestion control configuration
is not something that needs an API at runtime. The updates to the
congestion control section in #134 should also make this more clear.
sender and receiver.
: A mechanism that adjusts the sending rate of an application in order to
maximize the amount of information that is sent to a receiver without causing
queues to build beyond a reasonable amount, causing *buffer bloat* and *jitter*.
Copy link
Collaborator

Choose a reason for hiding this comment

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

This sentence ^^ reads as if building queues are the only cause of jitter. I'd suggest phrasing this as

maximize the amount of information that is sent to a receiver without causing buffer bloat, when
queues build beyond a reasonable amount, or jitter, when interpacket arrival times fluctuate due to queuing delays.

: A mechanism that adjusts the sending rate of an application in order to
maximize the amount of information that is sent to a receiver without causing
queues to build beyond a reasonable amount, causing *buffer bloat* and *jitter*.
Rate adaptation is one way to respond to send rate limitations imposed by
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd suggest

Rate adaptation is one way to respond to sending rate limitations imposed by


{{shared-connections}} discusses congestion control implications of using shared
or multiple separate QUIC connections to send and receive multiple independent
data streams.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Just for readability - the previous paragraphs have pointed to document sections at the end of each sentence, but this paragraph starts with the pointer to a document section. Perhaps

This document also discusses congestion control implications of using shared
or multiple separate QUIC connections to send and receive multiple independent
data streams in {{shared-connections}}.

or perhaps just flip the previous paragraphs to match this one? Your call, of course.

described in {{rate-adaptation-application-layer}}.

It is assumed that the congestion controller in use provides a pacing mechanism
to determine when a packet can be sent to avoid bursts. The currently proposed
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd suggest

to avoid bursts and minimize variation in inter-packet arrival times.

If the application transmits media that does not saturate path bandwidth and
paces its transmission, more heavy-handed congestion control mechanisms (drastic
reductions in the sending rate when loss is detected, with much slower increases
when losses are no longer detected) should rarely come into play. If the
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd suggest

when losses are no longer being detected)

Copy link
Collaborator

@SpencerDawkins SpencerDawkins left a comment

Choose a reason for hiding this comment

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

This is ready to merge.

@mengelbart mengelbart force-pushed the fix/128-congestion-and-rate-control branch from 5f37e1f to 7a03e8f Compare October 17, 2023 10:21
@mengelbart mengelbart merged commit 0a9d219 into main Oct 23, 2023
2 checks passed
@mengelbart mengelbart deleted the fix/128-congestion-and-rate-control branch October 23, 2023 14:26
mengelbart added a commit that referenced this pull request Oct 23, 2023
I don't think normative SHOULD's are useful for describing API
considerations. This also clarifies the datagram/stream acknowledgement
mappings.

Additionally, I removed the API write functions section. I think
resetting streams is a core feature of QUIC and it shouldn't be
necessary to be listed explicitly. And congestion control configuration
is not something that needs an API at runtime. The updates to the
congestion control section in #134 should also make this more clear.
SpencerDawkins pushed a commit that referenced this pull request Oct 23, 2023
I don't think normative SHOULD's are useful for describing API
considerations. This also clarifies the datagram/stream acknowledgement
mappings.

Additionally, I removed the API write functions section. I think
resetting streams is a core feature of QUIC and it shouldn't be
necessary to be listed explicitly. And congestion control configuration
is not something that needs an API at runtime. The updates to the
congestion control section in #134 should also make this more clear.
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.

Congestion Control and Rate Control
2 participants