打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[z]一种基于UDP的可靠传输协议

一种基于UDP的可靠传输协议

摘要:传统的UDP协议通信效率高、可靠性较差,不适合对可靠性要求较高的应
用环境。目前随着网络传输的快速发展,某些应用场合需要在保证高效性的基础上
提高通信双方传输的可靠性。本文提出了一种基于UDP协议的简单可靠传输协议
SRUDP,分析了SRUDP协议的基本原理,着重阐述了SRUDP的内部机制,包括
证实机制、重发机制以及序号强制对齐机制。最后研究了SRUDP协议中各种重要
参数的设置,为具有可靠性要求高的业务应用提供了参考依据。
关键词:SRUDP 传输可靠性证实机制重发机制
1引言
传输控制协议(TCP)是面向连接的协议,也就是说,在正式收发数据前,必须和对方
建立可靠的通信连接。用户数据报协议(UDP)是与TCP相对应的、面向非连接的协议。
它不与对方建立连接,而直接就把数据包发送过去。由于UDP协议没有连接的过程,
所以它的通信效率高;但也正因为如此,大大降低了它的可靠性。UDP适用于对可靠性
要求不高的应用环境。
随着网络传输业务的快速发展,在某些对可靠性和高效性要求都较高的应用环境中,
如移动计算环境,TCP和UDP不能很好地满足应用需求,这就需要能够兼顾可靠性和
高效性的传输层协议。而RUDP(Reliable UDP)协议虽然能够保证通信传输的可靠性,但
是它有六个字节的协议头,协议头较长,可靠传输的控制机制较为复杂。为此,本文提
出了一种白定义的、为UDP引入多种可靠传输机制的简化协议SRUDP(Simple Reliable
UDP),分析了SRUDP的协议头结构以及各种控制机制,并研究了SRUDP中各种重要
参数的设置,为具有可靠性要求高的业务应用提供了参考依据。
2 SRUDP的基本原理
SRUDP协议基于UDP之上,它有两个字节的协议头,为一个字节的前向序号与一
个字节的后向序号。前向序号表示期望下一次对方发送的SRUDP包序号,后向序号表
示带给对方的证实序号。围绕这两个字节的协议头,SRUDP协议采用了一套简单而有效
的机制来实现通信双方的可靠传输。协议头结构如图1所示。


SRUDP协议引入证实机制、重发机制以及序号强制对齐机制来保证SRUDP信件的
可靠传输。为引入证实机制,我们定义了逻辑上的一个待证实队列,另外,为了实现重
发,我们引入了一个SRUDP发送缓冲区用于缓存还未得到证实的消息和由于待证实队
列已满时,缓存应用层所要发送的消息。如图2所示。


SRUDP协议具有几条基本原则:
·收到对方的证实序号后,将该序号以前的位于待证实队列中的所有SRUDP序号
一起予以证实。
·已经被证实掉的SRUDP包将从SRUDP发送缓冲区中去除。
·待证实队列已满时,只将所要发送的SRUDP包缓存到SRUDP的发送缓冲区中,
而不进行发送。
3 SRUDP的机制分析
SRUDP有着多种相互配合的机制,如证实机制、重发机制以及序号对齐机制等,这
些机制组合起来,为SRUDP的可靠传输奠定了基础。
3.1 SRUDP的证实机制
由于通信双方存在着多种情况的通信,所以在考虑证实机制的时候,为使尽快得到
证实而提高SRUDP的效率,引了SRUDP包证实、定时插入证实、多包插入证实等多种
证实机制。
(1)SRUDP包证实
SRUDP包证实是指通信双方采用SRUDP协议相互给对方发送需要可靠传输的消息
时,传输过程中的每一个SRUDP包(消息)自身都带有给对方的证实信息,在SRUDP包
头中后向序号就是带给对方的证实序号。SRUDP包证实机制如图3(a)所示。
(2)定时插入证实
定时插入证实是指通信一方在收到另一方发送的一个SRUDP消息时,就会检查是
否启动了一个名为插入证实定时器,如果没有启动,就会启动这个定时器;如果在这个
定时器超时,还没有其它证实机制起作用、向对方发送证实信息,那么就会专门插入一
个证实信件向对方发送证实信息;同时该定时器归0。定时插入证实机制如图3(b)所示。

可以看出,这种机制主要用于单向可靠通信(如图3(b)中,只有A 端给B 端发送
SRUDP消息)时发送端得到证实的需要。
(3)多包插入证实
多包插入证实是指通信双方在进行SRUDP通信时,都用一个计数器记录各自收到
的SRUDP消息数,如果在这个计数器到达一个规定数值前,还没有其它证实机制起作
用、向对方发送证实信息,那么就会专门插入一个证实信件向对方发送证实信息;同时
该计数器归0。多包插入证实机制如图3(c)所示。
显然这种机制也用于单向可靠通信(如图3(c)中,只有A端给B端发送SRUDP消息)
时发送端得到证实的需要。


多包插入证实机制与定时插入证实机制是相互配合的。
如果没有多包插入证实机制,在插入证实定时器时长时间内,如果通信一方(如A
端)有大量的SRUDP消息发送给对方(如B端),那么显然在定时器超时之前,A端由于
待证实队列得不到B端的证实而无法发送大量的SRUDP消息(此时待证实队列已填满),
只有等到B端定时器超时之后才能得到B端的证实而将待证实队列证实掉,然后才能发
送SRUDP包。这显然降低了发送效率。而引入多包插入证实机制之后,B端在收到一
定数量的SRUDP包之后就会给A端证实,这显然能够大大提高这种情况下的SRUDP
发送效率。也就是说,在这种情况下,通常都是多包插入证实定时器起作用。
如果通信一方(如A端)只有很少量的SRUDP消息发送给对方(如B端),例如几秒钟
只有一个SRUDP包,这种情况下如果没有定时插入证实机制,那么B端要等到收到多
包、计数器达到规定数值之后才给A端证实,这种证实时间间隔是无法忍受的,所以这
种情况下,定时插入证实机制起到快速给出证实的作用。

这三种证实机制中,SRUDP包证实机制优先级最高,而多包插入证实机制和定时插
入证实机制优先级稍低。一般情况下,通信双方采用SRUDP包证实机制,互相发送
SRUDP包带给对方证实信息。无论通过何种方式给对方证实,都将停止插入证实定时器
和将接收包数计数器清0。
3.2 SRUDP的重发机制
SRUDP的重发机制是为了保证可靠性,如果通信一方一直得不到对方的证实消息,
就需要将SRUDP待证实队列中的消息全部重发。因为从理论上讲,通信对端可能会因
为种种原因没有收到发送端发送的SRUDP包。
本文引入了两种重发机制:一种是自动重发机制,另一种是请求重发机制。
(1)自动重发机制
自动重发机制如图4(a)所示。通信双方各维持一个自动重发定时器,通信一方在给
对端发送SRUDP消息时,检查自动重发定时器是否启动,如果没有启动,就会启动这
个定时器。如果在规定时间内没有收到来自对端的任何证实信息,将这个定时器归0,
并将SRUDP待证实队列中的所有SRUDP消息重发一遍,重发次数加一。如果在规定时
间内依然没有收到对方的任何证实信息,则重将定时器归0、执行重发操作和将重发次
数加一,如果重发次数到达指定次数,把第一个存放于SRUDP缓冲区的SRUDP包删除,
置重发次数为0,重发定时器为0。显然,在这之后,如果自动重发定时器又超时,将会
再次进行重发,直到收到对方的一个证实,然后停止自动重发定时器,将重发次数清0。
(2)请求重发机制
请求重发机制如图4(b)所示。通信双方都记录着期望下一次对方发送的SRUDP包
序号,如果接收方收到的SRUDP消息的前向序号不是自己所期望的序号时,接收方将
会向发送方发送一条请求重发消息,请求从自己期望的序号开始进行重发。发送方收到
这个请求重发消息后,将立即进行重发。这种机制主要用于处理SRUDP消息包乱序的
情况。


3.3序号强制对齐机制
序号强制对齐机制如图5所示。在SRUDP消息的通信过程中,可能由于种种原因
导致通信双方的SRUDP序号对不齐(这种情况发生的概率比较小),这时候就必须有一种
机制,使得双方能够迅速对齐序号,并开始正常的SRUDP通信。这就是序号强制对齐
机制引入的原因。


可以看出,序号强制对齐机制是与请求重发机制配合使用的。
3.4各种机制的调用
在SRUDP的机制中,有的机制需要应用层的调用,而有的则是在网络任务中予以
调用0定时插入证实机制与自动重发机制的实现需要应用层周期性的扫描、检查插入证
实定时器和自动重发定时器。所以这两种机制离不开应用程序的调用。应用层往往通过
提供调用函数来实现对这两种机制的调用。而多包插入证实机制,请求重发机制以及序
号强制对齐机制都是直接在网络任务中被调用。
4 SRUDP中各种参数的设置
SRUDP协议内的各种机制之间,相互有着联系,并且各种机制参数的设置,直接影
响到SRUDP协议的效率。
(1)待证实队列长度的大小
首先确定SRUDP协议中待证实队列长度的大小。
由于待证实队列是用序号来标识的,而前向序号和后向序号都是用来携带消息在待
证实队列中的序号,所以前向序号与后向序号的范围就是待证实队列的范围。
由于前向序号与后向序号都是用一个字节来表示,一个字节所能表示的范围为0到
255,所以,待证实队列的范围必须在这个范围内。目前待证实队列大小的缺省值为128,
即前向序号与后向序号的范围为0到127。
(2)发送缓冲区的大小
发送缓冲区的作用是用于存储已经发送、但尚未得到证实的SRUDP消息,另外还

有缓存应用层需要发送的SRUDP消息。所以发送缓冲区大小的设定也会影响到SRUDP
的效率。
发送缓冲区大小的设置要求是大于0,应用层可以根据需要自由设置发送缓冲区的
大小,它的缺省值为128。但如果短时间内SRUDP通信量比较大,需要增大这个缓冲区;
如果SRUDP通信量很小,并且不会有突发,这个发送缓冲区可以大大减少,甚至为1。
(3)几种带有定时器机制的参数设定
在SRUDP的机制中,定时插入证实机制、自动重发机制以及序号强制对齐机制均
设有定时器。各种定时器时长的设定是相互关联的。
自动重发定时器是发送SRUDP消息的一方在未收到对方的证实消息时启动的。考
虑这个自动重发定时器的时长应大于插入证实定时器时长,也就是说,在发送方自动重
发机制起作用前,确保接收方发送两个以上的定时插入证实,这样可以有效防止一个证
实消息的丢失。自动重发定时器的时长缺省设置为600ms,而插入证实定时器的时长缺
省值为200ms。
而序号强制对齐机制中的请求重发定时器的时长则是为了保证在这个时长范围内,
收到请求重发的一方重发的SRUDP消息可以到达请求方。同时要在被请求方的自动重
发机制起作用前将序号对齐。目前这个定时器时长的缺省值为1 00ms。
对于自动重发机制的重发次数,缺省设置为2,也就是说,SRUDP消息将在网络环
境最恶劣的情况下保证所有SRUDP包发送三遍。
在一般的通信网络中,各个定时器时长以及重发次数处于缺省状态时,SRUDP重发
效率最高,平均重发次数最少。
(4)多包插入证实机制的包数设定
多包插入证实机制的包数(计数器规定值)也是提高SRUDP效率的一个机制,由
于前面已经确定SRUDP的待证实队列长度缺省为128,所以为加速对待证实队列的证
实,这个包数应该小于待证实队列的长度。当然,如果这个包数大于待证实队列长度也
不会影响到多包插入证实机制,但由于小于128的话可以保证在发送端的待证实队列没
有填满时,对方会给出插入证实从而使待证实队列及时得到证实。目前该包数的缺省值
为100。在一般的网络环境中,计数器包数以及待证实队列大小取缺省值时,SRUDP证
实效率最高,平均证实时间最短。
5结束语
本文针对UDP协议传输可靠性不高的问题,提出了一种基于UDP的简单可靠传输
协议SRUDP,分析了SRUDP的基本原理,并引入多种证实、重发机制保证了SRUDP
传输的可靠性。SRUDP拥有TCP的可靠性和UDP的高效性,适合大多数需要兼顾可靠
性和高效性的应用场合。由于SRUDP只有两个字节的协议头,控制简单,简洁灵活,
易于使用。本文对SRUDP中各种参数的设置进行了研究,有助于提高SRUDP通信效率,
为基于SRUDP协议的业务应用提供了参考依据。而受环境变化影响较大的参数如何根
据网络链路状况进行动态自适应调整,将是我们下一步研究的重点。

5结论
本文介绍了Sundance SMT391+395Q采集处理平台的结构和性能特点,并结合时差
测向算法的特点,讨论了数据分解和任务分解基于该平台实现的可行性。松耦合式的系
统结构和高处理能力的DSP芯片使得平台适合于数据分解方法的实现,能够达到较高的
并行效率且实现起来较为简单。而时差测量算法的特点决定了不可能将算法分解为多个
子任务由4片DSP来流水执行。为此我们利用平台采集卡具有高速采集能力的特点,通
过提高采样率避免了在时差测量中耗费时间最多的内插环节,从而将整个算法分解为两
个子任务来并行执行,并充分利用平台拥有的4片DSP芯片资源,并行处理两段数据,
从而提出了另一种适合于该平台实现的并行处理方法。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
什么是TCP和UDP
TCP与UDP的区别
第08章 TCPUDP协议
STP
坚持苦学 TCP,终于把 TCP 协议给学明白了,坚持看完你会收获很大
数据链路层的流量控制与可靠传输机制
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服