CN104753629B - 一种数据递交方法和装置 - Google Patents
一种数据递交方法和装置 Download PDFInfo
- Publication number
- CN104753629B CN104753629B CN201310733413.6A CN201310733413A CN104753629B CN 104753629 B CN104753629 B CN 104753629B CN 201310733413 A CN201310733413 A CN 201310733413A CN 104753629 B CN104753629 B CN 104753629B
- Authority
- CN
- China
- Prior art keywords
- socket
- sequence number
- sdu
- last
- tcp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Communication Control (AREA)
Abstract
本发明涉及通信领域,公开了一种数据递交方法和装置,能够减少采用按序递交对终端下载速率的影响;此外,能够避免上层因为长时间收不到数据包而拆链。该方法包括:对未处理过的SDU进行处理,当该SDU是TCP包时,判断该SDU所属的socket中是否存在连续的TCP报文;若存在连续的TCP报文,将该连续的TCP报文递交;若不存在连续的TCP报文,继续处理未处理过的完整的SDU,如果在预设的时间内获取到该socket的连续的TCP报文,则将该连续的TCP报文重组后递交;如果未在预设的时间内获取到该socket的连续的TCP报文,则在达到预设的时间时将获取到的socket中的TCP包重组后递交。
Description
技术领域
本发明涉及通信领域,特别涉及一种数据递交方法和装置。
背景技术
3G(3rd-Generation,第三代移动通信技术)是指能够支持高速数据传输的蜂窝移动通讯技术。在移动互联网中,下行是指移动互联网侧至用户侧。在以3G为基础的移动互联网中,用户可以享受到高速率的下行业务。
移动互联网运行的是HSDPA(High Speed Downlink Packet Access,高速下行分组接入)协议。该HSDPA协议的结构共分为五层,按照从上到下的顺序依次为:应用层TCP(Transmission Control Protocol,传输控制协议)/IP(Internet Protocol,因特网协议)、PDCP(Packet Data Convergence Protocol,分组数据汇聚协议)层、RLC(Radio LinkControl,无线链路控制)层、MAC-hs(Medium Access Control High Speed,高速介质访问控制层)及物理层。其中,所述RLC层和所述MAC-hs层是传输数据的主要的协议层;所述PDCP用于对数据进行打包;所述RLC用于对数据进行分段;所述MAC-hs用于对数据进行组包。网络侧应用层下发的TCP/IP数据包经过所述PDCP的打包,RLC的分段,MAC-hs的组包过程,最后通过物理层发向空中接口。用户侧收到组包后的数据之后,经过相反的过程,最后传递给用户的应用层。在此过程中,为了保证传输的可靠性,在用户的RLC层有一套重传机制。该重传机制需要将丢失的PDU(Protocol Data Unit,协议数据单元)的信息通知网络侧,从而促使网络侧RLC层进行重传。而网络进行重选的前提是发现网络进入了拥塞状态。目前的拥塞控制机制包括:慢启动、拥塞避免和快速重传。所述慢启动是指网络中发送数据呈指数级增加,所述拥塞避免是指当网络中发送数据的速率达到慢启动门限时,网络中发送数据的速度呈线性增加,所述快速重选是指根据接收到的连续的数据包来判断丢失的数据包,并对丢失的数据包进行快速重传。
此外,在RLC层设置了两种递交方法:按序递交和非按序递交。所述按序递交是指接收方应按照网络递交报文的顺序将接收到的报文顺序递交到用户的应用层,所述非按序递交是指接收方无需按照网络递交报文的顺序,可以以任意的顺序递交接收到的报文到用户的应用层。
如果网络侧RLC层设置按序递交为true(是)时按序递交,那么用户必须按序递交数据到上层。但是,如果网络侧RLC层设置按序递交为false(否)时,用户可以按序递交数据到上层,也可以非按序递交数据到上层。
如果采用按序递交方式,当有socket中的TCP包丢失的现象发生时,其余已经接收成功的数据无法及时递交给上层,只有等到所有的数据接收成功了才能向上层递交。这样可能会导致这个socket下TCP层在一定时间内不能收到任何TCP包,这可能触发TCP认为链路中断而拆链。
当网络侧以非按序递交时,如果传输数据的TCP socket(端口)只有1个,当用户端的TCP层发现有报文丢失时,用户端的TCP层每收到一个不连续的报文,用户端就会发送ACK(Acknowledgement,确认字符)报文给网络,而多个ACK报文必然会触发网络侧的拥塞避免过程,导致下行速率快速下降,并且需要一定的时间才能恢复。当并发的传输数据的TCPsocket有多个时,丢失的PDU很可能只包含1个socket上的数据,即非按序递交很可能只会影响1个socket上的速率,因此并发的socket越多,则总体速率受影响越小。当网络侧以按序递交时,当传输数据的TCP socket只有1个且当有丢失的PDU时,RLC会在该PDU重传成功后,才会按序向上层递交TCP报文,使得TCP层可以收到连续的TCP报文,因此可以避免进入拥塞避免过程。但当并发传输的数据的TCP socket有多个且存在PDU的丢失时,只有等该PDU重传成功后,其余的socket上的数据,才能继续传输,这样会导致所有socket上的传输时延增加,导致服务器端发送数据的速率降低。因此,当网络侧RLC层设置按序递交为false(否)时,用户采用按序递交或非按序递交,均无法保证不同并发TCP socket的数量时网络中数据的高速传输。
发明内容
本发明的目的在于提供一种数据递交方法和装置,将不同socket连接的TCP包区分对待,避免了都采用按序递交所导致的一个socket连接的TCP包丢失导致其他socket连接也不能正常接收的情况,最大限度的减少了采用按序递交对终端下载速率的影响;此外,在预设时间内如果无法收到连续的TCP报文,则在超过预设时间时,将已经收到的TCP包递交给上层,使得TCP层不会因为长时间不能收到任何数据包而拆链。
为解决上述技术问题,本发明的实施方式提供了一种数据递交方法,应用于配置的按序递交In-seuquence deliver为否false的网络中,包括:
S1、对缓存中未处理过的完整的服务数据单元SDU进行处理,当处理得到所述SDU是传输控制协议TCP包时,判断所述SDU所属的端口socket中是否存在连续的TCP报文;
S2、当判定所述socket中存在连续的TCP报文时,将所述连续的TCP报文重组后递交;当判定所述socket中不存在连续的TCP报文时,继续处理未处理过的完整的SDU,如果在预设的时间内获取到所述socket的连续的TCP报文,则将所述连续的TCP报文重组后递交;如果未在预设的时间内获取到所述socket的连续的TCP报文,则在达到所述预设的时间时将获取到的所述socket的TCP包重组后递交。
本发明的实施方式还提供了一种数据递交装置,应用于配置的按序递交In-seuquence deliver为否false的网络中,包括:
第一处理单元,用于对缓存中未处理过的完整的服务数据单元SDU进行处理,当处理得到所述SDU是传输控制协议TCP包时,判断所述SDU所属的端口socket中是否存在连续的TCP报文;
第二处理单元,用于当判定所述socket中存在连续的TCP报文时,将所述连续的TCP报文重组后递交;当判定所述socket中不存在连续的TCP报文,继续处理未处理过的完整的SDU,如果在预设的时间内获取到所述socket的连续的TCP报文,则将所述连续的TCP报文重组后递交;如果未在预设的时间内获取到所述socket的连续的TCP报文,则在达到所述预设的时间时将获取到的所述socket的TCP包重组后递交。
本发明实施方式相对于现有技术而言,将不同socket连接的TCP包区分对待,避免了都采用按序递交所导致的一个socket连接的TCP包丢失导致其他socket连接也不能正常接收的情况,最大限度的减少了采用按序递交对终端下载速率的影响;此外,在预设时间内如果无法收到连续的TCP报文,则在超过预设时间时,将已经收到的TCP包递交给上层,使得TCP层不会因为长时间不能收到任何数据包而拆链。此外,通过判断并发传输数据的TCPsocket端口号,使得属于同一TCP socket的数据,按序递交,而属于不同TCP socket的数据,互相之间无需按序递交。本发明没有增加任何硬件开销,仅增加了对TCP报文的解析开销,在不违背协议规定的情况下,有选择的根据TCP中每个socket连接的不同情况,对RLC层是否进行按序递交进行优化和调整,克服了现有技术中考虑不周的缺点,达到了提升终端下载速率的目的。采用本发明所提供的方法,不仅提高了终端一侧无线资源的利用率,也有利于整个系统资源的合理使用。
优选的,所述方法还包括以下步骤:S0、在所述S1之前,给每一个socket设置定时器;在所述S1中,当处理得到所述SDU是TCP协议包时,启动所述SDU所属的socket的定时器;在所述S2中,所述预设的时间为所述定时器的时长。所述定时器的时长为2秒。
当socket中不存在连续的TCP报文,即当RLC发现丢包时,可以在socket设置的定时器规定的时长内,RLC(Radio Link Control,无线链路控制)继续接收后续的下行PDU(Protocol Data Unit,协议数据单元),如果在定时器时长内获取到连续的TCP报文,则可以将该socket中连续的TCP报文重组后递交,如果在定时器时长内获取到连续的TCP报文,则可以将该socket中连续的TCP报文重组后递交,如果在定时器时长内没有获取到连续的TCP报文,则可以在定时器超时时将该socket中的TCP包重组后递交,引入定时器可以使得该数据递交方法变得简单易实现。
优选的,在所述S2之后,所述方法还包括:清除所述缓存中所述递交的TCP包对应的协议数据单元PDU。
将处理并递交的TCP包中对应的PDU在缓存中清除,这样可以被处理过的PDU被重复处理的情况发生,避免网络资源的浪费。
优选的,所述S1中判断所述SDU所属的socket中是否存在连续的TCP报文括以下子步骤:解析所述SDU,获得所述SDU对应的TCP报文的头数据,获取所述头数据携带的序号,将所述序号作为所述TCP包的第一个序号;获取存储的所述socket的最后一个序号,所述最后一个序号为上一次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号;判断所述最后一个序号的下一个序号是否等于所述第一个序号;若等于所述第一个序号时,判定所述socket中存在连续的TCP报文;若不等于所述第一个序号,判定所述socket中不存在连续的TCP报文。
在上次存储的TCP报文的目的端口有效时,通过将本次接收的SDU处理得到的TCP报文的序号与上一次存储的TCP报文的目的端口进行比较,来判断本次处理的SDU所属的socket中是否存在连续的TCP报文,该方法简单方便,易于实现。
优选的,在所述判定所述socket中存在连续的TCP报文之后,所述方法还包括:将所述最后一个序号更新为本次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号,并存储所述最后一个序号。
当socket中存在连续的TCP报文时,将该socket的最后一个连续的序号更新为最后一个连续的TCP报文的最后一个字节的序号,并存储起来,方便下一次直接使用。
附图说明
图1是本发明第一实施方式中的数据递交方法流程示意图;
图2是本发明第一实施方式中的IP header的结构示意图;
图3是本发明第一实施方式中的TCP header的结构示意图;
图4是本发明第一实施方式中判断socket中是否存在连续的TCP报文的方法流程示意图;
图5是本发明第二实施方式中的数据递交装置的结构示意图;
图6是本发明第二实施方式中的第一处理单元的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
本发明第一实施方式提供一种数据递交方法,如图1所示,该数据递交方法完整的处理过程包括以下步骤:
101、判断是否收到了MAC-d PDU。
需要说明的是,MAC是媒介接入控制Media Access Control,MAC-d是MAC的一个子层,MAC-hs是MAC的一个子层,一个或者若干个MAC-dPDU构成一个MAC-hs PDU,MAC-hs在收到一个MAC-hs PDU之后,会解析出若干个MAC-d PDU,每个MAC-d PDU与RLC PDU是一一对应的关系。本发明中所提到的SDU和PDU均为RLC层的SDU和PDU。
判断是否收到了来自MAC-hs层发送的MAC-d PDU,如果收到了,就将PDU先缓存起来,待处理,接着执行步骤102,如果没有收到MAC-d PDU,就返回步骤101。
102、判断网络配置的In-seuquence deliver是否为true。
当网络配置的In-seuquence deliver为true时,执行步骤103;当网络配置的In-seuquence deliver为false时,执行步骤104。
103、按照按序递交的方式处理所有收到的PDU。
即按照数据的编号顺序依次递交到上层。
需要说明的是,按序递交方式及非按序递交方式为现有技术,本发明在此对两种递交方式不做赘述。步骤101至步骤103为现有技术,但上述步骤是数据递交过程中的必要步骤。本发明是对数据递交方式中的部分步骤做了一些改进,重点阐述当网络中配置的In-seuquence deliver为false时,终端对每个socket上的TCP包递交的方法,该方法包括:对缓存中未处理过的完整的SDU进行处理,当处理得到SDU是TCP包时,判断SDU所属的socket中是否存在连续的TCP报文;当判定socket中存在连续的TCP报文时,将连续的TCP报文重组后递交;当判定socket中不存在连续的TCP报文时,继续处理未处理过的完整的SDU,如果在预设的时间内获取到socket的连续的TCP报文,则将连续的TCP报文重组后递交;如果未在预设的时间内获取到socket的连续的TCP报文,则将获取到的socket的TCP包重组后递交。特别的,预设的时间是通过设定定时器,根据定时器设定一定的时长来体现预设的时间的长度,具体步骤如下:
104、判断缓存中是否存在未处理的完整的SDU。
即判断缓存中的PDU是否均是未处理过的,且这些PDU是否可以组成一个完整的SDU。RLC接收到的数据是指RLC PDU,RLC PDU是组成RLCSDU的数据单元,SDU在处理之后得到TCP包。
PDU是组成TCP包的数据单元,未处理的多个PDU组成SDU,SDU是RLC层接收到的数据,SDU在处理之后得到TCP包。
当缓存中存在未处理的完整的SDU时,执行步骤105;当缓存中不存在未处理的完整的SDU时,返回步骤101。
105、判断SDU是否TCP协议包。
如图2所示,IP包由头数据(header)部分和数据内容部分构成,其中数据内容部分包括TCP包,IP header由至少5个字节构成。其中,协议部分的8个比特用来表示IP包所承载的协议类型,1表示为ICMP(Internet Control Message Protocol,因特网控制消息协议),2表示为IGMP(nternet Group Management Protocol,因特网组管理协议),6表示为TCP(Transmission Control Protocol,传输控制协议),17表示为UDP(User DatagramProtocol,用户数据报协议)。如图3所示,TCP包也是由header和数据构成,TCP header由不少于5个字节构成,header中携带着序号。承载SDU的IP包可能是ICMP协议包、IGMP协议包、TCP协议包、UDP协议包中的任意一种协议包,因此,需要将IP包解析后查看该IP包承载的协议类型,当协议类型为TCP协议时,从而可以判定该IP包承载的SDU为TCP协议包,否则就判断SDU不是TCP协议包。
当判定SDU是TCP协议包时,执行步骤106;当判定SDU不是TCP协议包时,直接跳转至步骤109。即当SDU是其他的协议包时,直接将收到的数据包重组后递交上去。
106、判断SDU所属的socket的定时器是否已经启动。
当该定时器已经启动时,说明该SDU曾经被处理过,直接跳转至步骤108;SDU曾经被处理过是指SDU已经收到过,但是由于不连续或者没有发送给上层,于是缓存下来,这里处理的是缓存中的数据。但是定时器在最早收到SDU的时候就启动,因此直接跳转至步骤108。
当该定时器没有启动,仍然处于关闭状态时,执行步骤107。
107、开启该定时器。
若该SDU所属的socket的定时器仍然处于关闭状态,则开启该定时器,接着执行步骤108。
108、判断SDU所属的socket中是否存在连续的TCP报文。
socket中存在连续的TCP报文是指处理一个socket中的SDU得到的所有的TCP报文的序号是连续的。如图4所示,步骤108具体包括以下子步骤:
1081、解析SDU,获得SDU对应的TCP报文的头数据,获取头数据携带的序号,将序号作为TCP包的第一个序号。
将SDU解析得到该SDU对应的TCP报文的头数据,该头数据中携带着序号,该序号表示该TCP报文的起始的比特序号,即将该序号作为TCP包的第一个序号。将该序号存储在该socket的first_byte_sn中。
1082、获取存储的socket的最后一个序号。
最后一个序号为上一次处理的SDU解析得到的连续的TCP报文中的最后一个报文的最后一个字节的序号。特别的,可以将最后一个序号存储在该socket的last_byte_sn中,last_byte_sn的初始值可以设置为0xFFFFFFFF。即在未处理SDU之前,可以将SDU所属的socket的last_byte_sn设置为0xFFFFFFFF。
示例的,假设上一次处理的是socket1上TCP报文的sn(序号)为0~499的SDU,其中0为该报文的头数据的序号,499为该TCP报文中的最后一个报文的最后一个字节的序号,可以将序号0存储在该socket1的first_byte_sn中,在处理完SDU得到TCP包之后,将socket1的last_byte_sn由初始值0xFFFFFFFF更新为499。
1083、判断最后一个序号的下一个序号是否等于第一个序号。
若等于第一个序号时,可以判定socket中存在连续的TCP报文;若不等于第一个序号,可以判定socket中不存在连续的TCP报文。
示例的,假设本轮处理的数据为socket1上的SDU,该SDU解析得到的TCP报文的头数据的序号为500,最后一个序号为999,则可以将first_byte_sn进行更新,即将500存储在socket1的first_byte_sn中,当前获取的该socket1存储的最后一个序号last_byte_sn为499,最后一个序号的下一个序号即(499+1)得到的序号是500,与本轮处理的SDU解析得到的TCP的头数据的序号500相等,因此,可以判定socket1中存在连续的TCP报文;若本轮收到的SDU解析得到的TCP报文的头数剧的序号为1000时,由于最后一个序号的下一个序号是500,500与1000不相等,即最后一个序号的下一个序号不等于第一个序号,则可以判定socket1中不存在连续的TCP报文。
当判定socket1中存在连续的TCP报文时,接着执行步骤1084。
1084、将最后一个序号更新为本次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号,并存储最后一个序号。
步骤108结束。
当判定socket中存在连续的TCP报文时,执行步骤109;当判定socket中不存在连续的TCP报文时,执行步骤111。
当socket中存在连续的TCP报文时,将该socket的最后一个序号更新当前处理SDU得到的TCP包的最后一个序号,并存储起来,方便下一次直接使用。示例的,可以将最后一个序号更新为步骤1085中当前处理的SDU得到的TCP报文最后一个序号为999。
109、将socket中连续的TCP报文重组后递交,并关闭定时器。
重组指将RLC PDU级联形成RLC SDU的过程,为现有技术,此处不再赘述。
接着执行步骤110。
110、清除缓存中已经递交的TCP包中包括的PDU。
将处理并递交的TCP包中对应的PDU在缓存中清除,这样可以被处理过的PDU被重复处理的情况发生,避免网络资源的浪费。
然后再进入下一个循环:返回步骤104,继续处理未处理过的完整的SDU。
111、判断定时器是否超时。
定时器的时长可以为2秒,这个时长是根据工程经验得到的在各种网络配置的环境中,RLC从发现丢包到重传成功所需的时间的值。
112、重组该socket中所有已处理的完整的SDU,递交给上层。
当定时器未超时时,继续处理未处理过的完整的SDU,即循环执行步骤104至步骤108,在循环执行过程中,如果能获取到socket的连续的TCP报文,就执行步骤109及步骤110,如果在循环执行过程中,直到定时器超时时,该socket中仍然未能获取到连续的TCP报文,则将之前处理好的未递交的SDU递交给上层;即当定时器超时时,执行步骤112。
示例的,在定时器未超时时,可以继续处理未处理过的完整的SDU,假设上一轮处理的是socket1,上一轮处理的SDU解析得到的TCP报文的头数据的序号为1000,最后一个序号为1499,且判定socket1中不存在连续的TCP报文,且该socket1中存储的最后一个序号last_byte_sn为499。若在定时器未超时时继续处理的完整的SDU解析得到的TCP报文的头数据序号为500,最后一个序号为999,由于500等于该socket1中存储的最后一个序号last_byte_sn为499的下一个序号,因此,可以判定该socket1中存在连续的TCP报文。接着执行步骤109及步骤110,可以将该socket1中的连续的TCP报文重组后递交给上层。
又一示例的,假设上一轮处理的socket1中不存在连续的TCP报文,上一轮处理的SDU得到的TCP报文的头数据序号为1000,最后一个序号为1499,该socket1中存储的最后一个序号last_byte_sn为499,本轮继续处理的也是socket1中的SDU,该SDU解析得到的TCP报文的头数据的序号为1500,最后一个序号为1999,由于该last_byte_sn的下一个序号为500,与本轮处理的SDU解析得到的TCP报文的头数据的序号1500不相等,则判定socket1中仍然不存在连续的TCP报文,若此时定时器超时,则可以将处理的完整的SDU重组后递交;若此时定时器还没有超时,则接续处理未处理过的完整的SDU,直至socket1中存在连续的TCP报文或定时器超时。
113、关闭该定时器。
接着执行步骤110。
综上所述,在采用了本发明的数据递交方法之后,若RLC发现有丢包,就会在定时器规定的时长内等待重发,直至将丢失的数据包重发成功后才递交所有的成功收取的数据包;如果定时器规定的时长内不能收到丢失的数据包及其他的数据包,就会在定时器超时时,将已经收到的数据包递交给上层,避免了TCP层因为长时间不能收到任何数据包而拆链的现象发生。
本发明实施方式相对于现有技术而言,将不同socket连接的TCP包区分对待,避免了都采用按序递交所导致的一个socket连接的TCP包丢失导致其他socket连接也不能正常接收的情况,最大限度的减少了采用按序递交对终端下载速率的影响;此外,在预设时间内如果无法收到连续的TCP报文,则在超过预设时间时,将已经收到的TCP包递交给上层,使得TCP层不会因为长时间不能收到任何数据包而拆链。此外,通过判断并发传输数据的TCPsocket端口号,使得属于同一TCP socket的数据,按序递交,而属于不同TCP socket的数据,互相之间无需按序递交。本发明没有增加任何硬件开销,仅增加了对TCP报文的解析开销,在不违背协议规定的情况下,有选择的根据TCP中每个socket连接的不同情况,对RLC层是否进行按序递交进行优化和调整,克服了现有技术中考虑不周的缺点,达到了提升终端下载速率的目的。采用本发明所提供的方法,不仅提高了终端一侧无线资源的利用率,也有利于整个系统资源的合理使用。
本发明的第二实施方式涉及一种数据递交装置,应用于配置的In-seuquencedeliver为否false的网络中,如图5所示,该装置包括:
第一处理单元,用于对缓存中未处理过的完整的服务数据单元SDU进行处理,当处理得到SDU是传输控制协议TCP包时,判断SDU所属的端口socket中是否存在连续的TCP报文。
第二处理单元,用于当判定socket中存在连续的TCP报文时,将连续的TCP报文重组后递交;当判定socket中不存在连续的TCP报文,继续处理未处理过的完整的SDU,如果在预设的时间内获取到socket的连续的TCP报文,则将连续的TCP报文重组后递交;如果未在预设的时间内获取到socket的连续的TCP报文,则在所述预设的时间达到时将获取到的socket的TCP包重组后递交。
进一步的,该装置中还包含:N个定时器,N为socket的个数,每个定时器对应一个socket。定时器的时长为2秒。
第一处理单元还用于当处理得到SDU是TCP协议包时,启动SDU所属的socket的定时器。
预设的时间为定时器规定的时长。
该装置还包括:清除单元,用于清除缓存中递交的TCP包对应的协议数据单元PDU。
再进一步的,如图6所示,第一处理单元还包括以下子单元:
解析子单元,用于解析SDU,获得SDU对应的TCP报文的头数据,获取头数据携带的序号,将序号作为TCP包的第一个序号。
获取子单元,用于获取存储的socket的最后一个序号,最后一个序号为上一次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号。
判断子单元,用于判断最后一个序号的下一个序号是否等于第一个序号。
判定子单元,用于在最后一个序号的下一个序号等于第一个序号时,判定socket中存在连续的TCP报文;若最后一个序号的下一个序号不等于第一个序号时,判定socket中不存在连续的TCP报文。
该装置还包括:更新单元,用于将最后一个序号更新为本次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号,并存储最后一个序号。
本发明实施方式相对于现有技术而言,第一处理单元将不同socket连接的TCP包区分对待,避免了都采用按序递交所导致的一个socket连接的TCP包丢失导致其他socket连接也不能正常接收的情况,最大限度的减少了采用按序递交对终端下载速率的影响;此外,如果第二处理单元在预设时间内无法收到连续的TCP报文,则在超过预设时间时,将已经收到的TCP包递交给上层,使得TCP层不会因为长时间不能收到任何数据包而拆链。此外,通过判断并发传输数据的TCP socket端口号,使得属于同一TCP socket的数据,按序递交,而属于不同TCP socket的数据,互相之间无需按序递交。本发明没有增加任何硬件开销,仅增加了第一处理单元中的解析子单元,利用该解析子单元对TCP报文进行解析,在不违背协议规定的情况下,第一判断子单元和第二判断子单元有选择的根据TCP中每个socket连接的不同情况,对RLC层是否进行按序递交进行优化和调整,克服了现有技术中考虑不周的缺点,达到了提升终端下载速率的目的。采用本发明所提供的方法,不仅提高了终端一侧无线资源的利用率,也有利于整个系统资源的合理使用。
值得一提的是,关于装置的实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。各个物理单元的工作原理可以参考方法实施例中的叙述,本发明在此不再赘述。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种数据递交方法,应用于配置的按序递交In-seuquence deliver为否false的网络中,其特征在于,包括:
S1、对缓存中未处理过的完整的服务数据单元SDU进行处理,当处理得到所述SDU是传输控制协议TCP包时,解析所述SDU,获得所述SDU对应的TCP报文的头数据,获取所述头数据携带的序号,将所述序号作为所述TCP包的第一个序号;获取存储的所述socket的最后一个序号,所述最后一个序号为上一次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号;判断所述最后一个序号的下一个序号是否等于所述第一个序号;若等于所述第一个序号时,判定所述socket中存在连续的TCP报文;若不等于所述第一个序号,判定所述socket中不存在连续的TCP报文;
S2、当判定所述socket中存在连续的TCP报文时,将所述连续的TCP报文重组后递交;当判定所述socket中不存在连续的TCP报文时,继续处理未处理过的完整的SDU,如果在预设的时间内获取到所述socket的连续的TCP报文,则将所述连续的TCP报文重组后递交;如果未在预设的时间内获取到所述socket的连续的TCP报文,则在达到所述预设的时间时将获取到的所述socket的TCP包重组后递交。
2.根据权利要求1所述的数据递交方法,其特征在于,所述方法还包括以下步骤:
S0、在所述S1之前,给每一个socket设置定时器;
在所述S1中,当处理得到所述SDU是TCP协议包时,启动所述SDU所属的socket的定时器;
在所述S2中,所述预设的时间为所述定时器的时长。
3.根据权利要求2所述的数据递交方法,其特征在于,所述定时器的时长为2秒。
4.根据权利要求1所述的数据递交方法,其特征在于,在所述S2之后,所述方法还包括:
清除所述缓存中所述递交的TCP包对应的协议数据单元PDU。
5.根据权利要求1所述的数据递交方法,其特征在于,在所述判定所述socket中存在连续的TCP报文之后,所述方法还包括:
将所述最后一个序号更新为本次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号,并存储所述最后一个序号。
6.一种数据递交装置,应用于配置的按序递交In-seuquence deliver为否false的网络中,其特征在于,包括:
第一处理单元,用于对缓存中未处理过的完整的服务数据单元SDU进行处理,当处理得到所述SDU是传输控制协议TCP包时,判断所述SDU所属的端口socket中是否存在连续的TCP报文;
其中,所述第一处理单元还包括以下子单元:
解析子单元,用于解析所述SDU,获得所述SDU对应的TCP报文的头数据,获取所述头数据携带的序号,将所述序号作为所述TCP包的第一个序号;
获取子单元,用于获取存储的所述socket的最后一个序号,所述最后一个序号为上一次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号;
判断子单元,用于判断所述最后一个序号的下一个序号是否等于所述第一个序号;
判定子单元,用于在所述最后一个序号的下一个序号等于所述第一个序号时,判定所述socket中存在连续的TCP报文;或在所述最后一个序号的下一个序号不等于所述第一个序号时,判定所述socket中不存在连续的TCP报文;
第二处理单元,用于当判定所述socket中存在连续的TCP报文时,将所述连续的TCP报文重组后递交;当判定所述socket中不存在连续的TCP报文,继续处理未处理过的完整的SDU,如果在预设的时间内获取到所述socket的连续的TCP报文,则将所述连续的TCP报文重组后递交;如果未在预设的时间内获取到所述socket的连续的TCP报文,则在所述预设的时间达到时将获取到的所述socket的TCP包重组后递交。
7.根据权利要求6所述的数据递交装置,其特征在于,所述装置还包含:N个定时器,所述N为所述socket的个数,每个定时器对应一个socket;
所述第一处理单元还用于当处理得到所述SDU是TCP协议包时,启动所述SDU所属的socket的定时器;
所述预设的时间为所述定时器规定的时长。
8.根据权利要求7所述的数据递交装置,其特征在于,所述定时器的时长为2秒。
9.根据权利要求6所述的数据递交装置,其特征在于,所述装置还包括:
清除单元,用于清除所述缓存中所述递交的TCP包对应的协议数据单元PDU。
10.根据权利要求6所述的数据递交装置,其特征在于,所述装置还包括:
更新单元,将所述最后一个序号更新为本次处理得到的连续的TCP报文中的最后一个报文的最后一个字节的序号,并存储所述最后一个序号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310733413.6A CN104753629B (zh) | 2013-12-26 | 2013-12-26 | 一种数据递交方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310733413.6A CN104753629B (zh) | 2013-12-26 | 2013-12-26 | 一种数据递交方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104753629A CN104753629A (zh) | 2015-07-01 |
CN104753629B true CN104753629B (zh) | 2018-03-30 |
Family
ID=53592801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310733413.6A Active CN104753629B (zh) | 2013-12-26 | 2013-12-26 | 一种数据递交方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104753629B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105471860A (zh) * | 2015-11-19 | 2016-04-06 | 浙江宇视科技有限公司 | 一种视频数据传输方法及装置 |
CN107360592B (zh) * | 2017-07-05 | 2019-11-12 | 京信通信系统(中国)有限公司 | Pdcp下行传输方法、装置、存储介质及其计算机设备 |
CN110858828A (zh) * | 2018-08-22 | 2020-03-03 | 普天信息技术有限公司 | 一种pdcp sdu重排序方法和装置 |
CN111447026B (zh) * | 2019-01-17 | 2021-09-14 | 华为技术有限公司 | 处理数据的方法和处理数据的装置 |
CN113365308B (zh) * | 2020-03-03 | 2022-04-29 | 大唐移动通信设备有限公司 | 一种数据传输方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101163086A (zh) * | 2006-10-11 | 2008-04-16 | 大唐移动通信设备有限公司 | 实现无线链路控制服务数据单元按序递交的方法 |
EP1993241A1 (en) * | 2006-03-03 | 2008-11-19 | Huawei Technologies Co., Ltd. | A method for reassembling data in wireless communication system and an apparatus thereof |
CN102239728A (zh) * | 2009-08-14 | 2011-11-09 | 华为技术有限公司 | 数据处理方法和装置 |
CN103166912A (zh) * | 2011-12-09 | 2013-06-19 | 华为技术有限公司 | 一种数据包的传输方法、系统 |
-
2013
- 2013-12-26 CN CN201310733413.6A patent/CN104753629B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1993241A1 (en) * | 2006-03-03 | 2008-11-19 | Huawei Technologies Co., Ltd. | A method for reassembling data in wireless communication system and an apparatus thereof |
CN101163086A (zh) * | 2006-10-11 | 2008-04-16 | 大唐移动通信设备有限公司 | 实现无线链路控制服务数据单元按序递交的方法 |
CN102239728A (zh) * | 2009-08-14 | 2011-11-09 | 华为技术有限公司 | 数据处理方法和装置 |
CN103166912A (zh) * | 2011-12-09 | 2013-06-19 | 华为技术有限公司 | 一种数据包的传输方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104753629A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7471681B2 (en) | Determining network path transmission unit | |
RU2461147C2 (ru) | Способ обработки радиопротокола в системе подвижной связи и передатчик подвижной связи | |
JP5523350B2 (ja) | Tcpフロー制御のための方法及び装置 | |
US7742454B2 (en) | Network performance by dynamically setting a reassembly timer based on network interface | |
KR101190525B1 (ko) | 통합형 기지국들, 및 이동 디바이스들을 위한 통신 시스템에서 데이터 유닛들을 전송하는 방법 | |
CN104753629B (zh) | 一种数据递交方法和装置 | |
US20070025374A1 (en) | TCP normalization engine | |
US11159981B2 (en) | Congestion processing method and apparatus | |
CN104093170B (zh) | 基于tcp的数据传输方法和tcp代理装置 | |
JP4929349B2 (ja) | 再送要求送信方法及び受信側装置 | |
RU2543996C2 (ru) | Управление перегрузкой в сети связи | |
CN101436978A (zh) | 使用udp协议进行可靠数据传输的方法 | |
CN101369877B (zh) | 无线传输控制协议处理方法和设备 | |
CN102006283A (zh) | 数据传输的方法和装置 | |
CN105187175B (zh) | 基站下行传输控制方法和系统 | |
CN101507202A (zh) | 通信装置 | |
KR102046792B1 (ko) | 송신 노드로부터 목적지 노드로의 데이터 전송 방법 | |
US7480301B2 (en) | Method, system and article for improved TCP performance during retransmission in response to selective acknowledgement | |
CN100407698C (zh) | 无线链路控制层的数据传输方法 | |
CN107743057A (zh) | 一种数据传输系统和方法 | |
WO2018233376A9 (zh) | 传输报文的方法、代理服务器和计算机可读存储介质 | |
KR20090132503A (ko) | 상위로 PDCP 데이터 유닛(data unit)을 전달하는 방법 | |
CN107343296A (zh) | 一种提高基于lte的tcp数传的下行速率的方法及装置 | |
CN104426638B (zh) | 一种数据递交方法和装置 | |
WO2016061987A1 (zh) | 报文处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |