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

2021-08-18 11:20:15 字數 3778 閱讀 9246

本篇問題:

1. (1) .cc是linux下c++ 原始檔的預設字尾,.cpp是c++語言檔案的字尾名,採用.cc字尾;

執行"g++ poisson.cc -o  poisson.o -std=c++11"後生成檔案「poisson.o」,其中.o是編譯的中間目標檔案,可以將多個中間目標檔案鏈結成可執行檔案。

2. ns**的唯一記錄——trace檔案:

(1) 開啟trace:

set nd [open out.tr w]

$ns trace-all $nd

set namtracefd [open poisson.nam w]

$ns namtrace-all $namtracefd

(2)

檔案格式舉例:第一列event  +:enqueue -

:dequeue r:receive d:drop,具體實現方式可在[1]中查到,

乙個生成的例項:

+ 0.293601 0 1 poisson 210 ------- 0 0.0 1.0 -1 0 //最後一列pkt id,倒數第二列seq num

- 0.293601 0 1 poisson 210 ------- 0 0.0 1.0 -1 0

r 0.305281 0 1 poisson 210 ------- 0 0.0 1.0 -1 0

+ 0.405701 0 1 poisson 210 ------- 0 0.0 1.0 -1 1

- 0.405701 0 1 poisson 210 ------- 0 0.0 1.0 -1 1

r 0.417381 0 1 poisson 210 ------- 0 0.0 1.0 -1 1

+ 0.50708 0 1 poisson 210 ------- 0 0.0 1.0 -1 2

- 0.50708 0 1 poisson 210 ------- 0 0.0 1.0 -1 2

r 0.51876 0 1 poisson 210 ------- 0 0.0 1.0 -1 2

+ 0.73111 0 1 poisson 210 ------- 0 0.0 1.0 -1 3

- 0.73111 0 1 poisson 210 ------- 0 0.0 1.0 -1 3

r 0.74279 0 1 poisson 210 ------- 0 0.0 1.0 -1 3

+ 0.82048 0 1 poisson 210 ------- 0 0.0 1.0 -1 4

- 0.82048 0 1 poisson 210 ------- 0 0.0 1.0 -1 4

r 0.83216 0 1 poisson 210 ------- 0 0.0 1.0 -1 4

+ 1.231313 2 1 exp 210 ------- 0 2.0 1.0 0 5

- 1.231313 2 1 exp 210 ------- 0 2.0 1.0 0 5

r 1.242993 2 1 exp 210 ------- 0 2.0 1.0 0 5

+ 1.248113 2 1 exp 210 ------- 0 2.0 1.0 1 6

- 1.248113 2 1 exp 210 ------- 0 2.0 1.0 1 6

r 1.259793 2 1 exp 210 ------- 0 2.0 1.0 1 6

3. 搭建poisson流量發生器:(1) 利用c++11的random庫:

(2) 利用ns2中自帶流量發生器expoo,設定其burst_time為零(即指數開關流等效泊松流);

(3)新建立乙個ns2的全新的流寫入packet.h庫

[2],下圖右側顯示的是泊松流在某

agent上

4.處理trace檔案——gawk元件:

通過「gawk -f progawk out.tr>pc」命令按照progawk檔案中編寫的gawk規範命令

(提取時間為第一列,分組id為第二列

)處理生成的trace檔案「out.tr」,將生成的兩列資料存在叫pc的檔案中(如下圖)稍後處理。

更多gawk命令的介紹:

#列印第一欄含有foo的所有記錄

gawk '$1~/foo/' bbs-list

#fs為欄分隔符,賦值,分欄,列印第二欄

gawk 'begin;'

#ofs為輸出分隔符,ors為輸出記錄分隔符

gawk 'begin '

//命令原型 gawk 'program' input-file1 input-file2 ...

5. 繪製圖形的工具——gnuplot:輸入gnuplot啟動,通過「plot 『pc』 with lines」命令以pc檔案上的第一列資料為x軸,第二列資料為y軸繪圖,與matlab得到的**結果進行對比:(gnuplot圖中y軸為分組的序號,x軸為時間,上面的為事件入隊「+」的

曲線,下方為出隊/接收事件的曲線,發生重合

/*使用「show functions/variables」命令檢視相應資訊,**表示乘方*/

plot [0:10] sin(x)+0.1*x

plot 'out.tr' using 0:($1+$2) w linesp lt 2 pt 3 // 0表示xtics為0,1,2...,若為其他列則x座標為其他列,y座標為兩列和,lt表示線型

如果通過gawk處理好的檔案也可以直接用ns2自帶的xgraph畫圖。還是推薦awk與xgraph組合使用,gnuplot暫時雞肋了。

未解決的問題:本文只是將ns2重要元件全部搭建出來,學習了

ns2中node、agent等

具體實現方法。

下篇文章將繼續深入學習上面各元件,最終實現一項具體的**實驗。

c++程式的除錯過程也是項艱鉅的任務。

ns2具體案例:**研究某排隊系統的實際操作方法(排隊的到達為泊松流,服務為一常數)

matlab**出的排隊系統中時延與佇列溢位概率的關係

[1]ns2與網路**,于斌

[2]參考中方法將poisson流量發生器整合到ns2中

ns2中變數的繫結

asrmagnet asrmagent bind pdistance pdistance 實變數 bind requerstor requestor 整形變數 bind time lastsent lastsesssent 時間變數 bind bw ctrlimit ctrlbwlimit 帶框變數...

NS2中,編譯檔案

ns2是用c 和tcl編寫的,可以按照自己的方式修改並執行。所以就需要修改一下裡面的原始碼,編譯之後執行。這裡簡單介紹一下,如何編譯。一如果只是簡單改動,比如新增了乙個.cc檔案,或者修改了乙個.cc檔案。在makefile檔案修改之後,直接在nsx.xx目錄下,執行 make就可以了。修改make...

NS2中trace檔案分析

ns中模擬出來的時間最終會以trace檔案的形式告訴我們,雖然說一般都是用awk等工具分析trace檔案,但是了解trace檔案的格式也是必不可少的。下面就介紹一下無線網路模擬中trace檔案的格式。trace檔案的最開始時一段形如 m 0.0 nn 4 x 500 y 500 rp dsdv m ...