[R-C] RRTCC issues: loss, decrease rate

Randell Jesup randell-ietf at jesup.org
Wed Aug 8 09:58:20 CEST 2012


On 8/8/2012 2:06 AM, Mo Zanaty (mzanaty) wrote:
> Just to make sure I understand your "bonus" reduction, it is because the "fishy" pattern confirms a congestion loss rather than a possibly stochastic loss, right? Or is there another reason to apply the bonus that I missed? Like some sort of mild congestion vs. severe congestion inference (that can't be obtained by the loss signal itself alone)?

Mostly it was just stronger confirmation of congestion, and it seemed to 
work well.  It increased the chance that in the first adjustment after 
congestion is noticed we'd be below the available bandwidth and the 
queues would start to drain (and drain faster!) - but the downside is 
that if the loss isn't congestion, you would impair quality more, which 
is why it was limited to cases where I was pretty sure.


This brings up a related point - reaction speed.  I've proposed here 
using the slope output of the filter to adjust the amount of bandwidth 
reduction.  It's a fairly simple argument:

* The slope of delay increase is directly proportional to how fast the 
queue is growing.
* The rate the queue grows is directly proportional to how far 
over-bandwidth the bottleneck is
* You want to reduce bandwidth far enough to cause the queues to start 
to drain.

Note that in (3), it's really the combination of your reduction and the 
reduction of any other streams sharing the bottleneck.

Once again, this argument is strongest when there are few streams at the 
bottleneck.  In the single stream case, if you have correctly determined 
the slope, if you reduce bandwidth by an amount directly proportional to 
the slope, then you will (in theory!) exactly hit the link bandwidth.  
You'd want to slightly overshoot on purpose to ensure draining of the 
queue buildup.

As the number of competing streams increase, you're more likely to 
over-react, in that you're reading the bottleneck over-use amount, but 
you're only responsible for one of the flows.  So you have to be careful...

On the other hand, you want to get the bottleneck below congestion as 
fast as possible to avoid further delay buildup, and you want to 
overshoot slightly to ensure it drains (especially if another flow is 
still increasing (TCP sawtooth)).

So, instead of trying to hit the target in a single reduction, you can 
instead reduce sending rate by a fraction of apparent over-bandwidth 
amount (with some minimum reduction amount or percentage).  This means 
in the single-flow case, it will take several RTT at minimum to get 
below the link rate, but the delay increase rate will continually slow.  
With this slower reaction pace, you want to also stop reacting more 
slowly, to ensure you get into the queues-draining point, and drain them 
fast enough to make a difference.  You can do this by a number of 
methods. When the filter confirms the draining is occurring, you'll want 
to wait to increase bandwidth until the queues are stable and hopefully 
drained (the current algorithm includes this).

This has the advantage of reacting faster in cases of more severe 
congestion or larger over-link-bandwidth cases.  Tuning the reaction 
rate for sharing the link with other RRTCC flows, and to share 
reasonably with TCP flows would be the subject of tests; there are other 
related values to tune it, such as for how long it avoids switching 
direction (decrease->increase), how it reacts during startup, how RTT 
and jitter in delay signals feed in (more jitter may imply more 
competing streams, but not always).

You *might* be able to infer the number of competing streams (or some 
measure of competition) by the slope change after a reduction. In the 
single-flow case, it may be a fairly strong signal that it's 
single-flow, and you might want to include memory of that for a period 
and adjust the reaction rate to be faster.

One reason single-flows are so interesting is that access-link 
congestion is a very common case and very important case for connection 
quality for the user, if not the worrying case (from congestion-collapse 
or fairness perspectives).

-- 
Randell Jesup
randell-ietf at jesup.org



More information about the Rtp-congestion mailing list