ImageVerifierCode 换一换
格式:DOC , 页数:35 ,大小:953.50KB ,
资源ID:348758      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-348758.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(NS2简单又经典的入门教程Word文档格式.doc)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

NS2简单又经典的入门教程Word文档格式.doc

1、proc finish global ns nf nd $ns flush-trace close $nf close $nd #以背景执行的方式去执行NAM exec nam out.nam & exit 0#产生四个网络节点set n0 $ns nodeset n1 $ns nodeset n2 $ns nodeset n3 $ns node#把节点连接起來$ns duplex-link $n0 $n2 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns duplex-link $n2 $n3 1.7Mb 20ms D

2、ropTail#设定ns2到n3之间的Queue Size为10个封包大小$ns queue-limit $n2 $n3 10#设定节点的位置,这是要给NAM用的$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right#观测n2到n3之间queue的变化,这是要给NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5#建立一条TCP的连线set tcp new Agen

3、t/TCP$tcp set class_ 2$ns attach-agent $n0 $tcpset sink new Agent/TCPSink$ns attach-agent $n3 $sink$ns connect $tcp $sink#在NAM中,TCP的连线会以蓝色表示$tcp set fid_ 1#在TCP连线之上建立FTP应用程式set ftp new Application/FTP$ftp attach-agent $tcp$ftp set type_ FTP#建立一条UDP的连线set udp new Agent/UDP$ns attach-agent $n1 $udpset

4、 null new Agent/Null$ns attach-agent $n3 $null$ns connect $udp $null#在NAM中,UDP的连线会以紅色表示$udp set fid_ 2#在UDP连线之上建立CBR应用程式set cbr new Application/Traffic/CBR$cbr attach-agent $udp$cbr set type_ CBR$cbr set packet_size_ 1000$cbr set rate_ 1mb$cbr set random_ false#设定FTP和CBR资料传送开始和結束時间$ns at 0.1 $cbr st

5、art$ns at 1.0 $ftp start$ns at 4.0 $ftp stop$ns at 4.5 $cbr stop#結束TCP的连线(不一定需要写下面的程式來实际結束连线)$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink#在模拟环境中,5秒后去呼叫finish來結束模拟(这样要注意模拟环境中#的5秒並不一定等于实际模拟的時间$ns at 5.0 finish#执行模拟$ns run3、运行ns tool.tcl得到下图接下來,筆者先簡單介紹awk,然後如何使用awk去分析trace file,以得到Throughput、

6、Delay、Jitter、和Loss Rate。awk A.簡介 awk是一種程式語言。它具有一般程式語言常見的功能。因awk語言具有某些特點,如:使用直譯器(Interpreter)不需先行編譯;變數無型別之分(Typeless),可使用文字當陣列的註標(Associative Array)等特色。因此,使用awk撰寫程式比起使用其它語言更簡潔便利且節省時間。awk還具有一些內建功能,使得awk擅於處理具資料列(Record),欄位(Field)型態的資料;此外, awk內建有pipe的功能,可將處理中的資料傳送給外部的 Shell命令加以處理, 再將Shell命令處理後的資料傳回awk程式

7、,這個特點也使得awk程式很容易使用系統資源。B. awk是如何運作的 為便於解釋awk程式架構,以及相關的術語,筆者就以上面trace file為例,來加以介紹。a.名詞定義:1. 資料列:awk從資料檔上讀取的基本單位,以trace file為例,awk讀入的第一筆資料列為 ” 0.1 1 2 cbr 1000 - 1.0 3.1 0 0”第二筆資料列為 “ cbr 1000一般而言,一筆資料列相當於資料檔上的一行資料。2. 欄位(Field):為資料列上被分隔開的子字串。以資料列” 0”為例,一二三四五六七八九十十一十二0.1121000-1.03.1一般而言是以空白字元來分隔相鄰的欄位

8、。當awk讀入資料列後,會把每個欄位的值存入欄位變數。欄位變數意義$0為一字串, 其內容為目前awk所讀入的資料列.$1代表 $0 上第一個欄位的資料.$2代表 $0 上第二欄個位的資料.b.程式主要節構: Pattern1 Actions1 Pattern2 Actions2 Pattern3 Actions3 一般常用”關係判斷式”來當成Pattern。例如:x 3 用來判斷變數x是否大於3x = 5 用來判斷變數x是否等於5awk提供c語言常見的關係運算元,如:、!等等Actions是由許多awk指令所構成,而awk的指令與c語言中的指令非常類似。IO指令:print 、 printf(

9、 ) 、getline .流程控制指令: if ( .) . else 、 while() 在awk程式的流程為先判斷Pattern的結果,若為真True則執行相對應的Actions,若為假False則不執行相對的Actions。若是處理的過程中沒有Pattern,awk會無條件的去執行Actions。c.工作流程: 執行awk時, 它會反複進行下列四步驟。1. 自動從指定的資料檔中讀取一筆資料列。2. 自動更新(Update)相關的內建變數之值。3. 逐次執行程式中 所有 的 Pattern Actions 指令。4. 當執行完程式中所有 Pattern Actions 時,若資料檔中還有未

10、讀取的料,則反覆執行步驟1到步驟4。awk會自動重覆進行上述的四個步驟,所以使用者不須在程式中寫這個迴圈。End-to-End Delay筆者把量測CBR封包端點到端點間延遲時間的awk程式,寫在檔案measure-delay.awk檔案中,讀者可以參考此範例,修改成符合讀者需求的程式。BEGIN #程式初始化,設定一變數以記錄目前最高處理封包的ID。 highest_packet_id = 0; action = $1; time = $2; node_1 = $3; node_2 = $4; type = $5; flow_id = $8; node_1_address = $9; nod

11、e_2_address = $10;seq_no = $11; packet_id = $12;#記錄目前最高的packet ID if ( packet_id highest_packet_id ) highest_packet_id = packet_id;#記錄封包的傳送時間 if ( start_timepacket_id = 0 ) start_timepacket_id = time;#記錄CBR (flow_id=2) 的接收時間 if ( flow_id = 2 & action != d ) if ( action = r end_timepacket_id = time;

12、else #把不是flow_id=2的封包或者是flow_id=2但此封包被drop的時間設為-1 end_timepacket_id = -1; END #當資料列全部讀取完後,開始計算有效封包的端點到端點延遲時間 for ( packet_id = 0; packet_id = highest_packet_id; packet_id+ ) start = start_timepacket_id; end = end_timepacket_id;packet_duration = end - start;#只把接收時間大於傳送時間的記錄列出來 if ( start cbr_delay執行結

13、果:0.100000 0.0387060.108000 0.0387060.116000 0.0387060.124000 0.0387060.132000 0.038706JitterJitter就是延遲時間變化量delay variance,由於網路的狀態隨時都在變化,有時候流量大,有時候流量小,當流量大的時候,許多封包就必需在節點的佇列中等待被傳送,因此每個封包從傳送端到目的地端的時間不一定會相同,而這個不同的差異就是所謂的Jitter。Jitter越大,則表示網路越不穩定。筆者把量測CBR flow的Jitter的awk寫在檔案measure-jitter.awk內。#程式初始化 ol

14、d_time=0; old_seq_no=0; i=0; node_1_address = $9; seq_no = $11;#判斷是否為n2傳送到n3,且封包型態為cbr,動作為接受封包 if(node_1=2 & node_2=3 & type=cbr & action=) #求出目前封包的序號和上次成功接收的序號差值 dif=seq_no-old_seq_no;#處理第一個接收封包 if(dif=0) dif=1;#求出jitter jitteri=(time-old_time)/dif; seqi=seq_no; i=i+1; old_seq_no=seq_no; old_time=t

15、ime; for (j=1; j cbr_jitter1 0.008000234另一種計算Jitter的方法-更精確的方式# =# NormalJitter.awk# Version now: 0.1# Last Modified Date: 2004-10-23,19:39:54# = Usage =# awk -f NormalJitter.awk out.tr# = Programed By =# 查輝(ZHA HUI), Wuhan, China, Email: zhahui AT # = Description =# 本awk程式給出了另外一種jitter的計算方法,這種方法中jit

16、ter的計算是基于以下公式:# jitter (recvtime(j)-sendtime(j)-(recvtime(i)-sendtime(i)/(j-i), 其中 ji 。# = Attention =# NormalJitter.awk中關於jitter的計算完全基于柯志亨博士的measure-delay.awk程式中delay的# 計算。而measure-delay.awk在柯博士網頁中的ns2類比例子中是正確的,但是對于不同的例子需要根# 據情況進行一定的修改,並可能需要加入某些魯棒性處理代碼(例如對于第一個包的處理,對于丟包的處# 理等)。# = Reference =# http:

17、/140.116.72.80/smallko/ns2/ns2.htm# = Feedback =# 如有任何關於本程式jitter計算的問題,請致信 # 柯志亨(ChihHeng, Ke)博士 smallko2001 AT .tw 或者與本人聯繫。# = Acknowledgements =# Dr. ChihHeng, Ke provided valuable documents and awk files upon my requests. highest_packet_id ) highest_packet_id = packet_id; # 記錄下包的seq_no - ZHA pkt_

18、seqnopacket_id = seq_no;end_timepacket_id = time; # 初始化jitter計算所需變量 - ZHA last_seqno = 0; last_delay = 0; seqno_diff = 0; for ( packet_id = 0; packet_duration = end - start; end ) # 得到了delay值(packet_duration)后計算jitter - ZHA seqno_diff = pkt_seqnopacket_id - last_seqno; delay_diff = packet_duration - last_delay; if (seqno_diff = 0) jitter =0;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2