2008年4月26日 星期六

lab9 無線網路效能分析探討(-) 隱藏節點和暴露節點問題



實驗目的:

  1. 了解什麼是隱藏節點和暴露節點
  2. 了解 RTS/CTS如何降低隱藏節點問題發生的機會,以提升系統效能 3. 了解 NS2 中無線傳輸模型和門檻的觀念

背景知識:

  • 隱藏節點問題:

    節點B在節點A和節點C傳輸範圍內的交集區域內,但是A和C都不在互相的傳輸範圍內,這時有兩個節點A,C同時想傳送資料給節點B,節點A傳送資料給B時,節點C會認為目前網路閒置,同時也會傳送資料給節點B,同時傳送給節點B的資料就會發生碰撞(Collision).

    這種因傳送距離而發生的誤判的問題稱為隱藏節點問題(Hidden Terminal Problem).


  • 降低隱藏節點問題

    當Tx在送出資料前先發送一個控制封包 (Request to Send),告知Tx傳送範圍內的所有節點不要有任何傳輸的動作,而Rx如果目前是空閒的,則回應一個Clear to Send 封包告訴Tx可以開始傳送料,如此一來就可以降低隱藏節點的問題,但是並不能完全解決!

  • 暴露節點問題

    Tx:C 要傳送資料給D時,發現(聽到)傳輸範圍內的B正在傳送資料給A(C是B的暴露節點),Tx:C就會延遲傳送,但這種延遲是不必要的,因為B傳送資料給A與C傳送資料給D並不衝突,因此這種因為聽到傳輸範圍內有節點在傳輸,而延遲傳輸就是暴露節點的問題
  • 使用RTS/CTS
    我們可能想到使用RTS/CTS,當C聽到B送出的RTS,但卻沒聽到相對應的CTS,那麼不就可以推論出C是自己是暴露節點了嗎?!所以C可以同時傳送資料出去,但在這種情況下,如果是別人傳送資料給C,那麼就可能預B傳送的資料發生碰撞,所以使用RTS/CTS並不能解決暴露節點的問題
  • 傳輸模型及門檻
    NS2實做了一些傳輸模型:


Free Space 是最理想的傳輸模型(檔案在~/ns-2.29/mobile/propagation.h & propagation.cc)

Two Ray Ground 除了考慮直線 path loss也考慮地面反射(reflection of ground)
(檔案在~/ns-2.29/mobile/tworayground.h & tworayground.cc)

Shadowing 是用來模擬Tx到Rx中間有障礙物時對傳送訊號的影響,常用於indoor
(檔案在~/ns-2.29/mobile/shadowing.h & shadowing.cc)

關於"門檻",NS2主要利用訊號強度門檻(Threshold)方式,判斷封包是否成功收到
NS2設定一個訊號偵測(Carrier Sense)的門檻CSThresh_ ,決定封包是否能被Rx偵測出來 (於PHY Module)
NS2會設定另一個RxThresh_ ,用來判斷封包是否能被Rx所接收 (於MAC)

(檔案在~/ns-2.29/mobile/wireless-phy.h & wireless-phy.cc)

開始實驗步驟

STEP1.

ns2提供一個小工具程式threshold.cc(在ns-allinone-2.29/ns-2.29/indep-utils/propagation),他可以藉由輸入想要使用的傳輸模型和有效傳輸距離,而輸出相對應的參數值

用g++編譯它


顯示警告


意思是版本不同了,引入的標頭檔不用x.h的形式而用x來取代
沒關係 不影響我們的作業
編譯完後在同目錄下會產生一個threshold.exe

STEP2
執行

它告訴我們使用方法囉
來測試看看 設定傳輸模式TwoRayGround 有效傳輸距離250m

顯示參數

STEP3
用TCL模擬程式驗證(home/clark/lab9/test_2nodes.tcl)
這程式設定有兩節點n0(30,30),n1(280,30) n0要傳輸給n1,參數如上設定
執行

模擬結束,會產生接收紀錄檔,打開來看看,確實有接收到

STEP4
那如果變更超過可接受距離呢?


在執行一次 $ns test_2nodes.tcl,開啟此次接收檔rd

可知n1完全沒接收到n0傳來的資料

接下來要討論隱藏節點問題了
如圖一nA-nB d=100m ,nB-nC d=100 m,節點之間的carrier sense d=150m 傳送有效距離為120m
利用小工具知道我們要設定的參數


對於CSThresh_的設定 ,因為用的公是相同,只要把RXThresh_結果拿來用即可
TCL模擬程式

執行
$ns test_hidden_terminal.tcl
我們看執行後產生的紀錄檔

sd1:

sd2:

rd1:
rd2:
更改TCL模擬檔

再一次執行

rd1:

rd2:


明顯的 使用RTS/CTS可以降低隱藏節點問題,但不能完整解決

接下來討論暴露節點問題
如圖2所示
S1,S2同時想分別傳送 資料給R1,R2,節點之間距離都是100m ,carrier sense 距離120m,有效傳輸距離100m用小工具算出相對應參數


tcl模擬程式

執行 $ns test_exposed_terminal.tcl

記錄檔封包





更改 ctsrts

rd1

rd2

結果顯示 使用RTS/CTS不能有效解決暴露節點的問題










沒有留言:

張貼留言

try comments