<font face="times new roman" size="2"><p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;">David - I find it interesting that you think I am an idiot.  I design waveforms for radios, and am, among other things, a fully trained electrical engineer with deep understanding of information theory, EM waves, propagation, etc. as well as an Amateur Radio builder focused on building experimental radio network systems in the 5 GHz and 10 GHz Amateur Radio bands.</p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;">I know a heck of a lot about 802.11 PHY layer and modulation, propagation, etc., and have been measuring the signals in my personal lab, as well as having done so when I was teaching at MIT, working on cooperative network diversity protocols (physical layers for mesh cooperation in digital networks).</p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;">And I was there with Metcalfe and Boggs when they designed Ethernet's PHY and MAC, and personally worked on the protocol layers in what became the Token Ring standard as well - so I understand the backoff and other issues associated with LANs.  (I wrote an invited paper in IEEE Proceedings "An Introduction to Local Area Networks" that appeared in the same special issue as the Cerf and Kahn paper entitled "A Transmission Control Protocol" that described the first Internet protocol concept..)</p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;">I guess what I'm saying is not that I'm always correct - no one is, but I would suggest that it's worth considering that I might know a little more than most people about some things - especially the physical and MAC layers of 802.11, but also about the internal electronic design of radio transceivers and digital interfaces to them. From some of your comments below, I think you either misunderstood my point (my fault for not explaining it better) or are misinformed.</p>
<!--WM_COMPOSE_SIGNATURE_START--><!--WM_COMPOSE_SIGNATURE_END-->
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"><br />There's a lot of "folklore" out there about radio systems and WiFi that is quite wrong, and you seem to be quoting some of it - e.g. the idea that the 1 Mb/s waveform of 802.11b DSSS is somehow more reliable than the lowest-rate OFDM modulations, which is often false.  The 20 MHz-wide M0 modulation with 800ns GI gives 6.2 Mb/s and typically much more reliable than than the 802.11b standard 1 Mb/sec DSSS signals in normal environments, with typical receiver designs. It's not the case that beacon frames are transmitted at 1 Mb/sec. - that is only true when there are 802.11b stations *associated* with the access point (which cannot happen at 5 GHz). Nor is it true that the preamble for ERP frames is wastefully long. The preamble for an ERP (OFDM operation) frame is about 6 microseconds long, except in the odd case on 2.4GHz of compatibility-mode (OFDM-DSSS) operation, where the DSSS preamble is used.   The DSSS preamble is 72 usec. long, because 72 bits at 1 Mb/sec takes that long, but the ERP frame's preamble is much shorter.</p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;">In any case, my main points were about the fact that "channel estimation" is the key issue in deciding on a modulation to use (and MIMO settings to use), and the problem with that is that channels change characteristics quite quickly indoors! A spinning fan blade can create significant variation in the impulse response over a period of a couple milliseconds.  To do well on channel estimation to pick a high data rate, you need to avoid a backlog in the collection of outbound packets on all stations - which means minimizing queue buildup (even if that means sending shorter packets, getting a higher data rate will minimize channel occupancy).</p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;">Long frames make congested networks work badly - ideally there would only be one frame ready to go when the current frame is transmitted, but the longer the frame, the more likely more than one station will be ready, and the longer the frames will be (if they are being combined).  That means that the penalty due to, and frequency of, collisions where more than one frame are being sent at the same time grows, wasting airtime with collisions.  That's why CTS/RTS is often a good approach (the CTS/RTS frames are short, so a collision will be less wasteful of airtime).  But due to preamble size, etc., CTS/RTS can't be very short, so an alternative hybrid approach is useful (assume that all stations transmit CTS frames at the same time, you can use the synchronization acquired during the CTS to mitigate the need for a preamble on the packet sent after the RTS).   (One of the papers I did with my student Aggelos Bletsas on Cooperative Diversity uses CTS/RTS in this clever way - to measure the channel while acquiring it).</p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;"><br />On Friday, August 7, 2015 6:31pm, "David Lang" <david@lang.hm> said:<br /><br /></p>
<div id="SafeStyles1439061741">
<p style="margin:0;padding:0;font-family: 'times new roman'; font-size: 10pt; word-wrap: break-word;">> On Fri, 7 Aug 2015, dpreed@reed.com wrote:<br />> <br />> > On Friday, August 7, 2015 4:03pm, "David Lang" <david@lang.hm> said:<br />> >><br />> ><br />> >> Wifi is the only place I know of where the transmit bit rate is going to<br />> vary<br />> >> depending on the next hop address.<br />> ><br />> ><br />> > This is an interesting core issue. The question is whether additional<br />> > queueing helps or hurts this, and whether the MAC protocol of WiFi deals well<br />> > or poorly with this issue. It is clear that this is a peculiarly WiFi'ish<br />> > issue.<br />> ><br />> > It's not clear that the best transmit rate remains stable for very long, or<br />> > even how to predict the "best rate" for the next station since the next<br />> > station is one you may not have transmitted to for a long time, so your "best<br />> > rate" information is old.<br />> <br />> I wasn't even talking about the stability of the data rate to one destination. I<br />> was talking about the fact that you may have a 1.3Gb connection to system A (a<br />> desktop with a -ac 3x3 radio) and a 1Mb connection to machine B (an IoT 802.11b<br />> thermostat)<br />> <br />> trying to do BQL across 3+ orders of magnatude in speed isn't going to work<br />> wihtout taking the speed into account.<br />> <br />> Even if all you do is estimate with the last known speed, you will do better<br />> than ignorming the speed entirely.<br />> <br />> If the wifi can 'return' data to the queue when the transmission fails, it can<br />> then fetch less data when it 're-transmits' the data at a lower speed.<br />> <br />> > Queueing makes information about the channel older,<br />> > by binding it too early. Sending longer frames means retransmitting longer<br />> > frames when they don't get through, rather than agilely picking a better rate<br />> > after a few bits.<br />> <br />> As I understand wifi, once a transmission starts, it must continue at that same<br />> data rate, it can't change mid-transmission (and tehre would be no way of<br />> getting feedback in the middle of a transmission to know that it would need to<br />> change)<br />> <br />> > The MAC protocol really should give the receiver some opportunity to control<br />> > the rate of the next packet it gets (which it can do because it can measure<br />> > the channel from the transmitter to itself, by listening to prior<br />> > transmissions). Or at least to signal channel changes that might require a<br />> > new signalling rate.<br />> ><br />> > This suggests that a transmitter might want to "warn" a receiver that some<br />> > packets will be coming its way, so the receiver can preemptively change the<br />> > desired rate. Thus, perhaps an RTS-CTS like mechanism can be embedded in the<br />> > MAC protocol, which requires that the device "look ahead" at the packets it<br />> > might be sending.<br />> <br />> the recipient will receive a signal at any data rate, you don't have to tell it<br />> ahead of time what rate is going to be sent. If it's being sent with a known<br />> encoding, it will be decoded.<br />> <br />> The sender picks the rate based on a number of things<br />> <br />> 1. what the other end said they could do based on the mode that they are<br />> connected with (b vs g vs n vs bonded n vs ac vs 2x2 ac etc)<br />> <br />> 2. what has worked in the past. (with failed transmissions resulting in dropping<br />> the rate)<br />> <br />> there may be other data like last known signal strength in the mix as well.<br />> <br />> <br />> > On the other hand, that only works if the transmitter deliberately congests<br />> > itself so that it has a queue built up to look at.<br />> <br />> no, the table of associated devices keeps track of things like the last known<br />> signal strength, connection mode, etc. no congestion needed.<br />> <br />> > The tradeoffs are not obvious here at all. On the other hand, one could do<br />> > something much simpler - just have the transmitter slow down to the<br />> worst-case<br />> > rate required by any receiving system.<br />> <br />> that's 1Mb/sec. This is the rate used for things like SSID broadcasts.<br />> <br />> Once a system connects, you know from the connection handshake what speeds could<br />> work. no need to limit yourself the the minimum that they all can know at that<br />> point.<br />> <br />> > As the number of stations in range gets larger, though, it seems unlikely<br />> that<br />> > "batching" multiple packets to the same destination is a good idea at all -<br />> > because to achieve that, one must have n_destinations * batch_size chunks of<br />> > data queued in the system as a whole, and that gets quite large. I suspect<br />> it<br />> > would be better to find a lower level way to just keep the packets going out<br />> > as fast as they arrive, so no clog occurs, and to slow down the stuff at the<br />> > source as quickly as possible.<br />> <br />> no, no, no<br />> <br />> you are falling into the hardware designer trap that we just talked about :-)<br />> <br />> you don't wait for the buffers to fill and always send full buffers, you<br />> oppertunisticaly send data up to the max size.<br />> <br />> you do want to send multiple packets if you have them waiting. Because if you<br />> can send 10 packets to machine A and 10 packets to machine B in the time that it<br />> would take to send one packet to A, one packet to B, a second packet to A and a<br />> second packet to B, you have a substantial win for both A and B at the cost of<br />> very little latency for either.<br />> <br />> If there is so little traffic that sending the packets out one at a time doesn't<br />> generate any congeston, then good, do that [1]. but when you max out the<br />> airtime, getting more data through in the same amount of airtime by sending<br />> larger batches is a win<br />> <br />> [1] if you are trying to share the same channel with others, this may be a<br />> problem as it uses more airtime to send the same amount of data than always<br />> batching. But this is a case of less than optimal network design ;-)<br />> <br />> > [one should also dive into the reason for maintaining variable rates -<br />> > multipath to a particular destination may require longer symbols for decoding<br />> > without ISI. And when multipath is involved, you may have to retransmit at a<br />> > slower rate. There's usually not much "noise" at the receiver compared to the<br />> > multipath environment. (one of the reasons why mesh can be a lot better is<br />> > that shorter distances have much less multipath effect, so you can get higher<br />> > symbol rates by going multi-hop, and of course higher symbol rates compensate<br />> > for more airtime occupied by a packet due to repeating).]<br />> <br />> distance, interference, noise, etc are all variable in wifi. As a result, you<br />> need to adapt.<br />> <br />> The problem is that the adaptation is sometimes doing the wrong thing.<br />> <br />> simlifying things a bit:<br />> <br />> If your data doesn't get through at rate A, is the right thing to drop to rate<br />> A/2 and re-transmit?<br />> <br />> If the reason it didn't go through is that the signal is too weak for the rateA<br />> encoding, then yes.<br />> <br />> If the reason it didn't go through is that your transmission was stepped on by<br />> something you can't hear (and can't hear you), but the recipient can here, then<br />> slowing down means that you take twice the airtime to get the message through,<br />> and you now have twice the chance of being stepped on again. Repeat and you<br />> quickly get to everyone broadcasting at low rates and nothing getting through.<br />> <br />> <br />> This is the key reason that dense wifi networks 'fall off the cliff' when they<br />> hit saturation, the backoff that is entirely correct for a weak-signal, low<br />> usage situations is entirely wrong in dense environments.<br />> <br />> David Lang<br />> </p>
</div></font>