ACK Timeouts and the effects on distance links
All 802.11 a/b/g wireless devices use a number of time constants, defined by the IEEE specifications, to sense other carriers using the wireless media and avoid collisions (compared to 802.3 which only senses collisions) as well as for retransmission of lost frames. The important constants to consider are Slottime, CTS timeout and ACK timeout. Slottime is more important for collision avoidance when multiple stations are connected, or when one is trying to simulate full duplex communication, while ACK timeouts are more important for point to point communication. Other constants that may restrain the maximum link distance are SIFS (Short Inter Frame Spacing), DIFS (Distributed IFS) and PIFS (Point Coordination IFS.) DIFS is the amount of time a station must sense a clear radio before beginning a new transmission sequence. SIFS is the amount of time a station must wait before sending or beginning to receive a RTS, CTS or ACK frame. PIFS is the DIFS for the access point in a special access method known as Point Coordination Function. The times are defined such that the RTS, CTS and ACK frames are given a higher priority (ie once a packet transmission sequence has begun, the station holds onto the channel until it is finished)
In 802.11b, the constants are mandated by IEEE as follows:
- Slottime = 20 Âµs
- SIFS = 10 Âµs
- PIFS = SIFS + Slottime = 30 Âµs
- DIFS = SIFS + 2 x Slottime = 50 Âµs
- Slottime = 9 Âµs
- SIFS = 10 Âµs
- DIFS = SIFS + 2 x Slottime = 28 Âµs
- Slottime = 9 Âµs
- SIFS = 16 Âµs
- DIFS = SIFS + 2 x Slottime = 34 Âµs
Note: DIFS/SIFS/PIFS are used for physical layer carrier sensing while the MAC layer performs the collision detection using CTS and ACK timeouts. Default CTS and ACK timeouts vary between manufacturers.
Normal Transmission flow without RTS/CTS handshaking
Sender: Wait DIFS, Send Data, Wait SIFS, Listen for and receive ACK (until maximum ACK timeout), Repeat
Receiver: Listen for and receive Data,Wait SIFS, Send ACK, Wait DIFS
Distance Limitations in 802.11b
Optimum ACK Timeout, Slottime and DIFS all depend on Air Propagation Time in some way. The IEEE standard defines Air Propagation Time as 1 Âµs Â±(10% SIFS.) Radio waves propagate at approximately 300 meters per Âµs.
ACK Timeout: Clearly if the ACK timeout is shorter than the time it takes for the end of the last data packet (+ SIFS) to propagate to the receiver + the start of the ACK for that packet to propagate back to the sender, then the sending MAC will assume that the packet has been lost and will unnecessarily retransmit the data packet. The retransmitted packet will end up colliding with the ACK that is on its way back, inducing the back-off part of the protocol thus reducing throughput. If, conversely, the ACK timeout is set too long, the transmitter waits unncesessarily long before retransmitting any lost frames and thus reduces the throughput of the link (more important as the bit error of the environment increases.) Similar conclusions can be drawn about the CTS timeout, however RTS/CTS is only for reducing collisions with hidden nodes and can be turned off in the majority of cases. Most implementations assume the IEEE recommended one-way Air Propagation Time of 1 Âµs, thus tune the ACK Timeout of their devices to 300 meters. This is the maximum distance that high throughput can be achieved between a local network of IEEE 802.11b compliant devices out of the box. The links will still work over longer distances, but throughput will drop as the distance increases.
Example: With radio waves propagating at an approximate speed of 300 meters per microsecond, a 3000 m link would require an Air Propagation Time of 10 Âµs (9 Âµs more than usual.) The ACK Timeout must account for a round trip propagation, therefore for a 3000 m link to achieve maximum throughput, another 18 Âµs must be added to a standard ACK Timeout. This maximum throughput will be slightly less than can be achieved at close range, but will be much more than if the ACK Timeout is not changed.
Slottime: A station is only allowed to transmit at the beginning of the slottime, so this time should not end before the signal reaches the destination. This gives a maximum distance of 20 Âµs x 300 m / Âµs = 6000 meters. Assuming that the ACK timeouts have been increased accordingly, this is the maximum distance between any station in a point-to-multipoint environment (assuming no hidden stations) without incurring heavy exponential backoff.
DIFS: A station must wait DIFS before initiating a new transfer, in other words, for 802.11b, the stations have 50 Âµs to sense the channel to avoid collision with a frame sent from the furthest node. This means the maximum distance that the furthest node can be is 300 m / Âµs x 50 Âµs = 15000 meters. Assuming that the ACK timeouts have been increased accordingly, this is the maximum point-to-point distance before throughput drops dramatically without the slottime (DIFS is based on slottime) being changed.
Long distance links in 802.11g/a
The principles are the same, but the numbers are different. The default timings are much more strict, so for any reasonable distance link the ACK timeout and Slottime will probably need to be changed, even for point-to-point links. Many Ethernet bridge/gateway devices provide little or no way to change this, however certain miniPCI adapters such as the CM9, Senao and SuperRange cards have driver support in BSD and Linux to alter these settings. The possible throughput that can be achieved when properly tweaked, though not full theoretical rate, is much higher than 802.11b can achieve over the same distance and is worth the effort.
Changing ACK timeout and Slottime
For every further 300 meter increase in distance above 300 meters add 1 Âµs to the Slottime of your device, and 2 Âµs to the ACK timeout and CTS timeout.
Every station connected on the same channel should have the same time constants.
Use the furthest distance between any two nodes as the distance in your calculations.
For specific examples for popular operating systems and drivers please see http://www.air-stream.org/Change_ACK
ACK Timeout = Air Propagation Time (max) + SIFS + Time to transmit 14 byte ACK frame [14 * 8 / bitrate in Mbps] + Air Propagation Time (max)
Slottime = MAC and PHY delays + Air Propagation Time (max)
DIFS = SIFS + 2 * Slottime
Moderately long distance 802.11b links may work well “out of the box” due to the lax timings, and even more lenient MAC implementations by some manufacturers. With the right wireless card and some tweaking, 802.11b can maintain almost maximum theoretical throughput over very long distances and thus is the distance king.
However 802.11a is still the throughput king, but specialised cards that allow tweaking are certainly required for any distance links. Tweaking 802.11g requires a card that can be locked into 11g mode so that the slottime doesn’t keep reverting every time a 11b client tries to connect. 802.11a wins out over 802.11g because there are more non-overlapping channels in the 5.8 GHz spectrum, meaning most 11a links will more likely be able to maintain their high throughput.