[Codel] fq_codel_drop vs a udp flood

moeller0 moeller0 at gmx.de
Fri May 6 07:46:21 EDT 2016


Hi Jesper,

> On May 6, 2016, at 13:33 , Jesper Dangaard Brouer <brouer at redhat.com> wrote:
> 
> 
> On Fri, 6 May 2016 10:41:53 +0200 moeller0 <moeller0 at gmx.de> wrote:
> 
>> 	Speaking out of total ignorance, I ask why not account
>> GRO/GSO packets by the number of their fragments against the packet
>> limit? Counting a 64kB packets as equivalent to a 64B packet probably
>> is the right thing if one tries to account for the work the OS needs
>> to perform to figure out what to do with the packet, but for limiting
>> the memory consumption it introduces an impressive/manly level of
>> uncertainty (2 orders of magnitude). 
> 
> Looking at the drop code in fq_codel:
> https://github.com/torvalds/linux/blob/v4.6-rc6/net/sched/sch_fq_codel.c#L136
> 
> It looks like we are finding the "fat" flow to drop from based on
> number of bytes queued.  And AFAIK skb->len also account for the total
> length of all GSO packets (Eric?)
> 
> Even better, we are using qdisc_pkt_len(skb), which also account for
> the GSO headers in qdisc_pkt_len_init(). 
> https://github.com/torvalds/linux/blob/v4.6-rc6/net/core/dev.c#L2993
> 
> If anything, the GSO packets get hit harder by the fq_codel_drop
> function, as we drop the entire GSO skb.

	This sounds all very reassuring!

> 
> 
> Is the issue you are raising that the 1024 packet limit, would allow
> 1024 x 64K bytes to be queued before the drop kicks in? (Resulting in
> using too much memory on your small device).

	Yes, I guess I need to explain better. My wndr3700v7 only sports a measly 64MB ram total, so in the past with the default 10240 limit I could force OOM-initiated reboots. So my angle on this issue is always, I want my router to survive even if the the network is over-saturated (I do not expect the router to work well under those circumstances, but I somehow think it should at least not reboot during DOS conditions…). Cake allows to specify a hard memory limit that looks a skb-truesize to allow stricter memory control for people like me, making the whole GRO/GSO issue go away, at least as far as OOM is concerned. And as I begin to understand once a link reaches a certain bandwidth GRO/GSO will become helpful again, especially on small routers as they help reduce the work the kernel needs to to per byte…

Best Regards & Many Thanks
	Sebastian


> 
> -- 
> Best regards,
>  Jesper Dangaard Brouer
>  MSc.CS, Principal Kernel Engineer at Red Hat
>  Author of http://www.iptv-analyzer.org
>  LinkedIn: http://www.linkedin.com/in/brouer



More information about the Codel mailing list