CoDel AQM discussions
 help / color / mirror / Atom feed
* [Codel] Codel configuration
@ 2019-01-14 10:54 Rodrigo Alvarez Dominguez
  2019-01-14 15:24 ` Jonathan Morton
  0 siblings, 1 reply; 9+ messages in thread
From: Rodrigo Alvarez Dominguez @ 2019-01-14 10:54 UTC (permalink / raw)
  To: codel

[-- Attachment #1: Type: text/plain, Size: 497 bytes --]

Hi

I would like to know if it is possible to have the following configuration
where there is a rate limit and codel algorithm configured over the same
interface



tc qdisc add dev r1-eth0 root handle 1: htb

tc class add dev r1-eth0 parent 1: classid 1:1 htb rate 10000kbit burst
15kbit

tc qdisc add dev r1-eth0 parent 1:1 handle 10: fq_codel limit 1000 target
5000 interval 10000 noecn

tc filter add dev r1-eth0 protocol ip prio 1 u32 match ip dst 0.0.0.0/0
flowid 1:1





Regards.

Rodrigo

[-- Attachment #2: Type: text/html, Size: 2111 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Codel] Codel configuration
  2019-01-14 10:54 [Codel] Codel configuration Rodrigo Alvarez Dominguez
@ 2019-01-14 15:24 ` Jonathan Morton
  2019-01-14 16:17   ` Rodrigo Alvarez Dominguez
  0 siblings, 1 reply; 9+ messages in thread
From: Jonathan Morton @ 2019-01-14 15:24 UTC (permalink / raw)
  To: Rodrigo Alvarez Dominguez; +Cc: codel

> On 14 Jan, 2019, at 12:54 pm, Rodrigo Alvarez Dominguez <rodroleon@gmail.com> wrote:
> 
> I would like to know if it is possible to have the following configuration where there is a rate limit and codel algorithm configured over the same interface
>  
> tc qdisc add dev r1-eth0 root handle 1: htb
> tc class add dev r1-eth0 parent 1: classid 1:1 htb rate 10000kbit burst 15kbit
> tc qdisc add dev r1-eth0 parent 1:1 handle 10: fq_codel limit 1000 target 5000 interval 10000 noecn
> tc filter add dev r1-eth0 protocol ip prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:1

Yes, this is an extensively tested configuration.  Have you tried it?

You could also just use Cake, which does all the above, better, with only one tc invocation:

	tc qdisc replace dev r1-eth0 root handle 1: cake bandwidth 10000kbit besteffort flows

 - Jonathan Morton


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Codel] Codel configuration
  2019-01-14 15:24 ` Jonathan Morton
@ 2019-01-14 16:17   ` Rodrigo Alvarez Dominguez
  2019-01-14 16:48     ` Jonathan Morton
  0 siblings, 1 reply; 9+ messages in thread
From: Rodrigo Alvarez Dominguez @ 2019-01-14 16:17 UTC (permalink / raw)
  To: Jonathan Morton; +Cc: codel


[-- Attachment #1.1.1: Type: text/plain, Size: 1926 bytes --]

Hi Jonathan
Thanks for your quick answer. REally appreciate it!!!
I wil try later the cake statement (is it the same as codel)?. I am
starting with Codel. So I need to have a better understanding of codel.
I have the following scenario
[image: image.png]
Where client asks for a FTP file to server. Link between router-server has
a 150MBit speed with a delay of 250 ms.
Then link between client and router has 10 Mbit and the Codel algorithm. So
I am checking the differences between having codel or not.
*Do you have an advice to have a good scenario for testing Codel properly?
Or a document to know how the differences parameter can affect to the
communication?*
In my scenario it seems it is better not having Codel.  See attached
ClientFTPCodelNO-NO-NO (nocodel) versus ClientFtpCodel1000..
where a Codel Algorithm of 1000 packets, 13 ms target and 100 interval is
configured
Regards.



El lun., 14 ene. 2019 a las 16:24, Jonathan Morton (<chromatix99@gmail.com>)
escribió:

> > On 14 Jan, 2019, at 12:54 pm, Rodrigo Alvarez Dominguez <
> rodroleon@gmail.com> wrote:
> >
> > I would like to know if it is possible to have the following
> configuration where there is a rate limit and codel algorithm configured
> over the same interface
> >
> > tc qdisc add dev r1-eth0 root handle 1: htb
> > tc class add dev r1-eth0 parent 1: classid 1:1 htb rate 10000kbit burst
> 15kbit
> > tc qdisc add dev r1-eth0 parent 1:1 handle 10: fq_codel limit 1000
> target 5000 interval 10000 noecn
> > tc filter add dev r1-eth0 protocol ip prio 1 u32 match ip dst 0.0.0.0/0
> flowid 1:1
>
> Yes, this is an extensively tested configuration.  Have you tried it?
>
> You could also just use Cake, which does all the above, better, with only
> one tc invocation:
>
>         tc qdisc replace dev r1-eth0 root handle 1: cake bandwidth
> 10000kbit besteffort flows
>
>  - Jonathan Morton
>
>

[-- Attachment #1.1.2: Type: text/html, Size: 2540 bytes --]

[-- Attachment #1.2: image.png --]
[-- Type: image/png, Size: 18472 bytes --]

[-- Attachment #2: client-FTPfqcodelNO-NO-NO-file_70MB-10000-250-150000-250.pdf --]
[-- Type: application/pdf, Size: 16281 bytes --]

[-- Attachment #3: client-FTPfqcodel1000-13000-100000-file_70MB-10000-250-150000-250.pdf --]
[-- Type: application/pdf, Size: 17179 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Codel] Codel configuration
  2019-01-14 16:17   ` Rodrigo Alvarez Dominguez
@ 2019-01-14 16:48     ` Jonathan Morton
  2019-01-14 22:10       ` Rodrigo Alvarez Dominguez
  0 siblings, 1 reply; 9+ messages in thread
From: Jonathan Morton @ 2019-01-14 16:48 UTC (permalink / raw)
  To: Rodrigo Alvarez Dominguez; +Cc: codel

> On 14 Jan, 2019, at 6:17 pm, Rodrigo Alvarez Dominguez <rodroleon@gmail.com> wrote:
> 
> Hi Jonathan
> Thanks for your quick answer. REally appreciate it!!!
> I wil try later the cake statement (is it the same as codel)?. I am starting with Codel. So I need to have a better understanding of codel.

Cake is a more advanced implementation of the same principles.  Its shaper is more accurate than HTB, and it's easier to configure correctly than the component qdiscs and filters you're currently using.

> Where client asks for a FTP file to server. Link between router-server has a 150MBit speed with a delay of 250 ms.
> Then link between client and router has 10 Mbit and the Codel algorithm. So I am checking the differences between having codel or not.
> Do you have an advice to have a good scenario for testing Codel properly? Or a document to know how the differences parameter can affect to the communication?
> In my scenario it seems it is better not having Codel.  See attached ClientFTPCodelNO-NO-NO (nocodel) versus ClientFtpCodel1000..
> where a Codel Algorithm of 1000 packets, 13 ms target and 100 interval is configured

First, and most importantly, you're measuring only throughput, while ignoring latency.  The primary benefit of any 'smart queue" is in reducing latency, preferably with the least practical impact on throughput.  Dumb FIFOs often induce latencies of several seconds when loaded.  The improvement is visible to the user as quicker response and better reliability of operation while the link is busy.  Here's a better test to try out:

	http://www.dslreports.com/speedtest

Second, your Codel parameters are too tight for the relatively long-latency path you're measuring.  You should set "interval" to your expected path latency (250ms) and "target" to about a tenth of that (25ms).  I would also advise against "noecn" and replace it with "ecn"; this will safely have no effect if you don't have ECN-enabled traffic, but reduces packet loss if you do.

Cake has an "rtt" parameter so you don't have to manually select a target and interval, and it unconditionally supports ECN.  Updating my earlier suggestion:

	tc qdisc replace dev r1-eth0 root handle 1: cake bandwidth 10000kbit besteffort flows rtt 250ms

Third, you should turn on ECN on your end-hosts if you can.  Most servers will respond with ECN traffic if requested, so search for instructions for enabling ECN on your own machine.

 - Jonathan Morton


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Codel] Codel configuration
  2019-01-14 16:48     ` Jonathan Morton
@ 2019-01-14 22:10       ` Rodrigo Alvarez Dominguez
  2019-01-15  1:14         ` Jonathan Morton
  0 siblings, 1 reply; 9+ messages in thread
From: Rodrigo Alvarez Dominguez @ 2019-01-14 22:10 UTC (permalink / raw)
  To: Jonathan Morton; +Cc: codel

[-- Attachment #1: Type: text/plain, Size: 2892 bytes --]

Thanks for the tip! I will try with your numbers. Really appreciate your
help.
I will check later with cake. Is cake autotuning the target and interval?
Regards,
Rodrigo

El lun., 14 ene. 2019 a las 17:48, Jonathan Morton (<chromatix99@gmail.com>)
escribió:

> > On 14 Jan, 2019, at 6:17 pm, Rodrigo Alvarez Dominguez <
> rodroleon@gmail.com> wrote:
> >
> > Hi Jonathan
> > Thanks for your quick answer. REally appreciate it!!!
> > I wil try later the cake statement (is it the same as codel)?. I am
> starting with Codel. So I need to have a better understanding of codel.
>
> Cake is a more advanced implementation of the same principles.  Its shaper
> is more accurate than HTB, and it's easier to configure correctly than the
> component qdiscs and filters you're currently using.
>
> > Where client asks for a FTP file to server. Link between router-server
> has a 150MBit speed with a delay of 250 ms.
> > Then link between client and router has 10 Mbit and the Codel algorithm.
> So I am checking the differences between having codel or not.
> > Do you have an advice to have a good scenario for testing Codel
> properly? Or a document to know how the differences parameter can affect to
> the communication?
> > In my scenario it seems it is better not having Codel.  See attached
> ClientFTPCodelNO-NO-NO (nocodel) versus ClientFtpCodel1000..
> > where a Codel Algorithm of 1000 packets, 13 ms target and 100 interval
> is configured
>
> First, and most importantly, you're measuring only throughput, while
> ignoring latency.  The primary benefit of any 'smart queue" is in reducing
> latency, preferably with the least practical impact on throughput.  Dumb
> FIFOs often induce latencies of several seconds when loaded.  The
> improvement is visible to the user as quicker response and better
> reliability of operation while the link is busy.  Here's a better test to
> try out:
>
>         http://www.dslreports.com/speedtest
>
> Second, your Codel parameters are too tight for the relatively
> long-latency path you're measuring.  You should set "interval" to your
> expected path latency (250ms) and "target" to about a tenth of that
> (25ms).  I would also advise against "noecn" and replace it with "ecn";
> this will safely have no effect if you don't have ECN-enabled traffic, but
> reduces packet loss if you do.
>
> Cake has an "rtt" parameter so you don't have to manually select a target
> and interval, and it unconditionally supports ECN.  Updating my earlier
> suggestion:
>
>         tc qdisc replace dev r1-eth0 root handle 1: cake bandwidth
> 10000kbit besteffort flows rtt 250ms
>
> Third, you should turn on ECN on your end-hosts if you can.  Most servers
> will respond with ECN traffic if requested, so search for instructions for
> enabling ECN on your own machine.
>
>  - Jonathan Morton
>
>

[-- Attachment #2: Type: text/html, Size: 3448 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Codel] Codel configuration
  2019-01-14 22:10       ` Rodrigo Alvarez Dominguez
@ 2019-01-15  1:14         ` Jonathan Morton
  2019-01-15  9:27           ` Rodrigo Alvarez Dominguez
  0 siblings, 1 reply; 9+ messages in thread
From: Jonathan Morton @ 2019-01-15  1:14 UTC (permalink / raw)
  To: Rodrigo Alvarez Dominguez; +Cc: codel

> On 15 Jan, 2019, at 12:10 am, Rodrigo Alvarez Dominguez <rodroleon@gmail.com> wrote:
> 
> Is cake autotuning the target and interval?

Yes.  It takes into account several parameters, including the configured 'rtt' (100ms is the default for that).  You can see what it chooses using 'tc -s qdisc'.

 - Jonathan Morton


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Codel] Codel configuration
  2019-01-15  1:14         ` Jonathan Morton
@ 2019-01-15  9:27           ` Rodrigo Alvarez Dominguez
  2019-01-15 16:48             ` Jonathan Morton
  0 siblings, 1 reply; 9+ messages in thread
From: Rodrigo Alvarez Dominguez @ 2019-01-15  9:27 UTC (permalink / raw)
  To: Jonathan Morton; +Cc: codel


[-- Attachment #1.1: Type: text/plain, Size: 786 bytes --]

Hi
Is it cake working with UDP? I am going to test codel with QUIC QUIC is a
protocol that works using UDP protocol.
 At first test it seems cake is not limiting at 10000 kbit in a mininet
environment

     r1.cmd("tc qdisc replace dev r1-eth0 root handle 1: cake bandwidth
%skbit besteffort flows rtt 1800ms" %(dlrate))
Regards


El mar., 15 ene. 2019 a las 2:14, Jonathan Morton (<chromatix99@gmail.com>)
escribió:

> > On 15 Jan, 2019, at 12:10 am, Rodrigo Alvarez Dominguez <
> rodroleon@gmail.com> wrote:
> >
> > Is cake autotuning the target and interval?
>
> Yes.  It takes into account several parameters, including the configured
> 'rtt' (100ms is the default for that).  You can see what it chooses using
> 'tc -s qdisc'.
>
>  - Jonathan Morton
>
>

[-- Attachment #1.2: Type: text/html, Size: 1246 bytes --]

[-- Attachment #2: client-fqcodel1000-25000-250000-file_70MB-10000-250-150000-250.pdf --]
[-- Type: application/pdf, Size: 16277 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Codel] Codel configuration
  2019-01-15  9:27           ` Rodrigo Alvarez Dominguez
@ 2019-01-15 16:48             ` Jonathan Morton
  0 siblings, 0 replies; 9+ messages in thread
From: Jonathan Morton @ 2019-01-15 16:48 UTC (permalink / raw)
  To: Rodrigo Alvarez Dominguez; +Cc: codel

> On 15 Jan, 2019, at 11:27 am, Rodrigo Alvarez Dominguez <rodroleon@gmail.com> wrote:
> 
>  At first test it seems cake is not limiting at 10000 kbit in a mininet environment

Are you measuring upstream or downstream of the bottleneck?

As far as Cake is concerned packets are packets, but different protocols perform congestion control differently (or not at all) resulting in differences of send rate.  Observations downstream of the bottleneck should show Cake limiting throughput correctly.

 - Jonathan Morton


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Codel] Codel configuration
@ 2019-01-14 10:45 Rodrigo Alvarez Dominguez
  0 siblings, 0 replies; 9+ messages in thread
From: Rodrigo Alvarez Dominguez @ 2019-01-14 10:45 UTC (permalink / raw)
  To: codel

[-- Attachment #1: Type: text/plain, Size: 1112 bytes --]


Hi
I would like to know if it is possible to have the following configuration where there is a rate limit and codel algorithm configured over the same interface

tc qdisc add dev r1-eth0 root handle 1: htb
tc class add dev r1-eth0 parent 1: classid 1:1 htb rate 10000kbit burst 15kbit
tc qdisc add dev r1-eth0 parent 1:1 handle 10: fq_codel limit 1000 target 5000 interval 10000 noecn
tc filter add dev r1-eth0 protocol ip prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:1


Regards.
Rodrigo

[Ericsson]<http://www.ericsson.com/>

RODRIGO ÁLVAREZ DOMÍNGUEZ
System Engineer
BICP DUNC PC NDO SD DPI SM

Ericsson
Ed.Milenium C/Via de los Poblados 13
28033 Madrid, Spain
Phone +34615993132
Mobile +34615993132
rodrigo.alvarez.dominguez@ericsson.com
www.ericsson.com


[http://www.ericsson.com/current_campaign]<http://www.ericsson.com/current_campaign>

Legal entity: Ericsson, registered office in Madrid. This Communication is Confidential. We only send and receive email on the basis of the terms set out at www.ericsson.com/email_disclaimer<http://www.ericsson.com/email_disclaimer>


[-- Attachment #2: Type: text/html, Size: 6289 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-01-15 16:48 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-14 10:54 [Codel] Codel configuration Rodrigo Alvarez Dominguez
2019-01-14 15:24 ` Jonathan Morton
2019-01-14 16:17   ` Rodrigo Alvarez Dominguez
2019-01-14 16:48     ` Jonathan Morton
2019-01-14 22:10       ` Rodrigo Alvarez Dominguez
2019-01-15  1:14         ` Jonathan Morton
2019-01-15  9:27           ` Rodrigo Alvarez Dominguez
2019-01-15 16:48             ` Jonathan Morton
  -- strict thread matches above, loose matches on Subject: below --
2019-01-14 10:45 Rodrigo Alvarez Dominguez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox