public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: hadi@cyberus.ca
Cc: Jarek Poplawski <jarkao2@gmail.com>,
	David Miller <davem@davemloft.net>,
	Jesper Dangaard Brouer <hawk@diku.dk>,
	Patrick McHardy <kaber@trash.net>,
	netdev <netdev@vger.kernel.org>
Subject: Re: [RFC] net_sched: mark packet staying on queue too long
Date: Mon, 03 Jan 2011 15:02:52 +0100	[thread overview]
Message-ID: <1294063372.2892.408.camel@edumazet-laptop> (raw)
In-Reply-To: <1294062755.2472.11.camel@mojatatu>

Le lundi 03 janvier 2011 à 08:52 -0500, jamal a écrit :
> On Sun, 2011-01-02 at 22:27 +0100, Eric Dumazet wrote:
> > While playing with SFQ and other AQM, I was bothered to see how easy it
> > was for a single tcp flow to 'fill the pipe' and consume lot of memory
> > buffers in queues. I know Jesper use more than 50.000 SFQ on his
> > routers, and with GRO packets this can consume a lot of memory.
> > 
> > I played a bit adding ECN in SFQ, first by marking packets for a
> > particular flow if this flow qlen was above a given threshold, and later
> > using another trick : ECN mark packet if it stayed longer than a given
> > delay in the queue. This of course could be done on other modules, what
> > do you think ?
> > 
> 
> I think for this to be effective, it would require maintaining some
> history of the effect (some form of moving window average)
> and probably a randomness in marking instead of a deterministic one.
> Something like what Stochastic Fair RED/BLUE Queueing does.
> Otherwise you get a burst of marked packets then silence then a burst
> etc (i.e the classical synchronization effect).
> 

I got fairly good results here, but admit-idly on a LAN.

Yep, maybe adding RED on each SFQ slot ;) Should be fairly cheap, and
actually needed in case ECN is not possible and we must earlly drop
instead.

I found BLUE very expensive in term of cache line accesses. Especially
with double hashing.

> It would probably be more effective to provide feedback to the local tcp
> since we can detect this locally instead of waiting to some round trip
> (or half roundtrip) effect at the receiver with ECN i.e in the same
> spirit as NET_XMIT_CN but for which local TCP does something useful with
> that info (instead of "retransmit shortly"). But even that would require
> maintaining some state on the scheduler per hash in this case....
> 

local tcp, for a router ? Hmm... But yes I see your point.

Speaking of ECN marking, it seems we (in RED/GRED or tunnels) change skb
data even if it is shared (can happen on ingress path)

Probably harmless, but tcpdump can show ECN bit being marked even on skb
snapshot before ingress (and later, ECN marked) or tunnels, while it
came unset from the wire.

Is it worth fixing this ? maybe using skb_make_writable() [once moved to
core network from netfilter]




  reply	other threads:[~2011-01-03 14:03 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-20 14:35 [PATCH net-2.6] net_sched: always clone skbs Changli Gao
2010-12-20 14:37 ` Eric Dumazet
2010-12-20 18:27   ` David Miller
2010-12-20 23:20 ` Jarek Poplawski
2010-12-20 23:28   ` Eric Dumazet
2010-12-20 23:52     ` Jarek Poplawski
2010-12-21 13:52       ` jamal
2010-12-21 14:17         ` Changli Gao
2010-12-21 22:37           ` Jarek Poplawski
2010-12-23 13:35             ` jamal
2010-12-23 23:04               ` Jarek Poplawski
2011-01-02 21:27               ` [RFC] net_sched: mark packet staying on queue too long Eric Dumazet
2011-01-03 13:52                 ` jamal
2011-01-03 14:02                   ` Eric Dumazet [this message]
2011-01-03 15:02                     ` jamal
2011-01-03 18:11                     ` [PATCH] sch_red: report backlog information Eric Dumazet
2011-01-03 20:13                       ` David Miller
2011-01-03 17:58                 ` [RFC] net_sched: mark packet staying on queue too long Stephen Hemminger
2011-01-04 14:19                   ` Jesper Dangaard Brouer
2011-01-04 15:02                     ` Eric Dumazet
2011-01-04 16:05                       ` Stephen Hemminger
2011-01-04 18:20                       ` Eric Dumazet
2011-01-04 18:29                         ` Eric Dumazet
2011-01-13 11:50                     ` Patrick McHardy
2011-01-13 15:54                       ` Eric Dumazet
2011-01-13 16:04                       ` sch_sfb [was: net_sched: mark packet staying on queue too long] Juliusz Chroboczek
2011-01-13 18:59                         ` Patrick McHardy
2011-01-14  0:59                           ` sch_sfb Juliusz Chroboczek
2011-01-14  1:39                             ` sch_sfb Patrick McHardy
2011-01-14 13:34                               ` sch_sfb Juliusz Chroboczek
2011-01-14 13:37                                 ` sch_sfb Patrick McHardy
2011-01-14 15:09                                 ` sch_sfb Eric Dumazet
2011-01-14 21:06                                 ` sch_sfb Jarek Poplawski
2010-12-21  0:21     ` [PATCH net-2.6] net_sched: always clone skbs Changli Gao
2010-12-21  3:55       ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1294063372.2892.408.camel@edumazet-laptop \
    --to=eric.dumazet@gmail.com \
    --cc=davem@davemloft.net \
    --cc=hadi@cyberus.ca \
    --cc=hawk@diku.dk \
    --cc=jarkao2@gmail.com \
    --cc=kaber@trash.net \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox