返回n-ARQ模型算法实现及仿真.doc_第1页
返回n-ARQ模型算法实现及仿真.doc_第2页
返回n-ARQ模型算法实现及仿真.doc_第3页
返回n-ARQ模型算法实现及仿真.doc_第4页
返回n-ARQ模型算法实现及仿真.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

返回n-ARQ模型算法实现及仿真一、返回n-ARQ概述返回n-ARQ是在停等式ARQ基础上进行改进的一种ARQ协议。其基本思路是:发端在没有收到对方应答的情况下,可以连续发送n帧,收端仅接收正确且顺序连续的帧,其应答中的RN表示RN以前的所有帧都已正确接收,并且收端不需要每收到一个正确的帧就发出一个应答,可对接收到的正确顺序的最大帧序号进行应答。二、返回n-ARQ算法描述发端使用表示发端目前没有收到应答的帧中序号最小的帧,表示它将要指配给运载从高层新到达分组的帧序号。发端将试图传送到之间的帧。2.1发端算法1. 置,。2. 算法以任意顺序重复执行第3,4,5步,在每一步的条件满足时刻到该步被执行时刻之间的时延是任意但有限的一个值。3. 如果,且上层有一个新分组到达,将指定给承载该分组的帧,并将加1。4. 如果接收的,则置。5. 如果,且当前没有帧在传输,从中选择一个或一组帧进行传输,当不再改变时,帧的重传间隔应小于一个规定的有限值。2.2 收端算法1. 置,重复执行2和3。2. 当接收到的,将分组呈送给高层,并将加1。3. 在接收到发端的任何一个正确帧后,在一个有限的时间内,将收端的返回给发端。三、返回n-ARQ的仿真实现3.1 算法实现为了在一台计算机上模拟收发双方的活动,需编写两个进程sender和receiver,分别模拟发送端和接收端,两进程通过消息队列进行相互之间的通信。接收进程receiver在后台运行,随时监听发端的数据发送情况,发送进程sender在前台运行,发送数据帧并统计最终结果。程序使用消息队列来模拟双方的通信链路,由于计算机上不同进程之间的通信都是无差错的,未来模拟真实的链路,在消息队列两端各设置一个随机数发生器,以随机产生错误信息,其出错概率可事先设定。程序使用C语言编写,GCC环境编译,具体代码见附录。3.2 评价指标返回n-ARQ的有效性可以从三个主要方面来表述,分别是吞吐量、链路利用率以及分组延迟。由于该仿真是在一台计算机上的两个进程之间进行的,因此难以准确统计上述三方面的指标。另一方面,如果发送的帧数一定,则程序的运行时间可近似表征分组延迟的大小,亦可从一方面反映吞吐量,因此选用程序的运行时间来评价仿真结果,运行时间越长,表明分组时延越大,相应的吞吐量越小。四、仿真结果及分析设置发送帧总数为1000,在不同的发送窗口宽度n和误帧率p下,各运行程序50次,得到平均运行时间t如下表:表1 平均运行时间分布表(单位:ms) n p0.010.020.030.040.0530.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 的变化趋势图2 不同窗口宽度下t随p的变化趋势分析实验数据及图像得到以下结果:1. 通过图1可以看出,在较小的误帧率下,随着窗口宽度的增加,分组时延随之减少,说明增加窗口宽度可提高传输效率;但当误帧率较大时,过大的窗口反而导致分组时延急剧增大,对传输造成不利影响。这是因为在误帧率较大的情况下,分组重发次数较多,过宽的窗口会使重发时间变长。2. 通过图2进一步分析,发现在小窗口下,分组时延随误帧率的增加较为平缓;而大窗口对误帧率的变化则更为敏感。综合以上分析,可得出结论:在返回n-ARQ协议中,为提高传输效率,窗口宽度n的选择应根据实际的链路质量等因素综合考虑。当链路质量较好,误帧率较小时,应选择较大的窗口宽度;当链路质量较差时,应选择较小的窗口宽度。附实验代码:头文件 frame.h:#include #include #include #include #include #define Nmax 1000#define N 5 /*窗口宽度*/#define P 0.01/*误帧率*/struct msge long int type; int s;/*随机数产生器*/int myrand() struct timeval ct; gettimeofday(&ct,NULL); srand(ct.tv_usec); return rand()%100;发送进程 sender.c:#include frame.hint main() int frmNmax; int sn,rn; int num=0,i,rd; int atob,btoa; struct msge ms;atob=msgget(key_t)1234,0666|IPC_CREAT); btoa=msgget(key_t)4321,0666|IPC_CREAT); for(i=0;iNmax;i+)frmi=i; ms.type=1; sn=0; rn=0; while(snNmax) for(i=0;i=Nmax) break; ms.s=sn+i; msgsnd(atob,(void *)&ms,sizeof(int),0); num+; msgrcv(btoa,(void *)&ms,sizeof(int),0,0);rn=ms.s; if(rn=Nmax) break;rd=myrand();if(rdsn) sn=rn; printf(total frames send: %dn,num); msgctl(atob,IPC_RMID,0); msgctl(btoa,IPC_RMID,0); exit(EXIT_SUCCESS);接收进程 receiver.c:#include frame.hint main()int rn,ss;int atob,btoa;int rd,i;struct msge ms;atob=msgget(key_t)1234,0666|IPC_CREAT);btoa=msgget(key_t)4321,0666|IPC_CREAT);ms.type=1;rn=0;while(1) for(i=0;iN;i+) msgrcv(atob,(void *)&ms,sizeof(int),0,0);ss=ms.s;rd=myrand();i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论