基于UDP的报文可靠传输技术研究
2013-08-20白正柳登丰孙文俊
白正 柳登丰 孙文俊
中国电子科技集团第二十八研究所 江苏 210007
0 引言
目前,普遍采用的网络通信标准是 TCP/IP协议体系,其中 TCP是面向连接的协议,可靠性高。但效率低;UDP面向无连接的协议,效率虽然高,但不可靠。由于实际网络环境的复杂性,再加上TCP和UDP传输层协议本身固有的实时性和可靠性之间的矛盾,就必须根据业务传输的需要重新设计符合业务传输特点的应用层传输协议。
TCP协议在Internet上获得了广泛的应用,可以实现数据的无差错传输,但这是以复杂的传输控制和较大的网络开销为代价的。对于带宽有限的信道,或者传输数据量很大的网络系统中,该协议会导致网络效率低下。
UDP协议也是应用广泛的一种传输层协议,在 TCP/IP协议体系中占有重要地位。UDP协议是一种无连接的协议,它有着数据传输的时延低、资源开销小、支持组播通信方式、支持对等的通信方式等特点,但由于协议本身的不可靠,导致传输的信息可能丢失。为了保证数据信息的实时可靠传输需要在应用层进行适当的应用层传输格式设计,实现对差错报文的重发机制,保证基于UDP的协议能实现可靠传输。
1 应用层传输协议设计
1.1 结构模型
根据TCP/IP协议族模型,网络传输模型中共分为4层,分别为应用层、传输层、网际层和网络接口层。本文涉及的应用传输协议设计是在应用层中增加传输控制协议,简称(LRC协议),协议的层次结构如图1所示。
图1 报文可靠传输与UDP传输结构对比图
LRC协议充分考虑到UDP通信时每帧数据长度不能大于65467字节,采用分组、重发、同步等机制实现了大数据报文的对等可靠传输控制;同时兼顾小数据报文可靠/实时传输控制机理。
1.2 协议组成
LRC协议共分为控制报文、数据报文、数据回执报文,控制收据报文四类。根据数据报文的大小,将不大于65447字节长度的报文称为非分组报文;将大于 65447字节的报文称为分组报文。两类报文的协议结构示意图如图2和图3所示。
图2 LRC非分组数据协议结构示意图
图3 LRC分组数据协议结构示意图
根据LRC协议的定义支持的分页数最大32723页,每帧数据最大承载65447字节。报文类型和通信机制具体定义如表1所示。
表1 报文类型和通信机制字段定义
非分组报文存在可靠发送与非可靠实时发送两种模式;分组报文存在非可靠发送、单帧可靠发送和单任务可靠发送三种发送模式。
2 算法及实现
非分组报文发送的两种模式以及分组报文非可靠发送相对比较简单,本文主要介绍分组报文传输时可靠传输的两种模式。
2.1 单帧可靠发送
单帧可靠发送,是按照每帧数据都进行等待回执方式,类似TCP的形式进行收发控制。考察TCP进行三次握手的原因,是为了防止一个延迟的重复 SYN报文的达到建立错误的连接,从而上层提交错误、重复的数据。如果延期重复的报文到达时连接未被关闭,则接收端可通过 lastack过滤seqno。重复的SYN报文是由报文重传造成的,报文重传的原因包括:SYN丢失、SYN延期,SYN-ASK丢失、SYN-ASK延期,其中SYN丢失并不会产生重复的SYN报文。因此参照TCP的建链流程,进行相应简化通过在报文中增加任务序号进行逻辑链路的建立和传输报文的任务识别,通过报文序号区别任务传输过程中的每帧数据。单帧可靠发送的算法如下所述:
(1) 任务的建立:发送者首先通过发送控制报文与接收者建立逻辑数据传输任务,等待接收者确认状态就绪;
(2) 数据的传输:任务建立完毕后进入数据传输阶段,发送者在每帧数据发送后等待接收者的回执信息,确认接收正确后进行下一帧数据的发送,否则进行重发处理;
(3) 任务的结束:全部数据发送完毕并确认或者重发次数达到最大时发送控制信息结束数据发送任务。
2.2 单任务可靠发送
单帧可靠发送时每帧数据都等待接收者的回执信息,这种收发控制必然导致传输实时性的下降,弱化了 UDP作为报文传输的实时性优势,为了弥补传输的可靠性的同时兼顾传输的实时性,提出了单任务可靠发送的方式。单任务可靠发送的算法如下所述:
(1) 任务的建立:发送者首先通过发送控制报文与接收者建立逻辑数据传输任务,等待接收者确认状态就绪;
(2) 数据的传输:任务建立完毕后,发送者顺序发送每帧数据信息;
(3) 任务的确认:数据发送完成后向接收者发送确认接收信息,接收者在接收到该信息后发送接收情况信息,发送者对发送丢失的数据进行重新发送,直到数据接收完毕或者重发次数达到最大;
(4) 任务的结束:全部数据接收确认或重发次数达到最大时,发送控制信息结束数据发送任务。
3 性能分析
对分组数据的两种可靠发送方式进行性能比较,设某一时间节点A有数据需要发送,于是建立发送任务,开始向节点B发送数据。
(1) 单帧可靠发送的情况
节点A发送1帧数据给节点B。设数据发送时间为td;节点B收到1帧数据并处理后立即发送确认,设施节点B的数据处理时延为 tpc,确认的发送时间为 ta,其中 td< 节点A分组向节点B发送数据;节点B接收分组数据进行处理,当接收到任务确认信息时,进行接收状态的反馈。因此两次发送数据帧之间的时间间隔为 tT’=td+tp,那么正确传输每帧的平均时间为 t’= tT’/(1-p)。 分析表明,由于确认信息的减少,使得数据的平均发送时间明显缩短。再考虑到发送等待回执信息出现丢失时的超时等待,单任务可靠发送的方式效率要明显优于单帧可靠发送。 本文首先介绍了LRC协议报文,该协议支持分组数据和非分组数据传输的多种模式,然后对分组数据发送方式下的单帧可靠发送和单任务可靠发送两种方式进行了详细设计思路的说明,最后对这两种方式下的传输性能进行了分析。LRC协议是一种支持多种方式传输的协议,并且其设计的单任务可靠发送方式在传输中的性能要明显优于单帧可靠发送,特别适合长报文分组数据的传输。 [1]谢希仁.计算机网络教程[M].北京:人民邮电出版社.2002. [2]王宇亮,章洋.郑昌文.短报文可靠传输协议的设计与实现.计算机工程与设计.2007. [3]刘喜作,周晶,梁德清.基于 UDP的大数据包可靠传输.电讯技术.2012.(2) 单任务可靠发送的情况
4 结论