专利名称:一种可序数据包的乱序调整方法及装置的制作方法
技术领域:
本发明涉及无线通信技术领域,特别涉及一种可序数据包的乱序调整方法及装置。
背景技术:
GRE(Generic Routing Encapsulation,通用路由封装)包是一种典型的可序 包,GRE技术规定了用一种网络协议去封装另一种网络协议的方法,为上层协议数据单 元(Protocol Data Unit,简称PDU)的传输提供一个透明隧道。CDMA(Code Division Multiple Access,码分多址)2000 lxEV-D0系统中,分组数据服务节点(Packet Data Serving Node,简称PDSN)与分组数据功能(Packet Data Function,简称PCF)间的A10链 路就采用GRE技术承载上层点到点协议(Point to Point Protocol,简称PPP)报文。典型 的网络拓扑结构中,PDSN与PCF相距较远,A10链路可能跨越多个路由器。在这种结构下, A10链路的一端到另一端可能具有多条路径,每条路径产生的时延不相同。若相邻的GRE报 文选择不同的路径,则很可能后面的报文先与前面的报文到达,因而发生乱序。由于GRE报 文承载的是PPP报文分段,若这些报文分段失序到达,会导致PPP组包时出现错位,对性能 影响较大。 中国专利CN200610140378. 7提出了一种乱序调整的方法。该方法利用GRE头中 的序号字段识别报文的先后顺序,当到达的报文失序时,将其暂存到缓存中,同时启动一个 flush定时器,待失序报文到达后再按顺序发往终端。若flush定时器超时后,仍未收到失 序报文,则认为该报文已丢失,立即将缓存中暂存的报文发往终端。flush定时器时长设置 是否合理会影响乱序调整的质量若设置过长,当失序报文已经丢失时,会产生较大时延; 若设置过短,当失序报文到达前,flush定时器已超时,会使乱序调整功能失效。flush定时 器时长的合理值应设置为网络的最大乱序时延(即报文实际到达时间与应到达时间之间 的最大延迟,简称"网络乱序时延")。该专利中并没有提供合理设置flush定时器时长的 方法,具体应用时只能通过人工配置。实际上,不同网络结构下产生的乱序时延不相同,仅 靠人工配置难以与具体环境的网络乱序时延相吻合,需要一种能根据具体网络环境自适应 地设定flush定时器时长,进而提高乱序调整质量的方法。
发明内容
本发明要解决的技术问题是提供一种可序数据包的乱序调整方法及装置,可以根 据具体网络环境自适应设定flush定时器。 为了解决上述问题,本发明提供了一种可序数据包的乱序调整方法,该方法包 括 在接收的可序数据包发生乱序时,采集乱序样本,计算所述乱序样本的样本乱序 时延,并根据所述样本乱序时延估算网络乱序时延,以所述估算出的网络乱序时延作为 flush定时器的时长。
进一步地,按照以下方式采集乱序样本,并计算该乱序样本的样本乱序时延
接收并解析可序数据包头中的序号字段,若该报文序号比当前期望序号大且之前 没有记录乱序样本,则将当前期望序号作为乱序样本进行采集,并记录当前时间为采样时 间; 接收到该乱序样本时,用当前接收时间减去所述采样时间,计算出该乱序样本的 样本乱序时延。 进一步地,根据所述样本乱序时延估算网络乱序时延的步骤具体包括
将预设时间阈值内的最大样本乱序时延作为网络乱序时延。
进一步地,根据所述样本乱序时延估算网络乱序时延的步骤具体包括
A,设定网络乱序时延的初始值,并启动估计定时器; B,在所述估计定时器到达定时周期前,若计算出的样本乱序时延大于所述网络乱
序时延,则将所述网络乱序时延更新为该样本乱序时延,并执行步骤C ;在所述估计定时器
到达定时周期后,执行步骤D; C,重启所述估计定时器,返回步骤B ; D,以当前的网络乱序时延作为估算出的网络乱序时延。 进一步地,在采集乱序样本的同时,启动flush定时器; 若在所述flush定时器到达定时周期后,还未收到该乱序样本,则认为该乱序样 本已丢失。
进一步地,所述期望序号是指 若当前缓存不为空,则所述期望序号为缓存中序号最大的包的下一个包的序号;
若当前缓存为空,则所述期望序号为当前正在等待的包的下一个包的序号。
进一步地,所述可序数据包包括通用路由封装包。 本发明还提供了一种可序数据包的乱序调整装置,包括调整器、探测器,所述调 整器中设置有flush定时器,其中 所述调整器用于,在接收的数据包发生乱序时,缓存并重排失序的数据包,同时启 动flush定时器,待缓存的所述数据包已序、或所述flush定时器到时后将缓存的所述数据 包按顺序发往终端; 所述探测器用于,采集乱序样本,计算所述乱序样本的样本乱序时延,并根据所述 样本乱序时延估算网络乱序时延,以所述估算出的网络乱序时延作为所述flush定时器的 时长。 进一步地,所述调整器用于,在需要估算网络乱序时延时,将接收到的数据包传输 给所述探测器; 所述探测器用于,接收并解析收到的数据包头中的序号字段,若该报文序号比当 前期望序号大且之前没有记录乱序样本,则将当前期望序号作为乱序样本进行采集。
进一步地,所述探测器用于,在进行乱序样本的采集时,记录当前时间为采样时 间,并用接收到该乱序样本时的接收时间减去所述采样时间,计算出该乱序样本的样本乱 序时延。 进一步地,所述探测器设置有估计定时器,所述探测器根据所述样本乱序时延估 算网络乱序时延的具体过程为
A,设定网络乱序时延的初始值,并启动估计定时器; B,在所述估计定时器到达定时周期前,若计算出的样本乱序时延大于所述网络乱
序时延,则将所述网络乱序时延更新为该样本乱序时延,并执行步骤C ;在所述估计定时器
到达定时周期后,执行步骤D; C,重启所述估计定时器,返回步骤B ; D,以当前的网络乱序时延作为估算出的网络乱序时延。 本发明提出一种数据包乱序调整方法,通过在乱序调整过程中主动探测具体环境的网络乱序时延,并根据探测结果设定flush定时器,使其更加接近合理值,提高了乱序调
整质量。
图1为乱序调整方法的逻辑部件及接口示意图; 图2为本发明应用实例中调整器的主要处理步骤; 图3为本发明应用实例中调整器flush定时器超时的处理步骤; 图4为本发明应用实例中调整器的状态跃迁示意图; 图5为本发明应用实例中探测器的主要处理步骤; 图6为本发明应用实例中探测器清除乱序样本的处理步骤。
具体实施例方式
本发明的核心思想是在可序数据包发生乱序时,通过采集乱序样本,计算采样样本的乱序时延,进一步估算出网络的乱序时延,以估算出的乱序时延作为flush定时器的时长,并在网络环境发生变化时,重新估算网络的乱序样本从而可以根据网络环境自适应地设定flush定时器时长。 下面将结合附图及具体实施例对本发明作进一步说明。 图1为本发明实施例中乱序调整装置的逻辑部件及接口示意图。本实施例的乱序调整装置包括调整器和探测器两个逻辑部件。 其中,调整器负责缓存、重排收到的乱序报文,并维护一个flush定时器。当缓存的报文已序,或flush定时器超时时,将报文发往终端。 探测器负责采集乱序样本,计算出样本的乱序时延(简称为样本乱序时延),并进一步估算出网络的乱序时延(简称为估计乱序时延)。 调整器具有探测和稳定两个状态。处于探测状态时,需要探测网络乱序时延,所以调整器将收到的每个报文拷贝一份给探测器。该状态下,调整器采用一个保守值作为定时器时长。进入稳定状态时,调整器停止将报文拷贝给探测器,并采用探测状态下探测器得到的估计乱序时延作为flush定时器时长。 估计乱序时延的更新情况可以触发探测状态到稳定状态的跃迁。处于探测状态时,若估计乱序时延在较长时间内没有得到更新,则认为此时的估计乱序时延接近于真实的网络乱序时延,于是停止样本采集,并跃迁到稳定状态。 复位操作可以触发稳定状态到探测状态的跃迁。处于稳定状态时,若网络环境发生变化需要重新探测网络乱序时延时,可通过人工复位操作重新回到探测状态。
图1中示出了调整器与探测器之间的内部接口 (接口 3、4、5)以及调整器与外界的外部接口 (接口 1、2、6)。其中各接口功能描述如下 外界报文通过接口 1输入调整器,调整器处理完后通过接口 2输出; 当调整器处于探测状态时,通过接口 3将收到的报文拷贝传给探测器; 当调整器处理报文的过程中发生缓存溢出或flush定时器超时事件时,通过接口
4通知探测器清除乱序样本; 当探测器已估算出网络乱序时延后,通过接口 5通知调整器进入稳定状态;
若外界环境变化需要重新探测网络乱序时延,则通过接口 6通知调整器重新进入探测状态。 以下以GRE包为例,对本实施例的调整器的乱序调整处理流程作以说明,处理流程包括如下步骤 步骤l,接收GRE包,解析出GRE头中的序号字段。 步骤2,根据序号字段判断该GRE包是否为"顺序包",即是否为目前正在等待的最小序号报文,若是,则执行步骤3 ;若收到的报文序号大于目前正在等待的最小序号,则称为"乱序包",转入步骤4 ;若收到的报文序号小于目前正在等待的最小序号,则称为"重复
包",转入步骤5 ; 步骤3,若为顺序包,则将该报文连同缓存中与该报文序号相连的报文发往终端,若发送后缓存为空,且flush定时器先前已启动,则停止flush定时器,返回步骤2 ;
步骤4,若为乱序包,则存入缓存中的乱序调整缓冲区中,等待失序的报文,若此时flush定时器尚未启动,则启动flush定时器,返回步骤2 ; 该步骤4中,将乱序包存入缓存时,若发现缓存溢出,则将该报文连同缓存中所有报文都发往终端;若flush定时器已启动,则停止flush定时器。
步骤5,若为重复包,则返回步骤2 ; 其中,针对调整器的两种不同状态,flush定时器的处理如下
探测状态下,flush定时器时长设置为一个保守值; 稳定状态下,flush定时器时长设置为之前探测状态下得到的估计乱序时延;
若flush定时器超时,则将缓存中所有报文都发往终端。 探测器采集乱序样本,计算样本乱序时延,并进一步估算出估计乱序时延的主要步骤如下 步骤a,将估计乱序时延初始化为零; 步骤b,接收GRE包,解析出GRE头中的序号字段; 步骤c,若解析出的该报文序号比期望序号大且之前没有记录乱序样本,则执行步骤d;否则,转入步骤e; 其中,期望序号是指若缓存不为空,则期望序号等于缓存中最大包序号加1 ;若缓存为空,则期望序号等于目前正在等待的包序号加1。 步骤d,将当前的期望序号作为一个乱序样本,记录期望序号以及当前时间,并进入步骤e ; 此处采集的乱序样本,并不是原始的乱序报文,而是报文相关的特征信息,例如至少包括乱序报文的序号和发生乱序的时间等,用于后续计算乱序时延时使用。
步骤e,若该报文序号与当前记录的乱序样本对应的序号相等,则进入步骤f ;否
则,返回步骤b ; 步骤f,计算出该样本的样本乱序时延,若计算出的样本乱序时延比当前的估计乱
序时延大,则将估计乱序时延更新为当前的样本乱序时延,并返回步骤b;否则,直接返回
步骤b。 样本乱序时延的计算公式为样本乱序时延=样本接收时间_样本采样时间
其中,样本接收时间是指,接收到该乱序样本的当前时间;样本采样时间是指,采集该乱序样本时记录的时间。 上述步骤f中,若估计乱序时延在设定时间阈值内没有得到更新(即在一段较长的时间内,每次计算出的样本乱序时延均比估计乱序时延小),则表示当前的估计乱序时延已经接近真实环境的网络乱序时延,可以由探测状态跃迁到稳定状态。 上述估计乱序时延的流程中,当调整器中flush定时器超时或缓存溢出时,探测器需清除当前记录的乱序样本。 以下仍以GRE包为例,结合具体应用实例对本发明技术方案的实施作进一步详细描述。 图2描述了本发明应用实例中调整器收到外界报文时的主要处理步骤,如图2所示,包括 步骤IOI,将当前调整器正在等待的顺序包序号记为Vn,将Vn初始化为当前正在等待的包序号。 步骤102,通过接口 1收到外界输入的GRE包,从GRE头中解出GRE序号,记为V,且当调整器处于探测状态时,通过接口 3将该报文拷贝传给探测器; 步骤103,判断收到的GRE包是否为顺序包,即V是否等于Vn,若是,则转至步骤104 ;否则转至步骤107 ; 步骤104,通过接口 2将该报文发往终端,如果缓存中有序号为V+1的包,则从序号V+l开始,将这些序号连续的包发往终端,并将Vn调整为发送的最后一个包序号+l ;
步骤105 106,若此时缓冲区为空,并且flush定时器之前已经启动,则停止flush定时器;否则转至步骤102,继续处理下一个GRE包; 步骤107,判断收到的GRE包是否为重复包,即V是否小于Vn,若是重复包,则不做处理,直接转至步骤102继续处理下一个GRE包;否则,该包为乱序包,转至步骤108 ;
步骤108,判断当前缓存是否已满,若缓存未满,则转至步骤109 ;否则,转至步骤
112 ; 步骤109,将该报文存入缓存中; 步骤110,若此时flush定时器未启动,则执行步骤lll,否则,转至步骤102 ;
步骤111,启动flush定时器,当调整器处于探测状态时,flush定时器时长设置为一个保守值(例如,可以设置为网络的RTT),当调整器处于稳定状态时,flush定时器时长设置为探测器估算出的网络乱序时延,并转至步骤102继续处理下一个GRE包;
步骤112,若缓存已满,则将该报文连同缓存中的报文按序号发往终端,将Vn调整为发送的最后一个包序号+1,执行下一步骤113 ; 步骤113,若flush定时器已启动,则执行步骤114 ;否则,转至步骤102 ;
步骤114,停止flush定时器,当调整器处于探测状态时,通过接口 4通知探测器清
除乱序样本后,转至步骤102继续处理下一个GRE包。 图3为调整器flush定时器超时后的处理步骤,包括 步骤201, flush定时器超时; 步骤202,将缓存中所有的报文发往终端,将顺序包序号Vn调整为发送的最后一 个包序号+1,假设最后一个发送报文的序号为LV,则Vn = LV+1 ;
步骤203,当调整器处于探测状态时,通过接口 4通知探测器清除乱序样本。
图4示出了调整器的状态跃迁图,如图4所示,当调整器初始化时,进入探测状态; 当调整器处于探测状态时,若收到来自探测器的通知,则跃迁到稳定状态;当调整器处于稳 定状态时,若收到来自外界的复位操作,则跃迁到探测状态。优选实施例中,调整器处于稳 定态时,可以设置探测周期,作为稳定状态的衰老时间,到达该衰老时间后,自动跃迁到探 测状态。 图5为本发明应用实例的探测器的主要处理步骤,如图5所示,其包括 步骤301,将估计乱序时延记为ED,将当前时刻期望的包序号记为Vr。将ED初始
化为O,将Vr初始化为期望的包序号; 步骤302,(通过接口 3)收到来自调整器序号为V的报文拷贝; 步骤303,若该V大于Vr,且此时没有记录乱序样本,则转至步骤304 ;否则转至步
骤305 ; 步骤304,序号为V的包先于序号为Vr的包到达,说明此时产生了乱序,将此作为 乱序样本记录下来,样本对应的序号为V,样本对应的时间为当前时间,并转至步骤302继 续处理下一个报文拷贝; 步骤305 307,若此时有样本记录,且样本对应的序号为V时,说明先前乱序的报 文V此刻才到达。假设将样本乱序时延记为SD,则SD =当前时间-样本对应的时间。若 SD大于ED,则将ED更新为SD,并清除该样本记录。 记录乱序样本后,可能发生丢包事件,若超出flush定时器保守值时,仍未收到该 乱序样本,则认为该乱序样本已丢失。 上述步骤307中,可以设置并维护一个计数器,当该步骤中ED更新时,计数器重置 为0 ;当ED未更新时,计数器加1。当计数器大于一个预设时间阀值(该时间阀值表示探 测器探测网络乱序时延的持续过程长短)时,说明ED长时间未更新,ED已接近网络乱序时 延,探测器通过接口 5通知调整器跃迁到稳定状态。在本发明其他应用实例中,也可以采用 其他方案,来判断估计乱序时延在上述预设时间阈值内是否有更新。 该方式是较优选的方式,较简单的一种实现方式还可以是直接以该预设时间阈值 内的最大样本乱序时延作为网络乱序时延。 图6为本发明应用实例中探测器收到清除乱序样本指示的处理步骤,包括
步骤401,探测器收到清除乱序样本的指示,指示中带有调整器发送的最后一个报 文序号LV ; 步骤402,调整Vr为LV+1 ; 步骤403,若当前有乱序样本记录,则清除当前的乱序样本。 在上述实施方案中,是以通用路由封装(GRE)包为例进行说明,但上述的flush定时器以及上述的实施方案对于其他可序包(报文头部含有序号字段来表示报文间的顺序) 均可适用。 综上所述,本发明提出了一种乱序调整的方法及装置,能够根据具体网络环境自 适应地设定并调整flush定时器的时长,进而提高乱序调整的质量。 应当理解,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本 领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作 的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
一种可序数据包的乱序调整方法,其特征在于,该方法包括在接收的可序数据包发生乱序时,采集乱序样本,计算所述乱序样本的样本乱序时延,并根据所述样本乱序时延估算网络乱序时延,以所述估算出的网络乱序时延作为flush定时器的时长。
2. 如权利要求l所述的方法,其特征在于,按照以下方式采集乱序样本,并计算该乱序样本的样本乱序时延接收并解析可序数据包头中的序号字段,若该报文序号比当前期望序号大且之前没有 记录乱序样本,则将当前期望序号作为乱序样本进行采集,并记录当前时间为采样时间;接收到该乱序样本时,用当前接收时间减去所述采样时间,计算出该乱序样本的样本 乱序时延。
3. 如权利要求1或2所述的方法,其特征在于, 根据所述样本乱序时延估算网络乱序时延的步骤具体包括 将预设时间阈值内的最大样本乱序时延作为网络乱序时延。
4. 如权利要求1或2所述的方法,其特征在于, 根据所述样本乱序时延估算网络乱序时延的步骤具体包括 A,设定网络乱序时延的初始值,并启动估计定时器;B,在所述估计定时器到达定时周期前,若计算出的样本乱序时延大于所述网络乱序时延,则将所述网络乱序时延更新为该样本乱序时延,并执行步骤C ;在所述估计定时器到达 定时周期后,执行步骤D;C,重启所述估计定时器,返回步骤B ;D,以当前的网络乱序时延作为估算出的网络乱序时延。
5. 如权利要求2所述的方法,其特征在于,所述方法还包括在采集乱序样本的同时,启动flush定时器;若在所述flush定时器到达定时周期后,还未收到该乱序样本,则认为该乱序样本已丢失。
6. 如权利要求2所述的方法,其特征在于,所述期望序号是指若当前缓存不为空,则所述期望序号为缓存中序号最大的包的下一个包的序号; 若当前缓存为空,则所述期望序号为当前正在等待的包的下一个包的序号。
7. 如权利要求1或2所述的方法,其特征在于, 所述可序数据包包括通用路由封装包。
8. —种可序数据包的乱序调整装置,其特征在于,包括调整器、探测器,所述调整器 中设置有flush定时器,其中所述调整器用于,在接收的数据包发生乱序时,缓存并重排失序的数据包,同时启动 flush定时器,待缓存的所述数据包已序、或所述flush定时器到时后将缓存的所述数据包 按顺序发往终端;所述探测器用于,采集乱序样本,计算所述乱序样本的样本乱序时延,并根据所述样 本乱序时延估算网络乱序时延,以所述估算出的网络乱序时延作为所述flush定时器的时 长。
9. 如权利要求8所述的装置,其特征在于,所述调整器用于,在需要估算网络乱序时延时,将接收到的数据包传输给所述探测器;所述探测器用于,接收并解析收到的数据包头中的序号字段,若该报文序号比当前期 望序号大且之前没有记录乱序样本,则将当前期望序号作为乱序样本进行采集。
10. 如权利要求9所述的装置,其特征在于,所述探测器用于,在进行乱序样本的采集时,记录当前时间为采样时间,并用接收到该 乱序样本时的接收时间减去所述采样时间,计算出该乱序样本的样本乱序时延。
11. 如权利要求10所述的装置,其特征在于,所述探测器设置有估计定时器,所述探测器根据所述样本乱序时延估算网络乱序时延的具体过程为A,设定网络乱序时延的初始值,并启动估计定时器;B,在所述估计定时器到达定时周期前,若计算出的样本乱序时延大于所述网络乱序时延,则将所述网络乱序时延更新为该样本乱序时延,并执行步骤C ;在所述估计定时器到达 定时周期后,执行步骤D;C,重启所述估计定时器,返回步骤B ;D,以当前的网络乱序时延作为估算出的网络乱序时延。
全文摘要
本发明公开了一种可序数据包的乱序调整方法及装置,该方法包括在接收的可序数据包发生乱序时,采集乱序样本,计算所述乱序样本的样本乱序时延,并根据所述样本乱序时延估算网络乱序时延,以所述估算出的网络乱序时延作为flush定时器的时长。本发明能够根据具体网络环境自适应地设定并调整flush定时器的时长,使其更加接近合理值,进而提高乱序调整的质量。
文档编号H04L1/00GK101697631SQ200910209149
公开日2010年4月21日 申请日期2009年10月28日 优先权日2009年10月28日
发明者佟志新, 喻磊, 孙洪峰, 王跃, 魏铮 申请人:中兴通讯股份有限公司;