天天看点

ns2中无线通信距离的一些小节

zz:http://hi.baidu.com/cqupt_dingo/blog/item/9b8ba2cad013f20d93457e13.html

首先仿真时会输出以下内容

highestAntennaZ_ = 1.5, distCST_ = 550.0

highestAntennaZ_:指的是无线天线的高度,好像ns2里都是1.5米,没见到过改这个参数的。

distCST_:指的是载波监听范围,这里是550米,我装好ns2就默认是这个了。

1.载波监听

      在CSMA中,由于通道的传播延迟,当两个站点监听到总线上没有存在信号而发送帧时,仍会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突己发 生,仍然要将已破坏的帧发送完,使总线的利用率降低。改进方案是使站点在传输时间继续监听媒体,一旦检测到冲突,就立即停止发送,并向总线上发一串短的阻塞报文(Jam),通知总线上各站冲突己发生,可以提高总线的利用率。这种方案称做载波监听多路访问/冲突检测协议,简写为CSMA/CD,这种协议已广泛应用于局域网中。

      CSMA/CD的代价是用于检测冲突所花费的时间。对于基带总线而言,最坏情况下用于检测一个冲突的时间等于任意两个站之间传播时延的两倍。从一个站点开始发送数据到另一个站点开始接收数据,也即载波信号从一端传播到另一端所需的时间,称为信号传播时延。

信号传播时延(μs)=两站点的距离(m)/信号传播速度(200m/μs)。

          假定A、B两个站点位于总线两端,两站点之间的最大传播时延为tp。当A站点发送数据后,经过接近于最大传播时延tp时,B站点正好也发送数据,此时冲突便发生。发生冲突后,B 站点立即可检测到该冲突,而A站点需再经过一份最大传播时延tp后,才能检测出冲突。也即最坏情况下,对于基带CSMA/CD来说,检测出一个冲突的时间等于任意两个站之间最大传播时延的两倍(2tp)。

        所以,载波侦听距离要大于2倍无线节点通信距离。在NS-2 仿真软件中,干扰范围的半径约为发射范围半径的2.2 倍。所以上面载波侦听范围是550米,无线通信范围是250米。

2.distCST_计算

在ns2.34/mac/channel.cc文件中,当使用WirelessPhy时,

distCST_ = wifp->getDist(wifp->getCSThresh(),wifp->getPt(), 1.0, 1.0,highestZ , highestZ,wifp->getL(),wifp->getLambda());

里面有个重要参数是“CSThresh"。什么是CSThresh?

  •  RXThresh_ is the reception threshold. If the received signal strength is greater than this threshold, the packet can be successfully received.
  •  CSThresh_ is the carrier sensing threshold. If received signal strength is greater than this threshold, the packet transmission can be

sensed. However, the packet cannot bedecoded unless signal strength is greater than RXThresh_.

  •  CPThresh_ refers to the capture phenomenon. 

ns用接收功率来模拟包的接收

  • 接受功率(Pr)<侦听阀值(CSThresh_),那么无线网络接口将这个信号作为噪声而丢弃。因此,MAC 层不能检测到这个载波。或者说,对于MAC 层而言,这个信号是不存在的。
  • 侦听阀值(CSThresh_)<侦听阀值(Pr)<接收阀值(RXThresh_) ,  则能感应到包但不能解析包。无线网络接口将这个信号标记为错误信号,然后上传给MAC 层进行处理。对于MAC 层而言,该信号可以被检测到,但是不能被正确地解码。因此,MAC 层将该信号视为一个干扰噪声。
  • 接收功率(Pr)>接收阀值(RXThresh_), 就正确接收包。无线网络接口直接将该信号上传给MAC 层。此时, MAC 层可以对该信号进行正确地解码,并进行相应地处理。

3.RXThresh_和CSThresh_计算

在ns-2.34/tcl/lib/ns-default.tcl中有以下内容

1

2

3

4

5

6

7

8

9

# Initialize the SharedMedia interface with parameters to make

# it work like the 914MHz Lucent WaveLAN DSSS radio interface

Phy/WirelessPhy set CPThresh_ 10.0

Phy/WirelessPhy set CSThresh_ 1.559e-11 ;#550m

Phy/WirelessPhy set RXThresh_ 3.652e-10 ;#250m

Phy/WirelessPhy set bandwidth_ 2e6 ;#2Mbps

Phy/WirelessPhy set Pt_ 0.28183815 ;#传输功率

Phy/WirelessPhy set freq_ 914e+6

Phy/WirelessPhy set L_ 1.0

这就是ns默认的参数,在ns2.34/nsindep-utils/propagation/下有个工具 threshold工具,可以通过距离、功率等等条件算出这些参数,具体编译过程上一篇博客讲过了。这个550前的阀值是怎么算出来的?在终端下输入:

1 ./threshold -m TwoRayGround -r 1 550

(from 行走的天马:也可以直接用  ./threshold -m TwoRayGround 550) 

然后输出:

1

2

3

4

5

6

7

8

9

10

11

12

13

distance = 550

propagation model: TwoRayGround

Selected parameters:

transmit power: 0.281838

frequency: 9.14e+08

transmit antenna gain: 1

receive antenna gain: 1

system loss: 1

transmit antenna height: 1.5

receive antenna height: 1.5

Receiving threshold RXThresh_ is: 1.55924e-11

最后一行即所求的值。