Bug 2075 - A-MPDU using RTS/CTS behaves wrongly when MaxSsrc is reached
A-MPDU using RTS/CTS behaves wrongly when MaxSsrc is reached
Status: RESOLVED FIXED
Product: ns-3
Classification: Unclassified
Component: wifi
ns-3-dev
All All
: P5 major
Assigned To: sebastien.deronne
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2015-03-09 17:00 EDT by sebastien.deronne
Modified: 2015-05-04 18:47 EDT (History)
2 users (show)

See Also:


Attachments
patch (3.59 KB, patch)
2015-03-09 17:00 EDT, sebastien.deronne
Details | Diff
patch (3.65 KB, patch)
2015-03-10 18:02 EDT, sebastien.deronne
Details | Diff
patch v3 (5.70 KB, patch)
2015-03-13 10:54 EDT, sebastien.deronne
Details | Diff
patch v4 (6.54 KB, patch)
2015-03-13 11:03 EDT, sebastien.deronne
Details | Diff
example to reproduce A-MPDU in hidden nodes scenarios (7.29 KB, text/x-csrc)
2015-04-11 11:25 EDT, sebastien.deronne
Details
refactored example (7.28 KB, text/x-csrc)
2015-05-04 18:46 EDT, sebastien.deronne
Details

Note You need to log in before you can comment on or make changes to this bug.
Description sebastien.deronne 2015-03-09 17:00:25 EDT
Created attachment 1985 [details]
patch

Once the maximum SSRC is reached when RTS/CTS is enabled for A-MPDU transmission, the current implementation simply discards the first packet which is part of the aggregate.

This results in an issue where the receiver is still waiting for the discarded packet, since no BAR has been sent in order to flush the receiver.

Even though we should have a further check in the standard, ongoing discussions show that it should send a BAR to flush the receiver and discard all MPDUs that are part of the aggregate for which RTS attempts reached the SSRC limit.

I attached a patch which implements this solution.

If anyone has a better view or a complement on this, feel free to give your points.
Reviews on the patch are also welcome. 

Please note that you need to consider at least two transmitting stations (preferably in saturation conditions) that are fully hidden from each other in order to reproduce this issue.
Comment 1 sebastien.deronne 2015-03-10 18:02:48 EDT
Created attachment 1986 [details]
patch

add some tracing
Comment 2 sebastien.deronne 2015-03-13 10:54:54 EDT
Created attachment 1989 [details]
patch v3

Some issues were observed while removing items from the queue.

Instead, I propose a better way to solve this bug: EdcaTxopN::CompleteMpduTx is only called once the RTS/CTS exchange has succeeded, i.e. in MacLow::SendDataAfterCts.
Comment 3 sebastien.deronne 2015-03-13 11:03:14 EDT
Created attachment 1990 [details]
patch v4

add flush to remove items from the temporary queues
Comment 4 Tom Henderson 2015-04-05 10:46:55 EDT
(In reply to sebastien.deronne from comment #3)
> Created attachment 1990 [details]
> patch v4
> 
> add flush to remove items from the temporary queues

Patch looks fine to me, but I wonder, did you encounter this in practice with any existing ns-3 wifi tests/examples?  You mentioned:  "to consider at least two transmitting stations (preferably in saturation conditions) that are fully hidden from each other in order to reproduce this issue."  Do we have any such test cases presently?
Comment 5 sebastien.deronne 2015-04-05 14:50:03 EDT
> Patch looks fine to me, but I wonder, did you encounter this in practice
> with any existing ns-3 wifi tests/examples?  
>You mentioned:  "to consider at least two transmitting stations (preferably in >saturation conditions) that are fully hidden from each other in order to reproduce >this issue."  Do we have any such test cases presently?

No, I encountered this in a specific study I was doing.
But I could indeed add an example to reproduce a hidden node scenario in example/wireless/.

I guess the issue may be reproduced in unsaturated conditions, but it is more easily reproducible in saturated conditions (=> more collisions => higher probability to reach max SSRC).
Comment 6 sebastien.deronne 2015-04-11 11:25:35 EDT
Created attachment 2013 [details]
example to reproduce A-MPDU in hidden nodes scenarios

I attached an example to reproduce A-MPDU in hidden nodes scenarios.

Feel also free to give comments on this example. I could later include it in /example/wireless based on your remarks.
Comment 7 sebastien.deronne 2015-05-04 18:46:32 EDT
Created attachment 2035 [details]
refactored example
Comment 8 sebastien.deronne 2015-05-04 18:47:35 EDT
committed in changeset 11353:b03d1c0ada03