NS2指令碼中如何使用God

2021-06-15 11:23:39 字數 1322 閱讀 5063

在無線網路模擬中,借助god可以獲得整個網路的一些全域性性資訊。在有些情況下,這些資訊非常必要,比如要判斷兩個相鄰無線節點是否在傳輸範圍之類。

ns2對god的支援在c++空間中主要是god類,該類分別宣告和實現在ns-2.30/mobile/god.h檔案和ns-2.30/mobile/god.cc檔案中(我使用的是ns-2.30版)。

如果在**指令碼裡使用god,需要以下幾個基本設定:

在node-config命令的選項中要開啟能量模型,如果不開啟能量模型,god將認為所有的節點之間都不相鄰,其他資訊也無從獲得,這顯然不是我們想要的。

$ns_ node-config    -...... \

-energymodel $opt(engmodel) \

-initialenergy $opt(initeng) \

-txpower $opt(txpower) \

-rxpower $opt(rxpower) \

-idlepower $opt(idlepower) \

-......

當然前面設定好上面這些引數的值:(以下為常用的典型值)

set opt(engmodel)    energymodel

set opt(initeng)    10000.0

set opt(txpower)    0.660

set opt(rxpower)    0.395

set opt(idlepower)    0.035

以上設定完畢,下面建立god物件:

set god_ [create-god $opt(nn)]

$god_ on

#這裡還可以加一些其他設定,比如

#$god_ allow_to_stop

上面的變數$opt(nn)是網路中節點的數量,也許要提前賦值,例如:

set opt(nn) 10

建立god物件後,c++空間的god物件也被建立,並且c++空間的god物件裡的mb_node陣列被分配,每個陣列元素是乙個mobilenode物件的指標,陣列大小就是網路節點的數量大小。但現在這些指標的值都還為null,不指向任何mobilenode物件(mobilenode類是對應無線網路節點的類)。為了給這些指標賦值,在tcl指令碼裡需要新增一些**,具體的位置是在ns建立節點後,將這些節點與god聯絡起來:

for    

這樣這些節點對應的mobilenode物件的指標被填充到上面提到的mb_node陣列中,在c++**中可以隨時隨地通過god來獲得當前網路的全域性情況。比如判斷兩個節點是否鄰節點,可以呼叫:

god::instance().isneighbor(i,j)   //其中i,j是網路節點的位址

NS2指令碼中如何使用God

ns2指令碼中如何使用god 在無線網路模擬中,借助god可以獲得整個網路的一些全域性性資訊。在有些情況下,這些資訊非常必要,比如要判斷兩個相鄰無線節點是否在傳輸範圍之類。ns2對god的支援在c 空間中主要是god類,該類分別宣告和實現在ns 2.30 mobile god.h檔案和ns 2.30...

從Linux學到NS2 (二)搭建NS2中重要元件

本篇問題 1.1 cc是linux下c 原始檔的預設字尾,cpp是c 語言檔案的字尾名,採用.cc字尾 執行 g poisson.cc o poisson.o std c 11 後生成檔案 poisson.o 其中.o是編譯的中間目標檔案,可以將多個中間目標檔案鏈結成可執行檔案。2.ns 的唯一記錄...

XSLT之路2 指令碼使用

定義命名空間 xsl stylesheet version 1.0 xmlns xsl xmlns msxsl urn schemas microsoft com xslt exclude result prefixes msxsl xmlns vms urn my scripts 定義指令碼 ms...