CN102823207A - 一种数据包的转发方法和设备 - Google Patents
一种数据包的转发方法和设备 Download PDFInfo
- Publication number
- CN102823207A CN102823207A CN2012800007457A CN201280000745A CN102823207A CN 102823207 A CN102823207 A CN 102823207A CN 2012800007457 A CN2012800007457 A CN 2012800007457A CN 201280000745 A CN201280000745 A CN 201280000745A CN 102823207 A CN102823207 A CN 102823207A
- Authority
- CN
- China
- Prior art keywords
- packet
- sequence number
- link
- sequence
- order
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明实施例提供一种数据包的转发方法和设备。其中方法的实现包括:数据包转发设备接收数据包,所述数据包为要求数据包无损按序到达接收端的通信协议封装的数据包;所述数据包转发设备判断所述数据包是否按序到达所述数据包转发设备,若否,则将所述数据包存入与所述数据包所属链接对应的缓存队列;所述数据包转发设备按照数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包。以上方法通过在数据包发送至接收端之前,对数据包的顺序进行调整,使数据包的发送顺序更接近于数据包原有的顺序,可以降低数据包的乱序率,减少接收端重复发送ACK请求以及重传数据包占用带宽的问题,从而提升网络吞吐率。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种数据包的转发方法和设备。
背景技术
目前网络通信协议种类很多,其中一些网络通信协议提供了可靠的数据传输服务,可靠的数据传输服务要求数据包无损按序到达接收端,TCP(Transmission Control Protocol,传输控制协议)是其中使用最广泛的一种,其提供了一种面向连接的、可靠的字节流服务。TCP数据包的传输可靠性主要体现在两个方面,一是数据不能损坏,二是数据的顺序必须保持发端和收端一致。在发生上述两方面情况异常时,TCP数据包的发送方会主动降低发送流量。
商用网络系统的组网是十分复杂的,比如:核心网到基站的传输通常采用公共网络传输,而公共网络由数量庞大的交换设备以网状结构组合在一起。由于组网复杂,容易造成数据包在传输路径上传输以后到达接收端时的时延不唯一,从而导致接收端接收到的数据包的乱序。
按照TCP规定,发送端按照TCP数据包的序号依次发送,例如:发送端向接收端依次发送序号为1~9的TCP数据包。由于上述1~9的各TCP数据包在传输路径上时延不相同,接收端收到的TCP数据包,可能存在乱序的问题。例如,收到的TCP数据包的序号依次为1、2、3、5、6、7、4、8、9,其中序号4的数据包延时的时间较长,导致接收端收到的TCP数据包乱序。
依据TCP的规定,目前接收端设备不能区分TCP数据包乱序和丢失,因此目前接收端处理TCP数据包乱序的问题的方式是:接收端在发现接收到的TCP数据包的序号乱序时,向TCP数据的发送端发送确认(Acknowledgement,ACK)请求,用于请求TCP数据包的发送端发送当前正确接收的最后一个序号的下一个序号的TCP数据包。以前述收到的TCP数据包的序号依次为123567489为例,在接收到序号为3的TCP数据包时确定下一个TCP数据包的序号为4并发送ACK请求4,但是实际收到的是5,因此再发送一次ACK请求并继续判断下一个接收的TCP数据包是否为序号为4的TCP数据包,发现仍然不是序号为4的TCP数据包再发一次ACK请求并继续判断下一个接收的TCP数据包是否为序号为4的TCP数据包,依此类推,上例中接收端接收到序号依次为123567489的数据包后会发送3次重复ACK请求,会导致发送端重复发送序号为4的TCP数据包。
发明人在实现本发明实施例的过程中发现:按照TCP的规定接收端接收到的TCP数据包出现乱序后会重复发送ACK请求,导致TCP数据包重传次数过多,占用带宽,因此网络吞吐率较低。
发明内容
本发明实施例提供一种数据包的转发方法和设备,用于降低数据包的乱序率,从而提升网络吞吐率。
一种传数据包的转发方法,包括:
数据包转发设备接收数据包,所述数据包为要求数据包无损按序到达接收端的通信协议封装的数据包;
所述数据包转发设备判断所述数据包是否按序到达所述数据包转发设备,若否,则将所述数据包存入与所述数据包所属链接对应的缓存队列;
所述数据包转发设备按照数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包。
一种数据包转发设备,包括:
接收单元,用于接收数据包,所述数据包为要求数据包无损按序到达接收端的通信协议封装的数据包;
判断单元,用于判断所述数据包是否按序到达所述数据包转发设备;
存储控制单元,用于若所述判断单元判断结果为否,则将所述数据包存入与所述数据包所属链接对应的缓存队列;
发送单元,用于按照数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包。
上述技术方案具有如下有益效果:通过在数据包发送至接收端之前,对数据包的顺序进行调整,使数据包的发送顺序更接近于数据包原有的顺序,可以降低数据包的乱序率,减少接收端重复发送ACK请求以及重传数据包占用带宽的问题,从而提升网络吞吐率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例方法流程示意图;
图2A为本发明实施例方案应用场景的网络结构示意图;
图2B为采用本发明实施例进行排序的实例示意图;
图3为本发明实施例另一方法流程示意图;
图4为本发明实施例转发设备结构示意图;
图5为本发明实施例另一转发设备结构示意图;
图6为本发明实施例另一转发设备结构示意图;
图7为本发明实施例另一转发设备结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种传输控制协议数据包的转发方法,如图1所示,包括:
101:数据包转发设备接收数据包,上述数据包为要求数据包无损按序到达接收端的通信协议封装的数据包;
需要说明的是上述数据包可以为长期演进(Long Term Evolution,LTE)的网络中的TCP数据包,也可以是TCP以外的其他要求数据包按序到达接收端的通信协议封装的数据包,本发明实施例对此不予限定。
102:上述数据包转发设备判断上述数据包是否按序到达上述数据包转发设备,若否,则将上述数据包存入与上述数据包所属链接对应的缓存队列;
上述判断上述数据包是否按序到达上述数据包转发设备,一种实现方式可以包括:获取上述数据包的链接识别信息以及上述数据包的序号;通过上述链接识别信息确定上述数据包所属链接;判断上述数据包的序号是否大于上述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,若是,则确定上述数据包没有按序到达上述数据包转发设备。
上述链接识别信息可以是:上述数据包的源互联网协议IP地址、目的IP地址、源端口号以及目的端口号。以TCP数据包为例,这些信息可以通过读取TCP头中的相应字段来获取。需要说明的是,获取链接识别信息的目的在于能够确定数据包所属的链接,具体可选的信息的具体内容并不仅限于以上四个举例,因此以上举例不应理解为对本发明实施例的限定。
可选地,关于缓存队列,可以预先建立,也可以在确定需要对数据包进行重新排序并发送时才建立该缓存队列,还可以在确定上述数据包没有按序到达上述数据包转发设备之后,建立与上述数据包所属链路对应的缓存队列。采用在确定上述数据包没有按序到达上述数据包转发设备之后建立缓存队列的方式,可以防止不必要的缓存队列占用存储资源。
进一步地,在将上述数据包存入其所属链接的缓存队列之前还可以包括:若上述数据包的序号小于或等于上述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,则确定上述数据包所属链路对应的缓存队列是否为空,若为空,则向接收端发送上述数据包,若不为空,则将上述数据包存入与上述数据包所属链接对应的缓存队列。本实施例是基于在确定上述数据包没有按序到达上述数据包转发设备之后,建立缓存队列的基础上提出的,对于比上述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号小的数据包,可能并不是因时延导致到达的时间滞后,可以将这类数据包直接发送给接收端。
优选地,上述102中将上述数据包存入与上述数据包所属链接对应的缓存队列包括:将上述数据包存入与上述数据包所属链接对应的缓存队列,且缓存队列按照序号从小到大排序。在本步骤中缓存队列中存储的数据包的序号按照从小到大排序可以与协议原有的数据包的发送方案兼容。在本步骤进行排序作为一个优选方案,不应理解为对本发明实施例的限定。
103:上述数据包转发设备按照数据包的序号从小到大依次向接收端发送上述缓存队列中的数据包。
可选地,上述103中按照数据包的序号从小到大依次向接收端发送上述缓存队列中的数据包包括:在定时器计时达到预定值时或者上述缓存队列中的数据包达到预定个数时,按照上述缓存队列中的数据包的序号从小到大依次向接收端发送上述缓存队列中的数据包。需要说明的是,以上关于定时器以及数据包达到预定个数的举例,均属于触发转发设备发送数据包的条件,这个触发条件可以有很多,并不仅限于以上两种,本发明实施例对此不予限定。具体的,上述预定值可以设置为2毫秒(ms)。
采用本发明实施例方案,通过在数据包发送至接收端之前,对数据包的顺序进行调整,使数据包的发送顺序更接近于数据包原有的顺序,可以降低数据包的乱序率,减少接收端重复发送ACK请求以及重传数据包占用带宽的问题,从而提升网络吞吐率。
另外,按照TCP的协议规定,收到同一个TCP数据包的三次ACK请求则会被TCP数据包的发送端确认为网络出现了可靠性异常的状况,在发送端确认可靠性异常以后会主动将数据包的发送速率降低一半,因此对于TCP数据包传输而言,TCP数据包乱序会导致发送端主动降低发送速率,进而降低网络吞吐率。而采用本发明实施例,可以降低数据包的乱序率,从而减少发送端因收到ACK请求主动降低发送速率的状况,因此可以提升网络吞吐率。
以转发TCP数据包为例,以上实施例的执行主体可以是TCP数据包的发送端到接收端之间的任意转发设备,比如基站。如图2A所示,在下行方向上,上述TCP数据包的发送端在核心网,核心网发送TCP数据包到达基站,基站将TCP数据包发送给接收端。在图2A中所示的接收端为手机,转发设备为基站,可以理解的是接收端可以有很多种类,可能是终端设备也可能是其他网络侧设备,转发设备也可以有很多种类,本发明实施例对此不予限定。
比如,可以在长期演进(Long Term Evolution,LTE)系统的网元如演进型基站(eNodeB)中添加一个TCP处理模块,以执行本发明实施例提供的方法,该TCP处理模块可以对下行的数据包进行处理。该TCP处理模块检测每个下行的TCP数据包是否按序到达eNodeB,如果检测到前后两个TCP数据包的序号不连续,则可以确定TCP数据包没有按序到达eNodeB,那么可以在eNodeB上缓存乱序的数据包,并缓存随后一段时间内到达eNodeB的数据包并对其进行排序。
举例说明:在图2B中上方为发生乱序时数据包到达eNodeB的情况,下方是经过本发明实施例方法处理后数据包到达接收端的情况,此处的接收端是TCP数据包的目的端,在图2A中举例为手机。在图2B中,time为TCP数据包的到达时间,tcp_seq为TCP数据包的序号,info为其它信息(图2中显示为文件传送协议数据的长度)。从图2上部可以看到序号为3284316717的数据包到达eNodeB时本应该出现在序号为3284325257和3284318177的数据包之间,由于乱序而出现在3284321097后面,经过本方案的处理后,该数据包回到了正确的位置。因此,采用本发明实施例方法可以降低乱序率。
发明人对本发明是实施例的效果进行了实测,测试场景如图2A所示:LTE网络,测试对象为核心网传输的TCP数据包达到基站,基站作为数据包转发设备执行本发明实施例方案,并将TCP数据包转发给手机。该场景下本发明实施例方案能够提高LTE网络的平均吞吐率。具体的增益效果与有线传输侧(核心网到基站)的乱序率、乱序范围、乱序时延以及传输往返时延(Round-Trip Time,RTT)等有关。乱序率越大、RTT越大则增益越明显。需要说明的是:要求数据包无损按序到达接收端的通信协议封装的数据包可以应用于很多种类的网络,LTE网络的举例不应理解为对本发明实施例的限定。发明人对以上实施例的效果进行实测,测试的场景为:手机所在小区带宽20MHz,LTE网络的无乱序峰值速率148Mbps,制造乱序率为1/10000、乱序平均分布、乱序范围为2~5的数据流,手机从核心网采用文件传输协议(FileTransfer Protocol,FTP)单线程下载5次1G大小的文件。测试结果为:统计得到不采用本发明实施例方法的LTE网络平均吞吐率为40.367Mbps,采用本发明实施例方法后LTE网络平均吞吐率最小126.912Mbps,最大为137.568Mbps,相比于不采用本发明实施例方法增益为214.3%~241.3%。因此实验证明采用本发明实施例方案可以有效提升LTE网络吞吐率。
以下实施例将给出一个具体的举例来对本发明实施例的实现进行说明,以TCP数据包的转发为例进行说明,具体如图3所示,包括如下步骤:
301:数据包转发设备接收数据包,并检查其是否为TCP数据包,若否,进入302,若是TCP数据包,则进入303;
302:直接透传上述TCP数据包,然后返回301;
303:获取TCP数据包的链接识别信息并依此确定其所属的链接(即TCP链接),检查其所属的TCP链接是否已存在排序信息;
上述排序信息包括的信息有:源、目的IP地址,源、目的端口号,还可包括:定时器计时的值、当前已发送的最大序号CurrSeq。如果存在排序信息,则进入305,如果不存在排序信息,则进入304;
304:为上述数据包建立排序信息,然后进入305;
305:将TCP数据包进行排序预处理;
预处理可以包括:将CurrSeq初始化为收到的第一个TCP数据包的序号;需要说明的是,如果CurrSeq本身存在初值(即曾经被初始化过)则不用执行对CurrSeq的初始化,直接进入306;
需要说明的是:上述301~305采用的是接收到第一个TCP数据包就直接建立了排序信息;若排序信息在确定TCP数据包出现了乱序后才建立,那么本步骤中的CurrSeq初始化为建立排序信息当前的TCP数据包的序号。可以理解的是,如果TCP数据包没有出现乱序的状况,TCP数据包会被直接发送。
306:计算按序发送的下一个TCP数据包的序号NxtSn;解析得到上述TCP数据包的序号,将解析得到的序号与NxtSn做比较:若上述TCP数据包的序号小于等于NxtSn,进入307;若上述TCP数据包的序号大于NxtSn,进入308;
307:检查与上述TCP数据包所属链接对应的缓存队列是否为空,若缓存队列为空,进入302,并将CurrSeq更新为当前已转发的TCP数据的最大序号,计算并更新NxtSn为新的CurrSeq的下一个TCP数据包的序号;若缓存队列不为空,进入308;
在上述307中检查缓存队列为空的情况有两种:一种是不存在与上述TCP数据包所属链接对应的缓存队列,另一种是存在与上述TCP数据包所属链接对应的缓存队列,并且该缓存队列中没有存数据包。上述“不存在与上述TCP数据包所属链接对应的缓存队列”的原因如下:若在步骤306之前采用在确定TCP数据包出现了乱序后才建立的方案,那么在没有出现乱序的情况下,上述TCP数据包所属链接对应的缓存队列是不存在的;也即:上述307中在检查缓存队列是否为空时,并不存在与上述TCP数据包所属链接对应的缓存队列。
308:检查定时器是否启动,若定时器未启动,则启动定时器,并将上述TCP数据包存入缓存队列;
本步骤中,若定时器已启动,则直接将该TCP数据包存入缓存队列;需要说明的是,在本步骤中优选地进行按照TCP数据包的序号从小到大依次排序缓存队列中的TCP数据包。
309:定时器超时后,无论是否收到导致乱序的数据包,都将缓存队列中的TCP数据包全部按序(即:按TCP数据包的序号从小到大)依次发送给接收端,并将CurrSeq更新为当前已转发的TCP数据的最大序号,计算并更新NxtSn为新的CurrSeq的下一个TCP数据包的序号,然后进入301。在本步骤中,将缓存队列中的TCP数据包发送给接收端后,可以将已经发送的TCP数据包从缓存队列中删除。
需要说明的是:设置定时器时长的原则:定时器时长越长,能纠正的乱序比例越高,排序效果越好,但会增加数据的RTT时延,对于丢包场景,可能会降低峰值速率,还可能增加超文本传送协议(hypertext transport protocol,http)业务的时延;定时器时长越短,能纠正的乱序比例越低,排序效果越差,但对数据的RTT时延影响小,在丢包场景对峰值速率影响小并且对http业务时延影响小。定时器的默认时间根据场景设置不同的定时器取值来应对不同的乱序时延。具体的时间本发明实施例不予限定。在本步骤中,定时器可以设置为2ms。
另外需要说明的是,在上面图3步骤的任意一个步骤执行过程中,若确定了链接的数据业务完毕,那么该流程将结束。另外,可以理解的是在缓存队列中的TCP数据包全部发送后缓存队列可以清空。
本发明实施例给出了以上图3对应实施例执行的一个举例,假设如下:
TCP数据包最大长度:100;
TCP数据包序号为:3012、3112、3212、3312、3362、3462、3562、3662、3762、3862、3962;
数据包转发设备接收到TCP数据包的顺序为:3012、3112、3212、3312、3362、3562、3662、3762、3862、3462、3962;
观察可以发现:导致乱序的数据包为序号为3462的数据包。
那么执行图3的方案,具体为:
数据包3012在步骤301到达数据包转发设备并确定为TCP数据包,然后在步骤304建立排序信息,CurrSeq在步骤305被初始化为3012。在步骤306会计算得到NxtSn=当前CurrSeq+100。由于当前缓存队列为空并且收到的是3112,那么在执行步骤306中的比较时会确定3112等于NxtSn,因此可以确定不乱序,该TCP数据包会被直接发送给接收端,更新CurrSeq和NxtSn。同理,对于数据包3212,CurrSeq更新后为为3312,并计算NxtSn得到的是3312。
由于有时会出现服务器不按最大包长来发包的情况,例如3312这个包,下一个包序号是3362,由于3312这个数据包长度只有50字节,收到3362时,此时缓存队列仍然为空,此时CurrSeq<3362<3412,不会被认为是乱序,3362依然会被转发,并更新CurrSeq为3362,计算NxtSn得到3462。
在收到3562数据包时,由于其大于NxtSn,会被认为乱序,该数据包将会被存入缓存队列,并且启动排序定时器。对于后面序号为:3662、3762、3862,3462的数据包,如果在定时器超时之前到达,将会被存入缓存队列并在缓存队列中被重新排序,定时器超时后按序发出,并更新CurrSeq为3862。假如收到序号为3762的数据包后,未收到序号为3462的数据包定时器就超时了,则将缓存队列中的3562、3662、3762按序发出,并更新CurrSeq为3762(当前发送的数据包的最大序号);后续收到3862,判断不乱序,直接转发,更新CurrSeq;再收到3462,小于当前CurrSeq,直接转发。收到序号为3962的数据包时,会确定其等于NxtSn,直接转发,并更新CurrSeq和NxtSn。
如果排序信息在确定TCP数据包出现了乱序后才建立,那么前面的序号为3012、3112、3212、3312、3362这些数据包没有出现乱序,因此会被直接转发,在序号为3362的数据包发出后,CurrSeq为3362,NxtSn为3462。在序号为3562的数据包到达的时候由于比NxtSn大,所以确定乱序了,此时会建立排序信息;序号为3562、3662、3762、3862的数据包到达时,序号比NxtSn大,这些数据包会被存入缓存队列;序号为3462的数据包的序号等于NxtSn,由于此时缓存队列不为空,序号为3462的数据包仍然会被缓存,并被排序。如果收到3462后收到3962之前,定时器超时那么缓存队列中的数据包将会全部被按序转发,并更新CurrSeq为3862,NxtSn计算得到的值是3962。
本发明实施例还提供了一种数据包转发设备,如图4所示,包括:
接收单元401,用于接收数据包,上述数据包为要求数据包无损按序到达接收端的通信协议封装的数据包;
需要说明的是上述数据包可以为LTE网络中的TCP数据包,也可以是TCP以外的其他要求数据包按序到达接收端的通信协议封装的数据包,本发明实施例对此不予限定。
判断单元402,用于判断上述数据包是否按序到达上述数据包转发设备;
存储控制单元403,用于若上述判断单元402判断结果为否,则将上述数据包存入与上述数据包所属链接对应的缓存队列;
发送单元404,用于按照数据包的序号从小到大依次向接收端发送上述缓存队列中的数据包。
可选地,上述发送单元404,用于按照数据包的序号从小到大依次向接收端发送上述缓存队列中的数据包,包括:用于在定时器计时达到预定值时或者上述缓存队列中的数据包达到预定个数时,按照上述缓存队列中的数据包的序号从小到大依次向接收端发送上述缓存队列中的数据包。需要说明的是,以上关于定时器以及数据包达到预定个数的举例,均属于触发转发设备发送数据包的条件,这个触发条件可以有很多,并不仅限于以上两种,本发明实施例对此不予限定。具体的,上述预定值可以设置为2毫秒(ms)。
采用本发明实施例方案,通过在数据包发送至接收端之前,对数据包的顺序进行调整,使数据包的发送顺序更接近于数据包原有的顺序,可以降低数据包的乱序率,减少接收端重复发送ACK请求以及重传数据包占用带宽的问题,从而提升网络吞吐率。
另外,按照TCP的协议规定,收到同一个TCP数据包的三次ACK请求则会被TCP数据包的发送端确认为网络出现了可靠性异常的状况,在发送端确认可靠性异常以后会主动将数据包的发送速率降低一半,因此对于TCP数据包传输而言,TCP数据包乱序会导致发送端主动降低发送速率,进而降低网络吞吐率。而采用本发明实施例,可以降低数据包的乱序率,从而减少发送端因收到ACK请求主动降低发送速率的状况,因此可以提升网络吞吐率。
可选的,如图5所示,上述判断单元402,包括:获取子单元501、链接确定子单元502以及判断子单元503;
上述获取子单元501,用于获取上述数据包的链接识别信息以及上述数据包的序号;
上述链接确定子单元502,用于通过上述链接识别信息确定上述数据包所属链接;
上述判断子单元503,用于判断上述数据包的序号是否大于上述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,若是,则确定上述数据包没有按序到达上述数据包转发设备。
上述链接识别信息可以是:上述数据包的源互联网协议IP地址、目的IP地址、源端口号以及目的端口号。以TCP数据包为例,这些信息可以通过读取TCP头中的相应字段来获取。需要说明的是,获取链接识别信息的目的在于能够确定数据包所属的链接,具体可选的信息的具体内容并不仅限于以上四个举例,因此以上举例不应理解为对本发明实施例的限定。
进一步可选的,如图6所示上述设备,还包括:
队列控制单元601,用于在上述判断子单元503确定上述数据包没有按序到达上述数据包转发设备之后,建立与上述数据包所属链路对应的缓存队列。
采用在确定上述数据包没有按序到达上述数据包转发设备之后,建立缓存队列可以防止不必要的缓存队列占用存储资源。
进一步地,如图7所示上述设备,还包括:
缓存信息获取单元701,用于若上述数据包的序号小于或等于上述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,则确定上述数据包所属链路对应的缓存队列是否为空;
上述发送单元404,还用于若上述缓存信息获取单元701确定上述数据包所属链路对应的缓存队列为空,则向接收端发送上述数据包;
上述存储控制单元403,还用于若缓存信息获取单元701确定上述数据包所属链路对应的缓存队列不为空,则将上述数据包存入与上述数据包所属链接对应的缓存队列。
本实施例是基于在确定上述数据包没有按序到达上述数据包转发设备之后,建立缓存队列的基础上提出的,对于比上述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号小的数据包,可能并不是因时延导致到达的时间滞后,可以将这类数据包直接发送给接收端。
更具体地,上述发送单元404,具体用于在定时器计时达到预定值时或者上述缓存队列中的数据包达到预定个数时,按照上述缓存队列中的数据包的序号从小到大依次向接收端发送上述缓存队列中的数据包。
需要说明的是,以上关于定时器以及数据包达到预定个数的举例,均属于触发转发设备发送数据包的条件,这个触发条件可以有很多,并不仅限于以上两种,本发明实施例对此不予限定。
更具体地,上述存储控制单元403,具体用于将上述数据包存入与上述数据包所属链接对应的缓存队列,且缓存队列按照序号从小到大排序。
需要说明的是,在发送单元404发送数据包时可以按照序号的从小到大发送,以实现本发明实施例的技术目的,因此在实施例中,在发送之前就进行排序的方案可以与协议原有的数据包的发送方案兼容。在本实施例中采用存储控制单元403对缓存队列中的数据包进行排序作为一个优选方案,不应理解为对本发明实施例的限定。
以转发TCP数据包为例,以上数据包转发设备可以是TCP数据包的发送端到接收端之间的任意转发设备,比如基站。如图2A所示,在下行方向上,上述TCP数据包的发送端在核心网,核心网发送TCP数据包到达基站,基站将TCP数据包发送给接收端。在图2A中所示的接收端为手机,转发设备为基站,可以理解的是接收端可以有很多种类,可能是终端设备也可能是其他网络侧设备,转发设备也可以有很多种类,本发明实施例对此不予限定。
比如,可以在LTE系统的网元如eNodeB中添加一个TCP处理模块,来实现上述数据包转发设备中各组成单元的功能,该TCP处理模块可以对下行的数据包进行处理。该TCP处理模块检测每个下行的TCP数据包是否按序到达eNodeB,如果检测到前后两个TCP数据包的序号不连续,则可以确定TCP数据包没有按序到达eNodeB,那么可以在eNodeB上缓存乱序的数据包,并缓存随后一段时间内到达eNodeB的数据包并对其进行排序。
举例说明:在图2B中上方为发生乱序时数据包到达eNodeB的情况,下方是经过本发明实施例装置处理后数据包到达接收端的情况,此处的接收端是TCP数据包的目的端,在图2A中举例为手机。在图2B中,time为TCP数据包的到达时间,tcp_seq为TCP数据包的序号,info为其它信息(图2中显示为文件传送协议数据的长度)。从图2上部可以看到序号为3284316717的数据包到达eNodeB时本应该出现在序号为3284325257和3284318177的数据包之间,由于乱序而出现在3284321097后面,经过本方案的处理后,该数据包回到了正确的位置。因此,采用本发明实施例设备可以降低乱序率。
值得注意的是,上述设备的实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。各功能单元的功能可以由接收机、存储器、处理器和发射机等元器件实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,上述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种数据包的转发方法,其特征在于,包括:
数据包转发设备接收数据包,所述数据包为要求数据包无损按序到达接收端的通信协议封装的数据包;
所述数据包转发设备判断所述数据包是否按序到达所述数据包转发设备,若否,则将所述数据包存入与所述数据包所属链接对应的缓存队列;
所述数据包转发设备按照数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包。
2.根据权利要求1所述方法,其特征在于,所述判断所述数据包是否按序到达所述数据包转发设备,包括:
获取所述数据包的链接识别信息以及所述数据包的序号;
通过所述链接识别信息确定所述数据包所属链接;
判断所述数据包的序号是否大于所述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,若是,则确定所述数据包没有按序到达所述数据包转发设备。
3.根据权利要求2所述方法,其特征在于,在确定所述数据包没有按序到达所述数据包转发设备之后,建立与所述数据包所属链路对应的缓存队列。
4.根据权利要求3所述方法,其特征在于,还包括:
若所述数据包的序号小于或等于所述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,则确定所述数据包所属链路对应的缓存队列是否为空,若为空,则向接收端发送所述数据包,若不为空,则将所述数据包存入与所述数据包所属链接对应的缓存队列。
5.根据权利要求1至4任意一项所述方法,其特征在于,所述按照数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包包括:
在定时器计时达到预定值时或者所述缓存队列中的数据包达到预定个数时,按照所述缓存队列中的数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包。
6.根据权利要求1至4任意一项所述方法,其特征在于,所述将所述数据包存入与所述数据包所属链接对应的缓存队列包括:
将所述数据包存入与所述数据包所属链接对应的缓存队列,且缓存队列按照序号从小到大排序。
7.根据权利要求1至4任意一项所述方法,其特征在于,所述数据包为长期演进LTE的网络中的传输控制协议TCP数据包。
8.一种数据包转发设备,其特征在于,包括:
接收单元,用于接收数据包,所述数据包为要求数据包无损按序到达接收端的通信协议封装的数据包;
判断单元,用于判断所述数据包是否按序到达所述数据包转发设备;
存储控制单元,用于若所述判断单元判断结果为否,则将所述数据包存入与所述数据包所属链接对应的缓存队列;
发送单元,用于按照数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包。
9.根据权利要求8所述设备,其特征在于,
所述判断单元,包括:获取子单元、链接确定子单元以及判断子单元;
所述获取子单元,用于获取所述数据包的链接识别信息以及所述数据包的序号;
所述链接确定子单元,用于通过所述链接识别信息确定所述数据包所属链接;
所述判断子单元,用于判断所述数据包的序号是否大于所述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,若是,则确定所述数据包没有按序到达所述数据包转发设备。
10.根据权利要求9所述设备,其特征在于,还包括:
队列控制单元,用于在所述判断子单元确定所述数据包没有按序到达所述数据包转发设备之后,建立与所述数据包所属链路对应的缓存队列。
11.根据权利要求10所述设备,其特征在于,还包括:
缓存信息获取单元,用于若所述数据包的序号小于或等于所述数据包所属链接已经发送的数据包中序号最大的序号的下一个序号,则确定所述数据包所属链路对应的缓存队列是否为空;
所述发送单元,还用于若所述缓存信息获取单元确定所述数据包所属链路对应的缓存队列为空,则向接收端发送所述数据包;
所述存储控制单元,还用于若缓存信息获取单元确定所述数据包所属链路对应的缓存队列不为空,则将所述数据包存入与所述数据包所属链接对应的缓存队列。
12.根据权利要求8至11所述设备,其特征在于,
所述发送单元,具体用于在定时器计时达到预定值时或者所述缓存队列中的数据包达到预定个数时,按照所述缓存队列中的数据包的序号从小到大依次向接收端发送所述缓存队列中的数据包。
13.根据权利要求8至11所述设备,其特征在于,
所述存储控制单元,具体用于将所述数据包存入与所述数据包所属链接对应的缓存队列,且缓存队列按照序号从小到大排序。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/075715 WO2012126424A2 (zh) | 2012-05-18 | 2012-05-18 | 一种数据包的转发方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102823207A true CN102823207A (zh) | 2012-12-12 |
Family
ID=46879800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012800007457A Pending CN102823207A (zh) | 2012-05-18 | 2012-05-18 | 一种数据包的转发方法和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102823207A (zh) |
WO (1) | WO2012126424A2 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013167065A3 (zh) * | 2013-01-17 | 2014-01-09 | 中兴通讯股份有限公司 | 一种协同业务传输中的数据重传方法及接入网网关 |
CN105871747A (zh) * | 2016-03-24 | 2016-08-17 | 京信通信技术(广州)有限公司 | 通信系统下行数据传输方法和系统 |
CN106161110A (zh) * | 2016-08-31 | 2016-11-23 | 东软集团股份有限公司 | 一种网络设备中的数据处理方法及系统 |
CN106888173A (zh) * | 2017-02-21 | 2017-06-23 | 武汉虹旭信息技术有限责任公司 | 通用高效消息通信系统及其方法 |
CN107454276A (zh) * | 2016-06-01 | 2017-12-08 | 中兴通讯股份有限公司 | 一种用户终端设备及其数据转发方法、及通信系统 |
WO2018086076A1 (zh) * | 2016-11-11 | 2018-05-17 | 华为技术有限公司 | 数据传输方法及装置 |
CN108494676A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 数据传输方法、装置、数据收发设备、系统及存储介质 |
CN111385069A (zh) * | 2018-12-27 | 2020-07-07 | 广州市百果园信息技术有限公司 | 数据传输方法及计算机设备 |
CN111669431A (zh) * | 2020-05-07 | 2020-09-15 | 深圳华锐金融技术股份有限公司 | 消息传输方法、装置、计算机设备和存储介质 |
US10803680B2 (en) | 2015-06-24 | 2020-10-13 | Volkswagen Aktiengesellschaft | Method and apparatus for increasing safety for remote triggering, and motor vehicle |
CN111880943A (zh) * | 2020-05-11 | 2020-11-03 | 紫光云技术有限公司 | 一种集群下云网络控制器的设备消息队列的处理方法 |
CN112491871A (zh) * | 2020-11-25 | 2021-03-12 | 北京宝兰德软件股份有限公司 | 一种tcp重组方法、装置、电子设备及存储介质 |
CN114915382A (zh) * | 2022-05-16 | 2022-08-16 | 南京航空航天大学 | 一种agv无线通信掉线重传及数据粘包处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101325539A (zh) * | 2007-06-15 | 2008-12-17 | 中兴通讯股份有限公司 | 一种局域网内可靠通信的方法 |
CN102457986A (zh) * | 2010-10-29 | 2012-05-16 | 联芯科技有限公司 | 终端的上行数据传输方法及终端 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7693166B2 (en) * | 2005-02-17 | 2010-04-06 | Nec Corporation | Method and apparatus for transmitting data to network and method and apparatus for receiving data from network |
CN1764275A (zh) * | 2005-09-23 | 2006-04-26 | 杨国宇 | 构造复合对等网络,平衡数码内容的多点传输方法 |
CN101123580A (zh) * | 2007-09-11 | 2008-02-13 | 华为技术有限公司 | 包传输方法及基站设备 |
CN101247352A (zh) * | 2008-03-20 | 2008-08-20 | 华为技术有限公司 | 网关设备上缓存及转发数据包的方法及网关设备 |
-
2012
- 2012-05-18 WO PCT/CN2012/075715 patent/WO2012126424A2/zh active Application Filing
- 2012-05-18 CN CN2012800007457A patent/CN102823207A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101325539A (zh) * | 2007-06-15 | 2008-12-17 | 中兴通讯股份有限公司 | 一种局域网内可靠通信的方法 |
CN102457986A (zh) * | 2010-10-29 | 2012-05-16 | 联芯科技有限公司 | 终端的上行数据传输方法及终端 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013167065A3 (zh) * | 2013-01-17 | 2014-01-09 | 中兴通讯股份有限公司 | 一种协同业务传输中的数据重传方法及接入网网关 |
US9742583B2 (en) | 2013-01-17 | 2017-08-22 | Zte Corporation | Method of data retransmission in collaborative service transmission and access network gateway thereof |
US10803680B2 (en) | 2015-06-24 | 2020-10-13 | Volkswagen Aktiengesellschaft | Method and apparatus for increasing safety for remote triggering, and motor vehicle |
CN105871747A (zh) * | 2016-03-24 | 2016-08-17 | 京信通信技术(广州)有限公司 | 通信系统下行数据传输方法和系统 |
CN107454276B (zh) * | 2016-06-01 | 2021-07-27 | 中兴通讯股份有限公司 | 一种用户终端设备及其数据转发方法、及通信系统 |
CN107454276A (zh) * | 2016-06-01 | 2017-12-08 | 中兴通讯股份有限公司 | 一种用户终端设备及其数据转发方法、及通信系统 |
CN106161110A (zh) * | 2016-08-31 | 2016-11-23 | 东软集团股份有限公司 | 一种网络设备中的数据处理方法及系统 |
CN106161110B (zh) * | 2016-08-31 | 2019-05-17 | 东软集团股份有限公司 | 一种网络设备中的数据处理方法及系统 |
WO2018086076A1 (zh) * | 2016-11-11 | 2018-05-17 | 华为技术有限公司 | 数据传输方法及装置 |
CN109314662A (zh) * | 2016-11-11 | 2019-02-05 | 华为技术有限公司 | 数据传输方法及装置 |
CN106888173B (zh) * | 2017-02-21 | 2019-11-29 | 武汉虹旭信息技术有限责任公司 | 通用高效消息通信系统及其方法 |
CN106888173A (zh) * | 2017-02-21 | 2017-06-23 | 武汉虹旭信息技术有限责任公司 | 通用高效消息通信系统及其方法 |
CN108494676A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 数据传输方法、装置、数据收发设备、系统及存储介质 |
CN108494676B (zh) * | 2018-03-21 | 2022-01-11 | 广州多益网络股份有限公司 | 数据传输方法、装置、数据收发设备、系统及存储介质 |
CN111385069A (zh) * | 2018-12-27 | 2020-07-07 | 广州市百果园信息技术有限公司 | 数据传输方法及计算机设备 |
CN111669431A (zh) * | 2020-05-07 | 2020-09-15 | 深圳华锐金融技术股份有限公司 | 消息传输方法、装置、计算机设备和存储介质 |
CN111880943A (zh) * | 2020-05-11 | 2020-11-03 | 紫光云技术有限公司 | 一种集群下云网络控制器的设备消息队列的处理方法 |
CN112491871A (zh) * | 2020-11-25 | 2021-03-12 | 北京宝兰德软件股份有限公司 | 一种tcp重组方法、装置、电子设备及存储介质 |
CN114915382A (zh) * | 2022-05-16 | 2022-08-16 | 南京航空航天大学 | 一种agv无线通信掉线重传及数据粘包处理方法 |
CN114915382B (zh) * | 2022-05-16 | 2024-03-22 | 南京航空航天大学 | 一种agv无线通信掉线重传及数据粘包处理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2012126424A2 (zh) | 2012-09-27 |
WO2012126424A3 (zh) | 2013-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102823207A (zh) | 一种数据包的转发方法和设备 | |
CN110995697B (zh) | 一种大数据传输方法及系统 | |
CN111211878B (zh) | 一种文件传输方法、装置、系统及电子设备 | |
CN101494652B (zh) | 一种卫星通信系统中增强tcp协议性能的方法 | |
CN107454276B (zh) | 一种用户终端设备及其数据转发方法、及通信系统 | |
CN100407698C (zh) | 无线链路控制层的数据传输方法 | |
CN102006283A (zh) | 数据传输的方法和装置 | |
CN101677292B (zh) | 一种流控传输协议中数据分片的方法 | |
CN105264843A (zh) | 在通信设备中管理待发送的确认数据包 | |
CN101945341B (zh) | 一种无线传感器网络点对点传输协议 | |
CN102090023A (zh) | 传输控制协议发送控制装置以及传输控制协议发送控制方法 | |
ES2837224T3 (es) | Método y sistema para la planificación de paquetes en un escenario de agrupamiento basado en túneles TCP e información TCP nativa | |
CN104780028A (zh) | 一种实现tcp数据报文重传的方法及设备 | |
CN109510690B (zh) | 传输报文的方法、网络组件和计算机可读存储介质 | |
CN107852371A (zh) | 数据分组网络 | |
CN109067796A (zh) | 一种数据传输方法及装置 | |
CN101682916A (zh) | 在移动通信系统中发送rlc pdu和分配无线资源的方法以及移动通信的rlc实体 | |
WO2018082595A1 (zh) | 数据传输方法、装置及基站 | |
CN102420684A (zh) | Tcp数据流的处理方法以及通信设备 | |
CN102769520A (zh) | 基于sctp协议的无线网络拥塞控制方法 | |
KR101018685B1 (ko) | 광대역 무선통신시스템에서 자동 재송 요구 리셋을제어하기 위한 장치 및 방법 | |
CN101133673A (zh) | 移动上行链路传输的调度技术 | |
CN101883047B (zh) | 多网络接口设备的数据并发传输方法 | |
CN104753629A (zh) | 一种数据递交方法和装置 | |
CN101695067B (zh) | 基于tcp的数据处理方法、装置、数字电视接收终端和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20121212 |