新建乙個**例項:
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解釋語言修改快只是...