Overlapping channels in NS3

768 views
Skip to first unread message

Anand

unread,
May 19, 2010, 10:49:55 AM5/19/10
to ns-3-users
Dear All,

I am trying to check the feasibility of implementing overlapping
channels in NS3. The current implementation seems to consider
overlapping channels as independent (the nodes do not contend for
access). I wanted to check if there has been any discussions on this
topic, and what would be the best way to go about.

- Anand

--
You received this message because you are subscribed to the Google Groups "ns-3-users" group.
To post to this group, send email to ns-3-...@googlegroups.com.
To unsubscribe from this group, send email to ns-3-users+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/ns-3-users?hl=en.

Anand

unread,
May 19, 2010, 3:45:11 PM5/19/10
to ns-3-users
I just went through the code, and see that in YansWifiChannel::Send, I
can iterate through all phys and see if anyone is transmitting in the
overlapping region. Is this a good point to start? Can anyone give a
pointer as to how NS3 implements CCA for two nodes transmitting in the
same channel?

- Anand

On May 19, 7:49 pm, Anand <anand...@gmail.com> wrote:
> Dear All,
>
> I am trying to check the feasibility of implementing overlapping
> channels in NS3. The current implementation seems to consider
> overlapping channels as independent (the nodes do not contend for
> access). I wanted to check if there has been any discussions on this
> topic, and what would be the best way to go about.
>
> - Anand
>
> --
> You received this message because you are subscribed to the Google Groups "ns-3-users" group.To post to this group, send email tons-3...@googlegroups.com.To unsubscribe from this group, send email tons-3-users...@googlegroups.com.

Aditya Bhave

unread,
May 19, 2010, 4:48:40 PM5/19/10
to ns-3-...@googlegroups.com
Hi Anand,

I was also exploring this issue a while back and it seems a little complicated to implement for many reasons

1. If you look at YansWifiChannel::Send(), the decision of which node's Receive() is called is based on two factors
    a. The presence of a pointer to its YansWifiPhy object in the list phyList
    b. If the channel number of that node is the same as the sending node's channel number

Essentially NS3 does NOT identify a channel by its center frequency and width (as it should). Rather it identifies it only by a number. Also if you look at WifiHelper::Install(), only the set of nodes that use the same instance of YansWifiChannelHelper get their YansWifiPhy objects put into the common list. So for example, suppose we have the following situation


AP A ---> STA A in BSS A
AP B ---> STA B in BSS B

If you use separate instances of YansWifiChannelHelper to configure each BSS, each BSS will be on its own "channel" and will not interfere with each other. Also by default every channel is assigned the number 1! In the real world. each BSS may very well be configured on the same channel and will experience interference from the other. Modeling partially overlapping channels is also difficult for the same reason in NS3

To really model interference correctly, I think the manner in which NS3 identifies channels has to be changed completely. Channels should be identified by center frequency and width as opposed to just pointer and channel number.
--
regards,
Aditya Bhave

Anand

unread,
May 20, 2010, 6:14:17 AM5/20/10
to ns-3-users
Hi Aditya,

Thanks for the pointers!

I did take a look at YansWifiChannel::Send(). One thing I was able to
do here was to get the list of phys, iterate through them and check if
anyone overlaps with us and have IsStateTx set to true. One solution
might be to make them collide, or inform the MAC that a transmission
is already in progress. This is why I was curious to understand how
two or more nodes in the same channel do CCA in NS3.

I also went through DcfManager which implements the
NotifyAccessGranted() function. Maybe an alternative would be to
notify all overlapping PHYs instead of a single PHY about a
transmission occurring - is there a way to get the list of PHYs in
DcfManager?

- Anand
> > tons-3-us...@googlegroups.com.To unsubscribe from this group, send email>tons-3-users...@googlegroups.com<tons-3-users%2Bunsu...@googlegroups.com>
> > .
> > > For more options, visit this group athttp://
> > groups.google.com/group/ns-3-users?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "ns-3-users" group.> To post to this group, send email tons-3...@googlegroups.com.
> > To unsubscribe from this group, send email to>ns-3-users+...@googlegroups.com<ns-3-users%2Bunsu...@googlegroups.com>
> > .

Aditya Bhave

unread,
May 20, 2010, 1:04:50 PM5/20/10
to ns-3-...@googlegroups.com
When you say "check if anyone overlaps with us", what do you exactly mean? How do you plan to define overlap?
Second, NS3 already implements CCA correctly I think. When a node transmits, the DCF manager of the other nodes in the phyList which are within hearing range is updated to reflect that the medium is busy. Maybe I did not understand your question.

Anand

unread,
May 20, 2010, 3:01:01 PM5/20/10
to ns-3-users
By overlapping channels, I mean any two channels that are not
orthogonal. For instance, when I use channel 1 and 2 for two nodes in
802.11b mode, they don't contend for access while they should have in
reality. I agree with you that CCA happens correctly if both are on
the same channel.

- Anand
> > > > tons-3-us...@googlegroups.com.To unsubscribe from this group, send> email>tons-3-users...@googlegroups.com<tons-3-users%2Bunsu...@googlegroups.com>> <tons-3-users%2Bunsu...@googlegroups.com<tons-3-users%252Buns...@googlegroups.com>
>
> > > > .
> > > > > For more options, visit this group athttp://
> > > > groups.google.com/group/ns-3-users?hl=en.
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "ns-3-users" group.> To post to this group, send email>tons-3...@googlegroups.com.
> > > > To unsubscribe from this group, send email to>>ns-3-users+...@googlegroups.com<ns-3-users%2Bunsu...@googlegroups.com>> <ns-3-users%2Bunsu...@googlegroups.com<ns-3-users%252Buns...@googlegroups.com>

Nicola Baldo

unread,
May 21, 2010, 1:05:59 PM5/21/10
to ns-3-users


Hi Anand,

one quick solution is the one I described some time ago here:
http://groups.google.com/group/ns-3-users/browse_thread/thread/f0f6be1b570af0c0/ff718cde5b3880c9?lnk=gst&q=channel#ff718cde5b3880c9

you can find an example of such an adjacent-channel attenuation model
in this paper:
Eduard Garcia Villegas, Elena Lopez-Aguilera, Rafael Vidal, Josep
Paradells, "Effect of adjacent-channel interference in IEEE 802. 1
WLANs"
see in particular table I in the paper.

once you use this model, you just need to forward the packet from the
channel to the phy of all nodes in adjacent channels; then,
YansWifiPhy will automatically take care of CCA and other stuff
(including possibly receiving packets coming from adjacent channels,
as happens with real devices).

Note however that this model is somewhat coarse. A more accurate
modeling could be done using the spectrum framework:
http://iptechwiki.cttc.es/Ns3_Spectrum

however this would require significant development effort in order to
properly integrate Spectrum and Wifi. I have a clear idea on how to do
it, so I could provide some guidance, but, I repeat, it requires
significant development effort.

Nicola

Anand

unread,
May 21, 2010, 3:22:56 PM5/21/10
to ns-3-users
Dear Nicola,

Thank you very much for the reply!

It must be a coincidence, I thought of the exact solution you
mentioned in that thread and implemented it last day :)

To be exact, what I do in the YansWifiChannel::Send() method is to
send the packet to any node within the tx range and is operating in a
channel which overlaps with the current sender's channel. However,
since the packet goes to that node as if it is intended to it (perhaps
I should change it so that the node just drops the packet?), I am not
sure how the backoff counters, etc are calculated. But for the time
being, I think this solution works.

One solution I tried before this one was to keep a list of PHYs that
are in vicinity with overlapping channels, pass this list on to the
DcfManager::DoGrantAccess so that I could send a collision
notification to the requester if any of other nodes in this list is
currently txing so that it backsoff. This did not work, however.

I will look into the spectrum framework, and see what I could do with
it. I hope it's OK to contact you in case I have some question on
this.

Thank you very much once again.

Regards,
Anand

On May 21, 10:05 pm, Nicola Baldo <nba...@cttc.es> wrote:
> Hi Anand,
>
> one quick solution is the one I described some time ago here:http://groups.google.com/group/ns-3-users/browse_thread/thread/f0f6be...
>
> you can find an example of such an adjacent-channel attenuation model
> in this paper:
> Eduard Garcia Villegas, Elena Lopez-Aguilera, Rafael Vidal, Josep
> Paradells, "Effect of adjacent-channel interference in IEEE 802. 1
> WLANs"
> see in particular table I in the paper.
>
> once you use this model, you just need to forward the packet from the
> channel to the phy of all nodes in adjacent channels; then,
> YansWifiPhy will automatically take care of CCA and other stuff
> (including possibly receiving packets coming from adjacent channels,
> as happens with real devices).
>
> Note however that this model is somewhat coarse. A more accurate
> modeling could be done using the spectrum framework:http://iptechwiki.cttc.es/Ns3_Spectrum
>
> however this would require significant development effort in order to
> properly integrate Spectrum and Wifi. I have a clear idea on how to do
> it, so I could provide some guidance, but, I repeat, it requires
> significant development effort.
>
> Nicola
>
> --
> You received this message because you are subscribed to the Google Groups "ns-3-users" group.To post to this group, send email tons-3...@googlegroups.com.To unsubscribe from this group, send email tons-3-users...@googlegroups.com.

Mark Anthoni

unread,
Feb 2, 2014, 6:29:38 AM2/2/14
to ns-3-...@googlegroups.com
Hi Anand,

Its a quite old post. I was wandering if you could give me a little more detail helping hand about implementation of adjacent channel interference.

Mark A,

Madhumita

unread,
Jun 13, 2014, 3:24:29 AM6/13/14
to ns-3-...@googlegroups.com
  Hi Anand,

Did you find a solution to your own problem yet ?

abdul

unread,
Jun 16, 2014, 6:17:18 AM6/16/14
to ns-3-...@googlegroups.com
Hi all (Anand, Nicola, Nova, mark and Aditya,


Could you share your ideas and codes for the adjacent channels interference ?


Thanks in advance,


Abdulhalim

Michaël

unread,
Dec 14, 2014, 10:25:05 AM12/14/14
to ns-3-...@googlegroups.com
Hi,

I'm also trying to implement this in the way described here, but some things aren't quite clear.
So based on the article I can define the following table (for DSSS):

double attenuationDSSS[] = { 0, 0.28, 2.19, 8.24, 25.50, 49.87 };
Currently, when nodes are on a different channel, one simply exits the for loop (so no interference at all):

if ((*i)->GetChannelNumber () != sender->GetChannelNumber ()){      continue;
}

So instead of doing this, I calculate the distance between the 2 channels:

int distance = (int) abs((*i)->GetChannelNumber () - sender->GetChannelNumber ());
If the distance is larger than 5 I can jump out of the for loop (or larger then/equals, but since the table also includes an attenuation value for distance 5, I kept it in there).

if (distance > 5){
     continue;
}

If the distance is lower than or equal to 5, the following code is executed:

double rxPowerDbm = Attenuate(m_loss->CalcRxPower (txPowerDbm, senderMobility, receiverMobility),attenuationDSSS[distance]);

So the receiver power is attenuated according to the values in the table. If the distance is 0 for example, 0 dB is attenuated and the rxPowerDbm will remain unchanged. If the distance is larger, the rxPowerDbm will become lower and lower due to the higher amount of attenuation.

The rest of the ::Send method code remains unchanged. It does not seem to work however. Does the following piece of code automatically only send the packet to channels that are close enough or do I have to manually check this?
Simulator::ScheduleWithContext (dstNode,delay, &YansWifiChannel::Receive, this,j, copy, rxPowerDbm, txVector, preamble); Or have I made another mistake and misinterpreted what I should be doing? Any help is greatly appreciated!

Farshad Koohifar

unread,
Dec 21, 2014, 6:13:32 AM12/21/14
to ns-3-...@googlegroups.com
Hi all,

I am working on LTE licence assisted access (LAA) oriented project which basically studies coexistence of LTE with wifi in unlicensed bands when LTE specific bands are saturated. LTE channel is implemented in spectrum framework while wifi uses YansWifiPhy and ...
I am willing to work on developing the spectrum based channel model as suggested by Nicola because it will help my project as well as many other to have a unified channel model.

Nicola, would you kindly share your ideas with me so that I can move in the right direction without much trial and error? I have to mention that I am a PhD student so I will work on this project along my courses which some times can consume a lot of my time.

Bests
Farshad

Ursula Challita

unread,
Feb 20, 2015, 6:18:40 AM2/20/15
to ns-3-...@googlegroups.com
Hi Farshad,

I am working on the same topic and still not sure whether I go for NS-3 or Matlab. I want to check with you whether you think it is easy to d=simulate this scenarion in NS-3 and if you recommend it.

Many thanks,
Ursula

Sebastien Deronne

unread,
Feb 20, 2015, 8:55:40 AM2/20/15
to ns-3-...@googlegroups.com
It would be very interesting to have inter-channel interference modeled in ns-3.
I saw some ideas that were similar that what I had in already in mind.

Please let me know if someone is interested to take this task.
I have no time now to help a lot, but I am ok to review your code.
Reply all
Reply to author
Forward
0 new messages