MANET Wifi Simulation with high Collision despite "best" setup according to threads

294 views
Skip to first unread message

Francisco Eduardo Balart Sanchez

unread,
Sep 1, 2017, 7:06:48 PM9/1/17
to ns-3-users
Good day:

CONTEXT:

I'm simulating a clustering algorithm as MAC protocol in a MANET meaning:
  • I only have wifiNetDevices, meaning i do not install on them InternetStack, sockets, etc
  • devices = wifi.Install (wifiPhy, wifiMac, networkNodes);
I using a very basic neighbor discovery algorithm which is composed by 2 main items:
  1. HelloBroadcast done every HelloInterval milliseconds
  2. HelloResponse done every HelloResponse milliseconds
Each node creates it's own MAC object with the clustering algorithm which has the aforementioned neighbor discovery mechanism

Each node define its own Hello interval as follows:
Ptr<UniformRandomVariable> uv = CreateObject<UniformRandomVariable> ();
m_hello_time =100+ uv->GetValue (0, 100);
Simulator::Schedule (MilliSeconds(startTime), &ns3::NeighborDiscovery::SendHello, this);

The code for the Hello response is similar just is a smaller response time
MAX_RESPONSE_TIME = 21.2345;
double r =1.0+ uv->GetValue (0, MAX_RESPONSE_TIME);

So as you can observe each Node will broadcast a Hello between 100 and 200 milliseconds and the receiving nodes each time they response will send a delayed response between 1 and 22.2345 milliseconds

Besides that in the part of the test we have made this configurations based on several threads i have read:


In which we have customized the parameters as follows:
YansWifiPhyHelper wifiPhy =  YansWifiPhyHelper::Default ();
WifiHelper wifi;
wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode", StringValue ("OfdmRate6Mbps"), "RtsCtsThreshold", UintegerValue (0));
wifiPhy
.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO);
NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();

also
Config::SetDefault("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue(5000));
Config::SetDefault("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
Config::SetDefault("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
Config::SetDefault("ns3::WifiRemoteStationManager::RtsCtsThreshold",UintegerValue(0)); 

As well as:
YansWifiChannelHelper wifiChannel;
wifiChannel.AddPropagationLoss("ns3::RangePropagationLossModel","MaxRange", DoubleValue(distance));
  wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel");  

PROBLEM

Despite all the aforementioned tunning done we have around 700 RxPhyDrops at 3 seconds which i'm pretty sure are due to collisions after read the threads i have read:



Since our parent class is AdhocWifiMac and not ApWifiMac we cannot use the Jitter function as mentioned in the thread below

Also since we are not putting nothing more on the nodes (InternetStack, etc) and as well as you saw that we are using the WIFI_PHY_STANDARD_80211b with a ConstantRateWifiManager we do not use CSMA (unless i', missing something and WIFI already use it by default) as mention in:


So as Tomasso very well defined collisions in https://groups.google.com/d/topic/ns-3-users/z_phIVaggzQ/discussion
And since we are operating at the MAC level or at most at WifiNedDevice level (L3) there is no ARP at this point, i mention this due to the suggestion of rediet at https://groups.google.com/d/topic/ns-3-users/-oQ4_bft6KU/discussion

therefore i have the following 

QUESTIONS
  1. Is there a contradictory setting i´m using in the standard, the helper, the rate control algorithm?
  2. Is there a setting i can use to minimize the collision? i know it cannot be 0 and don't want to disable the wifi management of collisions?
  3. As you saw my nodes each one have a random time, should i put a specific seed for each one? don't think is the case see the snapshots below
  4. Is there anything i'm missing?

I would really appreciate any guidance, pointers, settings or anything that can help me to minimize the collisions

Thanks in advance and best regards

M.S. Francisco Eduardo Balart Sánchez
manetSim_counterTables_WifiPhyRxDrop.png
helloIntervalsBrdcstTimes.png
leClusterInAction.png

Rediet

unread,
Sep 4, 2017, 3:21:37 AM9/4/17
to ns-3-users
Hello,

You can try monitoring how the CW size evolves through time for each STA. Indeed you have quite a few STAs and the default CW is set low and has to double a certain number of times. Increasing the CWmin could be an option.
Displaying YansWifiPhy log events (with all prefixes) can also help understand why packets are dropped.

BR,

Rediet

Francisco Eduardo Balart Sanchez

unread,
Sep 4, 2017, 4:40:10 PM9/4/17
to ns-3-users
Good day Rediet:

Thanks for taking the time to reply, as you correctly proposed changing the value of the "contention window" (CW) decreased considerably the number of WifiPhy RxDrop, in the previous simulation by sec 3 i had 700 drops now by 3 i have 600 or 500 depending the setting of the CW

Since i'm implementing this from the mac the only thing i did was
use my existing DcaTxop object and set the CW.

uint32_t newMinCw = 100;
m_dca
->SetMinCw(newMinCw);

But that raised more questions.
  1. ¿Why these settings didn't improve anything at ll?
    1. Config::SetDefault("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
    1. Config::SetDefault("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
    1. "RtsCtsThreshold", UintegerValue (0)
  1. ¿For the rate control algorithm is there a recommended one?
    1. wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode", StringValue ("OfdmRate6Mbps"),"RtsCtsThreshold", UintegerValue (0));
  1. As i understand the backoff time will be from 0 to minCw if i'm not mistaken
    1. ¿Does changing the minCw affect the control rate algorithm i selected?
  2. ¿Is there any other parameter in the DcaTxOp to set? should i set the something for EdcaTxOp as well?
  3. Besides the aforementioned anyother parameter for reducing the colliions ir wifiphydrops (maybe change to DSSS?)?
Thanks in advance and best regards

Acronyms For anyone that reads this thread:

DCA - Distributed/Dynamic Channel Allocation/Access
DCF - Distributed Coordination Function
CW - Contention Window
EDCA.png
IEEE80211DCF.png

Rediet

unread,
Sep 5, 2017, 2:49:55 AM9/5/17
to ns-3-users
Hello Francisco,

See my replies inline.

Rediet

Le lundi 4 septembre 2017 22:40:10 UTC+2, Francisco Eduardo Balart Sanchez a écrit :
Good day Rediet:

Thanks for taking the time to reply, as you correctly proposed changing the value of the "contention window" (CW) decreased considerably the number of WifiPhy RxDrop, in the previous simulation by sec 3 i had 700 drops now by 3 i have 600 or 500 depending the setting of the CW

Since i'm implementing this from the mac the only thing i did was
use my existing DcaTxop object and set the CW.

uint32_t newMinCw = 100;
m_dca
->SetMinCw(newMinCw);
This is quite high but why not. By the way, it should be a multiple of 2. Also don't forget to adapt CWmax. 

But that raised more questions.
  1. ¿Why these settings didn't improve anything at ll?
    1. Config::SetDefault("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
      Config::SetDefault("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
      "RtsCtsThreshold", UintegerValue (0)
MaxSsrc and MaxSlrc are parameters that are to be used by adaptive rate control algorithms. You have a constant rate wifi manager.
Since RtsCtsThreshold is set to 0, you'll normally be using (depending on the rate control algo) RTS/CTS proctection all the time, thus increasing the overhead. You'll thus have less time for data transmissions. All STAs having enqueued packets (even for low application rates and randomized starts), you'll end up having a lot of collisions.
  1. ¿For the rate control algorithm is there a recommended one?
    1. wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode", StringValue ("OfdmRate6Mbps"),"RtsCtsThreshold", UintegerValue (0));
If you don't care about the rate algo, I would recommend using ideal rate manager or Ministrel. This way you'll take the optimal rates for each pair (over time) and will thus reduce air time occupation. Having thus less queued items your system will not be congested.

  1. As i understand the backoff time will be from 0 to minCw if i'm not mistaken
    1. ¿Does changing the minCw affect the control rate algorithm i selected?
In your case, no, since you have a constant rate. But normally yes, since you'll be decreasing the probability of collisions, the rate control algo will not fall back on rates.
  1. ¿Is there any other parameter in the DcaTxOp to set? should i set the something for EdcaTxOp as well?
If you have QoS enabled yes you should (for all ACs). Otherwise only non-QoS parameters will have high CWmin. 
  1. Besides the aforementioned anyother parameter for reducing the colliions ir wifiphydrops (maybe change to DSSS?)?
I don't think it would be the best option to switch to DSSS. Your STAs seemed close to one another so OFDM's range will be more than enough.
Try first changing EDCA's CWmin.

Francisco Eduardo Balart Sanchez

unread,
Sep 5, 2017, 2:49:15 PM9/5/17
to ns-3-users
Good day Rediet:

Thanks for the quick response and follow up, i made several experiments so:

  1. Correct me if i'm wrong but MinCw and MaxCw should be multiples or did you mean numbers expressed as 2^N-1 numbers;
    • Since default MinCw 2^4-1=15 and MaxCw = 2^10-1=1023
  2. Knowing that i will have a lot of nodes with randomized start broadcast hellos, therefore is best recommendable to disable RTC/CTS and rely on the rate control algorithm? which i can choose as you mentioned from: IdealWifiManager, MinstrekWifiManager or AarfWifiManager
    • wifi.SetRemoteStationManager ("ns3::IdealWifiManager","RtsCtsThreshold", UintegerValue (99999));
    • With the same settings i mentioned before
    • Config::SetDefault("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue(5000));
    • Config::SetDefault("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
      Config::SetDefault("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
    • Below you will found two snapshots with the IdealWifiManager with RtsCtsThreshold to 0 and 99999 and i didn't see any enhancement whatsoever, did i miss any additional configuration?
  1. In my question "¿Is there any other parameter in the DcaTxOp to set? should i set the something for EdcaTxOp as well? you answered: If you have QoS enabled yes you should (for all ACs). Otherwise only non-QoS parameters will have high CWmin
    • What other parameters these would be
  2. When you mentioned trying to changin the EDCA's CWmin i saw from a thread that these are hard to change since they are read only values, nevertheless i think i´m changing them, for each of the queues, is the following correct, meaning is that what you meant by changing the EDCA CWmin?
    1.    uint32_t newMinCw = 100;
         m_dca->SetMinCw(newMinCw);
    1.    // setting EdcaTxopN MinCw for the 4 queues
         m_edca.find (AC_VO)->second->SetMinCw(newMinCw);
         m_edca.find (AC_VI)->second->SetMinCw(newMinCw);
         m_edca.find (AC_BE)->second->SetMinCw(newMinCw);
         m_edca.find (AC_BK)->second->SetMinCw(newMinCw);

  1. Any other item i´m missing, maybe a configuration setup when you choose RTC/CTS threshold to 0 and when you rely on the rate control algorithm?

Thanks again for your support i really appreciate it

Francisco Eduardo Balart Sanchez

unread,
Sep 5, 2017, 2:50:18 PM9/5/17
to ns-3-users
Forgot the snapshot

IdealWifiManagerRTSCTSThresholdDisabled.png
IdealWifiManagerRTSCTSThresholdToZero.png

Francisco Eduardo Balart Sanchez

unread,
Sep 7, 2017, 7:23:46 PM9/7/17
to ns-3-users
just checking if you took a look to my latest response, 
thanks in advance and best regards

Rediet

unread,
Sep 11, 2017, 8:21:12 AM9/11/17
to ns-3-users
Hello Eduardo,

Sorry didn't have time to reply sooner. See replies inline.

Rediet


Le mardi 5 septembre 2017 20:49:15 UTC+2, Francisco Eduardo Balart Sanchez a écrit :
Good day Rediet:

Thanks for the quick response and follow up, i made several experiments so:

  1. Correct me if i'm wrong but MinCw and MaxCw should be multiples or did you mean numbers expressed as 2^N-1 numbers;
    • Since default MinCw 2^4-1=15 and MaxCw = 2^10-1=1023
You are correct, they should be expressed as 2^N-1 (but with N being multiples). 
  1. Knowing that i will have a lot of nodes with randomized start broadcast hellos, therefore is best recommendable to disable RTC/CTS and rely on the rate control algorithm? which i can choose as you mentioned from: IdealWifiManager, MinstrekWifiManager or AarfWifiManager
If you don't have any preferences, take the IdealWifiManager that selects the best MCS based on the fed back SNR over an ideal feedback channel (SnrTag). 
    • wifi.SetRemoteStationManager ("ns3::IdealWifiManager","RtsCtsThreshold", UintegerValue (99999));
    • With the same settings i mentioned before
    • Config::SetDefault("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue(5000));
      Config::SetDefault("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
      Config::SetDefault("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
    • Below you will found two snapshots with the IdealWifiManager with RtsCtsThreshold to 0 and 99999 and i didn't see any enhancement whatsoever, did i miss any additional configuration?
I just noticed this but you have to activate RTS/CTS as the protection mode through ErpProctectionMode or/and HtProtectionMode attributes of WifiRemoteStationManager. By default the protection mode is CtsToSelf (deactivated by default in RegularWifiMac)...
  1. In my question "¿Is there any other parameter in the DcaTxOp to set? should i set the something for EdcaTxOp as well? you answered: If you have QoS enabled yes you should (for all ACs). Otherwise only non-QoS parameters will have high CWmin
    • What other parameters these would be
Nothing else comes to mind sorry (you can also change AIFS values, but I had seen a paper saying that CW would be more efficient to mitigate collisions). 
  1. When you mentioned trying to changin the EDCA's CWmin i saw from a thread that these are hard to change since they are read only values, nevertheless i think i´m changing them, for each of the queues, is the following correct, meaning is that what you meant by changing the EDCA CWmin?
Are you sure, because you can have access to them through the attribute system-> RegularWifiMac exposes them.
    1.    uint32_t newMinCw = 100;
         m_dca->SetMinCw(newMinCw);
         // setting EdcaTxopN MinCw for the 4 queues
         m_edca.find (AC_VO)->second->SetMinCw(newMinCw);
         m_edca.find (AC_VI)->second->SetMinCw(newMinCw);
         m_edca.find (AC_BE)->second->SetMinCw(newMinCw);
         m_edca.find (AC_BK)->second->SetMinCw(newMinCw);

You'll need to set max also (as done in FinishConfigureStandard method of RegularWifiMac and ConfigureDcf of WifiMac).

Francisco Eduardo Balart Sanchez

unread,
Sep 17, 2017, 3:24:25 PM9/17/17
to ns-3-users
Good day Rediet:

Sorry for my delayed response, below my comments, i took a little bit of time to save future questions and you saw that i´m doing my homework :) :

  • I´ll try the the IdealWifiManager that selects the best MCS based on the fed back SNR over an ideal feedback channel (SnrTag). 
    • wifi.SetRemoteStationManager ("ns3::IdealWifiManager","RtsCtsThreshold", UintegerValue (99999));
    • Config::SetDefault("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue(5000));
    • Config::SetDefault("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
    • Config::SetDefault("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));sa
    • So i assuming you want me to do the following:
    • wifi.SetRemoteStationManager ("ns3::IdealWifiManager","RtsCtsThreshold", UintegerValue (99999), "ErpProtectionMode", StringValue("Rts-Cts"), "HtProtectionMode", StringValue("Rts-Cts"));
    • Also you mention that the RegularWifiMac has the protection mode by default as CTs-toself deactivates so
      • ¿Do i leave it deactivated so the aforementioned setup takes action or i activate it?
    • Also digging i encountered these functions, should i enable them?, they seem to  have relation with the items we have been discussing
      • So my question would be my code to setup them is ok?
      •    uint32_t newMinCw = 100;
           m_dca->SetMinCw(newMinCw);
           // setting EdcaTxopN MinCw for the 4 queues
           m_edca.find (AC_VO)->second->SetMinCw(newMinCw);
           m_edca.find (AC_VI)->second->SetMinCw(newMinCw);
           m_edca.find (AC_BE)->second->SetMinCw(newMinCw);
           m_edca.find (AC_BK)->second->SetMinCw(newMinCw);
      • Or could you give me a  example of how to do it properly
Thanks again for taking the time

Thanks in advance and best regards 

Rediet

unread,
Sep 20, 2017, 5:58:52 AM9/20/17
to ns-3-users
Hello Eduardo,

As usual replies inline.


Le dimanche 17 septembre 2017 21:24:25 UTC+2, Francisco Eduardo Balart Sanchez a écrit :
Good day Rediet:

Sorry for my delayed response, below my comments, i took a little bit of time to save future questions and you saw that i´m doing my homework :) :
I can see that! :-) Your also forcing me to do mine in return :-)... 

  • I´ll try the the IdealWifiManager that selects the best MCS based on the fed back SNR over an ideal feedback channel (SnrTag). 
    • wifi.SetRemoteStationManager ("ns3::IdealWifiManager","RtsCtsThreshold", UintegerValue (99999));
      Config::SetDefault("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue(5000));
      Config::SetDefault("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
      Config::SetDefault("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
      sa
  • Regarding activating the RTS/CTS protection you mention 3 aspects
    • Can be activated by ErpProctectionMode or/and HtProtectionMode
I think that I had misunderstood those parameters. They are really related to protection modes in presence of non ERP or non HT stations... I don't think it's your case.
But the question concerning why setting threshold value to 0 doesn't enable RTS/CTS exchanges? Try logging MacLow events.
    • So i assuming you want me to do the following:
    • wifi.SetRemoteStationManager ("ns3::IdealWifiManager","RtsCtsThreshold", UintegerValue (99999), "ErpProtectionMode", StringValue("Rts-Cts"), "HtProtectionMode", StringValue("Rts-Cts"));
Yup. Btw 99999 means you'll never have RTS/CTS exchange. 
    • Also you mention that the RegularWifiMac has the protection mode by default as CTs-toself deactivates so
      • ¿Do i leave it deactivated so the aforementioned setup takes action or i activate it?
See previous replies. 
It'll be activated or not depending on the standard you've chosen.
I have the impression K said this related to a wrong proposition of directly setting CWmin's values. You'll have to go through the Ptr. Note that the Ptr isn't const so nothing theoretically forbids you from changing it. That being said, I haven't tried it... 
It seems OK to me considering that you're doing it inside RegularWifiMac or child. But one thing bothers me; it's that you don't consider the fact that different ACs natively have different CWmin values (see the rules inside RegularWifiMac to see the relations). 

Rediet

unread,
Sep 20, 2017, 9:17:09 AM9/20/17
to ns-3-users
While replying to another post, I just stumbled upon this example taken from examples/wireless/80211e-txop.cc:
  //Modify EDCA configuration (TXOP limit) for AC_BE
  Ptr<NetDevice> dev = wifiApNodes.Get (1)->GetDevice (0);
  Ptr<WifiNetDevice> wifi_dev = DynamicCast<WifiNetDevice> (dev);
  Ptr<WifiMac> wifi_mac = wifi_dev->GetMac ();
  PointerValue ptr;
  Ptr<EdcaTxopN> edca;
  wifi_mac->GetAttribute ("BE_EdcaTxopN", ptr);
  edca = ptr.Get<EdcaTxopN> ();
  edca->SetTxopLimit (MicroSeconds (3008));

Francisco Eduardo Balart Sanchez

unread,
Oct 1, 2017, 10:45:30 PM10/1/17
to ns-3-users
Good day Rediet:

I think the "recipe" is required to be break down in 2 parts
  1. The remote station manager
    • Right now my setup is the shown below
    • wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode", StringValue ("OfdmRate6Mbps"), "ControlMode", StringValue ("OfdmRate6Mbps"), "RtsCtsThreshold", UintegerValue (0),"ProtectionMode",StringValue("Rts-Cts"));
      Config::SetDefault ("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue(5000));
      Config::SetDefault ("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
      Config::SetDefault ("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
    • Also the protections are no longer accessed at least in the new version of NS3 V 3.25 as shown below, the only protection mode is this
    • AddAttribute ("ProtectionMode", "Protection mode used when non-ERP STAs are connected to an ERP AP: Rts-Cts or Cts-To-Self",EnumValue (WifiRemoteStationManager::CTS_TO_SELF),MakeEnumAccessor (&WifiRemoteStationManager::SetProtectionMode, &WifiRemoteStationManager::GetProtectionMode),MakeEnumChecker (WifiRemoteStationManager::RTS_CTS, "Rts-Cts",WifiRemoteStationManager::CTS_TO_SELF, "Cts-To-Self"))
    • There is no longer the ErpProtectionMode or the HtProtectionMode, nevertheless they can be accessed via function call, regarless you said it only works if i´m going to use ERP or HT right which is not my case i think right?
    • WifiRemoteStationManager::SetUseNonErpProtection (bool enable)
      WifiRemoteStationManager::SetHtSupported (bool enable)
    • I tried with the IdealWifiManager but i didn't see any improvement so i have 3 questions regarding the remote station manager is the following
    1. ¿Is the setup above optimal (for that constant manager) or i'm missing anything?
    2. ¿If the idealconstant manager is the best option, what is the setup i must put?
    3. At the end the remote station manager setup MUST be consistent with the MAC configuration right?
      1. Meaning if you use Rts-cts with remote station manager the same must be done in MAC
  2. The MAC
    • A little bit of Context first
    • my MAC class in inherits fro Adhoc Wifi MAC therefore is an ADHOC_STA
    • The only setup i saw digging in hte Adhoc wific mac, regular mac and wifimac was this one
    • wifiMac.SetType ("ns3::EESOA","CtsToSelfSupported", BooleanValue (true));
    • And modify the Cwmin thorugh
    • uint32_t newMinCw = 100;
      m_dca->SetMinCw(newMinCw);
      // setting EdcaTxopN MinCw for the 4 queues
      m_edca
      .find (AC_VO)->second->SetMinCw(newMinCw);
      m_edca
      .find (AC_VI)->second->SetMinCw(newMinCw);
      m_edca.find (AC_BE)->second->SetMinCw(newMinCw);
      m_edca.find (AC_BK)->second->SetMinCw(newMinCw);

    • But it does not make sense to me that the remote station manager does not have  a RTS-CTS protection and the make does meaning if hte remote station manager uses rts-cts so the mac and if it uses cts-to-self so the mac
So based on my setup (constant rate manager) what setup on the remote station manager and mac should be to have minimum of collisions?

adhysa...@gmail.com

unread,
Oct 2, 2017, 6:14:29 PM10/2/17
to ns-3-users
Hi Francisco,

Sorry to jump into the conversation. I was looking at collisions recently and came across this work (http://ieeexplore.ieee.org/abstract/document/4509719/) which explains the problem and offers a possible solution. I does not have any implementation in NS-3, however.

You are probably getting a large number loss events, which encompasses collisions and weak signals (see: https://www.nsnam.org/docs/models/html/wifi-design.html#yanswifiphy-and-wifiphystatehelper).

I hope this helps.

Cheers

Francisco Eduardo Balart Sanchez

unread,
Oct 2, 2017, 6:36:36 PM10/2/17
to ns-3-users
Thanks adhysa, i still will wait for rediet's reply since right now i´m using the rangetransmission loss model, your input will be very helpful when imigrate to a realistic propagation model, like two ray, friis, but right now the losses/collisions are due to the receiving of same time different signals since as i mentioned, the range propagation model have no loss and after the range infinite loss, so the problem in this case i don't think is due to weak signals, nevertheless, i will try to work on this so when i have a mature model with a good recipe (expected in next reply of rediet :-) )i do not have the problems that will sure appear in the paper you mentioned.

thanks very much for your input :) 

Best regards
Eduardo

Francisco Eduardo Balart Sanchez

unread,
Oct 3, 2017, 9:38:31 PM10/3/17
to ns-3-users
Good day rediet:

Just following up, if you had chance to read my last response

thanks in advance and best regards

Eduardo

Rediet

unread,
Oct 5, 2017, 9:04:12 AM10/5/17
to ns-3-users
Hello Eduardo,

Been quite busy lately... Please find my comments/replies inline (as usual).


Le lundi 2 octobre 2017 04:45:30 UTC+2, Francisco Eduardo Balart Sanchez a écrit :
Good day Rediet:

I think the "recipe" is required to be break down in 2 parts
  1. The remote station manager
    • Right now my setup is the shown below
    • wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode", StringValue ("OfdmRate6Mbps"), "ControlMode", StringValue ("OfdmRate6Mbps"), "RtsCtsThreshold", UintegerValue (0),"ProtectionMode",StringValue("Rts-Cts"));
      Config::SetDefault ("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue(5000));
      Config::SetDefault ("ns3::WifiRemoteStationManager::MaxSsrc", UintegerValue(10000));
      Config::SetDefault ("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue(10000));
    • Also the protections are no longer accessed at least in the new version of NS3 V 3.25 as shown below, the only protection mode is this
    • AddAttribute ("ProtectionMode", "Protection mode used when non-ERP STAs are connected to an ERP AP: Rts-Cts or Cts-To-Self",EnumValue (WifiRemoteStationManager::CTS_TO_SELF),MakeEnumAccessor (&WifiRemoteStationManager::SetProtectionMode, &WifiRemoteStationManager::GetProtectionMode),MakeEnumChecker (WifiRemoteStationManager::RTS_CTS, "Rts-Cts",WifiRemoteStationManager::CTS_TO_SELF, "Cts-To-Self"))
    • There is no longer the ErpProtectionMode or the HtProtectionMode, nevertheless they can be accessed via function call, regarless you said it only works if i´m going to use ERP or HT right which is not my case i think right?
Right. I don't believe its your case. So you don't need any protection.
This is the part I'm no longer sure about, ever since you started asking questions :-P; RTS/CTS doesn't seem to be used in situation where you don't need protection (according to current ns-3 script, i.e. presence of non-ERP or non-HT stations). I'm no longer sure whether it'll be used in other cases (unless you modify the code of course).
    • WifiRemoteStationManager::SetUseNonErpProtection (bool enable)
      WifiRemoteStationManager::SetHtSupported (bool enable)
    • I tried with the IdealWifiManager but i didn't see any improvement so i have 3 questions regarding the remote station manager is the following
    1. ¿Is the setup above optimal (for that constant manager) or i'm missing anything?
I don't see any problem with the configuration. If you want to improve performance and better share the available time, you'll have to use higher data rates. 
    1. ¿If the idealconstant manager is the best option, what is the setup i must put?
I don't think that you have to configure anything special for the ideal rate manager (which is not constant by the way). 
    1. At the end the remote station manager setup MUST be consistent with the MAC configuration right?
      1. Meaning if you use Rts-cts with remote station manager the same must be done in MAC
MAC configuration will just say if the station is capable or not. It's the remote station manager that'll do the job.
  1. The MAC
    • A little bit of Context first
    • my MAC class in inherits fro Adhoc Wifi MAC therefore is an ADHOC_STA
    • The only setup i saw digging in hte Adhoc wific mac, regular mac and wifimac was this one
    • wifiMac.SetType ("ns3::EESOA","CtsToSelfSupported", BooleanValue (true));
    • And modify the Cwmin thorugh
    • uint32_t newMinCw = 100;
      m_dca->SetMinCw(newMinCw);
      // setting EdcaTxopN MinCw for the 4 queues
      m_edca
      .find (AC_VO)->second->SetMinCw(newMinCw);
      m_edca
      .find (AC_VI)->second->SetMinCw(newMinCw);
      m_edca.find (AC_BE)->second->SetMinCw(newMinCw);
      m_edca.find (AC_BK)->second->SetMinCw(newMinCw);

    • But it does not make sense to me that the remote station manager does not have  a RTS-CTS protection and the make does meaning if hte remote station manager uses rts-cts so the mac and if it uses cts-to-self so the mac
RTS/CTS support is mandatory but not CTS-to-self. 
So based on my setup (constant rate manager) what setup on the remote station manager and mac should be to have minimum of collisions?
Have you checked that the CW values are the right ones, that is have been effectively been configured? 
Reply all
Reply to author
Forward
0 new messages