Networking · Wireless Networking
Airtime Fairness and Why One Slow Client Halves a Cell
How per-station throughput diverges from per-station airtime, how frame duration is computed from rate and size, and what a scheduler can do about it.
The medium is shared, so the natural fairness metric is time, not bytes. A station that transmits for a millisecond has consumed a millisecond that no other station could use. If two stations each get half the airtime but one of them transmits at 6 Mbit/s and the other at 300 Mbit/s, the first moves about 375 kilobytes per second and the second about 19 megabytes per second. Neither station is malfunctioning. The allocation rule simply divided the wrong quantity.
Frame duration is the currency
The duration of a frame on the air follows from its size and the rate at which it is modulated, plus fixed overheads. For a 1500-byte payload, 12,000 bits:
- at 6 Mbit/s, the payload occupies 2,000 microseconds;
- at 54 Mbit/s, 222 microseconds;
- at 300 Mbit/s with two spatial streams, roughly 40 microseconds.
The overheads do not scale. A preamble and header occupy tens of microseconds at the lowest rate in the basic set, the acknowledgement is a 14-byte frame sent at a low rate, and the interframe spaces are wall-clock constants: 16 microseconds for SIFS and 34 for DIFS in the 5 GHz OFDM PHY. Adding aggregation changes the shape — many payloads per preamble — but the payload time still dominates at low rates.
The ratio between the slow and fast case for the same payload is over an order of magnitude. A cell in which every station wins the same number of transmission opportunities gives the slow station the same share of frames and, because each of its frames occupies the medium far longer, almost all of the time. Aggregate cell throughput is then the harmonic mean of the stations’ rates, not the arithmetic mean: with two stations at 300 and 6 Mbit/s sending frames of the same size, the cell delivers roughly 11.8 Mbit/s of payload rather than 153.
That harmonic-mean result is the whole problem in one line. Adding a slow station to a fast cell does not average the two; it drags the cell toward the slow rate.
Why the slow station is slow
Several causes produce the same symptom and need different treatments.
The station is far away, so its signal-to-noise ratio supports only a low modulation. This is a coverage problem. Nothing the AP does at the MAC layer makes the channel better; the options are to move the station to a closer AP, to narrow the channel so the same power is concentrated in fewer hertz, or to accept the cost.
The station has a poor radio, typically a small antenna and a low transmit power. The uplink is weak even when the downlink is fine, and because the two directions share the medium, the uplink’s long frames consume cell airtime just as the downlink’s would.
The station is running a rate controller that has settled too low. This is the pathological case, because the cause is a policy in the station’s own driver, and the AP cannot change it. A station that probes conservatively and steps down on any lost acknowledgement will sit at a low rate in a busy cell where losses are collisions rather than fades.
A different case is often misdiagnosed as slowness: a station that is asleep. A device in power-save mode wakes for beacons, retrieves buffered frames, and sleeps again. It consumes little airtime and delivers little throughput, and its absence from the air is not a fairness problem at all.
What the AP can control
The AP controls two things directly: the order in which it serves its own downlink queue, and the transmit opportunity it grants to stations for uplink.
Downlink scheduling is the easier half. An AP with a queue of frames for several stations can choose which to send first, and a scheduler that accounts for airtime rather than bytes will prefer the station whose frame is shorter. Concretely, when a 1500-byte frame to a fast station takes 40 microseconds and one to a slow station takes 2,000, serving the slow station once for every fifty fast frames gives each roughly half the time. A byte-based round-robin would serve them alternately and give the slow station fifty times its share of time.
Uplink is harder because the AP does not transmit the frames; it grants permission. The 802.11e quality-of-service amendment introduced the transmit opportunity, a bounded interval during which a station may transmit a burst without recontending, and the enhanced distributed channel access parameters that set each access category’s window and interframe spacing. An AP can steer uplink airtime by advertising EDCA parameter sets per access category, but the contention procedure is fundamentally distributed: a station that wins the medium may use its whole TXOP regardless of how slow it is.
Polling changes that, and the contention procedure it replaces is the one described in DCF backoff and the contention window growth rule. The amendment defines a hybrid coordination function in which the AP acts as a coordinator and polls stations for transmissions in a defined order. Under polling, the AP decides who transmits and for how long, so airtime allocation becomes a scheduling decision rather than an outcome of contention. It is optional, it requires the AP to run a scheduler, and it costs the overhead of the poll frames. In deployments that use it, the scheduler is where fairness policy lives.
The measurement that makes it possible
A scheduler needs to know how much airtime each station has used. The AP can compute it from frames it transmits — duration is a function of the frame and the rate, both of which it knows. For frames it receives, it can read the duration field, but that field is a reservation value, not a report of elapsed time; the reliable approach is to timestamp the start and end of each received frame at the driver, or to count the bytes and the rate reported for the frame and compute duration.
Neither measurement is free. Timestamping every frame in a driver adds per-frame work on a path that is already the bottleneck at high rates; counting bytes and rates is cheaper but depends on the rate being reported correctly, which not every driver does for received frames. The practical middle is to sample and to track a running estimate per station, which is enough for a scheduler that is making coarse allocations on a timescale of tens of milliseconds.
/* Airtime charged to a station for one frame, in microseconds. */
static uint32_t frame_airtime_us(size_t bytes, unsigned kbps)
{
if (kbps == 0)
return 0;
/* 8 bits per byte; kbps is kilobits per second, so this is exact. */
uint64_t us = ((uint64_t)bytes * 8 * 1000) / kbps;
return (uint32_t)(us + 20); /* approximate preamble and header */
}
/* Deficit round robin over per-station airtime budgets. */
void serve_next(struct station *s, size_t n, uint32_t quantum_us)
{
for (size_t i = 0; i < n; i++)
if (s[i].queued) /* idle stations must not bank credit */
s[i].deficit += quantum_us;
for (;;) {
struct station *best = NULL;
for (size_t i = 0; i < n; i++) {
if (!s[i].queued)
continue;
if (s[i].deficit >= frame_airtime_us(s[i].head_len, s[i].rate_kbps))
if (!best || s[i].deficit > best->deficit)
best = &s[i];
}
if (!best)
return; /* nobody can afford a frame this round */
transmit(best);
best->deficit -= frame_airtime_us(best->head_len, best->rate_kbps);
best->queued = next_frame(best) != NULL;
}
}
The quantum_us is the policy knob: it sets how much airtime each station is entitled to per round. Because the check is against the cost of the actual next frame, a station whose frames are expensive accumulates a deficit slowly and is served rarely, while a station with cheap frames is served often. The result is equal time rather than equal frames.
Where fairness fights efficiency
Equal airtime is not the same as maximum throughput. Serving the fast station more often raises cell throughput, because its frames deliver more bits per microsecond. A scheduler that maximises throughput starves the slow station entirely, and a scheduler that equalises airtime sacrifices aggregate capacity.
The compromise most deployments choose is a proportional rule: each station gets a share of airtime proportional to its rate, or to a configured weight, with a floor that prevents starvation. A station at 6 Mbit/s gets less time than one at 300, but not zero. The floor is what keeps a distant device usable; the weighting is what keeps the cell efficient.
The floor has a cost that is easy to underestimate. A station that needs 2000 microseconds per frame and is guaranteed even 5 percent of airtime consumes a slot in every round, and rounds become long. Latency for the fast stations rises because they wait behind a slow transmission they cannot preempt. This is why a single far station can degrade a call in progress even when its own traffic is trivial.
When the metric is wrong
Airtime fairness assumes all airtime is equivalent. It is not. A frame transmitted at a low rate over a channel with a high error rate may be received incorrectly, in which case the airtime was spent and delivered nothing. Charging a station for failed transmissions is arguably more accurate than charging only for successes, but a scheduler that does so will starve a station on a marginal link even faster, and the station’s own retries will then occupy the medium anyway.
The second assumption is that the AP knows the topology. In a network with several APs on one channel, the airtime a station consumes is not confined to the cell it is associated with; its transmissions silence neighbours within range. Fairness within a cell can therefore produce unfairness across cells, and the mechanisms that try to reason about the wider interference neighbourhood are covered in Spatial reuse, OBSS, and BSS coloring.
The third is that airtime is the resource users care about. For a bulk transfer it is; for a video call the relevant quantity is the delay distribution, and a scheduler optimising airtime can still produce unacceptable jitter if it batches a station’s frames into bursts. The access categories exist to separate those cases, and the interaction between a per-station airtime budget and a per-category priority is where most practical scheduling policy actually lives.
References
- IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications — IEEE
- IEEE 802.11e: Medium Access Control (MAC) Quality of Service Enhancements — IEEE
- 802.11 Wireless Networks: The Definitive Guide — Matthew Gast, O'Reilly