ns2相關學習 tcl指令碼編寫(1)

2021-07-29 07:46:03 字數 2559 閱讀 5022

新建乙個**例項:

set ns [new simulator]

為了讓nam檔案和trace檔案有地方可以依託,我們要開啟.nam檔案進行寫入,並且使用控制代碼nf

set nf [open out.nam w]

$ns namtrace-all $nf

設定拓撲圖

1、設定節點的指令碼語言:建了兩個節點,叫n0,n1

set n0 [$ns node]

set n1 [$ns node]

2、建立乙個鏈結

$ns duplex-link $n0 $n1 1mb 10ms droptail

該行告訴模擬器物件將節點n0和n1用頻寬1megabit的雙工鏈路連線,延遲10ms、droptail佇列

傳送資料

1、為了能真正的傳送資料,要設定「**」——n0傳送資料的**和n1接收資料的**

首先,設定傳送資料的**

#create a udp agent and attach it to node n0

set udp0 [new agent/udp]

$ns attach-agent $n0 $udp0

# create a cbr traffic source and attach it to udp0

$cbr0 set packetsize_ 500

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

指令碼建立乙個udp**並將其附加到節點n0,然後將乙個cbr流量生成器附加到udp**。資料報大小被設定為500位元組,並且每0.005秒傳送乙個資料報(即每秒200個資料報)。

然後 設定接收資料的**

set null0 [new agent/null] 

$ns attach-agent $n1 $null0

以上指令碼建立乙個null**,作為流量接收器並將其附加到節點n1。

為了能互相傳送資料,要將兩個**連線起來,使用以下語句:

$ns connect $udp0 $null0

然後,我們要告訴cbr(傳送資料的那個)什麼時候開始傳送,什麼時候結束傳送

$ns at 0.5 "$cbr0 start"

$ns at 4.5 "$cbr0 stop"

上面語句就是說,在0.5s的時候開始傳送,在4.5s的時候結束傳送

下面是整個完整的簡單的tcl指令碼語言:

#create a simulator object

set ns [new simulator]

#open the nam trace file

set nf [open out.nam w]

$ns namtrace-all $nf

#define a 'finish' procedure

proc finish {}

#create two nodes

set n0 [$ns node]

set n1 [$ns node]

#create a duplex link between the nodes

$ns duplex-link $n0 $n1 1mb 10ms droptail

#create a udp agent and attach it to node n0

set udp0 [new agent/udp]

$ns attach-agent $n0 $udp0

# create a cbr traffic source and attach it to udp0

$cbr0 set packetsize_ 500

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

#create a null agent (a traffic sink) and attach it to node n1

set null0 [new agent/null]

$ns attach-agent $n1 $null0

#connect the traffic source with the traffic sink

$ns connect $udp0 $null0

#schedule events for the cbr agent

$ns at 0.5 "$cbr0 start"

$ns at 4.5 "$cbr0 stop"

#call the finish procedure after 5 seconds of simulation time

$ns at 5.0 "finish"

#run the simulation

$ns run

NS2相關學習 無線網(2)

在這裡,我們將完成乙個簡單的無線多跳場景 首先,定義的引數如下所示 set val chan channel wirelesschannel set val prop propagation tworayground set val netif phy wirelessphy set val mac...

NS2相關學習 完成乙個新的協議(1)

接下來要進入對我來說老大難的環節了,從表面的tcl慢慢進入到後端的c 一起加油學習吧 在本節學習中,將給出乙個在ns中實現新的協議的例子。但是可以想見的是,如果由我們自己來完成這個工作,勢必要對ns2十分的熟悉並且要對c 的相關知識有一定了解 課程中有這門課,表示hold不住,學精一門語言是多麼重要...

NS2學習筆記1 NS開發架構與C 的開發方法

新手,學習ns2,爭取把原理搞懂。目前還只能做知識的搬運工,加工整理,盡量做到每乙個問題的清晰溯源。1.為什麼採用兩種語言來編寫?以下一段 譯 ns2中otcl 和c 的連線 一 看來還是老外寫的書比較深入透徹。三種方式來開發c 程式,這才是真正的答案好不好,至於c 執行快,tcl解釋語言修改快只是...