Bug 761 - ACK/CTS timeout implementation differs from standard
ACK/CTS timeout implementation differs from standard
Status: RESOLVED INVALID
Product: ns-3
Classification: Unclassified
Component: wifi
ns-3-dev
All All
: P5 enhancement
Assigned To: sebastien.deronne
:
: 2223 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2009-12-03 01:39 EST by Kirill Andreev
Modified: 2016-10-24 16:14 EDT (History)
6 users (show)

See Also:


Attachments
Propsed fix (except 802.11p_CCH) (2.19 KB, patch)
2009-12-03 01:39 EST, Kirill Andreev
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Kirill Andreev 2009-12-03 01:39:59 EST
Created attachment 690 [details]
Propsed fix (except 802.11p_CCH)

In accordance with 9.2.8 and 9.2.5.7 of 802.11-2007 ACKTimeout = aSIFSTime +
aSlotTime + aPHY-RX-START-Delay, and aPHY-RX-START-Delay is equal to 25, 49, 97 us for OFDM 20, 10, 5 MHz respectively, and  192 us for 802.11b
Comment 1 Mathieu Lacage 2009-12-31 05:49:39 EST
gary, would you care to review and comment ?
Comment 2 Gary Pei 2010-01-04 16:57:40 EST
(In reply to comment #1)
> gary, would you care to review and comment ?

Hi,

Sorry for late reply. Just got back from winter vacation.

For 802.11b, it should be 304 rather than 192.

192 only covers aPreambleLength+aPLCPHeaderLngth

You need add 8*ACKSize = 8*14 = 112 microseconds for ACKTxTime

Thus, the total is 112+192 = 304 microsecond. Please see figure 9-11 for details. Also, please see equation on page 270 on 802.11-2007 and Figure 9-12. It seems to me that both ACK/CTS timeout should be:

MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2)
Comment 3 Mathieu Lacage 2010-01-07 09:29:13 EST
proposed patch then ?
Comment 4 Nicola Baldo 2010-04-17 06:32:26 EDT
Both Kirill and Gary are right. The fact is that the standard says that the timeout duration is how much time you are allowed to wait for a RX-START indication. The mac-low code (to my understanding) does not any knowledge of RX-START, it only has knowledge of RX-END. So what mac-low does is to add the ACK duration to the timeout, in order to be able to rely only on the RX-END event. In other words, the mac-low implementation does not comply with the standard in this respect.

So the patch by Kirill will not work, because it sets the timeout values as per the standard, but does not change the mac-low code accordingly.

A proper patch would require significant effort and probably be invasive, so it needs to be designed and tested with care. I would be fine with it in principle, though. Any volounteers?
Comment 5 Nicola Baldo 2010-06-22 21:41:10 EDT
I get the impression that everybody is fine with the current behavior, so I am marking this as an enhancement.
Comment 6 sebastien.deronne 2015-01-24 09:54:09 EST
I want to re-open this bug, since I am not convinced yet we are doing it right.

In the standard, ACK and CTS timeout as defined as aSIFSTime + aSlotTime + aPHY-RX-START-Delay. In wifi-mac, we have aSIFSTime + sSlotTime + ACK duration + GetDefaultMaxPropagationDelay x 2.

I understand the need to add ACK duration compared to the standard, as we are not fully compliant: the standard defined a duration to wait for a RX-START (not implemented in ns-3), whereas we compute a duration to wait for a RX-END in ns-3. This should be changed later maybe, but it is not a big issue so far.

The problem is that GetDefaultMaxPropagationDelay x 2 is NOT equal to aPHY-RX-START-Delay.

Furthermore, IMO aPHY-RX-START-Delay depends on the standard version, while GetDefaultMaxPropagationDelay is set to 33 microseconds for all standard versions.
Finally, I am not sure we are still compliant with IEEE 802.11n.

Does anyone know where comes the value returned by GetDefaultMaxPropagationDelay?
And why does GetDefaultMaxPropagationDelay x 2 replace aPHY-RX-START-Delay in the current implementation?
Comment 7 Kirill Andreev 2015-02-02 14:09:31 EST
As I remember, propagation delay corresponds to aAirPropagation time of the standard. A proper value is set in accordance with coverage class table (I can see table 7-27 of 802.11-2007 standard). Any switching timeouts are ignored in ns-3 implementation and this fact caused a lot of discussion.
Comment 8 Nicola Baldo 2015-02-09 09:29:09 EST
(In reply to Kirill Andreev from comment #7)
> As I remember, propagation delay corresponds to aAirPropagation time of the
> standard. 

Kirill is right. As a further clarification, the reason why aAirPropagation is included in the timeout definition is because it is one of the components of aSlotTime, see 9.3.7 "DCF timing relations" in the standard.
Comment 9 sebastien.deronne 2015-11-20 06:00:50 EST
*** Bug 2223 has been marked as a duplicate of this bug. ***
Comment 10 sebastien.deronne 2016-10-18 16:10:05 EDT
This topic is now 7 years old, and I think nothing will come more from it. I suggest to close it.
Comment 11 sebastien.deronne 2016-10-24 16:14:23 EDT
I decide to close this bug, it is a very old topic and nothing seems wrong.