[R-C] Proposal comments (Re: RTCWEB Congestion Control Standardization)

Varun Singh vsingh.ietf at gmail.com
Tue Nov 1 14:21:02 CET 2011


Hi,

Comments inline, apologies for the delay in response.

On Fri, Oct 28, 2011 at 16:18, Randell Jesup <randell-ietf at jesup.org> wrote:
> On 10/28/2011 6:00 AM, Varun Singh wrote:
>
>> Just to confirm:
>> the receiver calculates the rate per stream and then adds them up:
>> CT_combined = R_audio  + R_video + R_data
>> and the audio and video channels calculate the rate as described in
>> the proposal.
>
> Or it calculates a total rate directly - or it makes a wild-assed-guess.
>  :-)  We're not specifying how it gets these numbers here (in the normative
> wordings).  And if running them separately, one will 'notice' congestion
> before the others, always, so you need to think about how you'd merge
> individual reports - doing as you mention (with the straight algorithm in
> Harald's draft) would likely lead to not going far enough down until the
> other channels noticed the congestion, if they did.  If as I suggested you
> use the 'slope' of the incoming packet rate to estimate the amount
> under/over bandwidth, even with Harald's algorithm, you could apply that
> slope correction factor across all the estimates. Without it, you could
> apply a correction factor based on recent state changes in the individual
> readings; more complex than just adding them.
>
>> The sender uses the receiver CT_combined and the current sending rate
>> of each channel to re-allocate the distribution. Is the aim to try and
>> get the distribution similar to what the receiver envisioned or is the
>> sender free to do whatever?
>
> I this case the sender has no idea what the receiver envisioned - but even
> if it did, I'd say it's free to do whatever.  If the receiver wants to
> control individual channels more (no guarantees), it should use individual
> TMMBR reports.
>

So is using individual TMMBR reports acceptable? if it is possible
then the above text should reflect that. If not then the above text is
okay.

>>>>
>>>>        TMMBR, which requests a sending rate for a single SSRC
>>>>        flow.  [ This is roughly equivalent to b=CT:xxx ]
>>>>
>>>>        We may want to give the estimation algorithm the option to
>>>>        not include or exclude the data-channel bandwidth, but it
>>>>        SHOULD include that.
>>>>
>>
>> Is the data sent using the same congestion control mechanism?
>
> We would like it to be included or at least interactive with the algorithm,
> but that's not currently required and we can't guarantee it will happen.
>  SCTP does allow for variant CC algorithms, so we certainly have the option
> if we can work it out.
>

Alright.

>
>>>>    5.  The receiver SHOULD attempt to minimize the number of
>>>>        bandwidth reports when there is little or no change, while
>>>>        reporting quickly when there is a significant change.
>>>>
>>
>> Will we propose an algorithm or lower or upper-bound for this? like:
>> not quicker than once per RTT even if the 5% rule allows it. Or send
>> an early report when loss, inter packet delay, etc exceeds a given
>> threshold.
>
> My inclination would be to not put any limit on it.  Even the RTT thing
> isn't necessarily a good idea; I may have a more accurate estimate shortly
> after sending a preliminary report.  I wouldn't (as a sender) increase my
> sending rate more than once per RTT (actually probably slower than that),
> but I might decrease it in less than an RTT - think satellite with 1s RTT...
>

I agree that to update the preliminary report, the endpoint will have
to send it less than RTT.

>>>>    6.  Congestion control MUST work even if there are no media
>>>>        channels, or if the media channels are inactive in one or
>>>>        both directions.
>>>
>>> What does "work" mean if there is no data?
>>
>> MUST be enabled?
>
>     6.  Data channels MUST be congestion-controlled even
>         if there are no media channels, or if the media channels
>         are inactive in one or both directions.
>

Ok.

>>>>
>>>>    7.  The congestion control algorithm SHOULD attempt to keep the
>>>>            total bandwidth controlled so as to minimize the media-
>>>>            stream end-to-end delays between the participants.
>>>
>>> Not sure I understand this. If I understand it, suggest to rewrite as
>>>
>>>   7. The congestion control algorithm SHOULD attempt to minimize the
>>> media-stream
>>>       end-to-end delays between the participants, by controlling
>>> bandwidth
>>> appropriately.
>>
>> The receiver doesn't know the end-to-end delay, the RTT is calculated
>> at the sender. So is the sender making this decision or the receiver?
>
> Almost by definition the sender.  The receiver is reporting data for the
> sender to use.  (You can consider the receiver part of the algorithm, of
> course.)
>

Probably, adding "sending-side" before congestion control would clarify it.

>>>>    8.  When receiving a [ insert new AVPF message here ], the
>>>>        sender shall attempt to comply with the overall bandwidth
>>>>        requirements by adjusting parameters it can control, such
>>>>        as codec bitrates and modes, and how much data is sent on
>>>>        the data channels.
>>>
>>> Suggest "shall" ->  "may".
>
> For any CC algorithm to work, it really *should* try.  It may not be able to
> comply, the algorithm may include some smoothing, and the sender may have
> additional information, so it's not MUST, but wouldn't MAY be too weak?
>
>> Does the application know apriori how much data would be sent on the
>> data channel? because it is likely that the sender would want to use
>> all of the signaled bandwidth for audio and video. (Especially if the
>> data channel is used for IM, which may be used sporadically).
>
> It may or may not know ahead of time.  It controls how much data IS sent,
> however.
>

Okay.


-- 
http://www.netlab.tkk.fi/~varun/


More information about the Rtp-congestion mailing list