Why wait DIFS in order to sense if the channel is idle

networking, protocols, wifi

Solution

Short answer: `SIFS` is not long enough to detect if the channel is indeed idle. The implication of waiting just `SIFS` instead of `DIFS` is that the MAC protocol shall no longer be able to detect busy channel, thus collisions may happen all the time, and thus poor channel efficiency.

Long answer:

- What is `SIFS`? The standard defines that SIFS (Short Inter-Frame Space) is used to separate a `DATA` and `ACK` frames. A station (STA) receiving `DATA` will wait for `SIFS` before sending `ACK`. It should be as short as possible, basically just enough to decode the frame, MAC processing, and preparation time to send `ACK`. For 802.11n/ac, `SIFS` = 16 microseconds.

- What is `DIFS`? `DIFS` = `SIFS + 2*slot_time`. Similar to `SIFS`, `slot_time` is PHY-dependent. For 802.11n/ac, `slot_time` = 9 microseconds. `slot_time` is defined to be long enough to account for, among others, propogation delays, thus enable neighbouring STAs to detect transmitting STA's preamble.

Having said that, if a STA just waits for `SIFS` before transmitting, there is no way it can detect possible `ACK` frame being sent by a neighbouring STA at the exact same time - that leads to collisions and poor channel efficiency.

Others:

- If one `slot_time` is long enough to detect transmitting STA's preamble, why just not wait for `SIFS + slot_time` ? Well can be, but it is actually `PIFS` that is normally used by the AP only (to have higher access priority than normal STAs).

- Why wait at least `DIFS` before sending ? Given that `DIFS` is enough to determine whether the channel is busy or not, why not just wait for `DIFS` ? That's because there can be multiple STAs that are possibly sending the channel at the same time. If every STA just waits for `DIFS` then send immediately - well then that's another collision. That's why the standard mandates that if a STA sending the channel idle for `DIFS`, it can transmit immediately. But if a STA sending channel busy, it must wait for `DIFS` plus a random backoff time to avoid collisions. What is random backoff time ?? Time to google on 802.11 CSMD/CA then..

- For reference, there is a similar Q that deals with `SIFS` and touched a bit on other channel access timing.

Problem

Station waits in order to sense if the channel is idle DIFS and then starts transmission. My question is why wait DIFS and not SIFS only. What problems, issues it may cause (sense for SIFS instead of DIFS)?

Original source

Related problems