-
Notifications
You must be signed in to change notification settings - Fork 5
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
Are real-time congestion controllers tied to RTP or usable in QUIC stacks? #87
Comments
IMO, it would be ideal to implement a real time rate adaptation algorithm in the QUIC stack and then expose an API for bitrate estimation to the application/framework that uses that to call into encoder. I can take this issue but do we need a PoC before making this text change? |
I agree with that. I think a PoC and some experiments exploring such an implementation would be nice. I had this on my list for some time now but didn't get to implement it yet. I don't know if we need it before changing any text, but it might give some insights that could be useful to document. |
I said I would send this out to @LPardue and @pthatcher as a question, and failed. I promise, promise, promise ... |
I'm not sure what the question is - what can I help with? |
@goelvidhi - on this:
I think a POC is a fine idea, but if we have a new congestion controller, that probably starts in ICCRG, doesn't it? |
@mengelbart and @SpencerDawkins think that asking @LPardue and @pthatcher for clues is still the right thing to do, but not until we merge PR #134, because we're still changing the text that we want to ask about. 🙄 |
We have now merged PR #134, and @SpencerDawkins thinks that we need to uplevel to talk about how we expect QUIC stacks, especially at the other end of a RoQ connection, to Do The Right Thing for media. We have had many ideas, and none have achieved consensus.
@SpencerDawkins thinks leaving this vaguely specified is a problem. I'm tagging this For Discussion, with IETF 118 coming up in a couple of weeks, to see whether we can make progress. |
I don't think we necessarily need the other end to cooperate on this much. If the other end is receiving media, it needs to give the correct feedback so that the sending end can do the right thing. The feedback may require timestamps, but that would be negotiated via transport parameters. Either timestamps are available or not. No need to negotiate beyond what a potential timestamp extension would specify, anyway.
I think RoQ application developers need to choose the right QUIC implementation and congestion controller to use for sending media.
The ALPN section is there for a different reason, it is not required for congestion control, but because QUIC requires application protocols to use ALPN (or equivalent mechanisms, see Section 7 of RFC 9000 and Section 8.1 of RFC 9001).
I think this is what the draft assumes, but I agree that it is probably a good idea to get more input on this (maybe from the QUIC WG, CCWG, or even ICCRG?). |
@mengelbart - on this ...
I agree on this (so far, modulo the sending end knowing what the right thing to do is), but keep reading. |
That's the challenge - especially if the QUIC implementation isn't tightly coupled with the application. Maybe we can say that RoQ application developers need to watch for this carefully? |
Understood. The problem is that we've been thinking that we needed to do something other than just trusting the QUIC implementation to Do The Right Thing for media, and if we are using a different APLN for media, it's easy for people to conflate choosing an application instance for media with choosing an application instance that will Do The Right Thing for media. I suspect the best way for us to handle this is actually saying something like
Does that make sense? |
I'm late here , sorry, and still playing catchup. I don't think I have all of the context of RoQ paged in but from this ticket, there's something about the discussion of expectations (or setting of expectations) on QUIC implementations that doesn't quite sit right with me. This ticket is titled "Are real-time congestion controllers tied to RTP or usable in QUIC stacks?" yet Spencer asks some different questions. That feels, to me, a bit like "are electric hybrids tied to gasoline or usable in 3 phase? we need to uplevel to conversations about how efficiently divers lift and coast" I need some more time to digest but endevour to provide a better response than this one. |
Hi, @LPardue - Thanks for popping in here.
You are not alone. 🤔 I feel your pain (and confusion).
My apologies for incoherence when when adding my most recent comments in the issue. AVTCORE/RoQ has moved a LONG way from early discussions, where people who talked to us were expecting RoQ endpoints to disable QUIC congestion control ("whut?" 🤨 🙄) and require specific congestion controllers in the spec. My list upthread (which @mengelbart was responding to) was trying to capture the various places we've been, and make sure that we're all in one place now. I THINK we're now here:
and I THINK @mengelbart agrees with that, so let's focus on that point, for now. BUT ...
... please don't endeavor too hard right now - @mengelbart and I have been around and around on this topic, and we're still working on the questions we are going to ask the working group during the AVTCORE session on Wednesday. Can you hold off a bit, while we finalize our slides, and then I'll update the issue and see if I can do better? |
There are low latency CC algorithms currently integrated into QUIC stacks, including: |
Another impl of COPA: https://github.com/Tencent/tquic/blob/develop/src/congestion_control/copa/copa.rs |
@aboba and @pthatcher - thank you both for the helpful information! |
From IETF 118 minutes:
|
I did add a mention of L4S. We rephrased rate adaptation/congestion control in -08. We're waiting for timestamps to progress enough for a normative recommendation. Bernard mentioned COPA. Do we want to mention this, or any other possible mechanisms, in informative text? |
This has been resolved in PRs for several other issues. |
SCReAM, NADA, and GCC were specifically designed with RTP/RTCP in mind. Is it feasible to use one of these in the QUIC stack itself, or are there other alternatives that could be implemented directly in a QUIC stack to follow the recommendations given in section 7.1? One requirement that all of the RMCAT algorithms have is that they need timestamps, which could be provided by one of the QUIC timestamp extension drafts.
This came up in discussion with Gurtej and again in #83 (comment)
The text was updated successfully, but these errors were encountered: