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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(网络能量测量Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络能量测量Word格式.docx

1、 0.114 2 3 cbr 1000 - 2 1.0 3.1 0 0 0.114 2 3 cbr 1000 - 2 1.0 3.1 0 0圖二. 有線網路環境下的模擬過程記錄檔範例格式說明:1. 每一筆記錄的開始都是封包事件發生的原因,若是”r”則表示封包被某個節點所接收;若是”+”則表示進入了佇列;若是”-“則表示離開佇列;若是”d”則表示封包被佇列所丟棄。2. 第二個欄位表示的是事件發生的時間。3. 欄位三和欄位四表示事件發生的地點(從from node到to node)。4. 欄位五表示封包的型態。5. 欄位六是封包的大小。6. 欄位七是封包的旗標標註。7. 欄位八表示封包是屬於哪一個

2、資料流。8. 欄位九和欄位十是表示封包的來源端和目的端,這兩個欄位的格式是a.b,a代表節點編號,b表示埠號(port number) 。9. 欄位十一表示封包的序號;欄位十二表示封包的id。以前面模擬過程記錄檔的第一筆為例,意思就是說有一個封包pakcet id為0,資料流id為2,序號為0,長度為1000 bytes,型態為CBR,它是從來源端1.0要到目的地3.1,在時間0.1秒的時候,從節點1要進入了節點2。若是模擬環境為無線的,則模擬過程記錄檔格式則會跟路由協定和是否有設定要使用新格式而不同,以DSDV且沒有設定使用新格式的範例如下所示:s 0.029290548 _1_ RTR -

3、 0 message 32 0 0 0 0 - 1:255 -1:255 32 0 s 0.029365548 _1_ MAC - 0 message 84 0 ffffffff 1 800 - 1:r 0.030037615 _0_ MAC - 0 message 32 0 ffffffff 1 800 - 1:r 0.030062615 _0_ RTR - 0 message 32 0 ffffffff 1 800 - 1:s 1.000000000 _0_ AGT - 1 tcp 40 0 0 0 0 - 0:0 1:0 32 0 0 0 0 0圖三 DSDV且沒有設定使用新格式的範例1

4、. 第一個欄位是封包事件發生的原因。s:傳送(send)、r: 接收(Receive)、d:丟棄(Drop)、f:轉送(Forward)。2. 第二個欄位是事件發生的時間。3. 第三個欄位是事件發生的節點ID。4. 第四個欄位是說明這是發生在那一層的事件。RTR:路由層(Router Trace)、AGT:應用層(Agent Trace)、MAC:媒體存取層(Mac Trace)。5. 第七個欄位是封包的型態。6. 第八個欄位是封包的大小。7. 第十四個欄位是來源節點位址。(NodeID:PortNumber)8. 第十五個欄位是目的節點位址。其他欄位說明請參考1 。 若是使用相同的模擬tcl

5、檔,但加入了如$ns_ use-newtrace (使用新的格式),則產生的範例如下所示:s -t 0.029290548 -Hs 1 -Hd -1 -Ni 1 -Nx 10.00 -Ny 40.00 -Nz 0.00 -Ne -1.000000 -Nl RTR -Nw - -Ma 0 -Md 0 -Ms 0 -Mt 0 -Is 1.255 -Id -1.255 -It message -Il 32 -If 0 -Ii 0 -Iv 32 s -t 0.029365548 -Hs 1 -Hd -1 -Ni 1 -Nx 10.00 -Ny 40.00 -Nz 0.00 -Ne -1.000000

6、-Nl MAC -Nw - -Ma 0 -Md ffffffff -Ms 1 -Mt 800 -Is 1.255 -Id -1.255 -It message -Il 84 -If 0 -Ii 0 -Iv 32 r -t 0.030037615 -Hs 0 -Hd -1 -Ni 0 -Nx 10.00 -Ny 20.00 -Nz 0.00 -Ne -1.000000 -Nl MAC -Nw - -Ma 0 -Md ffffffff -Ms 1 -Mt 800 -Is 1.255 -Id -1.255 -It message -Il 32 -If 0 -Ii 0 -Iv 32 r -t 0.03

7、0062615 -Hs 0 -Hd -1 -Ni 0 -Nx 10.00 -Ny 20.00 -Nz 0.00 -Ne -1.000000 -Nl RTR -Nw - -Ma 0 -Md ffffffff -Ms 1 -Mt 800 -Is 1.255 -Id -1.255 -It message -Il 32 -If 0 -Ii 0 -Iv 32圖四 DSDV且設定使用新格式的範例 -t time (時間)3. 第三個欄位是下一站的資訊(Next hop info)。-Hs: id for this node-Hd: id the next hop towards the destinati

8、on4. 第四個欄位是節點屬性類型標籤(Node property type tag)。-Ni: node id-Nx Ny -Nz: nodes x/y/z coordinate-Ne: node energy level-Nl: trace level, such as AGT, RTR, MAC-Nw: reason for the event5. 第五個欄位是封包在IP層的資訊 (Packet information at IP level)。-Is: source address. Source port number (來源位置,a.b其中a為節點ID,b為埠號)-Id: dest

9、 address.dest port number (目的位置)-It: packet type (封包類型)-Il: packet size (封包大小)-If: flow id (資料流ID)-Ii: unique id (唯一的ID編號)-Iv: ttl value (Time To Live的值)6. 第六個欄位是MAC層的資訊 (packet info at MAC level)。 -Ma: duration-Md: destinations ethernet address-Ms: sources ethernet address-Mt: ethernet type看完以上的簡介後

10、,讀者就會發現若是直接去分析NS2在模擬過程所產生的記錄檔是一件辛苦的事情,當使用不同的路由協定或者模擬的環境不同時,所需要的分析程式就會不同,因而造成使用者的不便。所以筆者就開發了新的記錄檔的方式,讓使用者能方便地分析模擬的結果。筆者所採用的方法是當有一條以UDP為傳輸協定的應用程式開始發送資料時,當封包從應用程式層到UDP層時,我們就把封包的序號、時間、和大小記錄到一個檔案中(發送端記錄檔),而當封包到達接收端時,同樣地我們把收到的封包序號、傳送時間(在傳送端要發送封包時會把當時的時間放在封包的標頭檔common header中)、到達時間、封包延遲時間(=到達時間 - 傳送時間)、和封包

11、大小記錄到另一個檔案中(接收端記錄檔),有了這兩個記錄檔,我們要求得吞吐量、封包延遲、抖動率、或封包遺失率就變得很簡單了。對於封包遺失率,我們可以先計算發送端記錄檔中有多少筆記錄,每一筆記錄就代表一個送出封包的資訊,因此有多少筆記錄就代表有多少封包被送出,同理,我們去計算接收端記錄檔中有多少記錄,每一筆記錄代表每一個所接収封包的資訊,因此有多少筆記錄就代表有多少封包被接收,從這兩個數值的差值我們就可以得知會有多少的封包在傳送的過程被丟棄了,然後再把這個差值除以全部送出的封包量,就可以得到封包遺失率。對於封包延遲,則可以直接從接收端記錄檔的第四欄得到。對於抖動率(jitter),則可以使用封包延

12、遲時間差距除以封包序號差距得到(jitter ( (recvtime(j) - sendtime(j) ) - (recvtime(i) - sendtime(i) ) ) / (j-i) = delay(j) - delay(i) / (j-1), 其中 ji )。對於吞吐量,則可以把所接收的封包大小總和除以所花費的時間就可以得到。若是要求得以TCP為傳輸協定的應用程式的吞吐量,方法也跟UDP相同,直接分析接收端記錄檔的資訊就可以了。實驗步驟有線網路模擬環境:如下圖所示,這個網路的環境包含了兩個傳輸節點s1和s2,路由器r,和資料接收端d。s1到r之間與s2到r之間的網路頻寬都是2Mbps,

13、傳遞延遲時間是10ms。網路架構中的頻寬瓶頸是在r到d之間,頻寬為1.7Mbps,傳遞延遲的時間為20ms。所有鏈路的管理機制都是採用DropTail,且r到d之間的最大佇列長度(queue limit)是10個封包的長度。在s1到d之間會有一條FTP的連線,另外,在s2到d之間有一條CBR的連線, 其傳送速度為1Mbps,每一個封包大小為1Kbytes。CBR是在0.1秒開始傳送,在4.5秒結束傳輸;FTP是在1.0秒開始傳送,4.0秒結束傳輸。 TCL程式碼。(book/lab8/wired-measure.tcl)# 產生一個模擬的物件set ns new Simulator#針對不同的

14、資料流定義不同的顏色,這是要給NAM用的$ns color 1 Blue$ns color 2 Red#開啟一個NAM 記錄檔set nf open out.nam w$ns namtrace-all $nf#開啟一個模擬過程記錄檔,用來記錄封包傳送的過程set nd open out.tr w$ns trace-all $nd#定義一個結束的程序proc finish global ns nf nd $ns flush-trace close $nf close $nd #以背景執行的方式去執行NAM #exec nam out.nam & exit 0#產生傳輸節點, s1的id為0, s

15、2的id為1set s1 $ns nodeset s2 $ns node#產生路由器節點, r的id為2set r $ns node#產生資料接收節點, d的id為3set d $ns node#s1-r的鏈路具有2Mbps的頻寬,10ms的傳遞延遲時間,DropTail的佇列管理方式#s2-r的鏈路具有2Mbps的頻寬,10ms的傳遞延遲時間,DropTail的佇列管理方式#r-d的鏈路具有1.7Mbps的頻寬,20ms的傳遞延遲時間,DropTail的佇列管理方式$ns duplex-link $s1 $r 2Mb 10ms DropTail$ns duplex-link $s2 $r 2

16、Mb 10ms DropTail$ns duplex-link $r $d 1.7Mb 20ms DropTail#設定r到d之間的Queue Limit為10個封包大小$ns queue-limit $r $d 10#設定節點的位置,這是要給NAM用的$ns duplex-link-op $s1 $r orient right-down$ns duplex-link-op $s2 $r orient right-up$ns duplex-link-op $r $d orient right#觀測r到d之間queue的變化,這是要給NAM用的$ns duplex-link-op $r $d q

17、ueuePos 0.5#建立一條TCP的連線set tcp new Agent/TCP$ns attach-agent $s1 $tcp# mTcpSink是TCPsink的延申,除了具有TCPSink的功能外,也能記錄所送出封包資訊set sink new Agent/TCPSink/mTcpSink#設定tcp接收記錄檔的檔名為tcp_sink$sink set_filename tcp_sink$ns attach-agent $d $sink$ns connect $tcp $sink#在NAM中,TCP的連線會以藍色表示$tcp set fid_ 1#在TCP連線之上建立FTP應用程

18、式set ftp new Application/FTP$ftp attach-agent $tcp$ftp set type_ FTP#建立一條mUDP的連線#mUDP是UDP的延申,除了具有UDP的功能外,也能記錄所送出封包資訊set udp new Agent/mUDP#設定傳送記錄檔檔名為sd_udp$udp set_filename sd_udp$ns attach-agent $s2 $udp#新增的接收Agent,可以把接收封包資訊記錄到檔案中set null new Agent/mUdpSink#設定接收檔記錄檔檔名為rd_udp$null set_filename rd_ud

19、p$ns attach-agent $d $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#設定傳送封包的大小為1000 byte$cbr set packet_size_ 1000#設定傳送的速率為1Mbps$cbr set rate_ 1mb$cbr set random_ false#設定FTP和CBR資料傳送開始和結束時間$ns

20、at 0.1 $cbr start$ns at 1.0 $ftp start$ns at 4.0 $ftp stop$ns at 4.5 $cbr stop#結束TCP的連線(不一定需要寫下面的程式碼來實際結束連線)$ns detach-agent $s1 $tcp ; $ns detach-agent $d $sink#在模擬環境中,5秒後去呼叫finish來結束模擬(這樣要注意模擬環境中#的5秒並不一定等於實際模擬的時間$ns at 5.0 finish#執行模擬$ns run執行方式: $ns wired-measure.tcl模擬結束後就會產生tcp_sink,sd_udp,和rd_u

21、dp三個記錄檔。 計算CBR的封包遺失率。從sd_udp檔案中,可以得知共有550筆記錄;從rd_udp檔案中,可以得知共有542筆記錄,所以共有8個封包遺失,因此封包遺失率就為8/550 = 1.45% 求得封包延遲時間。$awk print $1, $4 rd_udp cbr_delay說明:使用awk,把rd_udp檔案中的第一(封包序號)和第四欄(封包延遲時間)列印到cbr_delay的檔案中。使用gnuplot畫出cbr_delay。gnuplot plot “cbr_delay” title cbr: packet delaywith linespoints 1 set xlabe

22、l packet sequence set ylabel delay time (sec) set terminal gif set output “cbr_delay.gif” replot結果是不是跟第一本計算機網路實驗當中使用awk分析原本的記錄檔一樣呢。 求得抖動率。awk 分析程式 (measure-jitter.awk) 。BEGIN last_pkt_id = -1; last_e2e_delay = -1; pkt_id = $1; send_time = $2; rcv_time = $3; e2e_delay = $4; pkt_size = $5; if( last_pk

23、t_id !=-1) jitter = (e2e_delay - last_e2e_delay) / (pkt_id - last_pkt_id); printf(%f %fn, send_time, jitter); last_pkt_id = pkt_id; last_e2e_delay = e2e_delay;執行方法:$awk f measure-jitter.awk rd_udp cbr_jitter plot “cbr_jitter” title cbr: packet jitterwith linespoints 1 set xlabel packet start time (s

24、ec) set ylabel jitter (sec) set output “cbr_jitter.gif” 求得吞吐量。Perl分析UDP吞吐量程式 (measure-throughput.pl)#使用方法: perl measure-throughput.pl #記錄檔檔名$infile=$ARGV0;#多少時間計算一次(單位為秒)$granularity=$ARGV1;$sum=0;$sum_total=0;$clock=0;$maxrate=0;$init=0;#打開記錄檔open (DATA,$infile) | die Cant open $infile $!;#讀取記錄檔中的每

25、行資料,資料是以空白分成眾多欄位 while () x = split( ); if($init=0) $start=$x2; $init=1; #讀取的第零個欄位是pkt_id#讀取的第一個欄位是封包傳送時間#讀取的第二個欄位是封包接收時間#讀取的第三個欄位是封包end to end delay#讀取的第四個欄位是封包大小 #判斷所讀到的時間,是否已經達到要統計吞吐量的時候 if ($x2-$clock $maxrate) $maxrate=$throughput; #輸出結果: 時間 吞吐量(bps) print STDOUT $x2: $throughput bpsn #設定下次要計算吞吐量的時間 $clock=$clock+$granularity; $sum=$x4;$endtime=$x2;#計算最後一次的吞吐量大小 $throughput=$sum*8.0/$granularity;print STDOUT $clock=$clock+$granularity;#print STDOUT $sum_total $start $endtimen$avgrate=$sum_tot

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1