目前常用的無線網路路由協定有:DSDV, AODV, DSR三種。效能評估的參數為:
1. 封包送達的比率 (Packet delivery faction)
2. 封包平均延遲時間 (Average end-to-end delay of data packet)
3. 第一個封包收到的時間
Note: 這個實驗的內容與程式碼主要來自於CMU的Monarch project: Wireless and Mobility Extensions to ns-2。更詳細的參考資料在ns manual的Chapter 16
工具程式:
1. cbrgen: 是可以用來產生所需要的TCP flow或是CBR flow的Tcl Script產生器,程式位址於 ~/ns-allinone-2.29/ns2.29/indep-utils/cmu-scan-gen/cbrgen.tcl
語法:ns cbrgen.tcl [-type cbrtcp] [-nn nodes] [-seed seed][-mc connections] [-rate rate]
(用法課本上有,不贅述)
測試一下
$ns cbrgen.tcl -type cbr -nn 5 -seed 1 -mc 2 -rate 10.0 > cbr_n5_m2_r10
(ps: 課本上面的指令有一點錯誤,少了上面紅色的部分。綠色部分型態是浮點數所以要加上小數點與後面的0才不會被誤判為整數。如果不小心寫成10(整數)程式還是會執行,也會有結果產出,不過是錯誤的結果。漸漸地,在後段的學習中需要學習由結果的分析判斷模擬過程是否有錯誤的產生)。
結果
cbr_n5_m2_r10
仔細去看一下與範例所顯示的有一點不同,看起來是課本放錯範例圖了。
2. setdest: 用來產生隨機的無線網路節點的移動劇本。程式位址於 ~/ns-allinone-2.29/ns2.29/indep-utils/cmu-scan-gen/setdest目錄下。在早期的版本中使用前需要先用make產生執行檔,不過2.29版好像不需要這個步驟。
setdest命令格式如下: ./setdest -n
參數定義如下(參數的順序不重要):
-n num_of_nodes 的值指定了場景中總共有多少個節點。
-p pausetime 指定了節點運動到一個目的地後停留的時間,如果設為0,則節點不停留。
-s maxspeed 指定了節點隨機運動速度的最大值,單位是(m/s),節點的運動速度將在[0,maxspeed]中隨機選擇。
-t simtine 指定了類比場景持續的時間(單位為s)
-x maxx 指定節點運動區域的長度(x軸方向,單位為m)
-y maxy 指定節點運動區域的寬度(y軸方向,單位為m)
>
測試
$ ./setdest -n 2 -p 0.0 -M 20.0 -t 10 -x 300 -y 300 > scen_2n_0p_20M_10t_300_300
(note: 另外有一個參數 -v 可以設定setdest的版本,version 2會多出幾個參數需要給定,可以直接打入 ./setdest 觀看使用說明)
範例一
這個實驗由100個無線節點所組成,模擬時間為100秒,pause time為100秒(這等於靜止不動),使用CBR資料流,最大連線數目10條,每一條flow每秒送出10個封包。
使用cbrgen產生traffic pattern
$ns cbrgen.tcl -type cbr -nn 100 -seed 1 -mc 10 -rate 10.0 > cbr_n100_m10_r10
使用setdest產生無線網路移動場景
./setdest.exe -n 100 -p 100.0 -M 10.0 -t 100 -x 300 -y 300 > scen_100n_100p_10M_100t_300_300
(note: setdest和cbrgen的參數設定需要一致,另外有一些參數是無效的,例如這個實驗中所有的node都是靜止不動的,所以移動速度的設定就沒有影響。)
將所產生的檔案名稱放入book2/lab10/lab10_1.tcl中的適當位置
#設定traffic pattern檔案
set opt(cp) "cbr_n100_m10_r10"
#設定節點移動場景
set opt(sc) "scen_100n_100p_10M_100t_300_300"
然後執行 $ns lab10_1.tcl DSDV (使用DSDV作為路由協定)
大約三分鐘就跑完了,還算很快。看結果

然後再試試 AODV的效能: $ns lab10_1.tcl AODV

DSR: $ns lab10_1.tcl DSR

效能參數都差不多,實驗量太少不足以說明什麼。另外因為網路節點是靜止不動的也沒有錯誤模型被加入以至於在delivery ratio方面都是100%。
範例二
改成移動模型(pause time = 0),然後範圍大一點(500 x 500)其餘皆相同。
./setdest.exe -n 100 -p 0.0 -M 10.0 -t 100 -x 500 -y 500 > scen_100n_0p_10M_100t_500_500
lab10_2.tcl的程式碼與lab10_1.tcl完全相同,除了載入的移動劇本檔案不同以外。
$ns lab10_2.tcl DSDV

$ns lab10_2.tcl AODV

$ns lab10_2.tcl DSR

這裡就可以稍微判定一下,在移動的環境下DSDV表現不如DSR和AODV。
沒有留言:
張貼留言