[R-C] [Iccrg] draft-alvestrand-rtcweb-congestion-01 - A Google Congestion Control Algorithm for Real-Time Communication on the World Wide Web

Randell Jesup randell-ietf at jesup.org
Tue Nov 8 17:19:22 CET 2011


On 11/8/2011 5:38 AM, Henrik Lundin wrote:
> On Mon, Nov 7, 2011 at 2:58 AM, Wesley Eddy <wes at mti-systems.com
> <mailto:wes at mti-systems.com>> wrote:
>
>     On 11/1/2011 10:34 AM, Lars Eggert wrote:
>     (3)
>     In the definition of w(i), do you also intend to account for other
>     sources of delays in the end systems' software?  Why do we think that
>     white noise is the right model?  This seems like a big assumption,
>     unless there's actually data that shows it holds under a very wide
>     range of settings.
>
> [HL] I'm quite sure that additive Gaussian white noise it *not* the
> right model. However, as usual in signal processing, there are two
> reasons to make the AWGN assumption: (1) we do not know any better
> model, and (2) it results in tractable formulas. Formally, you would
> have to re-derive the Kalman filter equations based on a new noise
> assumption. If we are not in the business of re-deriving the Kalman
> filter, the assumption has no practical meaning, since we'll apply the
> same filter equations anyway.

Right - it's very likely closer to a power-law tail than a Gaussian one, 
and I'm sure it's also somewhat nodal/discrete and not fully smooth, 
depending on the source.  All of which is of relatively minor importance 
in practice, I believe.


>     (5)
>     The algorithm at the receiver side is clueless about packet losses,
>     and seems like it would see them only when the loss period ends (when
>     a packet survives) and then would see them as really long inter-arrival
>     times rather than losses?  (or did I miss something really important?)
>
> [HL] Yes, you cannot detect a packet loss until you see the gap in
> between two other packets. (Not even then you can be sure it's a loss;
> it may be a re-ordering.) If a frame is lost, the Kalman filter will be
> updated with the inter-arrival time and timestamp delta between the
> frames that actually did arrive. In that respect, the filter does not
> discriminate between losses and frames willfully dropped by the sender
> before encoding.

Right - packet losses should be dealt with separately in the algorithm. 
  Normally you can't tell if a loss is a congestion loss, or (for 
example) a WiFi-induced loss, or simply a very late packet.  Note that 
for filter updates we may want to update it with data from packets too 
late to be played (jitter buffer underflowed), but still arrived within 
X of when they "should" have arrived.

>     (6)
>     The rules about 2% and 10% in the sender-side algorithm seem ... odd.
>     Unless the report interval is sufficiently long in relation to the frame
>     rate, the percentages may not work well.  These parameters have to be
>     balanced, or the algorithm will be fragile.
>
> [HL] Quite likely, yes.

At minimum we need to define what 2% and 10% are measured over, and how 
the sender knows (RR reports I assume).

I gave some detailed comments about some of this earlier; check the 
archives of the R-C list.

>     (7)
>     Shouldn't the sender estimate of available bandwidth be able to go lower
>     than the TFRC equation output if the delay has been increasing (though
>     packets are not yet being lost)?
>
> [HL] "In words: The sender-side estimate will never be larger than
> the receiver-side estimate, and will never be lower than the
> estimate from the TFRC formula." I see now that this wording is *wrong*.
> It should say something like:
> "The sender-side estimate will never be larger than the receiver-side
> estimate. A reduction of the sender-side estimate triggered by loss and
> RTT reports will never result in an estimate lower than that from the
> TFRC formula." We expect the receiver-side to be much faster in response
> time -- simply because it is delay sensing, and not loss sensing as the
> sender-side -- and therefore the receive-side estimate will limit the
> send-side estimate in most cases. The send-side can be seen as a slave
> in that case. The send-side estimate is mostly there to provide a
> fall-back option in the case of no feedback from the receiver.

We may not need a fallback for webrtc when talking to another webrtc 
client.  When talking to non-webrtc, we might need one.

>     (8)
>     Startup is a big topic that isn't yet addressed.
>
> [HL] Yes, it is, but I'm not sure it should be stipulated in this
> document. The application will probably have a lot to say about this.
> For instance, it can know something about previous calls, and it can
> also implement some kind of pre-probing algorithm.

Agreed - the algorithm should adapt no matter the starting point (and 
really must) - though we can recommend practices to avoid slow 
convergence (up or down).

-- 
Randell Jesup
randell-ietf at jesup.org


More information about the Rtp-congestion mailing list