天天看點

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

最後一行即所求的值。