Controlling Wifi backoff CW in LAA coexistence

110 views
Skip to first unread message

Sab NT

unread,
Apr 25, 2016, 10:05:48 PM4/25/16
to ns-3-users
Hi everyone,

I am trying to explore the Laa -wifi coexistence in default and Lbt cases. I am able to sun laa-wifi-simple.cc. However I want to control the Wifi backoff CW based on some patterns of the traffic but not sure how to do it efficiently.
I went through the laa-wifi-coexistence code and found that scenario-helper.cc has a function "ConfigureWifiCwCallback()" which calls traceback functions for CW change but this code is commented out in the code. Is there any problem/bug with the code or it is just commented out as not required for the use-case? Do you suggest if I can use the function for dynamic reconfiguring Wifi backoff CW or could you please suggest any other way I can do this. 

Many thanks in advance.



Tom Henderson

unread,
Apr 26, 2016, 2:35:50 AM4/26/16
to ns-3-...@googlegroups.com
On 04/25/2016 07:05 PM, Sab NT wrote:
> Hi everyone,
>
> I am trying to explore the Laa -wifi coexistence in default and Lbt
> cases. I am able to sun laa-wifi-simple.cc. However I want to control
> the Wifi backoff CW based on some patterns of the traffic but not sure
> how to do it efficiently.
> I went through the laa-wifi-coexistence code and found that
> scenario-helper.cc has a function "ConfigureWifiCwCallback()" which
> calls traceback functions for CW change but this code is commented out
> in the code. Is there any problem/bug with the code or it is just
> commented out as not required for the use-case?

Hmm, it seems that is dead code now, replaced by the code controlled by
the 'logCwChanges' global value.

Do you suggest if I can
> use the function for dynamic reconfiguring Wifi backoff CW

No, that is just tracing the outcome of Cw backoff.

or could you
> please suggest any other way I can do this.

The parameters for CWmin/max are set in:

void
WifiMac::ConfigureDcf (Ptr<Dcf> dcf, uint32_t cwmin, uint32_t cwmax,
enum AcIndex ac)

There are no user-accessible ways to change those from the standard
values, during run-time, that I can recall.

If you want to instead dynamically modify the current backoff value
during run-time (if that is what you are instead asking), again, I am
not aware of any API to allow users to do that, so you would have to
modify the code to access somehow the DcfState object that holds the
backoff and call DcfState::UpdateBackoffSlotsNow () method.

Hope this helps,
Tom

>
> Many thanks in advance.
>
>
>
> --
> Posting to this group should follow these guidelines
> https://www.nsnam.org/wiki/Ns-3-users-guidelines-for-posting
> ---
> You received this message because you are subscribed to the Google
> Groups "ns-3-users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to ns-3-users+...@googlegroups.com
> <mailto:ns-3-users+...@googlegroups.com>.
> To post to this group, send email to ns-3-...@googlegroups.com
> <mailto:ns-3-...@googlegroups.com>.
> Visit this group at https://groups.google.com/group/ns-3-users.
> For more options, visit https://groups.google.com/d/optout.

Sab NT

unread,
Apr 27, 2016, 3:51:42 PM4/27/16
to ns-3-users
Thank you very much Tom for your detailed answer. Based on your suggestion, I created some wrapper functions in dcf-manager.cc which can be called on Wifi MAC object by the user and executed the code. However, I don't know how to identify the DcfState object that holds the backoff value as you mentioned. As of now, I could get the vector of DcfState objects and call a wrapper function to print the value of m_backoffSlots for each DcfState object. But for some DcfState objects, the backoff values are always coming as zero. 
Could you please suggest how to get or identify specific DcfState object that holds the active backoff counter? 
Many thanks in advance.

Tom Henderson

unread,
Apr 30, 2016, 4:55:30 PM4/30/16
to ns-3-...@googlegroups.com
On 04/27/2016 12:51 PM, Sab NT wrote:
> Thank you very much Tom for your detailed answer. Based on your
> suggestion, I created some wrapper functions in dcf-manager.cc which can
> be called on Wifi MAC object by the user and executed the code. However,
> I don't know how to identify the DcfState object that holds the backoff
> value as you mentioned. As of now, I could get the vector of DcfState
> objects and call a wrapper function to print the value of m_backoffSlots
> for each DcfState object. But for some DcfState objects, the backoff
> values are always coming as zero.
> Could you please suggest how to get or identify specific DcfState object
> that holds the active backoff counter?

Some DcfState objects will have zero backoff because there is no traffic
in that access class. In general, there ought to be at most two
non-zero backoffs (voice, and best effort). Is that what you see.

Let me ask further, are you trying to access and modify the current
backoff counter for a class during the time that backoff is ongoing, or
to access the CwMax value that will govern the range of the next backoff
drawn?

- Tom

Sab NT

unread,
Apr 30, 2016, 5:51:39 PM4/30/16
to ns-3-users
Hi Tom,

Thank you very much for replying. Yes, I found that multiple dcf objects correspond to different edca queues and for some dcf object it is non-zero.

I want to modify the ongoing backoff value of wifi in the coexistence scenario. The reason I want to do is that, for coexistence with 'Default' access, the LTE is more aggressive and Wifi losing more often; whereas with 'Lbt' access LTE is more conservative and Wifi is more aggressive. I wanted to add some backoff value once in a while (some situation-based), when Wifi is transmitting (AccessGranted), so that LTE gets more chances in Lbt. At this point, I am not sure if I need to change the CW as this induced backoff is not for failure cases. I was thinking of calling "m_dcf->StartBackoffNow" after packet transmission in those situations. Could you please advice if it is doable or I am thinking in the wrong direction.
Many thanks in advance.
Reply all
Reply to author
Forward
0 new messages