Lets make wifi fast again!
 help / color / mirror / Atom feed
From: Rich Brown <richb.hanover@gmail.com>
To: Mikael Abrahamsson <swmike@swm.pp.se>
Cc: make-wifi-fast@lists.bufferbloat.net, dpreed@reed.com,
	cerowrt-devel@lists.bufferbloat.net
Subject: Re: [Make-wifi-fast] [Cerowrt-devel] [tsvwg] Comments on draft-szigeti-tsvwg-ieee-802-11e
Date: Fri, 7 Aug 2015 09:22:04 -0400	[thread overview]
Message-ID: <DC3F5F31-B8BC-481F-A5DD-14D24874E776@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1508071020220.11810@uplift.swm.pp.se>

Here's where I display my massive ignorance of how Linux networking/drivers work. This feels like a place to apply the Nagle algorithm... Maybe everyone already understands this, but, isn't this scheme something like what we're looking for? 

- Initial state: all queues (fq_codel and wifi driver) are empty.

- A packet arrives at fq_codel, it's placed in the proper queue for its flow, and the wifi driver gets tapped on the shoulder that there's something to send.

- Sometime later, the wifi driver has bid for and received an opportunity to transmit. 

- At that time, the wifi driver requests packets from fq_codel until a) the the fq_codel queues are empty, or b) the wifi frame is full. In either case, the wifi driver sends what it has.

- If more packets remain in the fq_codel queue(s), the wifi driver gets tapped on the shoulder again to start another transmission. 

Good Attributes:

- The wifi driver has no "queued packets" per se - only those it pulled from fq_codel for immediate transmission.

- Once the transmit opportunity has come around, it's a matter of microseconds (I assume) to pull in a wifi frame's worth of packets from fq_codel

- A singleton packet (e.g., one widely separated in time from all the other traffic) gets sent as soon as it can, without waiting in hopes "that more traffic will arrive" This leaves the wifi utilization unchanged (since the singleton packet would have to be sent anyway), but avoids the delay for that particular flow.

Downsides:

- Most likely, "It doesn't work that way". :-)

- The wifi driver would probably have to queue the single last-retrieved packet from fq_codel when it doesn't fit in the wifi frame. But this would be an immediate signal to bid for another transmit opportunity.

Rich


On Aug 7, 2015, at 4:28 AM, Mikael Abrahamsson <swmike@swm.pp.se> wrote:

> On Fri, 31 Jul 2015, dpreed@reed.com wrote:
> 
>> So ignore the hardware folks who can't think about the fact that their link is embedded in a context that the link doesn't understand at all! Don't let them convince you to queue things, especially lower priority things....  instead push congestion back to the source!!!
> 
> So while I think you have a point, I don't see how this can be achieved (at most 1 packet in the queue) on something like wifi where there are retransmits and an onloaded link can have between a few ms and all of a sudden have 50-100ms of delay, and then get back to a few ms again). If you screetch to a halt when you get this "congestion" (that isn't even caused by traffic but by RF environment), if you have packets in the buffer and feedback the sender to stop, there after the RF problem has past, buffer is emptied, but now basically all traffic has screetched to a halt.
> 
> So a compromise must be achieved somewhere, so that 300ms RTT flows get decent performance without affecting realtime flows. I don't understand how both goals of low delay/no buffering and decent high-RTT flow speed, can work without some kind of scheme where different flows are put in different queues.
> 
> -- 
> Mikael Abrahamsson    email: swmike@swm.pp.se
> _______________________________________________
> Cerowrt-devel mailing list
> Cerowrt-devel@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel


  reply	other threads:[~2015-08-07 13:22 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E9C29602-7F1D-43AD-980C-050B58FA0AC6@iii.ca>
2015-07-23  6:48 ` [Make-wifi-fast] Fwd: " Dave Taht
2015-07-23  7:44   ` [Make-wifi-fast] [Cerowrt-devel] " Jonathan Morton
2015-07-23  7:49     ` Alan Jenkins
2015-07-24 10:38       ` Sebastian Moeller
2015-07-30 20:29   ` [Make-wifi-fast] [Cerowrt-devel] " Jonathan Morton
2015-07-30 21:35     ` Sebastian Moeller
2015-07-30 21:56       ` Jonathan Morton
2015-07-31  3:27         ` Sebastian Moeller
2015-07-31 16:47           ` dpreed
2015-07-31 17:04             ` Jonathan Morton
2015-07-31 20:23               ` Michael Richardson
2015-07-31 20:45                 ` Jonathan Morton
2015-08-03 15:44               ` dpreed
2015-08-03 16:14                 ` David Lang
2015-08-03 23:37                   ` dpreed
2015-08-03 23:52                     ` Jonathan Morton
2015-08-04  0:13                     ` David Lang
2015-08-04 16:55                       ` dpreed
2015-08-04  3:20               ` Simon Barber
2015-08-07  8:28             ` Mikael Abrahamsson
2015-08-07 13:22               ` Rich Brown [this message]
2015-08-07 13:28                 ` Jonathan Morton
2015-08-07 17:35                   ` Rich Brown
2015-08-08 14:25                     ` Simon Barber
2015-08-07 20:03                   ` David Lang
2015-08-07 21:46                     ` dpreed
2015-08-07 22:31                       ` David Lang
2015-08-08 20:46                         ` dpreed
2015-08-08 23:23                           ` David Lang
2015-08-09 19:31                             ` Jonathan Morton
2015-08-09 20:27                               ` Simon Barber
2015-08-09 21:43                                 ` David Lang
2015-08-10 14:00                                   ` Simon Barber
2015-08-10 18:44                                     ` David Lang
2015-08-10 19:21                                       ` Jonathan Morton
2015-08-10 21:18                                       ` Simon Barber
2015-08-09 21:50                               ` David Lang
2015-08-10  5:39                                 ` Mikael Abrahamsson
2015-08-13 21:48                               ` David Lang
2015-08-13 22:14                                 ` Jonathan Morton
2015-08-13 22:25                                   ` David Lang
2015-08-13 22:30                                     ` Jonathan Morton
2015-08-09 22:09                           ` David Lang
2015-08-10 13:48                         ` Simon Barber
2015-08-04  3:26       ` Simon Barber
2015-08-04  3:16     ` Simon Barber

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

  List information: https://lists.bufferbloat.net/postorius/lists/make-wifi-fast.lists.bufferbloat.net/

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

  git send-email \
    --in-reply-to=DC3F5F31-B8BC-481F-A5DD-14D24874E776@gmail.com \
    --to=richb.hanover@gmail.com \
    --cc=cerowrt-devel@lists.bufferbloat.net \
    --cc=dpreed@reed.com \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    --cc=swmike@swm.pp.se \
    /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