数据传输方法

文档序号:7666423阅读:103来源:国知局
专利名称:数据传输方法
技术领域
本发明涉及通讯领域,尤其涉及一种数据传输方法。
技术背景网纟各中两个节点之间的通ifU办i义主要有UDP (User Datagram Protocol,用户凄史才居才艮文十办i义)和TCP ( Transfer Control Protocol, 传输控制协议),TCP协议是面向连接的可靠协议,采用这种协议 需要占用较多的处理器(CPU)时间,效率不高。为了提高可靠传 输的效率,提出了可靠的用户数据报文协议(RUDP, Reliable UDP ), 相对TCP来说,RUDP的效率提高了 。现有的RUDP协议大部份采用肯定应答(ACK)的方式,发送 端每发送一个才艮文,接收端都^f故一个肯定的应答,告诉发送端自己 接收到了报文。发送端发送报文时, 一般设置并启动一个定时器, 并等待接收端的接收应答,如果到定时器超时为止仍然没有得到应 答,则发送端认为数据没有到达接收端,需要重传已发送的数据。 这种方法要求接收端每接收到一个报文就必须向发送端发送一个接 收到数据的肯定应答,但是这种肯定应答方式增加了发送端和接收 端的负4旦。鉴于肯定应答方式的^:陷,可以考虑采用否定应答(NACK) 方式,即由接收端根据接收到的数据,来确定是否有报文丢失,如 果有丟失,就发送一个才艮文未收到的消息给发送端,请示发送端重
发丢失的报文。基于否定应答方式RUDP协议,接收端周期性的发 送NACK消息给发送端,发送端接收到报文立即重发NACK消息 中标记的丢失的报文,每一个NACK报文中标记整个NACK发送 周期中所有没有到达的才艮文。这种方式虽然减少了 NACK回送的次 数,但是这种发送方式也延迟了报文的重传,导致出现丢失的消息 延长较长的时间。同时,这种方法也没有实现收发端的流量控制。 在出现丟包时,发送端如果能降低发送的速率,可以减少拥塞或丟 包的H量。并且这种方法没有提及对链路状态的实时4企查,收发器 不能及时发现链路出现的故障。在通讯领域,节点间通讯数据中短 包占了4交大的比重,众所周知,大量的短包会导致占用的4交多的网 络资源,如果能减少短包的收发凄t量,则可以更好地-提升通讯性能。基于以上存在的一个或多个问题,现有技术中需要一种可靠、 高效的基于UDP的通讯方法。发明内容本发明的目的在于提供一种数据传输方法,使用基于否定应答 方式的RUDP协议,保证发送端能及时重传丟失的报文,并且增加 了拥塞控制和链路;险测机制,有效提高了通讯效率。为达到以上目的,本发明才是供一种数据传输方法,包括以下步 骤步骤一,发送端和接收端之间建立连接并均为开启状态,发送 端将短消息进行合并或拆分成凄t据包,并将数据包4要照顺序发送至 接收端;步骤二, ^接收端4妄收到数据包后进行^r查,在发现某个数 据包丟失后,向发送端反馈表示数据包丢失的否定应答消息;以及 步骤三,发送端根据否定应答消息将所丟失的数据包重新发送至接 收端,接收端对接收到的数据包进行解包或重组。
在步骤一中,在短消息的长度小于预定长度的情况下,发送端将一个或多个短消息进行合并形成新的数据包;以及在短消息的长 度大于预定长度的情况下,发送端将短消息拆分形成多个新的数据 包。在数据传输过程中,接收端采用自适应加权平均值TCP友好拥 塞控制算法进^f于拥塞控制。拥塞控制过程包括*接收端实时监控凄t据发送端和凄t据4妄收端 之间的数据往返时间、以及单位测量周期内的丢包率和平均速率; 才妄收端才艮据一个或多个测量周期内所测量的凄t据往返时间、丟包率 和平均速率计算下一个测量周期的期望发送速率,并将期望发送速 率通知发送端;以及发送端根据所计算的期望发送速率调整其发送 窗口大小进4于拥塞控制。其中,接收端对计算出的平均速率进行加4又处理,离下一个测 量周期近的测量周期的平均速率的权重大于离下一个测量周期远的 测量周期的平均速率的权重。在数据传输过程中,发送端和接收端进行心跳检测。发送端在 不发送数据的情况下发送心跳检测报文,接收端接收到心跳4企测才艮 文后向发送端回送心跳应答才艮文;以及接收端定时地将心跳冲企观'讨艮 文发送给发送端。通过本发明提供的数据传输的方法,能让发送端即时知道没有 到达接收端的消息序,以便及时重传丢失的数据包,减少了出现丢 失的消息时延。本发明采用ATFCC (Adaptive TCP-Friendly Congestion Control,自适应TCP友好拥塞控制)方案做流量预测, 可以4吏节点双方更快地对流量4故出调整,防止网络拥塞。本发明方 法在发送端按序发送应用层的消息,在4妻收端按序4妄收数据,实现 了应用层数据的保序处理。本发明应用心跳检测,可及时发现链路 异常。


此处所i兌明的附图用来提供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明数据传输方法的步骤流程图;图2是根据本发明数据传输方法的层次结构图;图3a是根据本发明数据传输方法的发送端消息处理的流程图;图3b是4艮据本发明的接收端消息处理的流程图;图4是根据本发明的发送端和接收端建立连接过程的步骤图;图5是根据本发明的传输数据包结构示意图;图6是才艮据本发明的发送端MP处理流程图;图7是根据本发明的接收端MP处理流程图;图8a是根据本发明的发送端和接收端可靠通讯无丢包情况的 处理示意图;图8b是才艮据本发明的发送端和接收端可靠通讯有丢包情况的 处理示意图;图9a是才艮据本发明的发送窗口原理示意图9b是根据本发明的接收窗口原理示意图;以及图10是才艮据本发明的4妻收端RP层处理流程示意图。
具体实施方式
下面参考附图,详细说明本发明的具体实施方式
。如图l所示,本发明才是供一种数据传输方法,包括以下步骤步骤S102,发送端和接收端之间建立连接并均为幵启状态,发 送端将短消息进行合并或拆分成数据包,并将数据包按照顺序发送 至4妄收端。步骤S104,接收端接收到数据包后进行检查,在发现某个数据 包丢失后,向发送端反^t表示数据包丟失的否定应答消息。步骤S106,发送端根据否定应答消息将所丢失的数据包重新发 送至接收端。如图2所示,本发明的方法3寻RUDP分为MP (Message Processing,消息处理)层和RP ( Reliable Processing,可靠处理) 层。MP层提供消息的发送接口和分发功能,在MP层实现应用层 消息的并包/解包、分片/重组处理。在发送端,它将较短的应用层消 息合并成一个长包来发送,将较长的应用层消息按照可以发送的最 大包长分片成若干个短包来发送。在接收端,MP层负责将并包的 数据做解包处理,将分片的数据估文并包处理,并分发给应用层。RP 层负责消息的可靠传送,它将MP层处理后的数据包按序号发送, 在接收端如果发现某一序号的数据包丢失,就回送一个该序号没有 到达的NACK应答,发送端接收到这个消息后就重传该序号的包给 ^接收端,以达到可靠发送的目的。 发送端和接收端都根据消息事件来确定具体的流程分支。发送端的软件处理流程,如图3a所示,在发送端,主要有应用层发送请 求消息、从接收端发送过来的否定应答消息、往返时间的测量消息、 定时器消息、以及其它一些消息,诸如发送窗口调整、状态机协商 消息等。发送请求主要用来处理应用层的数据发送请求,包括分片 处理、并包处理及并包定时器的建立。定时器消息包括心跳4全测定 时器、等待接收端应答超时定时器等。接收端的软件处理流程,如 图3b所示,在接收端,主要有接收处理消息、定时器消息、以及一 些本图中未列出的其它消息,接收处理消息主要负责数据的接收及 分发,定时器消息主要涉及到一些重传、心跳检测的处理。发送端和接收端之间的链路只有在OPEN (打开)状态,双方 才能通讯。处理器上电时,双方没有建立连4妾,处于CLOSED (关 闭)状态,无法通讯。发送端和接收端之间建立连接的过程如图4 所示,具体步艰《如下步骤S402,通讯进程上电时,建立UDP连接,接收端处于监 听(LISTEN)状态,主要用于监听连接是否有心跳信号以及发送端 的同步请求信号。如果没有收到发送端的同步请求信号,接收端一 直处LISTEN状态。步骤S404,发送端通i凡进禾呈上电时,建立UDP连4妾后,进入 发送同步(SYN_SND )状态。同时向接收端发送同步请求 (SYN一REQ ),同步信息中包含有将要通讯的数据块的起始序号。 一般情况下块的起始序号从O开始,最大序号为SN—MAX-1。在发 送同步请求消息时需要设置并启动一个定时器,如果定时器超时, 则需要重发同步请求消息。步艰《S406,接收端收到发送端的SYN—REQ后,保存块序号, 进入到接收同步(SYN—RCV)状态,同时向发送端回送一个应答
消息(ACK for SYN_REQ),表示本端收到了同步请求消息,发送 时需要启动一个定时器,如果定时器超时,则需要重发这个应答消息。步骤S408,发送端接收到了接收端回送的ACK for SYN_REQ 消息后,杀死在步骤S404中创建的定时器,同时回送一个ACK消 息,并进入到OPEN 4犬态。步骤S410,接收端接收到发送端发送的ACK消息后,杀死在 步骤S406中创建的定时器,进入OPEN状态。这样双方都进入到 了OPEN状态,表明收发两端可以进行正常地通讯。在OPEN状态,收发两端需要做心跳4企测,如果4企测到通讯4连 路发生断链,发送端进入到SYN_SND状态,接收端进入到LISTEN 状态,并重复步骤S404到步骤S410中的操作,直到收发两端进入 到OPEN状态。在OPEN状态,如果发送端不再发送凄t据,希望拆除链^各,它 向接收端发送链路复位(RST)请求,收发两端进入关闭等待 (CLOSE—WAITE )状态,收发双方处理完收发緩冲区的数据后进 入关闭状态。为了即时发现链路的状态变化,发送端和4妄收端之间必须估文心 浪匕才企测。为了减少心;兆包发送的次凄t,收发两端〗故不同的处理。对 于发送端,只有在发送端不发送数据的时候才发送心跳包。发送端 所有凄t据全部发送出去以后,启动心跳4企测定时器,当定时器溢出 时,就发送一个心跳4企测包,接收端接收到心跳纟企测才艮文,回送一 个心跳应答4艮文;对于接收端,需要定时地发送心跳检测包给发送 端。如果发送端超过1秒没有接收到接收端发送的心跳包或NACK 信号,就认为链路出现故障,需要做告警处理或填写异常日志。如
果4妄收端超过1秒没有^妄收到^f壬〗可凄t据包(正常的RUDP包或心逸匕 包),也认为链路异常,并估文告警处理和异常日志记录。链路异常后, 收发两端更新自己的状态,发送端进入发送SYN—SND状态,接收 端进入LISTEN状态。之后,心跳检测继续进行,如果链路恢复正 常,状态同步完成,再次进入OPEN4犬态,4欠发两端可以继续进4亍 正常的通"ifl。发送端和"t妻收端之间传输的数据包结构如图5所示,每个包可 以由0条或多条应用层消息(Message)打包而成,每一个包老P有一 个包头(Bundle Header )。包头定义的结构包括版本号、包类型、发 送时间、4妻收时间、期望发送速率、实际速率、包序号及附加的类 型等。包类型主要包括数据类型、心跳类型、往返时间测量类型、 速率协商类型、NACK、 ACK等类型,收发双方根据不同的类型做 不同的处理。发送端MP层的凝:据处理流程如图6所示,当应用层要通过 MP接口发送数据时,处理步骤如下步骤S602,首先确定链路状态是否处于OPEN状态,如果处于 OPEN状态,进行步骤S604处理;如果不处于OPEN状态,说明 链i 各没有准备好,向应用层返回发送失败及其原因。步骤S604,判断MP层是否可以緩存数据,如果能够緩存,则 进行步骤606处理;如果无法緩存,则向应用层返回发送失败及原 因。步骤S606,判断消息长度是否大于一个发送块的最大长度 (msg—length > bundling—length—max ):长口果不是则举争入步驶《S608 处理;如果是,需要对消息啦文分片处理,并计算出总共的分片数 NumSegs。分片后的各个片段使用相同的消息ID,每一片使用不同
的分片号,分片号依次从0开始,到NumSegs-l结束。如果NumSegs 大于segNo—Max,则分片号到segNo—Max - 1后,再/人0重新开始。 分片的凄t据包交给步骤S616处理。步骤S608,判断消息是否做并包处理,如果不做并包处理,需 转到步骤S616处理;如果要做并包处理,首先判断当前在发送队列 中是否有正在处理的并包如果没有,则转入步骤S612处理;如果 有,判断如果新消息加入到并包中,并包长度是否会超过允许的最 大长度,如果超过最大长度,则转入步骤S616处理。如果加入新消 息并包不会超过最大长度,则将新消息加入到并包中。步骤S612,创建新的并包,包序号力。1,如包序号溢出则重新 乂人0开始,将MP消息填入并包中,如果还可以加入并包,则并包 定时器复位为0,并启动定时器。步骤S614,如果并包定时器超时,则结束本次并包处理、停止 相应的定时器,并转到S616去处理。下一条MP消息到来时创建新 的并包。步骤S616,填写消息头包括消息ID、分片号(segNo)等。步骤S618,所有结束处理的并包放在发送队列中等待在发送窗 口中发送出去。接收端MP层的数据处理流程如图7所示,只对接收窗口保序 区的数据包进行处理,不处理乱序区的数据包,具体处理步骤如下步骤S702,首先对消息做合法性检查,如果参数不合法,或消 息不是本接收端应用层感兴趣的数据,消息做丢弃处理,不发送应 答消息。如果消息是本接收端感兴趣的消息,转入步骤S704处理。
步骤S704,如果所接收到消息是应用层需要的消息,判断包是 否是并包或分片包,如果不是并包或分片包,直接获取消息,并将 消息分发给应用层。步骤S706,如果所收到的包是分片包,对包啦文重组处理。如果 收到的包有分片缺失,将所有分片丢弃。步骤S708,如果所收到的包是并包,对包估支解包处理,并将分 解出来的消息分发给应用层。下面结合图8至图IO介绍本发明方法的重传策略。当到达接收端的lt据包不是4姿序到达的,需要重传丟失的包, 按序到达是指到达接收端的数据包序号是按顺序逐渐递增的,例如 前一次到达的数据包序号为N,本次达到的凄t据包序号为N+l,这 种情况称之为4姿序到达,如果这次到达的包序号为N+2,则i人为序 号为N+l的包丢失,需要重传序号为N+l的数据包。本发明方法所采用的重传策略以NACK应答方式为主,ACK 应答方式为辅,尽量确保消息可靠到达接收端。发送端和接收端之 间可靠通讯没有丢包的情况,如图8a所示,序号为N、 N+l、 N+2、 N+3的包都"t姿序到达^:收端。有丟包的情况,如图8b所示,序号为 N+l的包到达后,接收端收到N+3的包,接收端就认为序号为N+2 的包丢失,就向发送端回送一个NACK消息,在这个NACK消息 中携带的序号为N+2,发送端收到这个消息后立即重传序号为N+2 的才艮文。4妄收端发送NACK信号时需要启动一个定时器,序号为 N+2的报文到达,就停止这个定时器,如果超时就重发NACK消息, 直到发送NACK的次数达到最大次数。在某些情况下,应用层发送完数据后,在一段时间内不会有数 据发送。为了保证这最后一帧数据可靠到达接收端,将这一包数据包头的L标志位置1,表示这是阶^殳性的最后一个凄t据包,如图8a 和图8b所示,接收端接收到序号为N+M的数据包后回送一个ACK 消息,如果发送端在约定的时间内没有收到这个ACK消息,需要 重传这个序号的报文,直到达到发送的最大次数为止。发送端RP层的发送窗口原理如图9a所示,AB之间表示发送 队列,A表示等待发送的最大包序号,B表示发送窗口可发送的最 大包序号,C表示发送窗口可发送的最小包序号,BC之间序号差值 表发送窗口的大小。D表示重传窗口中等待否定应答的最小包序号, CD之间的序号差值表示重传窗口的大小。当用户要发送消息时, 凄t据打包后方文在A处,序号递增。发送ft据时,发送窗口在发送队 列上滑动,每次发送时发送的包数不超过滑动窗口中的包数。在C 处一包凄《据发送完成后就调整到重传窗口中,4妄收端要求发送端重 传的数据包序号落在CD区间时,发送端就将相应的报文重发出去, 如果一l殳时后,没有收到包含相应包序号的NACK消息,就表该才艮 文已成功发送给接收端,就将其调整出重发窗口 。如果B与A重合, 表示发送队列中已没有数据,当发送到A与B重合的包时,需要将 包头的L标志记为1,表明这一包数据是阶段性的最后一包。接收端RP层的接收窗口原理如图9b所示,E为最近从接收端 口接收到的包序号,EF之间为乱序区,位于这个区间表示存在没有 到达的包。虽然在发送端是按序发送的,但可能由交换机转发原因 或其它原因,在接收端并不是按序到达的,甚至有可能出现包丢失 情况,这些数据包位于EF区。当有数据重传时,如果重传数据落 在EF区,需要判断EF区是否已经接收到该序号的包,如果有,则 丢弃刚刚接收到的重传报文,如果在EF区没有该序号的重传报文, 就接收该报文,并调整F指向点,调整保序区的范围。如果接收到 序号的报文位于FG区,则直接丢弃,不估支任何处理。在EF区缺失 的序号4艮文经过NACK重传请求后仍然没到达,需要再次发送NACK消息,如果超过约定次数时仍然没有到达,则直接调整F的 指向点,将其移入到保序区。接收端RP层软件处理流程如图IO所示,具体步骤如下步骤S1002, RP层计算4妄"欠速率。步骤S1004,判断进入接收端的数据包是否是合法的报文,如 果不是,直接将报文丢弃,如果是合法的报文,转入步骤S1006处理。步骤S1006,判断接收到的报文是否是按序到达,如果是按序 到达则进4亍步骤S1012;否则进^f于步骤S1008。步骤S1008,如果当前接收到的包序号小于上次接收到的包序 号,说明这是个重传报文,进行步骤S1010;否则说明出现了丢包, 需要回送NACK消息,在NACK消息中携带丟失了的包序号。步骤S1010,如果该报文落在保序区,直接丟弃才艮文,如果是 落在乱序区,还要判断该报文是否已经存在于乱序区,如果存在, 直4妄丢弃才艮文,并结束本次4妄收处理。如果不存在,进行步骤S1012。步骤S1012,首先4妄收该lt据包,并判断包头的L标志是否为 1,如果为1说明发送端在一段时间内可能不会再发送数据,需要回 送一个ACK序号,告诉发送端这个带L标志的数据已经到达接收端。发送端RP层收到NACK消息后需要啦文重传处理。发送端接收 到NACK消息后,首先解4斤出NACK消息中的包序号,并判断本 端重传窗口中是否有该序号的包如果没有该序号的包,不对NACK 应答,如果有该序号的包就将该包从发送端口发送出去。发送端发
送了带L标志的报文后,需要启一个定时器,如果收到接收端针对 这个带L标志的包的ACK消息时,就复位并停止定时器。如果定 时器超时,需要重发这个包,重发的次数不超过最大约定次数。本发明采用自适应TCP友好拥塞控制策略,发送端的发送窗口 大小由接收端根据实际的接收速率、丟包率及收发端报文的往返时 间计算而得,具体控制步骤如下通讯进程在上电时首先i殳置一个 速率检测周期,每一个检测周期都要4企查数据包在收发节点间的往 返时间及连接的平均接收速率;根据测量的往返时间及平均接收速 率,接收端计算出下一个周期连接的期望速率;发送端根据这个期 望速率调整发送窗口的大小,以达到控制发送速率的目的。以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1.一种数据传输方法,其特征在于,所述方法包括以下步骤步骤一,发送端和接收端之间建立连接并均为开启状态,所述发送端将短消息进行合并或拆分成数据包,并将数据包按照顺序发送至接收端;步骤二,所述接收端接收到所述数据包后进行检查,在发现某个数据包丢失后,向所述发送端反馈表示所述数据包丢失的否定应答消息;以及步骤三,所述发送端根据所述否定应答消息将所丢失的数据包重新发送至所述接收端,所述接收端对接收到的数据包进行解包或重组。
2. 根据权利要求1所述的数据传输方法,其特征在于,在所述步 骤一中在所述短消息的长度小于预定长度的情况下,所述发送端 将一个或多个短消息进行合并形成新的数据包;以及在所述短消息的长度大于预定长度的情况下,所述发送端 将所述短消息拆分形成多个新的H据包。
3. 根据权利要求1或2所述的数据传输方法,其特征在于,在数 据传输过程中,所述接收端采用自适应加权平均值TCP友好 拥塞控制算法进行拥塞控制。
4. 根据权利要求3所述的数据传输方法,其特征在于,所述拥塞 控制过程包括所述4妾收端实时监控所述发送端和所述4妾收端之间的凄t据往返时间、以及单位测量周期内的丢包率和平均速率;所述接收端根据 一 个或多个测量周期内所测量的数据往 返时间、丢包率和平均速率计算下一个测量周期的期望发送速 率,并将所述期望发送速率通知所述发送端;以及所述发送端根据所计算的期望发送速率调整其发送窗口 大小进行拥塞控制。
5. 根据权利要求4所述的数据传输方法,其特征在于,所述接收 端对计算出的平均速率进行加权处理,使得离所述下一个测量 周期近的测量周期的平均速率的权重大于离所述下一个测量 周期远的测量周期的平均速率的^又重。
6. 根据权利要求3所述的数据传输方法,其特征在于,在所述数 据传输过程中,所述发送端和所述接收端进行心跳检测。
7. 根据权利要求6所述的数据传输方法,其特征在于所述发送端在不发送数据的情况下发送心跳检测报文,所 述接收端接收到所述心跳检测报文后向所述发送端回送心跳 应答才艮文;以及
全文摘要
本发明提供一种数据传输方法,包括以下步骤步骤一,发送端和接收端之间建立连接并均为开启状态,发送端将短消息进行合并或拆分成数据包,并将数据包按照顺序发送至接收端;步骤二,接收端接收到数据包后进行检查,在发现某个数据包丢失后,向发送端反馈表示数据包丢失的否定应答消息;步骤三,发送端根据否定应答消息将所丢失的数据包重新发送至接收端,接收端对接收到的数据包进行解包或重组。通过本方法,发送端能够即时知道没有到达接收端的消息序,及时重传丢失的数据包,减少了丢失的消息时延。
文档编号H04L1/16GK101159520SQ200710184899
公开日2008年4月9日 申请日期2007年10月29日 优先权日2007年10月29日
发明者徐正霞, 骐 杨, 凯 赵 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1