数据包重排序方法及装置的制作方法

文档序号:7739825阅读:196来源:国知局
专利名称:数据包重排序方法及装置的制作方法
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种数据包重排序方法及装置。
背景技术
在分组传输系统中,源端和目的端之间通常存在多条传输路径,并且各条传输路 径的转发延时不完全相同,存在乱序的可能性,即多个数据包到达目的端时的顺序与它们 从源端出发时的顺序不一致。例如在因特网上由于路由振荡、流量负荷均衡等原因,导致 属于同一数据流的多个数据包经过不同的转发路径;大容量设备为了提高交换能力往往采 用多交换平面的方案,属于同一数据流的多个数据包需要均衡分配到几个交换平面上;这 两种情况都会引发乱序。乱序对业务的质量有一定影响,特别是音频、视频等实时流媒体业 务。针对上述问题,现有技术提供了目的端的重排序机制,具体说明如下首先,在源端和目的端之间实现时间同步,即源端和目的端均使用全局同步时钟; 当源端发送数据包时,在数据包中插入发送时间戳;目的端接收到数据包后,计算发送时 间戳与最大转发时延之和作为该数据包的最晚发送时间,按照该最晚发送时间对数据包进 行重排序并发送,最晚发送时间越小的数据包越先发送。其中目的端接收的来自不同源端 的数据包所采用的最大转发时延相同,这样保证了目的端的转发顺序与源端的发送顺序相 同,不会引发乱序问题。但是,现有技术提供的目的端重排序机制存在浪费系统资源的问 题。

发明内容
本发明实施例提供了 一种数据包重排序方法及装置,用以节省系统资源。本发明实施例提供的数据包重排序方法,包括接收携带发送时间戳的数据包;根据所述数据包的调整时间、最大路径时延差及所述发送时间戳,得到所述数据 包的最晚发送时间;根据所述最晚发送时间,将所述数据包进行重排序处理并发送。本发明实施例提供的数据包重排序装置,包括接收模块,用于接收携带发送时间戳的数据包;时间获取模块,用于根据所述数据包的调整时间、最大路径时延差及所述发送时 间戳,得到所述数据包的最晚发送时间;排序发送模块,用于根据所述最晚发送时间,将所述数据包进行重排序处理并发 送。本发明实施例在接收到数据包后,根据该数据包的调整时间、最大路径时延差及 发送时间戳,得到该数据包的最晚发送时间,然后根据最晚发送时间,将该数据包进行重排 序处理并发送,无需在源端和目的端之间进行时间同步操作,节省了系统资源。


图1为本发明实施例一提供的数据包重排序方法的流程图;图2为本发明实施例二提供的数据包重排序方法的流程图;图3为图2中步骤206 —种实现方式的流程图;图4为本发明实施例三提供的数据包重排序装置的结构示意图;图5为本发明实施例四提供的数据包重排序装置的结构示意图。
具体实施例方式下面通过附图和实施例,对本发明实施例的技术方案做进一步的详细描述。发明人经过研究现有技术发现其存在浪费系统资源的问题的原因如下(1)目的端接收的来自不同源端的数据包所采用的最大转发时延相同,该最大转 发时延为路径时延和驻留时延之和,其中路径时延为数据包从源端到目的端的路径上所花 费的时间,驻留时延为数据包在目的端停留的时间。对于不同的数据流来说,其路径时延的范围不尽相同,例如数据流A的路径时延 范围为Ims 10ms,数据流B的路径时延范围为3ms 1:3ms,那么对于整个系统(该系统 包括目的端和向该目的端发送数据流的所有源端)来说,路径时延的最大值为Urns,最小 值为1ms,最大路径时延差为12ms。通常针对一个数据流(一个数据流的数据包一定来自 同一源端),其路径时延差可能较小,但针对整个系统,其路径时延差会较大。所以,系统在 确定最大转发时延时,需要考虑整个系统的路径时延差,导致确定的最大转发时延也较大。 那么,对于某个路径时延差较小的数据流来说,最大转发时延较大导致其驻留时延较大,使 得该数据流的数据包在目的端停留很长时间,浪费了系统的资源。(2)现有技术需要在源端和目的端之间实现时间同步,当源端数量较多或源端与 目的端之间存在多跳转发设备时,时间同步操作非常复杂,也将导致浪费系统资源。本发明实施例中,来自于同一源端的数据包可以认为属于同一数据流,来自于不 同源端的数据包可以认为属于不同数据流。基于上述原因分析,发明人经过进一步研究发 现由于乱序问题存在于属于同一数据流的多个数据包之间,不同数据流的数据包之间没 有乱序问题,所以本发明实施例不需要保证目的端接收的所有数据包的最大转发时延都相 同,只需保证属于同一数据流的数据包的最大转发时延相同即可。图1为本发明实施例一提供的数据包重排序方法的流程图。如图1所示,本实施 例具体包括如下步骤步骤101、接收携带发送时间戳的数据包。该数据包中携带的发送时间戳是源端插入的,该发送时间戳为源端发送该数据包 的源端本地时间。步骤102、根据该数据包的调整时间、最大路径时延差及发送时间戳,得到该数据 包的最晚发送时间。步骤103、根据最晚发送时间,将该数据包进行重排序处理并发送。本实施例适用于源端和目的端之间没有实现时间同步的情况,在这种情况下,源 端和目的端之间存在两地时间偏差,若假设源端和目的端的时钟频率基本相同,那么源端和目的端的两地时间偏差是相对固定的。对于同一数据流的各个数据包来说,它们的两地 时间偏差是相等的,因此,在接收到数据包后,本实施例根据该数据包的调整时间、最大路 径时延差及发送时间戳,得到该数据包的最晚发送时间,然后根据最晚发送时间,将该数据 包进行重排序处理并发送,无需进行时间同步操作,节省了系统资源。图2为本发明实施例二提供的数据包重排序方法的流程图。如图2所示,本实施 例具体包括如下步骤步骤201、源端向目的端发送携带发送时间戳的数据包。该数据包中携带源端插入的发送时间戳,该发送时间戳为源端发送该数据包的源 端本地时间。步骤202、目的端获取该数据包的调整时间。该数据包的调整时间可以为预先配置并携带在数据包中的。具体地,管理人员可 以根据实际情况估计出调整时间的经验值,由源端将该预先配置的调整时间插入到数据包 中,目的端从数据包中获取该调整时间。该数据包的调整时间也可以为该数据包的接收时间戳与发送时间戳之差;或者可 以为该数据包的接收时间戳与发送时间戳之差与一常数的乘积加上上一个数据包的调整 时间与另一常数的乘积,其中上一个数据包与该数据包同属一个数据流,具体公式如下该数据包的调整时间=aX该数据包的接收时间戳与发送时间戳之差+bX上一 个数据包的调整时间其中,a和b为常数,a+b = 1,0 < a < 1,0 < b < 1。当源端发送数据流比较稳 定,而网络中传输数据流比较不稳定时,b的值较大,一种较佳实施方式为a = 0. 1,b = 0. 9 ;当源端发送数据流比较不稳定,而网络中传输数据流比较稳定时,a的值较大。具体地说,本实施例中,对于同一数据流来说,两地时间偏差是相对固定的,可以 为一个数据流维护一个调整时间,目的端可以通过动态方式获取数据包的调整时间。具体 地,在开始接收一个数据流之前,首先将为该数据流维护的调整时间的初始值设置为“空”。 目的端获取数据包的调整时间的动态方式为目的端判断为该数据包所属数据流维护的调 整时间是否为“空”,若是,则获取到该数据包的调整时间为该数据包接收时间戳与发送时 间戳之差,否则获取到该数据包的调整时间为该数据包的接收时间戳与发送时间戳之差与 一常数的乘积加上为数据流维护的调整时间与另一常数的乘积,并将为数据流维护的调整 时间更新为该数据包的调整时间,在没有更新之前,为数据流维护的调整时间应该是上一 个数据包的调整时间。进一步的,在上述目的端通过动态方式获取数据包的调整时间之前还可以包括 若目的端在接收了上一个数据包的最大等待时间内,没有接收到该数据流的数据包,也可 以将为数据流维护的调整时间更新为“空”。具体地,一种更新方式可以为当目的端接收到 数据包时,计算该数据包的接收时间戳与其上一个数据包的接收时间戳之差是否大于最大 等待时间,若是,则将为数据流维护的调整时间更新为“空”。另一种更新方式可以为当目 的端接收到数据包时,判断为该数据流维护的当前等待时间是否大于最大等待时间,若是, 则将为数据流维护的调整时间更新为“空”;其中,目的端在接收到该数据流的上一个数据 包后,可以定时查询是否接收到该数据流的数据包,若否,则更新为该数据流维护的当前等 待时间。其中,为该数据流维护当前等待时间是指目的端接收到该数据流的一个数据包后,在接收到下一个数据包之前所维护的需要等待的时间。步骤203、目的端计算发送时间戳、该数据包的调整时间以及最大路径时延差之 和,得到最晚发送时间。通过以下公式计算得到该数据包的最晚发送时间最晚发送时间=发送时间戳+调整时间+D其中,D即为最大路径时延差。进一步的,D可以为该数据流的最大路径时延差,具 体地D的值可以通过预先估计来确定,如果源端发送数据包的间隔是固定的,也可以通过 测量数据包的延时抖动来确定。D也可以为目的端接收的所有数据流中路径时延差的最大 值,这样,所有的数据流都可以使用同一个D。步骤204、判断数据包的最晚发送时间是否大于或等于该数据包接收时间戳,且小 于或等于该数据包接收时间戳与2D之和,若是,执行步骤205;否则,将该数据包丢弃。因为,该数据包接收时间戳=该数据包发送时间戳+两地时间偏差+该数据包转 发延时;而调整时间=两地时间偏差+平均转发延时。因此,该数据包最晚发送时间=该数 据包发送时间戳+调整时间+D =该数据包发送时间戳+两地时间偏差+平均转发延时+D =该数据包接收时间戳+ (平均转发延时-该数据包转发延时)+D。由于该数据流的最大路 径延时差为D,故-D <平均转发延时-该数据包转发延时< D。因此,该数据包接收时间戳 <该数据包最晚发送时间 < 该数据包接收时间戳+2D。基于上述分析,当该数据包的最晚发送时间大于或等于数据包的接收时间戳,且 小于或等于数据包的接收时间戳与2D之和时,执行步骤205。当该数据包的最晚发送时间 小于该数据包的接收时间戳或大于该数据包接收时间戳与2D之和时,表明该数据包的路 径时延过大或该数据包为错误包,则丢弃该数据包。步骤205、将该数据包保存到最晚发送时间对应的队列中。本实施例构建一个包括η个单元的数组,该数组中每个单元为一队列,为了充分 利用数组的空间,可以用链表方式表示队列,这样该队列可以保存若干个数据包。将步骤203获取的最晚发送时间代入下式i = mod[(最晚发送时间 /ts),η]其中ts表示时间粒度,为了保证任一数据流连续发送的数据包不会被保存到同 一队列中,需满足ts <数据流的最小数据包长/该数据流源端的发送速率。本步骤中将数据包保存到第i个队列,也就是第i个单元的队列中。步骤206、根据目的端当前时间和形成的队列,发送数据包。本步骤中,目的端可以每隔一段时间,根据目的端当前时间获取当前最晚发送队 列,其中当前最晚发送队列是指在当前时间下,最晚需要发送的队列。具体地,可以根据如 下公式计算出当前最晚发送队列k = mod[(目的端当前时间/ts),η]然后,将第k个队列及其之前的队列的数据包按照顺序发送出去。进一步的,本实施例提供了一种步骤206的具体实现方式,图3为图2中步骤206 一种实现方式的流程图,如图3所示,具体包括如下步骤步骤301、将j赋值为1 ;步骤302、判断第j个队列是否为空,若是,跳转步骤304 ;否则,跳转步骤303 ;
步骤303、发送第j个队列中的队头数据包;跳转步骤302 ;步骤304、根据目的端当前时间计算出当前最晚发送队列;步骤305、判断第j个队列是否为当前最晚发送队列,若是,跳转步骤302 ;否则,跳 转步骤306 ;其中,在跳转步骤302之前可以等待一段时间,这段等待的时间可由管理员来配置。步骤306、j = j+1 ;跳转步骤 302。通过执行图3所示的流程,可以将队列中的数据包依次发送出去。本实施例适用于源端和目的端之间没有实现时间同步的情况,在这种情况下,源 端和目的端之间存在两地时间偏差,若假设源端和目的端的时钟频率基本相同,那么源端 和目的端的两地时间偏差是相对固定的。对于同一数据流的各个数据包来说,它们的两地 时间偏差是相等的,因此,在接收到数据包后,本实施例根据该数据包的调整时间、最大路 径时延差及发送时间戳,得到该数据包的最晚发送时间,然后根据最晚发送时间,将该数据 包进行重排序处理并发送,无需进行时间同步操作,节省了系统资源。本实施例中最大路径时延差D可以为该数据包所属数据流的最大路径时延差,也 可以为目的端所接收的所有数据流中路径时延差的最大值,因此,D是针对一个数据流的最 大路径时延差,而非针对整个系统的最大路径时延差。针对一个数据流来说,D的值不会过 大,这样数据包不会停留过长的时间,而被较为迅速的按顺序发送出去,进一步节省了系统 资源。图4为本发明实施例三提供的数据包重排序装置的结构示意图。如图4所示,本 实施例具体包括接收模块11、时间获取模块12和排序发送模块13,其中接收模块11用于接收携带发送时间戳的数据包;时间获取模块12用于根据所述数据包的调整时间、最大路径时延差及所述发送 时间戳,得到所述数据包的最晚发送时间;排序发送模块13用于根据所述最晚发送时间,将所述数据包进行重排序处理并 发送。图5为本发明实施例四提供的数据包重排序装置的结构示意图。如图5所示,本 实施例在实施例三的基础上,时间获取模块12具体用于计算所述发送时间戳、所述调整时 间以及所述最大路径时延差之和,得到所述最晚发送时间;所述最大路径时延差为所述数 据包所属数据流的最大路径时延差或目的端接收的所有数据流中路径时延差的最大值。排序发送模块13具体用于当所述最晚发送时间大于或等于所述数据包的接收时 间戳,且小于或等于所述数据包的接收时间戳与所述最大路径时延差的2倍之和时,根据 最晚发送时间,将所述数据包进行重排序处理并发送。本实施例还可以包括丢弃模块14,用于当所述最晚发送时间小于所述数据包的 接收时间戳,或大于所述数据包的接收时间戳与所述最大路径时延差的2倍之和时,丢弃 所述数据包。本实施例中排序发送模块13可以包括排序单元15和发送单元16,其中排序单元15用于将所述数据包保存到最晚发送时间对应的队列中;发送单元16用于每隔一段时间,根据目的端当前时间获取当前最晚发送队列,将
8当前最晚发送队列及其之前队列的数据包按顺序发送。本实施例适用于源端和目的端之间没有实现时间同步的情况,在这种情况下,源 端和目的端之间存在两地时间偏差,若假设源端和目的端的时钟频率基本相同,那么源端 和目的端的两地时间偏差是相对固定的。对于同一数据流的各个数据包来说,它们的两地 时间偏差是相等的,因此,在接收到数据包后,本实施例根据该数据包的调整时间、最大路 径时延差及发送时间戳,得到该数据包的最晚发送时间,然后根据最晚发送时间,将该数据 包进行重排序处理并发送,无需进行时间同步操作,节省了系统资源。本实施例中最大路径时延差D可以为该数据包所属数据流的最大路径时延差,也 可以为目的端所接收的所有数据流中路径时延差的最大值,因此,D是针对一个数据流的最 大路径时延差,而非针对整个系统的最大路径时延差。针对一个数据流来说,D的值不会过 大,这样数据包不会停留过长的时间,而被较为迅速的按顺序发送出去,进一步节省了系统 资源。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤,而前述的存储介质包括R0M、RAM、磁碟或者光 盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明实施例的技术方案,而非对其限 制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当 理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征 进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实 施例技术方案的精神和范围。
权利要求
1.一种数据包重排序方法,其特征在于,包括接收携带发送时间戳的数据包;根据所述数据包的调整时间、最大路径时延差及所述发送时间戳,得到所述数据包的 最晚发送时间;根据所述最晚发送时间,将所述数据包进行重排序处理并发送。
2.根据权利要求1所述的数据包重排序方法,其特征在于所述数据包的调整时间为预先配置并携带在所述数据包中的;或者,所述数据包的调整时间为所述数据包的接收时间戳与所述发送时间戳之差;或者,所述数据包的调整时间为所述数据包的接收时间戳与发送时间戳之差与一常数 的乘积加上上一个数据包的调整时间与另一常数的乘积,其中上一个数据包与所述数据包 同属一个数据流。
3.根据权利要求1所述的数据包重排序方法,其特征在于,所述根据所述数据包的调 整时间、最大路径时延差及所述发送时间戳,得到所述数据包的最晚发送时间包括计算所述发送时间戳、所述调整时间以及所述最大路径时延差之和,得到所述最晚发 送时间;所述最大路径时延差为所述数据包所属数据流的最大路径时延差或目的端接收的所 有数据流中路径时延差的最大值。
4.根据权利要求1所述的数据包重排序方法,其特征在于,所述根据最晚发送时间,将 所述数据包进行重排序处理并发送包括当所述最晚发送时间大于或等于所述数据包的接收时间戳,且小于或等于所述数据包 的接收时间戳与所述最大路径时延差的2倍之和时,根据最晚发送时间,将所述数据包进 行重排序处理并发送;所述方法还包括当所述最晚发送时间小于所述数据包的接收时间戳,或大于所述数据包的接收时间戳 与所述最大路径时延差的2倍之和时,丢弃所述数据包。
5.根据权利要求1或4所述的数据包重排序方法,其特征在于,所述根据最晚发送时 间,将所述数据包进行重排序处理并发送包括将所述数据包保存到最晚发送时间对应的队列中;每隔一段时间,根据目的端当前时间获取当前最晚发送队列,将当前最晚发送队列及 其之前队列的数据包按顺序发送。
6.一种数据包重排序装置,其特征在于,包括接收模块,用于接收携带发送时间戳的数据包;时间获取模块,用于根据所述数据包的调整时间、最大路径时延差及所述发送时间戳, 得到所述数据包的最晚发送时间;排序发送模块,用于根据所述最晚发送时间,将所述数据包进行重排序处理并发送。
7.根据权利要求6所述的数据包重排序装置,其特征在于,所述时间获取模块具体用 于计算所述发送时间戳、所述调整时间以及所述最大路径时延差之和,得到所述最晚发送 时间;所述最大路径时延差为所述数据包所属数据流的最大路径时延差或目的端接收的所有数据流中路径时延差的最大值。
8.根据权利要求6所述的数据包重排序装置,其特征在于所述排序发送模块具体用于当所述最晚发送时间大于或等于所述数据包的接收时间 戳,且小于或等于所述数据包的接收时间戳与所述最大路径时延差的2倍之和时,根据最 晚发送时间,将所述数据包进行重排序处理并发送; 所述装置还包括丢弃模块,用于当所述最晚发送时间小于所述数据包的接收时间戳,或大于所述数据 包的接收时间戳与所述最大路径时延差的2倍之和时,丢弃所述数据包。
9.根据权利要求6或8所述的数据包重排序装置,其特征在于,所述排序发送模块包括排序单元,用于将所述数据包保存到最晚发送时间对应的队列中; 发送单元,用于每隔一段时间,根据目的端当前时间获取当前最晚发送队列,将当前最 晚发送队列及其之前队列的数据包按顺序发送。
全文摘要
本发明实施例涉及一种数据包重排序方法及装置,其中方法包括接收携带发送时间戳的数据包;根据所述数据包的调整时间、最大路径时延差及所述发送时间戳,得到所述数据包的最晚发送时间;根据所述最晚发送时间,将所述数据包进行重排序处理并发送。本发明实施例在接收到数据包后,根据该数据包的调整时间、最大路径时延差及发送时间戳,得到该数据包的最晚发送时间,然后根据最晚发送时间,将该数据包进行重排序处理并发送,无需进行时间同步操作,节省了系统资源。
文档编号H04L12/56GK102123073SQ20101000232
公开日2011年7月13日 申请日期2010年1月7日 优先权日2010年1月7日
发明者伊学文, 罗俊, 臧大军, 陈武茂 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1