一种提高UDP传输可靠性的简捷方法

2014-03-10 16:13邢卫国赵亚松中国电子科技集团公司第五十四研究所河北石家庄050081
计算机与网络 2014年22期
关键词:发送者序号报文

邢卫国 赵亚松(中国电子科技集团公司第五十四研究所河北 石家庄 050081)

一种提高UDP传输可靠性的简捷方法

邢卫国 赵亚松
(中国电子科技集团公司第五十四研究所河北 石家庄 050081)

UDP通信简单且支持组播,在工程中得到广泛应用,但是传输是不可靠的。为了解决传输可靠性问题,经常采用多数判决机制或应答确认机制,但这些机制都或多或少地增加了程序的复杂性,带来了一些其他的问题,比如延时和不稳定等。针对这一问题,提出了对帧序号进行判决的重发机制,对接口格式及收发双方的程序逻辑进行了简要介绍。经过工程实验验证,该方法简便有效,切实可行。

UDP 重发 可靠传输

1 引言

用户数据报协议(User Datagram Protocol,UDP)依靠基础网际协议从一台机器到另一台机器传送UDP报文,提供一种像IP那样的不可靠的无连接递送服务。这种服务不用确认保证报文到达,不对到来的报文排序,对2台机器之间的信息流速率也不提供反馈控制,因而UDP报文可能丢失、重份或顺序错乱[1,2]。

UDP通信采用UDP报文进行通信,简单方便,支持组播,得到广泛的应用。在工程实践中,对于大量的非关键数据经常采用UDP进行通信,但是存在数据包丢失现象。经常采用的方法之一是三取二判决,即发送3次同样的数据,只要有2组数据相同就认为正确接收。但是判断逻辑较复杂,首先要等待一定的时间才能进行判决,对数据传送间隔要求较高,有时上一组数据混入下一组数据中进行判断,造成逻辑混乱,降低了程序的可靠性。

另外一种方法就是采用ARQ机制,即带重传的肯定确认机制,这种技术要求与发送者通信的接收者,每接收一帧数据,就送回一个确认帧。发送者对每个发出去的帧保留一份记录,等到收到确认之后再发送下一帧。发送者在发送一个帧的时候还启动一个定时器,若定时器计数完毕,确认还未到达,则发送者重发一次数据[3],该方法实现起来逻辑较复杂,异常情况下的调试也比较困难。

在实践中,采用上述几种方法都感到有些缺陷,经摸索发现只需对三取二方法稍许改进,,可达到很好的效果。

2 实现方法

2.1 帧格式

对要在发送方与接收方之间传输的数据,进行头封装,增加帧序号字段。

封装包格式如表1所示。

表1 封装包格式

PACKET HEADER:包括常规的发送者标识、接收者标识、信息类型和信息长度等内容,长度一般根据要传输的内容自行约定;

帧计数:为每个传输帧按顺序编号,从0开始,65 535后归零重新开始;

数据:发送者与接收者要传输的实际数据。

2.2 发送过程

每一个传输帧有一个唯一的帧计数编号,对同一帧数据,发送方连续发送2遍或多遍数据,但帧序号不增加。连续发送的间隔没有限制,越快越好,程序实现时,可以是2个连续的发送函数调用(发送内容为buf,格式为封装包格式,帧序号已经填好,长度为len)[4]:

发送流程如图1所示,每一帧的重发次数可以通过界面或配置文件进行设定,当发现丢帧次数增多时,重发次数增加,反之重发次数减小。

图1 发送流程

2.3 接收过程

接收方对收到的数据进行帧序号判断,若帧序号大于上一帧的帧序号,就认为是一个有效数据帧,立即进行处理;若帧序号与上一帧的帧序号相同,则认为是上一帧数据的冗余传输,作为无效数据丢弃,接收流程如图2所示。

图2 接收流程

值得注意的地方是第一帧的接收情况,由于不知道上一帧的帧序号,所以接收方无法判断是否为重发数据,这就需要发送方作出标识,表明是程序启动后的第一帧数据,接收方无需判断帧序号。或者,发送者发送一帧握手信号,不传输实际内容,只对帧序号的开始值进行通报即可。

另外,接收时要判断帧计数从最大值65535到0的归零情况,进行特殊处理。

2.4 性能分析

从UDP的传输原理上分析,造成UDP包丢失的原因包括网络拥堵、arp寻址和缓存溢出等[5],但是2个连续帧同时丢失的概率远小于一帧丢失的概率[6]。同理,3个连续帧同时丢失的概率就更小了,所以从原理上分析,重传数据帧大大提高了传输的可靠性。

从发送接收过程可以看出,逻辑非常简单,而且接收方不需等待收到第二帧再进行处理,提高了数据的时效性。再进一步扩展,连续发送3次或4次数据,程序逻辑不变,进一步提高传输可靠性,但付出的代价就是传输流量的增加,但在网速不断提高的今天,流量已经不是问题了。

3 结束语

利用重发计数判决,程序逻辑简单及不易出故障,稳定性得到提高,同时也基本杜绝了丢帧现象,在工程实践中取得了很好的效果。但该方法仅限于通信双方自行约定接口的情况,对于外购的成品设备,因为接口已经做好,就无能为力了,另外,对于可靠性要求及其严格的设备,如遥控指令等仅采取这些措施还是不够的。

[1]梁振军,梁 波.计算机互联网技术与TCP/IP协议[M].北京:海洋出版社,1991.

[2](美)科默.用TCP/IP进行网际互联[M].北京:电子出版社, 1998.

[3]刘西洋.基于RUDP(Reliable UDP)统一网管接口设计与实现[D].陕西:西安电子科技大学,2009.

[4]谭浩强.C程序设计[M].北京:清华大学出版社,2004.

[5]武 忠,于红曾.IP报文分片技术及其在故障分析中的应用[J].计算机与网络,2014,40(8):64-67

[6]金旭燕.IP分片及其故障处理[J].科技信息,2013(24): 264-265

A Simple Method to Improve the Reliability of UDP Transmission

XING Wei-guo ZHAO Ya-song
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)

The UDP communication is widely used in engineering,it is simple and supports multicasting,but has unreliable transmission.In order to solve the transmission reliability problem,the majority judgment mechanism or the ARQ mechanism is often used,but these mechanisms more or less increase the procedure's complexity,which causes some other problems such as delay and instability.Aiming at this problem,this paper proposes a resending mechanism for judging the frame number,briefly introduces the interface format and the program logic of transmitter and receiver.The engineering experiment results show that this method is simple, effective and feasible.

UDP;resending;reliable transmission

TP393

A

1008-1739(2014)22-58-3

定稿日期:2014-10-26

猜你喜欢
发送者序号报文
基于J1939 协议多包报文的时序研究及应用
网络表情符号的作用
表情符号的使用角度对亲密度感知的影响
论《聊斋志异》梦境叙事
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
技术指标选股
技术指标选股
技术指标选股
技术指标选股