close
原本想把在ns2加入自己寫的無線感測網路協定的過程寫成一篇教學,但一方面有點懶的寫,另一方面,有

[1] Implementing a New Manet Unicast Routing 這個文件,

[2] Tutorial for the simulator "ns" 這個網站,

這兩個參考資料一步一步寫的頗詳細,

要在ns2加入自己寫的協定應該是足夠了;

 

另外,[1]裡面的routing table在2.34版已經不能用了,

[1]和[2]裡面的Needed Changes的內容和2.34版有些不同,無大礙就是了。

 

The ns Manual這個文件有非常豐富的ns2背景知識,不過似乎大部分的程式碼都是不能直接使用的,以及error model似乎是沒有功能的。

 

接下來這邊將會單純的記錄一些我覺得比較重要或特別的語法,

執行環境是ns2.34,winXp + cygwin。

 

 

訪問實體層

   WirelessPhy* phy = (WirelessPhy*)((node_->ifhead()).lh_first);
   可以透過宣告的phy去存取實體層
   需要在.h裡include "wireless-phy.h"
   在協定類別(class)內宣告MobileNode* node_;

   若在.h裡宣告WirelessPhy* phy;
   在.cc裡的建構子(constructor)宣告node_ = (MobileNode*)Node::get_node_by_address(id);
   在command()裡的if(strcmp(argv[1],"start")==0)裡面宣告
             phy = (WirelessPhy*)((node_->ifhead()).lh_first);
   就可以在任何一個function內直接使用"phy->"的語法了

  

   phy->node_off();
   強制關閉節點,
   其他功能可參考:mac\wireless-phy.h, mac\wireless-phy.cc

  

   phy->node()->energy_model()
   管理所在節點的電力,
   例如:

   phy->node()->energy_model()->setenergy(0.01);
   強制設定所在節點的電力為0.01焦耳,
   其他功能可參考:mobile\energy-model.h, energy-model.cc

  
   直接關閉節點或將電力設為0的話,模擬動畫裡的節點不會變紅色,
   但把電力設很低讓它在傳送封包時耗盡電力,就會變紅

 

封包相關,pkt是封包名字

   Scheduler::instance().schedule(target_, pkt, 0.05);
   把封包往下層送,0.05是延遲時間,單位是秒。

   target_->recv(pkt, (Handler*)0);
   也是把封包往下層送,(Handler*)0 沒試過用途。

   dmux_->recv(pkt, (Handler*)0);
   路由層把封包往上層送。

   drop(pkt,"message");
   把封包丟掉,message是會記錄在封包收發記錄裡的訊息。

   Packet::free(pkt)
   單純的丟封包。

  

   hdr_cmn* ch = ch->access(pkt);
   hdr_ip* ih = ih->access(pkt);
   hdr_agentName* agentH=agentH->access(pkt);

   透過各種不同的header存取封包內容,
   例如 ch->ptype() 就會回傳這個封包的種類,
   ih->saddr()則會回傳這個封包的來源節點ID,
   agentName是自己創造的封包類型。

  

其他

   fprintf(stdout,"msg %d \n",intName);
   印出指定訊息到startxwin.bat所產生的視窗上面,可顯示各節點的狀況,用來除錯很方便

   例如:
   fprintf(stdout,"node:%d",here_.addr_);
   就可印出該節點的ID

  

TCL相關,大部分是無效的指令,我程式有bug可能也是原因之一

   [1]裡面的透過Agent/Protoname set accesible_var_ true
   去指定route agent的參數是無效的

   $ns rtmodel-at 0.3 down $n1
   功能為在0.3秒關閉有線節點n1,對無線無效,

  

  

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 kaiw 的頭像
    kaiw

    KKK~的K

    kaiw 發表在 痞客邦 留言(0) 人氣()