您好,欢迎访问三七文档
RED算法拥塞控制性能在目前的网络中,带宽的资源越来越紧缺,而用户的数量却与日俱增,拥塞控制和队列管理已经成为网络发展变化的一种必不可少的技术。拥塞控制的主要目的是控制网络负载,保证用户提供给网络的的负载不大于网络资源容量和处理能力。目前在路由器中主要采用弃尾算法(Droptail)和随机早期检测(RandomEarlyDetection)算法来进行队列的拥塞控制。在本实验中,通过NS仿真来展示RED算法对网络拥塞的控制性能。一、RED算法TCP基于窗口的端到端的拥塞控制对于internet的鲁棒性起到了关键性的作用。但是,随着互联网的爆发式发展,网络规模越来越大,仅仅依靠TCP对于拥塞的控制以提高互联网的QOS是远远不够的,因此需要提出更好的更完美的拥塞控制机制来保证系统的通畅。必须把网络传输的中间节点也拉入网络的拥塞控制机制中去。例如采用路由器端的拥塞控制方法,其主要思想就是通过排队算法决定哪些包可以优先传输,哪些包可以选择性地丢弃,从而达到网络的拥塞控制。其中,随机早期检测(RED)算法是目前互联网中运用的主流算法。1.RED算法原理随机早起检测(RED,RandomEarlyDetection)算法将队列的平均队长作为决定拥塞避免机制是否应被处罚的随机函数的参数,增加了在队列长度变得太大之前平滑瞬时拥塞的可能性,减少了同时使多个流受分组丢弃影响的可能性。RED算法主要分为两个部分。首先是计算平均队列长度,以此作为对拥塞程度的估计;另一部分是计算丢弃包的概率。由于Internet数据的突发性,如果一个队列很多时候是空的,然后迅速被充满,又很快被取空,这时就不能说路由器发生拥塞而需要向源端发送拥塞指示。整个算法大体描述如下:Avq=0,count=-1;当有分组到达时:If(队列空){=f(time-q_time);Avq=(1-w)mAvq;}elseAvq—(1-w)Avq+wq;If(MINth=Avq=MAXth){Count=Count+1;Pb=maxp((Avq-MINth)/(MAXth-MINth));Pa=Pb/(1-count*P);}elseif(Avq=MAXth)丢弃分组elsecount=-1;其中:Avq:路由器队列平均长度。因此,RED在计算平均队长avgQ时,采用了类似低通滤波器带权值的方法,平均队长的计算公式如下avgQ=(1-wq)*avgQ+wq*q(1)其中,wq为权值,q为采样时实际队列长度。这样由于Internet数据的突发本质或者短暂拥塞导致的实际队列长度暂时的增长将不会使得平均队长有明显的变化,从而“过滤”掉短期的队长变化,尽量反映长期的拥塞变化。RED有两个和队列长度相关的阈值:MINth。和MAXth。当有分组达到路由器时,RED计算出平均队长avgQ。若avgQMINth,则没有分组需要丢弃;当MINthavgQMAXth时,计算出概率P,并以此概率丢弃分组;当avgQMAXth时,所有的分组都被丢弃。由于RED使用的是基于时间的平均队长度,就有可能会发生实际队长大于平均队长的情况,如果队列已满,则到达的分组只能被丢弃。2.RED算法优点1)最小化包丢失率和排队延迟。当负载动态变化时,RED通过检测平均队长控制链路当前拥塞状态,在平均队长超过了最大阈值后就丢包,有效地控制了平均队长,减小了平均时延的大小,允许一定范围的包突发业务,削减了对突发流的偏见。2)RED路由器处采用提前丢包和均匀随机分布丢包,可以避免由于队列溢出和连续丢包导致的“全局同步”现象。3)即使在缺乏传输层协议有效配合的情况下也能控制平均队列长度,从而避免拥塞。二、RED拥塞控制性能分析1.仿真模型图1仿真模型如图1所示,节点0为路由器节点,节点1为接收节点,之间的带宽为1.2Mb,延时20ms;节点2、3、4为源节点,到路由器节点之间的带宽为2Mb。其中的链路采用RED队列管理算法。2.仿真程序setns[newSimulator]#产生一个仿真对象setnf[openout.namw]$nsnamtrace-all$nfsettf[openout.trw]setwindowVsTime[openwinw]setparam[openparametersw]$nstrace-all$tf#开启一个tracefile,用来记录封包传送的过程#定义一个结束程序procfinish{}{globalnsnftf$nsflush-traceclose$nfclose$tfexecnamout.nam&execgrepared-queue.trave.trexecgrepQred-queue.trcur.trexecgawk-fave.awkave.traveexecgawk-fcur.awkcur.trcurexit0}#定义网络节点setn2[$nsnode]setn3[$nsnode]#把节点链接起来$nsduplex-link$n2$n31.2Mb20msREDsetNumbSrc3#设置源节点个数setDuration50#Sourcenodesfor{setj1}{$j=$NumbSrc}{incrj}{setS($j)[$nsnode]}#Createarandomgeneratorforstartingtheftpandforbottlenecklinkdelayssetrng[newRNG]$rngseed2#parametersforrandomvariablesforbegenningofftpconnectionssetRVstart[newRandomVariable/Uniform]$RVstartsetmin_0$RVstartsetmax_7$RVstartuse-rng$rng#设置节点的随机启动时间for{seti1}{$i=$NumbSrc}{incri}{setstartT($i)[expr[$RVstartvalue]]setdly($i)1puts$paramstartT($i)$startT($i)sec}#把源节点和路由节点链接起来for{setj1}{$j=$NumbSrc}{incrj}{$nsduplex-link$S($j)$n22Mb$dly($j)msRED$nsqueue-limit$S($j)$n220}$nsqueue-limit$n2$n3100setredq[[$nslink$n2$n3]queue]settraceq[openred-queue.trw]$redqtracecurq_$redqtraceave_$redqattach$traceqfor{setj1}{$j=$NumbSrc}{incrj}{settcp_src($j)[newAgent/TCP/Reno]$tcp_src($j)setwindow_8000}for{setj1}{$j=$NumbSrc}{incrj}{settcp_snk($j)[newAgent/TCPSink]}for{setj1}{$j=$NumbSrc}{incrj}{$nsattach-agent$S($j)$tcp_src($j)$nsattach-agent$n3$tcp_snk($j)$nsconnect$tcp_src($j)$tcp_snk($j)}for{setj1}{$j=$NumbSrc}{incrj}{setftp($j)[$tcp_src($j)attach-sourceFTP]}#ParametrisationofTCPsourcesfor{setj1}{$j=$NumbSrc}{incrj}{$tcp_src($j)setpacketSize_552}#ScheduleeventsfortheFTPagents:for{seti1}{$i=$NumbSrc}{incri}{$nsat$startT($i)$ftp($i)start$nsat$Duration$ftp($i)stop}procplotWindow{tcpSourcefilek}{globalnsNumbSrcsettime0.03setnow[$nsnow]setcwnd[$tcpSourcesetcwnd_]if{$k==1}{puts-nonewline$file$now\t$cwnd\t}else{if{$k$NumbSrc}{puts-nonewline$file$cwnd\t}}if{$k==$NumbSrc}{puts-nonewline$file$cwnd\n}$nsat[expr$now+$time]plotWindow$tcpSource$file$k}for{setj1}{$j=$NumbSrc}{incrj}{$nsat0.1plotWindow$tcp_src($j)$windowVsTime$j}$nsat[expr$Duration]finish$nsrun3.仿真分析图2队列当前长度图3平均队长队列长度是在网络瓶颈路由器队列中等待转发的包的数目,是测量网络的一个重要的性能指标。通过比较当前队列长度和队列平均长度我们可以看出,avgQ始终保持在队列长度的max和min的阀值之间,也就是大约3000到6000之间,大大减小了数据包在路由器中传输的时间,成功实现了RED算法对于拥塞的控制,提高了网络传输的效率。三、实验总结通过此次RED算法的拥塞控制性能的实验,表明:1)RED算法可以有效地将平均队长控制在最大、最小阈值之间,大大减小了数据包在路由器中的排队时间,减小了数据传输延时,提高了网络传输的QoS;2)只要RED参数选择合适,保证路由中的瞬时队长不超过缓冲区大小,就可以避免发生“全局同步”现象,从而提高网络性能和利用率;3)由于RED算法有效地实现了较短的平均队长,因而吸收突发流的能力较强,同时降低了丢包率,减少了重传数据包的资源浪费,提高了网络的净吞吐量;
本文标题:通信网NS仿真作业
链接地址:https://www.777doc.com/doc-2045130 .html