[Bloat] when does the CoDel part of fq_codel help in the real world?

Bless, Roland (TM) roland.bless at kit.edu
Thu Nov 29 03:41:28 EST 2018


Hi Dave,

Am 29.11.18 um 08:39 schrieb Dave Taht:
> "Bless, Roland (TM)" <roland.bless at kit.edu> writes:
> 
>> Hi Luca,
>>
>> Am 27.11.18 um 11:40 schrieb Luca Muscariello:
>>> OK. We agree.
>>> That's correct, you need *at least* the BDP in flight so that the
>>> bottleneck queue never empties out.
>>
>> No, that's not what I meant, but it's quite simple.
>> You need: data min_inflight=2 * RTTmin * bottleneck_rate to filly
>> utilize the bottleneck link.
>> If this is true, the bottleneck queue will be empty. If your amount
>> of inflight data is larger, the bottleneck queue buffer will store
>> the excess packets. With just min_inflight there will be no
>> bottleneck queue, the packets are "on the wire".
>>
>>> This can be easily proven using fluid models for any congestion
>>> controlled source no matter if it isĀ 
>>> loss-based, delay-based, rate-based, formula-based etc.
>>>
>>> A highly paced source gives you the ability to get as close as
>>> theoretically possible to the BDP+epsilon
>>> as possible.
>>
>> Yep, but that BDP is "on the wire" and epsilon will be in the bottleneck
>> buffer.
> 
> I'm hoping I made my point effectively earlier, that
> 
> " data min_inflight=2 * RTTmin * bottleneck_rate "

That factor of 2 was a mistake in my first mail (sorry for that...).
I corrected that three minutes after. I should have written:
data min_inflight=RTTmin * bottleneck_rate

> when it is nearly certain that more than one flow exists, means aiming
> for the BDP in a single flow is generally foolish. Liked the stanford

I think one should not confuse the buffer sizing rule with the
calcluation for inflight data...

> result, I think it's pretty general. I see hundreds of flows active
> every minute. There was another paper that looked into some magic
> 200-ish number as simultaneous flows active, normally

So for buffer sizing, the BDP dependent rule is foolish in general,
because it is optimized for older loss-based TCP congestion controls
so that they can keep the utilization high. It's correct that in
presence of multiple flows and good loss desynchronization, you
still get high utilization with a smaller buffer (Appenzeller et. al,
SIGCOMM 2004).

However, when it comes to CWnd sizing, that inflight rule would convert
to:
data min_inflight=RTTmin * bottleneck_rate_share
because other flows are present at the bottleneck.

Interestingly enough: flows with a different RTT_min should
use different CWnds, but their amount of queued data at the bottleneck
should be nearly equal if you want to have flow rate fairness.

Regards
 Roland


More information about the Bloat mailing list