[Codel] R: testbed for testing fq_codel on wifi doesn't work as expected

Alessandro Bolletta alessandro at mediaspot.net
Mon Jun 3 04:57:37 EDT 2013


Yes, what you're saying is right, because only TCP can scale down the window size in order to lower down his throughput when a packet loss is matched, so a TCP flow can correctly handle a packet loss event and resend the lost packet while decreasing the window size through his ARQ protocol. 
So, it's true that CoDel is primarily developed in function of TCP, but it is also true that fq_codel doesn't know what packet is dropping when happens that the queue fills out, simply because I'm configuring fq_codel to be the default qdisc for my ethernet interfaces.
In conclusion, if I send a large UDP data flow without an application-layer ARQ protocol and filling the queue, the data trasmitted will be unreliable, because of packet loss generated by fq_codel, but I shouldn't experience bufferbloat. 
And this is what matters for me :)

--
Alessandro Bolletta
Mediaspot S.r.l.

-----Messaggio originale-----
Da: Jaume Barcelo [mailto:jaume.barcelo at upf.edu] 
Inviato: lunedì 3 giugno 2013 10.44
A: Alessandro Bolletta
Oggetto: Re: [Codel] testbed for testing fq_codel on wifi doesn't work as expected

>From what I read, the idea is to drop packets to signal the TCP flows to slow down. Why don't you try to saturate the flow using TCP?
(iperf, or scp a large file)

The Codel paper starts by explaining the behaviour of TCP in the bottleneck. That's why I suspect that codel (and aqm in general) works only with TCP.

Cheers!
Jaume

On Mon, Jun 3, 2013 at 10:35 AM, Alessandro Bolletta <alessandro at mediaspot.net> wrote:
> Hi Jaume,
>
> the dropping technique should involve every type of packet fulling the queue, including UDP packets.
> It seems that there's something wrong with my configuration.
>
> --
> Alessandro Bolletta
> Mediaspot S.r.l.
>
> -----Messaggio originale-----
> Da: Jaume Barcelo [mailto:jaume.barcelo at upf.edu]
> Inviato: lunedì 3 giugno 2013 10.32
> A: Alessandro Bolletta
> Oggetto: Re: [Codel] testbed for testing fq_codel on wifi doesn't work 
> as expected
>
> Hi Alessandro,
>
> I am a newbie here. I wanted to ask why do you use udp to saturate the link. I thought that codel was meant to throttle tcp flows.
>
> Cheers,
> Jaume
>
> On Sat, Jun 1, 2013 at 1:09 PM, Alessandro Bolletta <alessandro at mediaspot.net> wrote:
>> Hi everybody,
>>
>> I made a little testbed in my office with 2 Ubiquiti Nanobridge M5 
>> and
>> 2 TPlink 741nd.
>>
>> Nanobridges are simply connected in AP-STA mode and relaying traffic 
>> to the two TPLinks where i'm running batman-adv. So I bridged the 
>> bat0 interface create by batman-adv with one of the ethernet ports 
>> offered by the ar71xx CPU. So I connected two laptops to the bridge 
>> at both ends and I pushed up a bidirectional UDP flow filling the 
>> wifi link available bandwidth (I saw that it constantly runs at 33Mbps in download and 37Mbps in upload).
>>
>> In every device (tplinks and ubnts) i'm running OpenWRT BARRIER 
>> BREAKER (Bleeding Edge, r36692), running on kernel 3.8.12
>>
>> I executed Dave Taht's debloat script for bash (and also the 
>> lua-compatible
>> one) on every device, but if i try to make a ping starting from a 
>> laptop to the opposite laptop, these are the times that I get (sorry, 
>> it's written in italian. "Richiesta scaduta" means "expired reply"):
>>
>>
>>
>> Risposta da 192.168.2.25: byte=32 durata=259ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=281ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=285ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=91ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=130ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Richiesta scaduta.
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=251ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=188ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=156ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=279ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=314ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=288ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=324ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=297ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=318ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=301ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=115ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=312ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=292ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=266ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=227ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=91ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=266ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=190ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=161ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=132ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=118ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=166ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=247ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=281ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=282ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=288ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=165ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=251ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=307ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=294ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=297ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=275ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=288ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=282ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=273ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=224ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=159ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=103ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Richiesta scaduta.
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=186ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=225ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=299ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=112ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=171ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=175ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=147ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=211ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=279ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=279ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=228ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=219ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=167ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=177ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=197ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=265ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=275ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=237ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=237ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=285ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=166ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=262ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=275ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=30ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=84ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=249ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=244ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=201ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=110ms TTL=128
>>
>> Richiesta scaduta.
>>
>> Risposta da 192.168.2.25: byte=32 durata=220ms TTL=128
>>
>> Risposta da 192.168.2.25: byte=32 durata=240ms TTL=128
>>
>>
>>
>>
>>
>> While if I ping while i'm not doing traffic at all I get 1ms RTT 
>> replies without packet loss.
>>
>> Can you help me to find the cause of this bufferbloat?
>>
>>
>>
>> Thanks
>>
>> Alessandro
>>
>>
>> _______________________________________________
>> Codel mailing list
>> Codel at lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/codel
>>
>
>





More information about the Codel mailing list