实例介绍
网络ns2仿真实验分析(RED、丢包率、端到端延迟、吞吐量)附源码
分组的端口号。 (10) dst addr:目的地址,格式为 node port,其中node代表分组发送节点的id,pot表示发 送分组的端口号。 (11) seg num:分组的序列号。 (12) okt id:分组的唯标识符。 3n2与n3之间的RED队列的半均队列长度与当前队列长度随时间的变化如下图所示: torrent and ave"吧 e PED CueL旧 300 era已 n15000 ANA 图2平均队列长度与当前队列长度随时问变化的曲线图 4运行结果中显示CBR流量总共发包550,丢失16,丢包率为:0.029。丢包率随时间的变 化如下图所示: packets of lost rate 。045 graph 自04 ,035 00 自02 0.015 图3丢包率随时间变化的关系图 5CBR流量的吋延随时间的变化如下图所示: 1u彐r 1 0.14 心 01 Q。0 图4端到端时延随时间变化的关系图 6.节点n2的平均吞吐量随时间的变化如下图所示 100 T 图5节点n2的吞吐量随时间变化的关系头 7.结果分析:从RED的图示中,可以看出队列的大小波动变化不是很大,在处理突发的 包时冇一定的优势。从丟包率、时延和吞吐量的变化图中,可以看出当丟包率增加时, 端到端之问的时延也在增加,而吞吐量则下降,丟包率、时延和吞吐量在表示网络性能 的好坏时有一定的关系 、相关代码 1.络拓扑仿真脚木 simulator:tcl: #Create a simulator object set ns [new Simulator] #Define different colors for data flows for NAM) Sns color 1 Blue Sns color 2 #Open the nam trace file set nt lopen out. nam w Sns namtrace-all Snf set nd [open out. tr wI Sns trace-all Snd #Define a finish procedure proc finish仆}{ global ns nf nd Sns flush-trace close Snf close snd exec nam out. nam kit o #Create four nodes set no [Sns node] et n1 [Sns nodel set n2 [Sns node set n3 [ns node] #Create links between the nodes Sns duplex-link Sn0 Sn2 2Mb 10ms DropTail Sns duplex-link Sn1 Sn2 2Mb 10ms DropTail Sns duplex- link Sn2 Sn3 1.7Mb 20ms RED #Set queue Size of link (n2-n3 to 100 Sns queue-limit Sn2 Sn 3 100 #Give node position(for NAm) Sns duplex-link-op SnO Sn2 orient right-down Sns duplex-link-op Sn1 Sn2 orient right-up Sns duplex-link-op $n2 Sn3 orient right #Monitor the queue for link(n2-n3 .( for NAM) Sns duplex-link-op Sn2 Sn 3 queuePos 0.5 #Setup a TCP connection set tcp new Agent/TCPI Sns attach-agent Sno Stcp set sink [new Agent/TCPSink Sns attach-agent sn3 Sink Sns connect stcp Sink Stcp set fid 1 #Setup a FTP over TCP connection set ftp [new Application/FTPl Sftp attach-agent Stcp Sftp set type FTP fsetup a UdP connection set udp [new Agent/UDP] Sns attach-agent Sn1 udp set null [new Agent/Nul] Sns attach-agent Sn3 Snull Sns connect Udp Snull Udp set fid_ 2 #Setup a CBr over UDP connection set cbr [new application/Traffic/ CBRI Scbr attach-agent Udp Scbr set type CBr Scbr set packet size 1000 Scbr set rate 1mb Scbr set random false #Schedule events for the cbr and ftp agents Sns at0.1 Scbr start Sns at 1.0"Sftp start" Sns at 40.0"Sftp stop" Sns at 4.5"Scbr stop" #Detach tcp and sink agents Sns at 50 Sns detach-agent $no stcp; Sns detach-agent sn3 Sink" Sns at 50.0 finish #monitor n2 and n3 queue set redg [[sns link Sn2 Sn3] queue set traceq lopen redQueue tr w Sredg trace curg Sredg trace ave Sredg attach Strace #Run the simulation ns rur 2.RED的数据处理脚本: SgreparedQueue. tr>averagetr Strep“Q" reqUeuetr> current tr(中 reqUeue tr为跟踪n2和n3队列产生的文件) 然后使用 gnuplot工具使用 average tr和 current, tr绘制队列随时间变化的曲线 3.丢包率数据awk处理脚本 graph rostRate,awvk #count the packet lost rate of cBr i=0; vent e=S2; from Node =$3 toNode=s4: pitT $7 srcAddr=$9 dstAddr=$10 gNum = $11 if (fromNode ==1 & toNode ==2&& event==+ i totalNum++ timeArr[i=time srate[i]= float)(drop Num/t if(fid==2&& event==d") dropNum++ END printf("#number of packet sent: %od, lost: %d\n"totalNum, dropNum) printf( #lost rate of packets: %f\n",dropNum/totalNum for(j=0; j<i; j printf("%f\t%f\n", timeArr[il, lossratejil) 3处理时延的awk代 lost rate, awk: #delay analys BEGIN highestPktld=0: s1; time=$2 fromNode $3 toNode=$4 pktType= $5 outsize =56 flags =$7 fid S8: srcAddr=$9 dstAddr=$10 seqNum=$11 ktld =$12 if(pktldshighestPktld) highestPktld=pktld if(begin Time[pktld]==0) begin Time[pktld=time if(fid==2&& event!=d Flevent==r") endTimelpktld=time; else( endTimelpktld=-1 END for(pktld=0; pktld<=highestPktld; pktld + begin=beginTimelpktld] end=endTimelpktld] pktDuration=end-begin if(begin <end) printf(%ft%f\n",begin, pktDuration) 4不吐量awk代码 throughput awk: #throughput BEGINI flag=0 ent=s1 time=$2 fromNode=$3 toNode=54: pktType =$5 pktsize $6 flags=$7 srcAddr=$ 9 dstAddr=$10 S11; pktld=$12, if(event==r"&& fromNode==2 && toNode=3 & fid ==2) pktSum[i+1]=pktSum[i]+pktsize t begin Time=time Time=time END( printf(%.6ft%.5f\n"endTime olo for(=1; j<i; j++) throughput=(float)pktSum[l/end Time[j]-begin Time) *8/1000 printf(%.6f\ t%.5f\n",endTime [il, throughput) printf(%.6f\t%.5f\n"endTime[i-1,0); 四、参考资料 1唐亚哲,计算机网络理论课件,2012.04 2方路平,刘世华等著,NS-2网络模拟基础与应用,2008.01 3.http://nile.wpi.edu/ns/ 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论