From: Simon Barber <simon@superduper.net>
To: David Lang <david@lang.hm>, dpreed@reed.com
Cc: make-wifi-fast@lists.bufferbloat.net,
cerowrt-devel@lists.bufferbloat.net
Subject: Re: [Cerowrt-devel] [Make-wifi-fast] [tsvwg] Comments on draft-szigeti-tsvwg-ieee-802-11e
Date: Mon, 10 Aug 2015 06:48:04 -0700 [thread overview]
Message-ID: <55C8AB94.1000302@superduper.net> (raw)
In-Reply-To: <alpine.DEB.2.02.1508071504370.2597@nftneq.ynat.uz>
On 8/7/2015 3:31 PM, David Lang wrote:
> On Fri, 7 Aug 2015, dpreed@reed.com wrote:
>
>> On Friday, August 7, 2015 4:03pm, "David Lang" <david@lang.hm> said:
>>>
>>
>>> Wifi is the only place I know of where the transmit bit rate is
>>> going to vary
>>> depending on the next hop address.
>>
>>
>> This is an interesting core issue. The question is whether
>> additional queueing helps or hurts this, and whether the MAC protocol
>> of WiFi deals well or poorly with this issue. It is clear that this
>> is a peculiarly WiFi'ish issue.
>>
>> It's not clear that the best transmit rate remains stable for very
>> long, or even how to predict the "best rate" for the next station
>> since the next station is one you may not have transmitted to for a
>> long time, so your "best rate" information is old.
>
> I wasn't even talking about the stability of the data rate to one
> destination. I was talking about the fact that you may have a 1.3Gb
> connection to system A (a desktop with a -ac 3x3 radio) and a 1Mb
> connection to machine B (an IoT 802.11b thermostat)
>
> trying to do BQL across 3+ orders of magnatude in speed isn't going to
> work wihtout taking the speed into account.
>
> Even if all you do is estimate with the last known speed, you will do
> better than ignorming the speed entirely.
I have been a proponent of Time Queue Limits (TQL) for wifi for a long time!
Simon
>
> If the wifi can 'return' data to the queue when the transmission
> fails, it can then fetch less data when it 're-transmits' the data at
> a lower speed.
>
>> Queueing makes information about the channel older, by binding it
>> too early. Sending longer frames means retransmitting longer frames
>> when they don't get through, rather than agilely picking a better
>> rate after a few bits.
>
> As I understand wifi, once a transmission starts, it must continue at
> that same data rate, it can't change mid-transmission (and tehre would
> be no way of getting feedback in the middle of a transmission to know
> that it would need to change)
>
>> The MAC protocol really should give the receiver some opportunity to
>> control the rate of the next packet it gets (which it can do because
>> it can measure the channel from the transmitter to itself, by
>> listening to prior transmissions). Or at least to signal channel
>> changes that might require a new signalling rate.
>>
>> This suggests that a transmitter might want to "warn" a receiver that
>> some packets will be coming its way, so the receiver can preemptively
>> change the desired rate. Thus, perhaps an RTS-CTS like mechanism can
>> be embedded in the MAC protocol, which requires that the device "look
>> ahead" at the packets it might be sending.
>
> the recipient will receive a signal at any data rate, you don't have
> to tell it ahead of time what rate is going to be sent. If it's being
> sent with a known encoding, it will be decoded.
>
> The sender picks the rate based on a number of things
>
> 1. what the other end said they could do based on the mode that they
> are connected with (b vs g vs n vs bonded n vs ac vs 2x2 ac etc)
>
> 2. what has worked in the past. (with failed transmissions resulting
> in dropping the rate)
>
> there may be other data like last known signal strength in the mix as
> well.
>
>
>> On the other hand, that only works if the transmitter deliberately
>> congests itself so that it has a queue built up to look at.
>
> no, the table of associated devices keeps track of things like the
> last known signal strength, connection mode, etc. no congestion needed.
>
>> The tradeoffs are not obvious here at all. On the other hand, one
>> could do something much simpler - just have the transmitter slow down
>> to the worst-case rate required by any receiving system.
>
> that's 1Mb/sec. This is the rate used for things like SSID broadcasts.
>
> Once a system connects, you know from the connection handshake what
> speeds could work. no need to limit yourself the the minimum that they
> all can know at that point.
>
>> As the number of stations in range gets larger, though, it seems
>> unlikely that "batching" multiple packets to the same destination is
>> a good idea at all - because to achieve that, one must have
>> n_destinations * batch_size chunks of data queued in the system as a
>> whole, and that gets quite large. I suspect it would be better to
>> find a lower level way to just keep the packets going out as fast as
>> they arrive, so no clog occurs, and to slow down the stuff at the
>> source as quickly as possible.
>
> no, no, no
>
> you are falling into the hardware designer trap that we just talked
> about :-)
>
> you don't wait for the buffers to fill and always send full buffers,
> you oppertunisticaly send data up to the max size.
>
> you do want to send multiple packets if you have them waiting. Because
> if you can send 10 packets to machine A and 10 packets to machine B in
> the time that it would take to send one packet to A, one packet to B,
> a second packet to A and a second packet to B, you have a substantial
> win for both A and B at the cost of very little latency for either.
>
> If there is so little traffic that sending the packets out one at a
> time doesn't generate any congeston, then good, do that [1]. but when
> you max out the airtime, getting more data through in the same amount
> of airtime by sending larger batches is a win
>
> [1] if you are trying to share the same channel with others, this may
> be a problem as it uses more airtime to send the same amount of data
> than always batching. But this is a case of less than optimal network
> design ;-)
>
>> [one should also dive into the reason for maintaining variable rates
>> - multipath to a particular destination may require longer symbols
>> for decoding without ISI. And when multipath is involved, you may
>> have to retransmit at a slower rate. There's usually not much "noise"
>> at the receiver compared to the multipath environment. (one of the
>> reasons why mesh can be a lot better is that shorter distances have
>> much less multipath effect, so you can get higher symbol rates by
>> going multi-hop, and of course higher symbol rates compensate for
>> more airtime occupied by a packet due to repeating).]
>
> distance, interference, noise, etc are all variable in wifi. As a
> result, you need to adapt.
>
> The problem is that the adaptation is sometimes doing the wrong thing.
>
> simlifying things a bit:
>
> If your data doesn't get through at rate A, is the right thing to drop
> to rate A/2 and re-transmit?
>
> If the reason it didn't go through is that the signal is too weak for
> the rateA encoding, then yes.
>
> If the reason it didn't go through is that your transmission was
> stepped on by something you can't hear (and can't hear you), but the
> recipient can here, then slowing down means that you take twice the
> airtime to get the message through, and you now have twice the chance
> of being stepped on again. Repeat and you quickly get to everyone
> broadcasting at low rates and nothing getting through.
>
>
> This is the key reason that dense wifi networks 'fall off the cliff'
> when they hit saturation, the backoff that is entirely correct for a
> weak-signal, low usage situations is entirely wrong in dense
> environments.
>
> David Lang
> _______________________________________________
> Make-wifi-fast mailing list
> Make-wifi-fast@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/make-wifi-fast
prev parent reply other threads:[~2015-08-10 13:48 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <E9C29602-7F1D-43AD-980C-050B58FA0AC6@iii.ca>
2015-07-23 6:48 ` [Cerowrt-devel] Fwd: " Dave Taht
2015-07-23 7:44 ` Jonathan Morton
2015-07-23 7:49 ` Alan Jenkins
2015-07-24 10:38 ` [Cerowrt-devel] [Make-wifi-fast] " Sebastian Moeller
2015-07-30 20:29 ` [Cerowrt-devel] " Jonathan Morton
2015-07-30 21:35 ` [Cerowrt-devel] [Make-wifi-fast] " 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-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
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 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 [this message]
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/cerowrt-devel.lists.bufferbloat.net/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55C8AB94.1000302@superduper.net \
--to=simon@superduper.net \
--cc=cerowrt-devel@lists.bufferbloat.net \
--cc=david@lang.hm \
--cc=dpreed@reed.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox