From: David Lang <david@lang.hm>
To: Jonathan Morton <chromatix99@gmail.com>
Cc: Rich Brown <richb.hanover@gmail.com>,
cerowrt-devel@lists.bufferbloat.net,
make-wifi-fast@lists.bufferbloat.net
Subject: Re: [Make-wifi-fast] [Cerowrt-devel] [tsvwg] Comments on draft-szigeti-tsvwg-ieee-802-11e
Date: Fri, 7 Aug 2015 13:03:23 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.02.1508071245480.2597@nftneq.ynat.uz> (raw)
In-Reply-To: <6E08E48D-5D53-48E5-B088-2D1DB5E566AD@gmail.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 3553 bytes --]
On Fri, 7 Aug 2015, Jonathan Morton wrote:
>> On 7 Aug, 2015, at 15:22, Rich Brown <richb.hanover@gmail.com> wrote:
>>
>> - 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.
>
> There’s one big flaw with this: if packets are available for multiple
> destinations, fq_codel will generally give you a variety pack of packets for
> each of them. But a wifi TXOP is for a single destination, so only some of
> the packets would be eligible for the same aggregate frame.
>
> So what’s needed is a way for the wifi driver to tell the queue that it wants
> packets for the *same* destination as it’s transmitting to.
how about when the queue hands packets to the wifi driver, it hands all packets
to that same destination, no matter where they are in the queue (up to a max
size, and the queue may adjust that max size within a range for fairness)
>> - 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
>
> This is hard to guarantee in software in a general-purpose OS.
you really want to have the pckets assembled and ready to go rather than trying
to pull them at that point.
But what happens right now is that the queue hands packets to the wifi driver,
then the wifi driver has it's own queues that it uses to gather the packets for
each destination.
If we can find a way to make it reasonable to short-circuit the wifi driver
queues by making it efficient to work from the main network queues, we can work
to eliminate the second layer of queues.
so thinking about the requierments from the driver point of view
It needs to be able to pull a chunk of data to transmit (multple packets), it
isn't going to know very much ahead of time what speed it's going to use to talk
to this destination, and this is going to drastically affect how long it takes
to transmit the bits. so when it grabs data from the queue, it needs to feed
back to the queue the transmit time for those bits, and the queue uses that
instead of the count of bits to determine fairness.
The queue will be deciding fairness based on whois behind in their 'fair share'
of transmit time. So the wifi driver isn't going to know when it asks for the
net chunk of data to transmit, who it will be going to. So it will need to get
the destination, see the speed to use to that destination, pass the speed to
a calculation for how much data to send, then grab that much data (rounded to a
packet boundry)
Is this sort of logic useful anywhere other than in wifi?
Wifi is the only place I know of where the transmit bit rate is going to vary
depending on the next hop address.
I know that the inter-packet gap defined for ethernet can amount to a large
percentage of bandwidth at high speeds. Can multiple packets to the same
destination be combined with a smaller gap between packets? (the gap timing was
based on the speed-of-light time needed for the entire shared bus to quiece back
in the 10mb half-duplex hub days). If so, then there's value in bundling packets
to the same destination together.
If this sort of logic is not useful anywhere other than in wifi, maby the right
answer is to have a way of short-circuiting the main OS queues and have a wifi
specific queue that can directly look at the per-client speeds/etc when deciding
who goes next and how much to dispatch?
David Lang
next prev parent reply other threads:[~2015-08-07 20:03 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
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 [this message]
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=alpine.DEB.2.02.1508071245480.2597@nftneq.ynat.uz \
--to=david@lang.hm \
--cc=cerowrt-devel@lists.bufferbloat.net \
--cc=chromatix99@gmail.com \
--cc=make-wifi-fast@lists.bufferbloat.net \
--cc=richb.hanover@gmail.com \
/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