All of lore.kernel.org
 help / color / mirror / Atom feed
From: dpreed@reed.com
To: Dave Taht <dave.taht@gmail.com>
Cc: make-wifi-fast@lists.bufferbloat.net,
	Ben Greear <greearb@candelatech.com>,
	"codel@lists.bufferbloat.net" <codel@lists.bufferbloat.net>,
	ath10k <ath10k@lists.infradead.org>
Subject: Re: [Make-wifi-fast] fq_codel_drop vs a udp flood
Date: Sun, 1 May 2016 10:47:23 -0400 (EDT)	[thread overview]
Message-ID: <1462114043.512818296@apps.rackspace.com> (raw)
In-Reply-To: <CAA93jw46O3CbURxyP7AENkOCnA71Bn6ddTJpdfzEjWcFKgnaAg@mail.gmail.com>

Maybe I missed something, but why is it important to optimize for a UDP flood?

A general observation of control theory is that there is almost always an adversarial strategy that will destroy any control regime. Sometimes one has to invoke an "oracle" that knows the state of the control system at all times to get there.

So a handwave is that *there is always a DDoS that will work* no matter how clever you are.

And the corollary is illustrated by the TSA. If you can't anticipate all possible attacks, it is not clearly better to just congest the whole system at all times with controls that can't possibly solve all possible attacks - i.e. Security Theater. We don't want "anti-DDoS theater" I don't think.

There is an alternative mechanism that has been effective at dealing with DDoS in general - track the disruption back to the source and kill it.  (this is what the end-to-end argument would be: don't try to solve a fundamentally end-to-end problem, DDoS, solely in the network [switches], since you have to solve it at the edges anyway. Just include in the network things that will help you solve it at the edges - traceback tools that work fast and targeted shutdown of sources).

I don't happen to know of a "normal" application that benefits from UDP flooding - not even "gossip protocols" do that!

In context, then, let's not focus on UDP flood performance (or any other "extreme case" that just seems fun to work on in a research paper because it is easy to state compared to the real world) too much.

I know that the reaction to this post will be to read it and pretty much go on as usual focusing on UDP floods. But I have to try. There are so many more important issues (like understanding how to use congestion signalling in gossip protocols, gaming, or live AV conferencing better, as some related examples, which are end-to-end problems for which queue management and congestion signalling are truly crucial).



On Sunday, May 1, 2016 1:23am, "Dave Taht" <dave.taht@gmail.com> said:

> On Sat, Apr 30, 2016 at 10:08 PM, Ben Greear <greearb@candelatech.com> wrote:
>>
>>
>> On 04/30/2016 08:41 PM, Dave Taht wrote:
>>>
>>> There were a few things on this thread that went by, and I wasn't on
>>> the ath10k list
>>>
>>> (https://www.mail-archive.com/ath10k@lists.infradead.org/msg04461.html)
>>>
>>> first up, udp flood...
>>>
>>>>>> From: ath10k <ath10k-boun...@lists.infradead.org> on behalf of Roman
>>>>>> Yeryomin <leroi.li...@gmail.com>
>>>>>> Sent: Friday, April 8, 2016 8:14 PM
>>>>>> To: ath10k@lists.infradead.org
>>>>>> Subject: ath10k performance, master branch from 20160407
>>>>>>
>>>>>> Hello!
>>>>>>
>>>>>> I've seen performance patches were commited so I've decided to give it
>>>>>> a try (using 4.1 kernel and backports).
>>>>>> The results are quite disappointing: TCP download (client pov) dropped
>>>>>> from 750Mbps to ~550 and UDP shows completely weird behavour - if
>>>>>> generating 900Mbps it gives 30Mbps max, if generating 300Mbps it gives
>>>>>> 250Mbps, before (latest official backports release from January) I was
>>>>>> able to get 900Mbps.
>>>>>> Hardware is basically ap152 + qca988x 3x3.
>>>>>> When running perf top I see that fq_codel_drop eats a lot of cpu.
>>>>>> Here is the output when running iperf3 UDP test:
>>>>>>
>>>>>>      45.78%  [kernel]       [k] fq_codel_drop
>>>>>>       3.05%  [kernel]       [k] ag71xx_poll
>>>>>>       2.18%  [kernel]       [k] skb_release_data
>>>>>>       2.01%  [kernel]       [k] r4k_dma_cache_inv
>>>
>>>
>>> The udp flood behavior is not "weird".  The test is wrong. It is so
>>> filling
>>> the local queue as to dramatically exceed the bandwidth on the link.
>>
>>
>> It would be nice if you could provide backpressure so that you could
>> simply select on the udp socket and use that to know when you can send
>> more frames??
> 
> The qdisc version returns  NET_XMIT_CN to the upper layers of the
> stack in the case
> where the dropped packet's flow = the ingress packet's flow, but that
> is after the
> exhaustive search...
> 
> I don't know what effect (if any) that had on udp sockets. Hmm... will
> look. Eric would "just know".
> 
> That might provide more backpressure in the local scenario. SO_SND_BUF
> should interact with this stuff in some sane way...
> 
> ... but over the wire from a test driver box elsewhere, tho, aside
> from ethernet flow control itself, where enabled, no.
> 
> ... but in that case you have a much lower inbound/outbound
> performance disparity in the general case to start with... which can
> still be quite high...
> 
>>
>> Any idea how that works with codel?
> 
> Beautifully.
> 
> For responsive TCP flows. It immediately reduces the window without a RTT.
> 
>> Thanks,
>> Ben
>>
>> --
>> Ben Greear <greearb@candelatech.com>
>> Candela Technologies Inc  http://www.candelatech.com
> 
> 
> 
> --
> Dave Täht
> Let's go make home routers and wifi faster! With better software!
> http://blog.cerowrt.org
> _______________________________________________
> Make-wifi-fast mailing list
> Make-wifi-fast@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/make-wifi-fast
> 



_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

  reply	other threads:[~2016-05-01 14:47 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-01  3:41 fq_codel_drop vs a udp flood Dave Taht
2016-05-01  4:46 ` [Make-wifi-fast] " Jonathan Morton
2016-05-01  5:08 ` Ben Greear
2016-05-01  5:23   ` Dave Taht
2016-05-01 14:47     ` dpreed [this message]
2016-05-02 14:03       ` [Make-wifi-fast] " Roman Yeryomin
2016-05-02 18:40         ` Dave Taht
2016-05-05 13:55           ` Roman Yeryomin
2016-05-05 14:55             ` Roman Yeryomin
2016-05-02 19:47         ` David Lang
2016-05-01 17:59 ` [Codel] " Eric Dumazet
2016-05-01 18:20   ` Jonathan Morton
2016-05-01 18:46     ` Eric Dumazet
2016-05-01 19:55       ` Eric Dumazet
2016-05-02  7:47         ` Jesper Dangaard Brouer
2016-05-01 20:35       ` Jonathan Morton
2016-05-01 20:55         ` Eric Dumazet
2016-05-02 14:18           ` Roman Yeryomin
2016-05-02 15:07             ` Eric Dumazet
2016-05-02 15:43               ` Roman Yeryomin
2016-05-02 16:14                 ` Eric Dumazet
2016-05-02 17:08                   ` Dave Taht
2016-05-02 17:44                     ` Eric Dumazet
2016-05-05 14:32                     ` Roman Yeryomin
2016-05-05 14:53                   ` Roman Yeryomin
2016-05-05 15:32                     ` Dave Taht
2016-05-05 16:07                       ` Roman Yeryomin
2016-05-05 16:59                         ` Jonathan Morton
2016-05-05 17:39                           ` Roman Yeryomin
2016-05-05 18:16                             ` Dave Taht
2016-05-05 18:33                           ` Dave Taht
2016-05-05 16:12                     ` Eric Dumazet
2016-05-05 16:25                       ` Roman Yeryomin
2016-05-05 16:42                         ` Roman Yeryomin
2016-05-06 10:55                           ` Roman Yeryomin
2016-05-05 19:23                         ` Eric Dumazet
2016-05-05 19:41                           ` Dave Taht
2016-05-06  8:41                             ` moeller0
2016-05-06 11:33                               ` Jesper Dangaard Brouer
2016-05-06 11:46                                 ` moeller0
2016-05-06 13:25                                   ` Eric Dumazet
2016-05-06 15:25                                     ` moeller0
2016-05-06 15:58                                       ` Eric Dumazet
2016-05-06 16:30                                         ` moeller0
2016-05-06 15:55                                     ` [PATCH net-next] fq_codel: add memory limitation per queue Eric Dumazet
2016-05-09  3:49                                       ` David Miller
2016-05-09  4:14                                       ` Cong Wang
2016-05-09  4:31                                         ` Eric Dumazet
2016-05-09  5:07                                           ` Cong Wang
2016-05-09 14:26                                             ` Eric Dumazet
2016-05-10  4:34                                               ` Cong Wang
2016-05-10  4:45                                                 ` Eric Dumazet
2016-05-10  4:57                                                   ` Cong Wang
2016-05-10  5:10                                                     ` Eric Dumazet
2016-05-16  1:16                                       ` [PATCH net-next] fq_codel: fix memory limitation drift Eric Dumazet
2016-05-17  1:57                                         ` David Miller
2016-05-06  9:42                           ` OpenWRT wrong adjustment of fq_codel defaults (Was: fq_codel_drop vs a udp flood) Jesper Dangaard Brouer
2016-05-06  9:42                             ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Jesper Dangaard Brouer
2016-05-06 12:47                             ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Jesper Dangaard Brouer
2016-05-06 12:47                               ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Jesper Dangaard Brouer
2016-05-06 18:43                               ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-06 18:43                                 ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-06 18:56                                 ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-06 18:56                                   ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-06 19:43                                   ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Dave Taht
2016-05-06 19:43                                     ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Dave Taht
2016-05-15 22:34                                     ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-15 22:34                                       ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-15 23:07                                       ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Eric Dumazet
2016-05-15 23:07                                         ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Eric Dumazet
2016-05-15 23:27                                         ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-15 23:27                                           ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-16  8:12                                       ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " David Lang
2016-05-16  8:12                                         ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " David Lang
2016-05-16  8:26                                         ` Roman Yeryomin
2016-05-16  8:26                                           ` Roman Yeryomin
2016-05-16  8:46                                           ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " David Lang
2016-05-16  8:46                                             ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " David Lang
2016-05-16 10:34                                             ` [OpenWrt-Devel] [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " Sebastian Moeller
2016-05-16 10:34                                               ` [OpenWrt-Devel] [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Sebastian Moeller
2016-05-16  8:14                                       ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-16  8:14                                         ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-16 14:23                                         ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " Eric Dumazet
2016-05-16 14:23                                           ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Eric Dumazet
2016-05-16 16:04                                         ` Dave Taht
2016-05-16 16:04                                           ` Dave Taht
2016-05-16 19:46                                           ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-16 19:46                                             ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-07  9:57                             ` Kevin Darbyshire-Bryant
2016-05-15 22:47                               ` Roman Yeryomin
2016-05-15 22:47                                 ` Roman Yeryomin
2016-05-03  2:26     ` [Codel] fq_codel_drop vs a udp flood Dave Taht
2016-05-03  5:21       ` Dave Taht
2016-05-03 12:39         ` Agarwal, Anil
2016-05-03 12:50           ` Agarwal, Anil
2016-05-03 13:35             ` Eric Dumazet
2016-05-03 15:37               ` Agarwal, Anil
2016-05-03 17:37               ` Dave Taht
2016-05-03 17:54                 ` Eric Dumazet
2016-05-03 18:11                   ` Dave Taht
2016-05-03 13:20       ` Kevin Darbyshire-Bryant
2016-05-01 18:26   ` Dave Taht
2016-05-01 22:30     ` Eric Dumazet
2016-05-02 14:09   ` Roman Yeryomin
2016-05-02 15:04     ` Eric Dumazet
2016-05-02 15:42       ` Roman Yeryomin
2016-05-02 13:47 ` [Make-wifi-fast] " Roman Yeryomin
2016-05-02 15:01   ` Eric Dumazet

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=1462114043.512818296@apps.rackspace.com \
    --to=dpreed@reed.com \
    --cc=ath10k@lists.infradead.org \
    --cc=codel@lists.bufferbloat.net \
    --cc=dave.taht@gmail.com \
    --cc=greearb@candelatech.com \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.