返回n-ARQ模型算法实现及仿真

返回n-ARQ模型算法实现及仿真

ID:39583874

大小:446.87 KB

页数:5页

时间:2019-07-06

返回n-ARQ模型算法实现及仿真_第1页
返回n-ARQ模型算法实现及仿真_第2页
返回n-ARQ模型算法实现及仿真_第3页
返回n-ARQ模型算法实现及仿真_第4页
返回n-ARQ模型算法实现及仿真_第5页
资源描述:

《返回n-ARQ模型算法实现及仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、返回n-ARQ模型算法实现及仿真一、返回n-ARQ概述返回n-ARQ是在停等式ARQ基础上进行改进的一种ARQ协议。其基本思路是:发端在没有收到对方应答的情况下,可以连续发送n帧,收端仅接收正确且顺序连续的帧,其应答中的RN表示RN以前的所有帧都已正确接收,并且收端不需要每收到一个正确的帧就发出一个应答,可对接收到的正确顺序的最大帧序号进行应答。二、返回n-ARQ算法描述发端使用表示发端目前没有收到应答的帧中序号最小的帧,表示它将要指配给运载从高层新到达分组的帧序号。发端将试图传送到之间的帧。2.1发端算法1.置,。2.

2、算法以任意顺序重复执行第3,4,5步,在每一步的条件满足时刻到该步被执行时刻之间的时延是任意但有限的一个值。3.如果,且上层有一个新分组到达,将指定给承载该分组的帧,并将加1。4.如果接收的,则置。5.如果,且当前没有帧在传输,从中选择一个或一组帧进行传输,当不再改变时,帧的重传间隔应小于一个规定的有限值。2.2收端算法1.置,重复执行2和3。2.当接收到的,将分组呈送给高层,并将加1。3.在接收到发端的任何一个正确帧后,在一个有限的时间内,将收端的返回给发端。三、返回n-ARQ的仿真实现3.1算法实现为了在一台计算机上

3、模拟收发双方的活动,需编写两个进程sender和receiver,分别模拟发送端和接收端,两进程通过消息队列进行相互之间的通信。接收进程receiver在后台运行,随时监听发端的数据发送情况,发送进程sender在前台运行,发送数据帧并统计最终结果。程序使用消息队列来模拟双方的通信链路,由于计算机上不同进程之间的通信都是无差错的,未来模拟真实的链路,在消息队列两端各设置一个随机数发生器,以随机产生错误信息,其出错概率可事先设定。程序使用C语言编写,GCC环境编译,具体代码见附录。3.2评价指标返回n-ARQ的有效性可以从

4、三个主要方面来表述,分别是吞吐量、链路利用率以及分组延迟。由于该仿真是在一台计算机上的两个进程之间进行的,因此难以准确统计上述三方面的指标。另一方面,如果发送的帧数一定,则程序的运行时间可近似表征分组延迟的大小,亦可从一方面反映吞吐量,因此选用程序的运行时间来评价仿真结果,运行时间越长,表明分组时延越大,相应的吞吐量越小。四、仿真结果及分析设置发送帧总数为1000,在不同的发送窗口宽度n和误帧率p下,各运行程序50次,得到平均运行时间t如下表:表1平均运行时间分布表(单位:ms)np0.010.020.030.040.0

5、530.52580.54040.55800.57520.590040.49920.51820.53100.54740.565650.47440.49280.51220.53160.549480.45420.48100.50840.53440.5510120.44860.48560.50820.54720.5856170.40940.44900.48980.58960.6294230.39280.50520.57980.63220.7232根据上表,可绘出平均运行时间t与n以及p的关系图:图1不同误帧率下t随n的变化趋势图

6、2不同窗口宽度下t随p的变化趋势分析实验数据及图像得到以下结果:1.通过图1可以看出,在较小的误帧率下,随着窗口宽度的增加,分组时延随之减少,说明增加窗口宽度可提高传输效率;但当误帧率较大时,过大的窗口反而导致分组时延急剧增大,对传输造成不利影响。这是因为在误帧率较大的情况下,分组重发次数较多,过宽的窗口会使重发时间变长。2.通过图2进一步分析,发现在小窗口下,分组时延随误帧率的增加较为平缓;而大窗口对误帧率的变化则更为敏感。综合以上分析,可得出结论:在返回n-ARQ协议中,为提高传输效率,窗口宽度n的选择应根据实际的链

7、路质量等因素综合考虑。当链路质量较好,误帧率较小时,应选择较大的窗口宽度;当链路质量较差时,应选择较小的窗口宽度。附实验代码:头文件frame.h:#include#include#include#include#include#defineNmax1000#defineN5/*窗口宽度*/#defineP0.01/*误帧率*/structmsge{longinttype;ints;};/*随机数产生器*/intmyr

8、and(){structtimevalct;gettimeofday(&ct,NULL);srand(ct.tv_usec);returnrand()%100;}发送进程sender.c:#include"frame.h"intmain(){intfrm[Nmax];intsn,rn;intnum=0,i,rd;in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。