ns2 distCST_

很多人运行无线脚本的时候都会出现下面的情况:

 highestAntennaZ_ = 1.5, distCST_ = 550.0

 highestAntennaZ_ 是天线的高度,ns2中默认的天线高度都是1.5。这个见过有人修改过。

 distCST_ 是指的是载波监听范围,这里是550米,我的ns2就默认是这个了。那么distCST_ 是什么?

 在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米。 

 那么有了这些知识我们就知道distCST_是什么了。

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

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

 

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

Phy/WirelessPhyExt set CSThresh_                6.31e-12   ;#-82 dBm Wireless interface sensitivity (sensitivity defined in the standard)
Phy/WirelessPhyExt set Pt_                      0.001         
Phy/WirelessPhyExt set freq_                    5.18e+9
Phy/WirelessPhyExt set noise_floor_             2.512e-13   ;#-96 dBm for 10MHz bandwidth
Phy/WirelessPhyExt set L_                       1.0         ;#default radio circuit gain/loss

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

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

希望对大家有帮助。


你可能感兴趣的:(ns)