Roland, Fred,

Here is a simple example to illustrate the differences between FQ-AQM with AQM 
per queue vs AQM per aggregate queue.

Let's take 2 flows, each mapped to separate queues in a FQ-AQM system.
        Link rate = 100 Mbps
        Flow 1 rate = 50 Mbps, source rate does not go over 50 Mbps
        Flow 2 rate >= 50 Mbps, adapts based on AQM.

FQ-Codel, AQM per queue:
        Flow 1 delay is minimal
        Flow 1 packet drops = 0
        Flow 2 delay is close to target value

FQ-Codel, AQM for aggregate queue:
        Does not work at all
        Packets are dequeued alternatively from queue 1 and queue 2
        Packets from queue 1 experience very small queuing delay
        Hence, CoDel does not enter dropping state, queue 2 is not controlled :(

FQ-PIE, AQM per queue:
        Flow 1 delay is minimal
        Flow 1 packet drops = 0
        Flow 2 delay is close to target value

FQ-PIE, AQM for aggregate queue:
        Flow 1 delay and queue 1 length are close to zero.
        Flow 2 delay is close to 2 * target_del :(
                qlen2 = target_del * aggregate_depart_rate
        Flow 1 experiences almost the same number of drops or ECNs as flow 2 :(
                Same drop probability and almost same packet rate for both flows
        (If flow 1 drops its rate because of packet drops or ECNs, the analysis 
gets slightly more complicated).

See if this makes sense.

If the analysis is correct, then it illustrates that flow behaviors are quite 
different
between AQM per queue and AQM per aggregate queue schemes.
In FQ-PIE for aggregate queue, 
        - The total number of queued bytes will slosh between 
          queues depending on the nature and data rates of the flows.
        - Flows with data rates within their fair share value will experience 
          non-zero packet drops (or ECN marks).
        - Flows that experience no queuing delay will increase queuing delay of 
other flows.
        - In general, the queuing delay for any given flow will not be close to 
target_delay and can be
          much higher

Regards,
Anil

-----Original Message-----
From: aqm [mailto:[email protected]] On Behalf Of Bless, Roland (TM)
Sent: Friday, July 03, 2015 7:41 AM
To: Toke Høiland-Jørgensen; Polina Goltsman
Cc: [email protected]; Hironori Okano -X (hokano - AAP3 INC at 
Cisco); Fred Baker (fred); AQM IETF list
Subject: Re: [aqm] FQ-PIE kernel module implementation

Hi,

Am 03.07.2015 um 12:16 schrieb Toke Høiland-Jørgensen:
> Polina Goltsman <[email protected]> writes:
> 
>> As I understand the FQ-Codel draft, it seems to be fundamental to 
>> FQ-Codel that each queue has separate state variables. So my question
>> is: is it indeed fundamental ?
> 
> I suppose that becomes a matter of semantics: What exactly do you mean 
> by 'fundamental'. If you mean "an integral part of the current 
> algorithm", then yes. If you mean "it's unthinkable to build a similar 
> algorithm without the separate state variables" then no. I understand 
> Fred's comment to take the second interpretation. :)

I guess Polina's point was:
it is a question how "similar" two realizations of PIE would be if one applies 
PIE per flow like in FQ-Codel or alternatively (as proposed by FQ-PIE) FQ first 
and then PIE working on the aggregated queue.
Was it a deliberate choice for the latter and if so, why?
It would be good to document this difference to FQ-Codel explicitly.

Regards,
 Roland

_______________________________________________
aqm mailing list
[email protected]
https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_aqm&d=AwIF-g&c=jcv3orpCsv7C4ly8-ubDob57ycZ4jvhoYZNDBA06fPk&r=FyvaklKYrHaSCPjbBTdviWIW9uSbnxdNSheSGz1Jvq4&m=pcEVvl4qisljUGX7ogOyVICZ56p8s6lOuh8toIjEWzE&s=z1oQXxfgw7lLAkyQS7rwBUBlhihe3hD8IY623asr6vs&e=
 

_______________________________________________
aqm mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/aqm

Reply via email to