使用NOAH (NO Ad-Hoc Routing Agent) 無線網路靜態路由

Wireless Static Routing With NOAH (NO Ad-Hoc Routing Agent)

參考資料: http://icapeople.epfl.ch/widmer/uwb/ns-2/noah/

 

目前NS2官方版本中的DSDVDSRAODVTORA等路由協定均使用路由封包廣播的方式來建立節點間的路由路徑.相比而言,NOAH是一個可以由NS2使用者自己來設置路由路徑的Routing Agent模組,路由表項均可由使用者在模擬script中指定.

 

[安裝方法]

以下步驟在NS2.31版本上完成,當前路徑為~/ns-2.31.

1.         Makefile.in檔的OBJ_CC段中,增加

noah/noah.o \

2.         Makefile.in檔的NS_TCL_LIB段中,增加

tcl/mobility/noah.tcl \

3.         建立一個新目錄noah,下載noah.h noah.cc到這個目錄下

4.         下載noah.tcltcl/mobility/目錄下

5.         tcl/lib/ns-lib.tcl檔的相關部分進行修改

source ../mobility/dsdv.tcl

source ../mobility/dsr.tcl

source ../mobility/com.tcl

#增加如下內容

source ../mobility/noah.tcl

 

           DSDV {

                  set ragent [$self create-dsdv-agent $node]

           }

           DSR {

                  $self at 0.0 "$node start-dsr"

           }

           AODV {

                  set ragent [$self create-aodv-agent $node]

           }

           TORA {

                  Simulator set IMEPFlag_ ON

                  set ragent [$self create-tora-agent $node]

           }

            #增加如下內容

           NOAH {

                   set ragent [$self create-noah-agent $node]

           }

 

Simulator instproc create-tora-agent { node } {

    set ragent [new Agent/TORA [$node id]]

       $node set ragent_ $ragent

       return $ragent

}

 

#增加如下函數

Simulator instproc create-noah-agent { node } {

    # Create a noah routing agent for this node

    set ragent [new Agent/NOAH]

 

    ## setup address (supports hier-addr) for noah agent

    ## and mobilenode

    set addr [$node node-addr]

 

    $ragent addr $addr

    $ragent node $node

 

    if [Simulator set mobile_ip_] {

        $ragent port-dmux [$node demux]

    }

    $node addr $addr

    $node set ragent_ $ragent

    return $ragent

}

 

6.         在終端執行如下命令,重新生成Makefile,清理並生成新的支持NOAH模組的NS2

./configure

make clean

make

 

[使用方法]

1.         在模擬script,設置Routing AgentNOAH.

……

set val(rp)             NOAH

……

$ns_ node-config -adhocRouting $val(rp) \

……

 

2.         模擬腳本中的路由表項設定規則為:

[$node_(N) set ragent_] routing C dest1 to-dest1-next dest2 to-dest2-next …

其中N為節點id (N=0,1,2…), C為路由表項數目, destx是目標節點, to-destx-next是從當前節點N到達destx所要經由的下一跳節點id.

示例:

[$node_(0) set ragent_] routing 2 3 1 4 2

表示節點0的路由表中有2:到達節點3的下一跳節點為節點1,到達節點4的下一跳節點為節點2.

 

注意1: 路由表項數目(C)要等於實際所使用的數目,如示例中使用2.

注意2: 若為一個目標節點指定多個下一跳節點,NOAH只選擇最先設定的下一跳節點作為實際的下一跳節點.[$node_(0) set ragent_] routing 2 3 1 3 2中節點0到達目標節點3的下一跳節點為節點1.

注意3: 路由路徑手動設定時,必須將下一跳節點選擇為當前節點通信半徑範圍內的某個節點,否則無法建立連通的路由路徑.

 

Contact Information

方維維

Email: fangvv@gmail.com

Website: http://sites.google.com/site/fangvv