Friday, April 11, 2008

實驗九 無線網路效能分析探討(一) 隱藏節點和暴露節點的問題

了解什麼是隱藏節點和暴露節點的問題,了解RTS/CTS如何降低隱藏節點問題發生的機率,提升系統效能。

隱藏節點問題
有三個節點 A → B ←C,節點A和節點C同時想傳送資料到節點A,但是節點A和節點C都不在對方的傳送範圍內,所以節點A把資料傳給節點B,節點C也把資料傳給節點B,這樣資料就會在節點B發生碰撞(Collision),因為傳送距離發生誤判的問題,就被稱為隱藏節點問題(Hidden Terminal Problem)

暴露節點問題
有四個節點 R1 ← S1 S2 → R2,其中R1和R2不在對方的傳送範圍內,而S1和S2彼此在對方的傳送範圍內,暴露節點的問題是發生在當有一個節點要發送資料給另一個節點,但因為臨近節點也正在發送資料,因此影響了原本節點的資料傳送。

利用NS2的小工具計算出有效的傳輸距離和相對應的參數,在第一次使用的時候要先編譯程式

執行threshold

以Two Ray Ground ,希望有效的傳輸距離為250公尺,便可得到相關參數設定

執行 test_2nodes.tcl檔

執行結果當node 0 和 node 1 距離為250公尺,發現傳送端 sd 檔和接收端 rd 檔所傳送和接收到的封包一樣多

執行結果當node 0 和 node 1 距離為251公尺,發現傳送端 sd 檔所傳送的封包接收端rd檔沒有任何的紀錄,是因為node 0 和 node 1 距離過遠,無法成功接受到封包


Example1
A B距離100m ,B C 距離 100m 而節點之間的carrier sense距離為150m,可傳送的有效距離為120m

使用threshold球出相對應的參數

執行 test_hidden_terminal.tcl,當沒有RTS/CTS(Mac/802_11 set RTSThreshold_ 3000),可以發現sd1 node0送出1688個封包,rd1 node1 接收到 153個封包

執行 test_hidden_terminal.tcl,當沒有RTS/CTS(Mac/802_11 set RTSThreshold_ 3000),可以發現sd2 node0送出1626個封包,rd2 node1 接收到 104個封包

當沒有RTS/CTS(Mac/802_11 set RTSThreshold_ 0),可以發現sd1 node0送出1688個封包,rd1 node1 接收到 738個封包

當有RTS/CTS(Mac/802_11 set RTSThreshold_ 0),可以發現sd2 node0送出1626個封包,rd2 node1 接收到 782個封包,結果可以顯示使用RTS/CTS可以降低隱藏節點的問題


Example2
S1 S2 同時想要分別傳送資料到R1和R2,節點之間的距離都為100公尺,而 carrier sense距離為120公尺,可以傳送資料的有效距離為100公尺

使用threshold球出相對應的參數

以Two Ray Ground ,希望有效的傳輸距離為120公尺,便可得到相關參數設定

執行 test_exposed_terminal.tcl,當沒有RTS/CTS(Mac/802_11 set RTSThreshold_ 3000),可以發現sd1 node1送出1688個封包,rd1 node0 接收到從node1送出的925 個封包

執行 test_exposed_terminal.tcl,當沒有RTS/CTS(Mac/802_11 set RTSThreshold_ 3000),可以發現sd2 node1送出1626個封包,rd2 node0 接收到從node1送出的835 個封包

當有RTS/CTS(Mac/802_11 set RTSThreshold_ 0),可以發現sd1 node1送出1688個封包,rd1 node0 接收到 828個封包

當有RTS/CTS(Mac/802_11 set RTSThreshold_ 0),可以發現sd2 node1送出1626個封包,rd2 node0 接收到 782個封包,結果顯示使用RTS/CTS並不能有效的解決暴露節點的問題


暴露節點的接收檔雖然跟課本的結果有一些出入,但是不會差很多,應該每一台電腦所得到的結果不一定會一樣的關係吧!

No comments: