gobackn协议实验报告(共20页)_第1页
gobackn协议实验报告(共20页)_第2页
gobackn协议实验报告(共20页)_第3页
gobackn协议实验报告(共20页)_第4页
gobackn协议实验报告(共20页)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、一,描述本次实验的任务、内容和实验环境。1,实验内容和任务:利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下。两站点之间无差错双工通信。信道模型为8000bps 全双工卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度在240256字节范围。深刻理解数据链路层的字节填充方式的成帧技术,误码检测的CRC 校验技术,以及滑动窗口的工作机理。对参数进行设计,充分理解滑动窗口协议的工作原理并利用所学的理论知识,经过认真的推算,计算出最优取值,并通过程序的运行进行验证。2,实验设备环境:WindowsXP环境PC机,Mic

2、rosoft Visual C+ 6.0 集成化开发环境。二, 协议设计:(1) 设计该协议的目的,基本原理该实验协议包括物理层,数据链路层和网络层。本实验主要设计数据链路层协议,实现有噪声环境下高信道利用率传输,采用了回退n帧技术的协议。接受方窗口大小为1,发送方窗口大小为N。通过捎带确认(piggybacking)来完成可靠的数据通信;由于出现信道误码而导致收帧出错时,接受方会丢弃所有的后续帧,待定时器超时后发送方重发。首先从网络层接受要发送的数据包,将之分拆成数据帧;然后按成帧方案完成分帧,加校验码,加ack等操作;再进行适当的流量判断和拥塞控制;最后启动定时器将之传递给物理层。数据帧经

3、信道传送给接受方,接受方数据链路层执行与成帧相逆的操作;处理ack信息,终止定时器(或启动ack定时器,ack成帧传送);判断是否为预期数据,数据是否出错,提交给网络层。(2) 成帧方案,帧边界和转义字符的定义及转义方法使用的成帧方案:含字节填充的分界符法,即让每一帧都用一些特殊的字节(FLAG)作为开始和结束。当有效载荷域中含有标志字节或转义字节时,在每个在有效载荷域中出现的标志字节或转义字节前均要加一个转义字节(ESC)。接受端的数据链路层在将数据送给网络之前删除掉转义字节。一个数据帧如图所示:起始标志字节本帧序号捎带确认序号有效数据校验码结束标志字节其中有效数据和校验码可能含有转义字符。

4、 (3) 帧中各个字段的定义和编码,计算CRC校验和的多项式定义帧的定义编码:帧中的第一比特为开头FLAG,第二比特是帧的类型,共定义了data,ack,nak frame_kind三种类型,用枚举常量表述,第三比特是顺序编码,用于确定到达帧的顺序,第四比特是ACK捎带确认讯息,记录了当前已收到帧的确认情况,这是数据帧的头部。若为数据帧,从第五比特开始为网路层的数据,到网路层包裹信息结束后,接上4比特的CRC校验讯息,后有一结束字符FLAG表明该帧结束。CRC校验数:CRC校验数据由函数crc32()产生,函数crc32()返回一个32位整数为数据生成CRC-32校验和,并且把这 32比特校验

5、和附在数据字节之后。多项式定义:采用的CRC校验方案为CRC-32,生成多项式为:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1校验和附加在数据帧尾部,接受方用带校验和的数据来逻辑除以生成多项式,余数为零则数据无误码,反之有误码等待发送方重传。(4) 协议工作时两个站点之间信息交换的过程控制,尤其是发生误码条件下的控制方案协议工作时,两个站点通过互发数据包交换数据,而控制讯息则稍带在数据讯息中传递,当遇到超时情况时,则主动发送空数据包以提供讯息。当出现帧丢失时,如收到帧的序号有跳跃,或者出现CRC校验出错丢弃了某帧,会主动发送NAK否定帧

6、,提示重传,接收方丢弃所有的后续帧。若长期未产生放送消息,则出现ACK超时事件,主动发送ACK帧提示确认,对方收到确认后,滑动窗口继续发送,若一直未收到确认讯息,则出现数据帧超时事件,发送方会自动重发未确认帧。11.3 软件设计给出程序的数据结构,模块之间的调用关系和功能,程序流程。(1) 数据结构:数据结构是整个程序的要点之一,程序维护者充分了解数据结构就可以对主要算法和处理流程有个基本的理解。描述程序中自定义结构体中各成员的用途,定义的全局变量和主函数中的变量的变量名和变量所起的作用。采用字符数组结构来存放数据帧:typedef unsigned char seq_nr;typedef u

7、nsigned char packetPKT_LEN;typedef unsigned char frame_kind;typedef struct FRAME frame_kind kind; /* FRAME_DATA */ seq_nr ack; seq_nr seq; packet info; unsigned int padding; frame; 其中:frame kind 是帧的类型。Ack 捎带确认数据帧是否正确传到Seq 是数据帧传输的序号info是帧传输的内容Padding是帧经过CRC校验之后所添加的内容定义的全局变量:static int phl_ready 表示物理层

8、的状态int out_buffer_lenMAX_SEQ + 1 从网络层得到的数据包的长度主函数中的变量的变量名和变量:int event 接收方等待的发生事件int arg 物理层到达的字数packet bufferMAX_SEQ+1; 发送方的数据包缓存区seq_nr nbuffered 当前帧号seq_nr next_frame_to_send 下一个要发送的帧的序号seq_nr ack_expected 期望收到的确认seq_nr frame_expected; 期望接收到对方的帧的编号frame r; 变量帧(2) 模块结构:给出程序中所设计的子程序所完成的功能,子程序每个参数的意

9、义。给出子程序之间的程序调用关系图。函数between(seq_nr a,seq_nr b,seq_nr c)用于判断收到的ACK序号是否在发送窗口内。a为下限,b为ack序号,c为上限。函数send_to_physical(unsigned char *out_buf, int slen)用字符填充方式将帧发送到物理层函数recv_from_physical(unsigned char *in_buf, int arg)用于从物理层接收一个字节并做处理函数send_data_frame(frame_kind fk, seq_nr frame_nr, seq_nr frame_expected

10、, packet buffer) 用于发送从网络层得到的数据函数调用图为:主函数mainsend_data_framrecv_from_physicalsend_to_physicalbetween(3) 算法流程:画出流程图,描述算法的主要流程。11.4 实验结果分析(1)描述所实现的协议软件是否实现了有误码信道环境中无差错传输功能。能实现协议软件是否实现了有误码信道环境中无差错传输功能,采用了CRC校验和重传技术是错误得以被发现和纠正。(2) 程序的健壮性如何,能否可靠地长时间运行。程序健壮性较好,在高负荷和高误码率等条件下均能工作。在较低误码率的信道条件下,该程序运行平稳,没有出现任何差

11、错,健壮性良好,在高误码率的信道条件下,程序运行有时会出现中断,但大多数时候运行时间较长,故本程序健壮性良好。(3) 协议参数的选取:滑动窗口的大小,重传定时器的时限, ACK 搭载定时器的时限,这些参数是怎样确定的?根据信道特性数据,分组层分组的大小,以及你的滑动窗口机制,给出定量分析,详细列举出选择这些参数值的具体原因。本次实验中物理层提供了一种字节流传输服务,为了成帧,使用了字节填充技术。分组长度为240256字节。 滑动窗口的大小:该参数的选择直接涉及到信道利用率和数据拥塞的问题;若太小,会导致信道利用率很低,信道中长时间没有数据传送;若太大,数据发送过快,会造成接受方数据链路层来不及

12、处理,数据物理层及信道发生拥塞现象导致数据丢失,出错率增大。在go_back_n协议中(假设接受方一直有数据发送,即无ack定时器超时现象),滑动窗口的大小M,信道传输时延a,发送速率c,帧大小f在满足如下关系时信道利用率(M*(f/c)/2a+2(f/c))接近100%:M=2a+2*(f/c)/(f/c);由于实际数据传送很可能在某段时间类接受方无数据反送,涉及ack帧单独传送问题,故一般信道利用率不可能达到100%,但M的选择至少要满足公式。至于防止M过大的问题,可通过实际测试的结果分析来得到合适的M值。最终,我们选择M值为31,效果较好。重传定时器的时限:该参数的选择涉及到重传的相应时

13、间,若改时间选择过大,则会导致重传等待的时间过久,若时间选择过小,则将导致较为频繁的重传,这两种情况均将导致信道利用率的下降,经过实际检测,当wait_time设为1700ms时,效果较好。Ack搭载定时器的时限:若该值选择较小,则将导致频繁重传ack帧,虽然我们在程序中将ack帧的长度设定为8(最小长度),但频繁的重传仍将降低信道利用率;若将该值设置过大,则发送方将长时间得不到ack确认信号,严重时将导致重传,降低利用率。经过实际测试,ack_time选择为240-300ms内,效果较好。(5) 理论分析:根据所设计的滑动窗口工作机制(Go-Back-N),推导出在无差错信道环境下分组层能获

14、得的最大信道利用率;推导出在有误码条件下重传操作及时发生等理想情况下分组层能获得的最大信道利用率。给出理论推导过程。理论推导的目的是得到信道利用率的极限数据。为了简化有误码条件下的最大利用率推导过程,可以对问题模型进行简化,比如:假定超时重传的数据帧的回馈ACK 帧可以100%正确传输,但是简化问题分析的这些假设必须不会对整个结论产生较大的误差。由于需要携带帧讯息,因此最大的信息利用率为约为96.2%,由于信道的最大比特率为8000bps,可得出每传输一个字节耗时1ms,每帧的附加讯息固定为10,耗时10ms,若出现转义字符,则可能增加时间,在ESC/FLAG模式中传输的平均250个字符需要两

15、倍的传输空间即极限值500,此时的信道利用率的极限值是49%,若平均每个错帧重传10次,利用率将下降为40%。 (6) 实验结果分析:你的程序运行实际达到了什么样的效率,比对理论推导给出的结论,有没有差距?给出原因。有没有改进的办法?如果没有时间把这些方法付诸编程实施,介绍你的方案。实验所得的结果是无差错条件下分组层能获得的最大信道利用率对于A是50%,对于B是100%。(7) 存在的问题:在“表3 性能测试记录表”中给出了7 种测试方案,在测试中你的程序有没有失败,或者,虽未失败,但表现出来的性能仍有差距,你的程序中还存在哪些问题?在误码率不同的情况下所执行程序的结果截图如下:当参数为u的运

16、行结果:无参数时运行结果为:参数为fu的运行结果:参数为f的的运行结果如下:当参数为fs时的运行结果如下:该图参数为afs:该图参数为bfs:当参数为fle的运行结果:该图的参数为afle该图的参数为bfle当参数为fl时的运行效果如下:当参数为f ber 1e-7时的运行效果:当参数为f ber 5e-5时程序运行效果如下:当参数为f ber 5e-4时候的运行效果如下:当参数为f ber 1e-4的时候运行效果如下:该程序存在的主要问题就在于会反复重传未被确认的帧,造成了信道资源的浪费,这可以在实验的结果中看出,在进行较长时间的运行后,信道流量水平趋于平稳,此时的数据和理论之大致相当,说明

17、所确认的问题确实是症结所在。只要能限制其反复重传,就能提高信道利用率。11.5 研究和探索的问题前面列出的“可研究和探索的问题”,有哪些问题你有了答案或者自己的见解?给出你的结论,并详细阐述你的理由或见解。1. CRC 校验能力CRC校验码的检错能力很强,它除了能检查出离散错外,还能检查出突发错,CRC校验码具有以下检错能力:CRC校验码能检查出全部单个错;CRC校验码能检查出全部离散的二位错;CRC校验码能检查出全部奇数个错;CRC校验码能检查出全部长度小于或等于K位的突发错;CRC校验码能以1-(1/2)K-1的概率检查出长度为(K+1)位的突发错。2. 软件测试方面的问题(1)验证所完成

18、的程序能否在各种情况下都能够正确工作,是软件测试环节的主要目的。(2)表3 中列出了七种测试方案,设计这么多种测试方案的目的是检测此程序在不同信道条件下的传输性能。-u是测试成帧方案的效率。无参数时模拟在实际线路中,不连续的收发时的传输性能。-f用于测试信道满负荷时的传输性能。-l,-e,-s用于测试在特殊情境下传输性能。-ber可以改变误码率,从而检验无差错传输的健壮性及性能。11.6 实验总结和心得体会如果一切100%顺利,编辑的程序一次编译就通过,运行一次就正确,那么完成本次实验的代码编写和调试工作大约需要46 个小时。你花的时间超过了这个预测吗?描述在调试过程中都遇到了哪些问题和解决的

19、过程。(1) 完成本次实验的实际上机调试时间是多少?五天,总共约十五个小时。(2) 编程工具方面遇到了哪些问题?包括Windows环境和VC软件的安装问题。无。(3) 编程语言方面遇到了哪些问题?包括C语言使用和对C语言操控能力上的问题。实验中数据帧采用了字符数组这种数据结构,在函数调用时会用到数组的形参表示,由于需要改变数组的值,此时传送的是数组首地址,属于传引用调用。(4) 协议方面遇到了哪些问题?包括协议机制的设计错误,发现协议死锁,或者不能正确工作,协议参数的调整等问题。在确定成帧方案时,有两种可以实现的方案:一种是先给数据加CRC校验码,再添加ESC字符成帧 ;另一种是先给数据加ESC,再CRC校验,再给CRC加ESC。其中后者先给数据加操作实现较为复杂,但其检错性能更好,前者处理较为简单,但检错性能稍弱.我们将两种方法均加以实现之后,发现实际的效果差别不大,为了代码简介以及减少不必要变量的使用,我们在最终的程序中使用了先加ESC后CRC校验方法。(6) 总结本次实验,你在C 语言方面,协议软件方面,理论学习方面,软件工程方面等哪些方面上有所提高?在这次实验过程中,我们遇到了较多困难

温馨提示

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

评论

0/150

提交评论