1、電腦網路實驗課程NS2(Network Simulation,version 2),Environment set upNS2TCLAwkSimulation,NS2,(Network Simulation , version2),網路模擬的優點模擬時間少、成本低提供網路研究學者驗證自己提出的方法是否有效NS2由UC Berkeley所開發由C+和OTcl為開發語言,NS2(Network Simulation , version2),下載檔案(http:/ apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev libxmu-dev libxmu-
2、headers g+ libpcap-dev gnuplot (ubuntu需要安裝),Install NS2,解壓縮檔案 $ tar zxvf ns-allinone-2.35.tar.gz把解壓後的資料夾移動到想要安裝的位置 $ sudo mv ns-allinone-2.35 /home/ns2$ cd ns-allinone-2.35$ ./install,Complete message,$ vi /.bashrc (增加自己家目錄的export)exportPATH=$PATH:/home/ns2/ns-allinone-2.29/bin:/home/ns2/ns-allinone
3、-2.29/tcl8.4.11/unix:/home/ns2/ns-allinone-2.29/tk8.4.11/unixexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /home/ns2/ns- allinone-2.29/otcl-1.11:/home/ns2/ns-allinone-2.29/libexportTCL_LIBRARY=/home/ns2/ns-allinone-2.29/tcl8.4.11/library,$ ns$cd ns-2.35 ./validate,Environment Testing,TCL,(Tool Command La
4、nguage),在NS2扮演的角色為描述腳本描述網路環境和參數設定,TCL(Tool Command Language),變數宣告及使用Variable,set$Example set month 3 set day 30 set date “ $month - $day ” puts $date # ns date.tcl # 3 - 30,exprTCL包含很多種表示式,如數學表示式、關係表示 式等,統常會用”expr”去判斷真假或求值,Exampleset value expr 2=1puts $value# ns expr1.tcl#1,# ns expr2.tcl#7,set val
5、ue expr 5+2puts $value,把執行的結果取代tcl scriptExample,puts “ I am expr 5+2 years old , and my I.Q. is expr 55+20. ”# ns expr3.tcl# I am 7 years old , and my I.Q. is 75.set my_height 6.0puts “ If I was 2 inches taller , I would be expr$my_height+(2.0/12.0) feet tall. ”# ns expr4.tcl# If I was 2 inches tal
6、ler , I would be 6.166666666666667 feet tall.,TCL也有提供控制程式運作流程的方法,包含if-else , switch , while , for , foreach等Example,set pass 69if $pass = 60 puts “ Congratulations pass. ” else puts “ Fail. ”# ns control1.tcl# Congratulations pass.,set num_class 80switch $num_class ,100 puts “Perfect.”80 puts “Good.
7、”60 puts “Bad.”,# ns control2.tcl# Goodfor set i 0 $i10 incr i 2 ,puts “ For loop number $i.”,#,ns control3.tclFor loop numberFor loop numberFor loop numberFor loop numberFor loop number,02468,set i 1while $i 10 ,puts “ While loop number $i ”incr i 2,#,ns control4.tclWhile loop numberWhile loop numb
8、erWhile loop numberWhile loop numberWhile loop number,13579,讓使用者自定程序proc name params bodyname 為程序的名稱params 為參數列表body 為程序主體,proc name params body,Example,proc sum_proc a b return expr $a + $bset value12set value 8Set sum sum_proc $value1 $value2puts “sum_proc value = $sum”# ns proc1.tcl# sum_proc val
9、ue = 20,Example,for set i 0 $i 0 incr i 1 set myarray($i) $iputs “ myarray $i value = $myarray($i) ”,# ns arrays1.tcl# myarray 0 value# myarray 1 value# myarray 2 value# myarray 3 value.# myarray 9 value,= 0= 1= 2= 3.=9,puts未指定輸出裝置,內定輸出裝置是螢幕;若有 指定輸出裝置為檔案,會把秀出來的內容寫入檔案Example,set f open “/tmp/myfile”
10、“w”for set i 0 $i ,=, r: receive , +: enqueue , - : dequeue , d : drop,$ awk f xxx.awk out.tr,Simulation,此模擬為TCP和UDP傳送封包的過程,並設有DropTail佇 列;先使用CBR封包傳送一段時間後再開始送FTP封包, 因FTP與CBR互搶頻寬,所以就會發生封包停在佇列的情 況,等有限的佇列滿的時候就會看到開始丟棄封包,傳輸節點 S1、S2、路由器 r、資料接收端 ds1rTCP2Mbps頻寬,10ms延遲時間Start 1.0s ,End 4.0ss2rUDP2Mbps頻寬,10ms
11、延遲時間Start 0.1s ,End 4.5srd1.7mbps頻寬,20ms延遲時間Droptail佇列機制,最大佇列10個封包長度,r,TCP,UDP,FTP,cbr,2Mbps,10ms,2Mbps,10ms,1.7Mbps,20ms,cbrftp,0.1,1.0,4.0 4.5,s1,s2,d,sink,Nullsec,TCP,FTP,2Mbps,10ms,s1,ID=0,d, ID=2,sink,1.7Mbps,20msr , ID=1,Summary: Generic Script Structure,1. Create Simulator object set ns new S
12、imulator2.Turn on tracing # nam trace, packet trace3.Create topology # node,link(queue-size) # nam position4.Setup packet loss, link dynamics5.Create: protocol agents application and/or setup traffic sources6.Post-processing procs #ex.finish()7.Start simulation #simulation scenario,#產生一個新的模擬物件set ns
13、 new Simulator,#設定封包顏色給NAM用$ns color 1 Blue,#開一個NAM紀錄檔,set nf open out.namw$ns namtrace-all$nf,#開一個模擬過程的紀錄檔,紀錄封包傳送過程set nd openout.tr w$ns trace-all $nd,#定義一個結束的程序procfinish globalns nf nd$ns flush-traceclose $nfclose $nd,execnam out.nam&exit 0,#設定傳輸節點,s1的id是0,r的id是1,d的id是2(id會按照所建順序依序產生)set s1 $ns
14、nodeset r $ns nodeset d $ns node,#設定各連線的傳輸頻寬、延遲時間、佇列機制$ns duplex-link$s1 $r 2Mb 10ms DropTail$ns duplex-link$r $d 1.7Mb 20ms DropTail,#設定佇列大小,$ns queue-limit$r $d 10,#設定模擬畫面節點位置,$ns duplex-link-op$s1 $r orientright-down$ns duplex-link-op$r $d orientright,#設定來觀察r-d佇列的變化(NAM),$ns duplex-link-op$r $d q
15、ueuePos0.5,#開始建立一個TCP的連線set tcp new Agent/TCP#設定節點的通訊協定$ns attach-agent $s1 $tcp#設定TCP的接收端,此TCPSinkagent收到tcp封包會回ackset sink new Agent/TCPSink$ns attach-agent $d $sink$ns connect$tcp $sink#設定此TCP連線為藍色(NAM)$tcp set fid_ 1#建立一個FTP應用程式在TCP連線上set ftp new Application/FTP#設定ftp為tcp協定$ftp attach-agent $tcp
16、$ftp set type_ FTP,#開始建立一個UDP的連線,#設定此UDP連線為?色(NAM),#建立一個cbr應用程式在UDP連線上,#設定FTP和cbr傳送的起始時間和結束時間$ns at 1.0 $ftp start$ns at 4.0 $ftp stop,#結束TCP的連線,$ns at 4.5 $ns detach-agent $s1 $tcp$ns at 4.5 $ns detach-agent $d $sink,#5秒後結束此模擬$ns at 5.0 finish,#開始執行模擬$ns run,TCP Simulation,TCP & UDP Simulation,欄位一
17、: 封包事件欄位二 : 事件發生時間欄位三、欄位四 : from node 到 to node欄位五 : 封包型態欄位六 : 封包大小欄位七 : 旗標欄位八 : 表示封包屬於的資料流欄位九、欄位十 : 封包來源端和目的端 x.y - x:節點編號 , y:port number欄位十一 : 封包序號欄位十二 : 封包id,event,time,From,node,To,node,Packet,type,Packet,size,flags,fid,Src,addr,Dst,addr,Seq,num,Packet,Id,1.安裝NS2,並且可執行任一範例安裝及模擬的操作過程請以圖片及文字說明(word)2.實做TCP與UDP模擬實驗將實做部分程式碼補上即可,並繳交完整程式碼及記錄檔3.使用awk語言分析記錄檔將實做部分程式碼貼上即可,並繳交完整程式碼,Download NS2 all-in-onehttp:/ Virtualboxhttp:/www.virtualbox.org/wiki/Downloads柯志亨,計算機網路實驗以NS2模擬工具實做,學貫行銷,2005,