Analysis of fq_codel in limiters (dummynet)


  • So some of you may remember a while back I posted problems that when I was downloading, especially from multi threaded locations such as steam, I get packet loss affecting other traffic. Of course packet loss is the worse beast compared to buffer bloat.

    I had noticed via experimentation I could completely fix the problem doing something like this.

    Big queue on the main pipe, then very small queue on fq_codel itself, and also to add the masking to split the flows on the scheduler level.

    This worked perfect, almost. The problem was each flow had the pipe limit individually, not shared across all flows, so e.g. when I downloaded some games on PSN, they were using 2 different /16's and both flows were able to saturate the line going over the pipe limit.

    So I had to switch back to setting the mask on the queue's instead (which shares the overall pipe limit), but given what I learnt earlier I hugely reduced the limiter from 10240 to just 20. I also have the reduced quantum to 300, and I increased the target latency level as well. This seems to have finally made solid improvement on the issue of packet loss whilst downloading, now I can download whilst watching twitch at same time without buffering.

    I read that cake handles this better as it auto adjusts these type of parameters dependent on configured bandwidth limit? Whilst fq_codel defaults seem optimal for a 10gbe connection.

    I hope this helps others.

    For reference my configured limits are down 61073kb and up 18779kb.