一种缓存计算的方法及装置与流程

文档序号:15394557发布日期:2018-09-08 01:52阅读:140来源:国知局
本发明涉及通信领域,尤其是涉及一种缓存计算的方法及装置。
背景技术
:乱序问题在网络负载均衡的场景下,是一个比较普遍的现象,对于不同的链路设备或者上行方式,由于其在网络中传输的时延不一致,可能会发生先发送的报文反而后到达终端设备的情况。例如,当以dsl(digitalsubscriberline,数字用户线)与lte双链路同时工作时,因为dsl链路的时延与lte的时延不一致,可能出现lte(longtermevolution,长期演进技术)链路先发送的数据晚于dsl链路发送的数据包到达。常见的保序方法一般将报文缓存,待定时器到期或者正序报文到达再将缓存的报文发送出去,例如网络设备会启用定时器或者预留一定的缓存,将dsl到达的报文先缓存,等到lte的报文到达或者定时器到期,再一并将整序过的报文发送出去。这种方法适用于两条链路时延稳定的场景,比如dsl、eth(ethernet,以太网)链路等。但是如前所述当dsl与lte链路同时工作,由于lte链路时延的不稳定性,报文缓存的方法无法确定最大缓存的大小,如果缓存过小,无法达到保序的目的,如果缓存过大,增加了网络设备的系统负担与开销,造成不必要的浪费。当然,如果使用定时器的方法,也无法预置定时器的到期时间,依然存在缓存个数无法预置的问题。技术实现要素:有鉴于此,本发明实施例提供一种缓存计算的方法及装置,解决链路的时延动态变化导致无法正确估计保序队列的缓存大小的问题。为解决上述问题,第一方面,本发明实施例提供一种缓存计算的方法适用于多链路,多链路包括至少一个不稳定链路和至少一个稳定链路,方法包括:获取多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延;根据平均报文时间间隔、第一链路时延和第二链路时延,计算报文缓存个数。可选地,获取多链路的平均报文时间间隔包括:通过采样方法获取第一预设时间内经过多链路的报文个数;计算平均报文时间间隔,计算公式为:δt=δt/m其中,δt为平均报文时间间隔,δt为第一预设时间,m为报文个数,其中,第一预设时间小于最长的链路时延,报文个数小于报文缓存个数。可选地,第二链路时延的计算公式为:δtd=(δt回包时间-δt上行交织-δtd下行交织)/2+δtd下行交织其中,δtd为第二链路时延,δt回包时间为回包时间,δt上行交织为上行交织时间,δtd下行交织为下行交织时间。可选地,第一链路时延的计算方法为:接收到发送端发送的一组报文后,由稳定链路发送确认报文至发送端,记录稳定链路的发送时间为第一时间,其中,确认报文中包含期望的序列号sequencenumber;接收到发送端由不稳定链路发送的包含期望的序列号的下一组报文时,记录第二时间;根据第二时间,第一时间以及稳定链路的上行时延计算不稳定链路的数据流时延,计算公式为:δtl1=t2-t1-δtd2其中,δtl1为数据流时延,t1为第一时间,t2为第二时间,δtd2为稳定链路的上行时延;根据获取的至少两组不稳定链路的数据流时延,计算数据流时延的平均值,平均值为第一链路时延δtl。可选地,计算报文缓存个数的公式为:n≥(δtl-δtd)/δt其中,n为报文缓存个数,δtl为第一链路时延,δtd为第二链路时延,δt为平均报文时间间隔。可选地,方法还包括:若不稳定链路的第一链路时延满足更新规则,重新计算报文缓存个数。可选地,若不稳定链路的第一链路时延满足更新规则,重新计算报文缓存个数,包括:若获取的多个第一链路时延中,最新一次获取的时延与上一次获取的时延满足更新规则,重新计算报文缓存个数。可选地,更新规则为:tn≥tn-1*β或者tn≤tn-1*β其中,tn为最新一次获取的第一链路时延,tn-1为上一次获取的第一链路时延,β为影响因子,其取值由不稳定链路的第一链路时延决定。可选地,方法还包括:若获取的当前保序队列中报文缓存个数超过计算出的报文缓存个数,结束保序过程。第二方面,本发明还提供一种缓存计算的装置,包括:获取模块:用于获取多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延;计算模块:用于根据第一链路时延、第二链路时延和平均报文时间间隔,计算报文缓存个数。可选地,获取模块包括:计数单元:用于通过采样方法获取第一预设时间内经过多链路的报文个数;第一处理单元:用于根据第一预设时间与报文个数计算平均报文时间间隔。可选地,获取模块还包括第二处理单元,用于计算第二链路时延,计算公式为:δtd=(δt回包时间-δt上行交织-δtd下行交织)/2+δtd下行交织其中,δt回包时间为回包时间,δt上行交织为上行交织时间,δtd下行交织为下行交织时间。可选地,获取模块还包括第三处理单元,用于计算第一链路时延,其中,第三处理单元包括:第一记录子单元:用于接收到发送端发送的一组报文后,由稳定链路发送确认报文至发送端,记录稳定链路的发送时间为第一时间,其中,确认报文中包含期望的序列号;第二记录子单元:用于接收到发送端由不稳定链路发送的包含期望的序列号的下一组组报文后,记录第二时间;第一计算子单元:根据第二时间,第一时间以及稳定链路的上行时延计算不稳定链路的数据流时延,计算公式为:δtl1=t2-t1-δtd2其中,δtl1为数据流时延,t1为第一时间,t2为第二时间,δtd2为稳定链路的上行时延;第二计算子单元:根据获取的至少两组不稳定链路的数据流时延,计算数据流时延的平均值,平均值为第一链路时延δtl。可选地,装置还包括:更新模块:用于若不稳定链路的第一链路时延满足更新规则,重新计算报文缓存个数。可选地,更新模块包括:重计算单元:用于若获取的多个第一链路时延中,最新一次获取的时延与上一次获取的时延满足更新规则,重新计算报文缓存个数。可选地,装置还包括:终止模块:用于若获取的当前保序队列中报文缓存个数超过计算出的报文缓存个数,结束保序过程。综上所述,本发明实施通过多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延,根据平均报文时间间隔、第一链路时延和第二链路时延,计算报文缓存个数,能够在多链路包含不稳定链路时,根据不同的时延合理的计算出报文的缓存个数,合理利用的资源与开销,解决不同链路的时延带来的乱序问题,同时根据计算的报文缓存个数,在发生丢包时,及时结束保序,能够触发tcp(transmissioncontrolprotocol,传输控制协议)的快速重传,防止保序的超时造成tcp超时、保证传输速率,优化多链路传输性能。附图说明图1为本发明实施例的缓存计算的方法的一种流程图;图2为本发明实施例的缓存计算的方法的另一种流程图;图3为本发明实施例的缓存计算的方法的另一种流程图;图4为本发明实施例的缓存计算的方法的另一种流程图;图5为本发明实施例的缓存计算的装置的结构示意图。具体实施方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。参见图1,图中示出了缓存计算的方法的一种流程图,该方法适用于多链路,其中,多链路包括至少一个不稳定链路和至少一个稳定链路,包括以下步骤:s101、获取多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延。本实施例以dsl与lte双链路同时工作为例介绍计算方法,当然,该方法也能用于多链路转发的情景,链路中至少有一种不稳定链路,例如本实施例中的lte为非稳定的,即链路时延会发生变化。上述报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块,报文包含了将要发送的完整的数据信息;上述链路是指链路就是从一个节点到相邻节点的一段物理线路,而中间没有任何其他的交换节点。上述时延是指一个报文或分组从一个网络的一端传送到另一个端所需要的时间。本实施例中,将lte链路(不稳定链路)时延定义第一链路时延δtl,将dsl链路(稳定链路)时延定义为第二链路时延δtd。本实施例中,对于第一链路时延与第二链路时延均为往返时延,其中,对于第一链路(稳定链路)时延δtd采用icmp(internetcontrolmessageprotocol,网络控制报文协议)测量。例如可以通过ping工具来测量,ping工具发送端向指定接收端发送icmp的请求报文,当接收端收到该报文后,会马上返回一个应答报文,发送端在收到应答报文之后通过报文中两端的发送、接收时钟,计算得出报文在两端间往返的网络传输时延。具体而言,本实施例中稳定链路(例如dsl链路)的时延δtd可以在双链路的汇聚点处获得的回包时间以及dsl的上、下行交织时间计算,上述汇聚点是指稳定链路与不稳定链路的交汇点。δt回包时间=δtd上行+δt上行交织+δtd下行+δtd下行交织δtd1=δtd下行+δtd下行交织δtd2=δtd上行+δtd上行交织其中,δt回包时间为回包时间,可以检测icmp的往返时延得到,δtd1为下行时延,δtd2为上行时延,上行是指用户侧向网络侧发送数据,下行是指网络侧向用户侧发送数据,δt上行交织与δtd下行交织分别为上、下行交织时间,可以在协商内容中得到,δtd上行与δtd下行分别为数据包的上行传输时间与下行传输时间。忽略系统消耗的时间,δtd上行=δtd下行,本实施例中,第二链路时延为下行时延,即δtd=δtd1,最终可得第二链路时延的计算公式为:δtd=(δt回包时间-δt上行交织-δtd下行交织)/2+δtd下行交织本实施例中,双链路是封装在gre(genericroutingencapsulation,通用路由封装)隧道中,可以通过gre的seqnum(sequencenumber,序列号)以及回复ack(acknowledgement,确认号)测量不稳定链路(dsl链路)的时延。本实施例中,接收到发送端发送的一组报文后,由稳定链路发送确认报文至发送端,记录稳定链路的发送时间为第一时间t1。具体而言,可以在发送端向不稳定链路发送数据时做发送窗口,发送窗口大小默认为10个报文,当然窗口大小也可以是其他个数的报文,发送端位于稳定链路与不稳定链路的交汇点,可以是承载网设备。当发送端发送完一组的10个报文(例如第1~10报文)后,发送窗口耗尽,不再发送报文,后续的报文缓存。接收端设备接收到报文后,由稳定链路发送确认报文至发送端,例如,可以通过申请一个ack,ack携带期望的序列号,例如seqnum=11,将包含ack的报文从稳定链路(dsl链路)至发送端,发送端收到ack报文后,再重新初始化发送窗口,由不稳定链路发送包含期望的序列号的下一组报文,例如发送第11~20报文。接收端设备收到发送端发送的包含期望的序列号的下一组组报文后,记录第二时间t2。根据第二时间,第一时间以及稳定链路的上行时延计算不稳定链路的数据流时延,计算公式为:δtl1=t2-t1-δtd2其中,δtl1为数据流时延,t1为第一时间,t2为第二时间,δtd2为稳定链路的上行时延,上行时延可以是上述基于icmp获得的稳定链路的上行时延,也可以采用其他方式获得。获取至少两组不稳定链路的数据流时延,计算数据流时延的平均值,平均值为第一链路时延δtl。例如可以发送10个数据流,后续依次计算得出第2~10的数据流时延,δtl1…δtl10即为第一链路时延的采样值,取平均值后得到第一链路时延δtl:δtl=(δtl1+…+δtl10)/10本实施例中,接收端设备可以为接入终端cpe(customerpremiseequipment,客户终端设备)。本实施例中,在t1时刻有一个报文从lte转发,t2,3,......,n,n+1时刻有多个报文从dsl链路转发,要保证报文的序列号不发生紊乱,相当于要求:δtl+t1≤δtd+tn+1但是,上式中如果tn+1通过所有报文的时间间隔计算,则需要知道每个报文的时间间隔δti,这样计算缓存个数n会比较困难,为此,本实施例中采用多链路平均报文时间间隔估算一定时间内经过的报文个数。s102、根据平均报文时间间隔、第一链路时延和第二链路时延,计算报文缓存个数。本实施例中,将平均报文时间间隔带入tn的计算公式,得到:tn+1=t1+δt1+δt2+……+δtn+δtn+1=t1+n*δt即:δtl+t1≤δtd+t1+n*δt故而,报文缓存个数的计算公式为:n≥(δtl-δtd)/δt其中,n为报文缓存个数,δtl为第一链路时延,δtd为第二链路时延,δt为平均报文时间间隔。综上所述,本实施例通过获取平均报文时间间隔、第一链路时延和第二链路时延,根据平均报文时间间隔和链路时延差计算缓存个数,能够根据不同的时延合理计算出报文的缓存个数,解决不同链路的时延带来的乱序问题,合理利用资源与开销。第二实施例参见图2,图中示出了缓存计算的方法的另一种流程图,包括以下步骤:s201、获取多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延。本实施例以dsl与lte双链路同时工作为例介绍该方法,当然,该方法也能用于多链路转发的情景,链路中至少有一种不稳定链路,例如本实施例中的lte为非稳定的,即链路时延会发生变化。上述报文是网络中交换与传输的数据单元,报文包含了将要发送的完整的数据信息。将lte链路(不稳定链路)时延定义第一链路时延δtl,将dsl链路(稳定链路)时延定义为第二链路时延δtd。本实施例中,对于第一链路时延与第二链路时延均为往返时延,其中,对于第一链路(稳定链路)时延采用icmp测量,例如可以通过ping工具来测量报文在两端间往返的网络传输时延。具体而言,本实施例中稳定链路(例如dsl链路)的时延δtd可以在双链路的汇聚点处获得的回包时间以及dsl的上、下行交织时间计算,上述汇聚点是指稳定链路与不稳定链路的交汇点。δt回包时间=δtd上行+δt上行交织+δtd下行+δtd下行交织δtd1=δtd下行+δtd下行交织δtd2=δtd上行+δtd上行交织其中,δt回包时间为回包时间,可以检测icmp的往返时延得到,δtd1为下行时延,δtd2为上行时延,上行是指用户侧向网络侧发送数据,下行是指网络侧向用户侧发送数据,δt上行交织与δtd下行交织分别为上、下行交织时间,可以在协商内容中得到,δtd上行与δtd下行分别为数据包的上行传输时间与下行传输时间。忽略系统消耗的时间,δtd上行=δtd下行,本实施例中,第二链路时延为下行时延,即δtd=δtd1,最终可得第二链路时延的计算公式为:δtd=(δt回包时间-δt上行交织-δtd下行交织)/2+δtd下行交织本实施例中,双链路是封装在gre隧道中,可以通过gre的seqnum以及回复ack测量不稳定链路(dsl链路)的时延。本实施例中,接收到发送端发送的一组报文后,由稳定链路发送确认报文至发送端,记录稳定链路的发送时间为第一时间t1。具体而言,可以在发送端向不稳定链路发送数据时做发送窗口,发送窗口大小默认为10个报文,当然窗口大小也可以是其他个数的报文,发送端位于稳定链路与不稳定链路的交汇点,可以是承载网设备。当发送端发送完一组的10个报文后,发送窗口耗尽,不再发送报文,后续的报文缓存。接收端设备接收到报文后,由稳定链路发送确认报文至发送端,例如,可以通过申请一个ack,ack携带期望的序列号,将包含ack的报文从稳定链路(dsl链路)至发送端,发送端收到ack报文后,再重新初始化发送窗口,由不稳定链路发送包含期望的序列号的下一组报文。接收端设备收到发送端发送的包含期望的序列号的下一组组报文后,记录第二时间t2。根据第二时间,第一时间以及稳定链路的上行时延计算不稳定链路的数据流时延,计算公式为:δtl1=t2-t1-δtd2其中,δtl1为数据流时延,t1为第一时间,t2为第二时间,δtd2为稳定链路的上行时延,上行时延可以是上述基于icmp获得的稳定链路的上行时延,也可以采用其他方式获得。本实施例中,获取至少两组不稳定链路的数据流时延,计算数据流时延的平均值,平均值为第一链路时延δtl。例如可以发送10个数据流,后续依次计算得出第2~10的数据流时延,δtl1…δtl10即为第一链路时延的采样值,取平均值后得到第一链路的时延:δtl=(δtl1+…+δtl10)/10本实施例中,接收端设备可以为接入终端cpe。本实施例中,获取平均报文时间间隔包括以下步骤:s2011、通过采样方法获取第一预设时间内经过多链路的报文个数。本实施例中,通过采样方法估算一定时间(例如第一预设时间)内经过的报文个数,当然,第一预设时间小于最长链路的时延,第一预设时间内经过的报文个数小于报文缓存的个数。s2012、计算平均报文时间间隔。本实施例中,平均报文时间间隔的计算公式为:δt=δt/m其中,δt为平均报文时间间隔,δt为第一预设时间,m为报文个数。s202、根据平均报文时间间隔、第一链路时延和第二链路时延,计算报文缓存个数。本实施例中,报文缓存个数的计算公式为:n≥(δtl-δtd)/δt其中,n为报文缓存个数,δtl为第一链路时延,δtd为第二链路时延,δt为平均报文时间间隔。s203、若不稳定链路的第一链路时延满足更新规则,重新计算报文缓存个数。本实施例中,第二链路时延δtd一般比较固定,但是第一链路时延δtl是可能发生变化的,随着δtl时延增加,报文缓存个数n的最小取值也会增加,导致n随着时延以及报文时间间隔动态变化,故而,需要更新报文缓存个数的值。本实施例中,根据第一链路时延判断是否更新报文缓存个数,当第一链路时延满足更新规则时,重新计算报文缓存个数,能够实现动态计算缓存报文的个数。本实施例中,lte链路是时延易发生抖动并且时延较大者,所以根据lte传输报文的时延进行更新规则的判断。综上所述,本实施例通过采样方法获取第一预设时间内经过的报文个数得到平均报文时间间隔,并根据获取的第一链路时延、第二链路时延和平均报文时间间隔计算报文缓存个数,能够根据不同的时延合理计算出报文缓存个数,同时当第一链路时延满足更新规则时,重新计算报文缓存个数,能够实现动态计算报文缓存个数,解决不同链路的时延带来的乱序问题,合理利用资源与开销。第三实施例参见图3,图中示出了本实施例缓存计算的方法的另一种流程图,包括:s301、获取多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延。本实施例以dsl与lte双链路同时工作为例介绍该方法,当然,该方法也能用于多链路转发的情景,链路中至少有一种不稳定链路,例如本实施例中的lte为非稳定的,即链路时延会发生变化。上述报文是网络中交换与传输的数据单元,报文包含了将要发送的完整的数据信息。将lte链路(不稳定链路)时延定义第一链路时延δtl,将dsl链路(稳定链路)时延定义为第二链路时延δtd。本实施例中,对于第一链路时延与第二链路时延均为往返时延,其中,对于第一链路(稳定链路)时延采用icmp测量,例如可以通过ping工具来测量报文在两端间往返的网络传输时延。具体而言,本实施例中稳定链路(例如dsl链路)的时延δtd可以在双链路的汇聚点处获得的回包时间以及dsl的上、下行交织时间计算,上述汇聚点是指稳定链路与不稳定链路的交汇点。δt回包时间=δtd上行+δt上行交织+δtd下行+δtd下行交织δtd1=δtd下行+δtd下行交织δtd2=δtd上行+δtd上行交织其中,δt回包时间为回包时间,可以检测icmp的往返时延得到,δtd1为下行时延,δtd2为上行时延,上行是指用户侧向网络侧发送数据,下行是指网络侧向用户侧发送数据,δt上行交织与δtd下行交织分别为上、下行交织时间,可以在协商内容中得到,δtd上行与δtd下行分别为数据包的上行传输时间与下行传输时间。忽略系统消耗的时间,δtd上行=δtd下行,本实施例中,第二链路时延为下行时延,即δtd=δtd1,最终可得第二链路时延的计算公式为:δtd=(δt回包时间-δt上行交织-δtd下行交织)/2+δtd下行交织本实施例中,双链路是封装在gre隧道中,可以通过gre的seqnum以及回复ack测量不稳定链路(dsl链路)的时延。本实施例中,接收到发送端发送的一组报文后,由稳定链路发送确认报文至发送端,记录稳定链路的发送时间为第一时间t1。具体而言,在发送端向不稳定链路发送数据时做发送窗口,发送窗口大小默认为10个报文,当然窗口大小也可以是其他个数的报文,发送端位于稳定链路与不稳定链路的交汇点,可以是承载网设备。当发送端发送完一组的10个报文后,发送窗口耗尽,不再发送报文,后续的报文缓存。接收端设备接收到发送端的发送的报文后,稳定链路发送确认报文至发送端,例如,可以通过申请一个ack,ack携带期望的序列号,将包含ack的报文从稳定链路(dsl链路)至发送端,发送端收到ack报文后,再重新初始化发送窗口,由不稳定链路发送包含期望的序列号下一组报文。接收端设备收到发送端发送的包含期望的序列号的下一组组报文后,记录第二时间t2。根据第二时间,第一时间以及稳定链路的上行时延计算不稳定链路的数据流时延,计算公式为:δtl1=t2-t1-δtd2其中,δtl1为数据流时延,t1为第一时间,t2为第二时间,δtd2为稳定链路的上行时延,上行时延可以是上述基于icmp获得的稳定链路的上行时延,也可以采用其他方式获得。本实施例中,获取至少两组不稳定链路的数据流时延,计算数据流时延的平均值,平均值为第一链路时延δtl。例如可以发送10个数据流,后续依次计算得出第2~10的数据流时延,δtl1…δtl10即为第一链路时延的采样值,取平均值后得到第一链路的时延:δtl=(δtl1+…+δtl10)/10本实施例中,接收端设备可以为接入终端cpe。本实施例中,通过采样方法获取平均报文时间间隔,即:δt=δt/m其中,δt为平均报文时间间隔,δt为第一预设时间,m为报文个数。s302、根据平均报文时间间隔、第一链路时延和第二链路时延,计算报文缓存个数。本实施例中,报文缓存个数的计算公式为:n≥(δtl-δtd)/δt其中,n为报文缓存个数,δtl为第一链路时延,δtd为第二链路时延,δt为平均报文时间间隔。s303、判断获取的多个第一链路时延中,最新一次获取的时延与上一次获取的时延满足更新规则,若是,进入步骤s304;否则,结束该流程。本实施例中,第一链路时延是指时延易发生抖动或者时延较大的链路的时延,例如lte链路的时延,测量并记录每一个报文由lte链路传输报文的时延,在获得的多个时延中,比较最新一次记录的时延时间tn与上一次记录的时延时间tn-1,其中,以上一次记录的时间为参考。上述更新规则为:tn≥tn-1*β或者tn≤tn-1*β其中,tn为最新一次记录的时延时间,tn-1为上一次记录的时延时间,β为影响因子。本实施例中,最新一次记录的时延时间tn与上一次记录的时延时间tn-1相比较,时延时间可以延长也可以缩短,若最新一次记录的时延时间大于上一次记录的时延时间,即时延延长,则更新规则为:tn≥tn-1*β若最新一次记录的时延时间小于上一次记录的时延时间,即时延间缩短,则更新规则为:tn≤tn-1*β影响因子β与时延相关,当时延大于1s的网络没有太大的实际意义,所以将时延的时间上限限定为1s,具体关系如下:影响因子β时间间隔500%1ms~10ms100%11ms~200ms50%201ms~500ms20%501ms~1s10%>1ss304、重新计算报文缓存个数。本实施例中,当最近一次获取的时间与之前一次获取的时间满足更新规则时,更新动态缓存的大小。综上所述,本实施例通过根据不同的时延合理的计算出报文缓存个数,并根据不稳定链路的时延对报文缓存个数进行更新,能够动态计算报文缓存个数,合理利用的资源与开销,解决不同链路的时延带来的乱序问题。第四实施例参见图4,图中示出了本实施例缓存计算的方法的另一种流程图,包括:s401、获取多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延。本实施例以dsl与lte双链路同时工作为例介绍该方法,当然,该方法也能用于多链路转发的情景,链路中至少有一种不稳定链路,例如本实施例中的lte为非稳定的,即链路时延会发生变化。上述报文是网络中交换与传输的数据单元,报文包含了将要发送的完整的数据信息;上述链路是指链路是一段物理线路,而中间没有任何其他的交换节点。将lte链路(不稳定链路)时延定义第一链路时延δtl,将dsl链路(稳定链路)时延定义为第二链路时延δtd。本实施例中,对于第一链路时延与第二链路时延均为往返时延,其中,对于第一链路(稳定链路)时延采用icmp测量,例如可以通过ping工具来测量报文在两端间往返的网络传输时延。具体而言,本实施例中稳定链路(例如dsl链路)的时延δtd可以在双链路的汇聚点处获得的回包时间以及dsl的上、下行交织时间计算,上述汇聚点是指稳定链路与不稳定链路的交汇点。δt回包时间=δtd上行+δt上行交织+δtd下行+δtd下行交织δtd1=δtd下行+δtd下行交织δtd2=δtd上行+δtd上行交织其中,δt回包时间为回包时间,可以检测icmp的往返时延得到,δtd1为下行时延,δtd2为上行时延,上行是指用户侧向网络侧发送数据,下行是指网络侧向用户侧发送数据,δt上行交织与δtd下行交织分别为上、下行交织时间,可以在协商内容中得到,δtd上行与δtd下行分别为数据包的上行传输时间与下行传输时间。忽略系统消耗的时间,δtd上行=δtd下行,本实施例中,第二链路时延为下行时延,即δtd=δtd1,最终可得第二链路时延的计算公式为:δtd=(δt回包时间-δt上行交织-δtd下行交织)/2+δtd下行交织本实施例中,双链路是封装在gre隧道中,可以通过gre的seqnum以及回复ack测量不稳定链路(dsl链路)的时延。本实施例中,接收到发送端发送的一组报文后,由稳定链路发送确认报文至发送端,记录稳定链路的发送时间为第一时间t1。具体而言,在发送端向不稳定链路发送数据时做发送窗口,发送窗口大小默认为10个报文,当然窗口大小也可以是其他个数的报文,发送端位于稳定链路与不稳定链路的交汇点,可以是承载网设备。当发送端发送完一组的10个报文后,发送窗口耗尽,不再发送报文,后续的报文缓存。接收端设备接收到发送端的发送的报文后,稳定链路发送确认报文至发送端,例如,可以通过申请一个ack,ack携带期望的序列号,将包含ack的报文从稳定链路(dsl链路)至发送端,发送端收到ack报文后,重新初始化发送窗口,由不稳定链路发送包含期望的序列号的下一组报文。接收端设备收到发送端发送的包含期望的序列号的下一组组报文后,记录第二时间t2。根据第二时间,第一时间以及稳定链路的上行时延计算不稳定链路的数据流时延,计算公式为:δtl1=t2-t1-δtd2其中,δtl1为数据流时延,t1为第一时间,t2为第二时间,δtd2为稳定链路的上行时延,上行时延可以是上述基于icmp获得的稳定链路的上行时延,也可以采用其他方式获得。本实施例中,获取至少两组不稳定链路的数据流时延,计算数据流时延的平均值,平均值为第一链路时延δtl。例如可以发送10个数据流,后续依次计算得出第2~10的数据流时延,δtl1…δtl10即为第一链路时延的采样值,取平均值后得到第一链路的时延:δtl=(δtl1+…+δtl10)/10本实施例中,接收端设备可以为接入终端cpe。本实施例中,通过采样方法获取平均报文时间间隔,即:δt=δt/m其中,δt为平均报文时间间隔,δt为第一预设时间,m为采样报文个数。s402、根据平均报文时间间隔、第一链路时延和第二链路时延,计算报文缓存个数。本实施例中,报文缓存个数的计算公式为:n≥(δtl-δtd)/δt其中,n为报文缓存个数,δtl为第一链路时延,δtd为第二链路时延,δt为平均报文时间间隔。s403、判断当前保序队列中报文缓存个数是否大于计算出的报文缓存个数,若是,进入步骤s404;否则,结束该流程。本步骤用于判断是否发生丢包,发生丢包时,保序过程可以结束。传统的保序方法无法判断何时结束保序过程,只能等到定时器到期或者保序队列缓存存满,故而,在本实施例中,能够对丢包进行了预判。需要说明的是,上述计算出的报文缓存个数可以是指步骤s402中的报文缓存个数,也可以是满足更新规则后重新计算的报文缓存个数,当然如果是重计算的报文缓存个数,则在步骤s402与s403还包括若不稳定链路的第一链路时延满足更新规则,重新计算报文缓存个数这一步骤。s404、结束保序过程。本实施例中,当报文缓存个数超出计算的缓存个数时,及时结束保序,能够触发tcp的快速重传,防止由于双链路工作下保序的超时造成tcp超时,保证tcp传输速率,优化多链路的tcp性能。通过将本实施例的中缓存计算方法应用在双链路工作(例如在双链路下载)中为例来说明上述效果。双上行链路同时工作时,期望达到的效果是网络流量至少超过主链路的协商速率,双链路才有实施意义。例如,以ftp(filetransferprotocol,文件传输协议)通过dsl链路和lte链路下载进行说明,主链路是dsl链路,备份链路是lte链路,当网络流量超过dsl链路的协商速率时,会分流到lte链路。其中,dsl协商速率20m,时延为31ms,lte时延60ms~150ms。预置ftp服务器、客户端、dslam(digitalsubscriberlineaccessmultiplexer,数字用户线路接入复用器)、lte基站等,预置路由,保证数据能够同时在dsl链路和lte转发。通过ftp进行下载,在ftp客户端抓包分析tcp报文,观察效果;上述抓包(packetcapture)是指将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,用来检查网络安全或是进行数据截取。若不使用任何保序方法,由于tcp传输是突发流,上层设备发生分流的时刻平均速率未达到dsl协商速率20m,ftp客户端有大量的乱序报文,最终速率稳定在5~6m。使用本实施例的保序方法,ftp客户端抓包未发现有乱序报文,并且动态缓存(buffer)实时变化,下载速率达到33m左右。通过网损仪在lte链路模拟拥塞丢包,使用传统的保序方法,ftp客户端抓包分析,有少量的乱序报文,但是由于传统的保序方法无法预知丢包,只能等待保序时间到达或者保序队列缓存满,才结束保序过程,所以即使少量的乱序触发tcp快速重传,拉长了tcp的rtt(round-triptime,往返时延)时间,导致tcp传输速率降低,下载速率在15m左右。通过网损仪在lte链路模拟拥塞丢包,使用本方案实例的动态保序方法,ftp客户端抓包分析,有少量的乱序报文,触发tcp快速重传,下载速率在25m左右。由前述可知,本实例结束保序的条件即n≥(δtl-δtd)/δt,当保序队列中的缓存超过阈值(δtl-δtd)/δt时,即认为保序过程结束,这样就缩短了tcp在链路中的缓存时间,缩短了rtt,触发tcp的快速重传,提升tcp的传输性能。综上所述,本实施例根据链路时延的变化,计算出报文缓存个数,并且在当前保序队列中报文缓存个数大于计算出的报文缓存个数时结束保序过程,能够根据计算的阈值以及当前的缓存报文数决策是否结束保序过程,在网络丢包时及时结束保序过程,防止因保序导致tcp超时,保证tcp传输速率,并且触发tcp快速重传,提升tcp的传输性能。第五实施例基于同一发明构思,本发明实施例中还提供了一种缓存计算的装置,由于该装置解决问题的原理与本发明实施例图1~图4中的缓存计算的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再敷述。参见图5,图中示出了缓存计算的装置的结构示意图,该装置包括获取模块501、计算模块502、更新模块503和终止模块504。其中,获取模块501用于获取多链路的平均报文时间间隔、不稳定链路的第一链路时延和稳定链路的第二链路时延;计算模块502用于根据第一链路时延、第二链路时延和平均报文时间间隔,计算报文缓存个数;更新模块503用于若不稳定链路的第一链路时延满足更新规则,重新计算报文缓存个数;终止模块504用于若获取的当前保序队列中报文缓存个数超过计算出的报文缓存个数,结束保序过程。本实施例中,获取模块501包括计数单元5011和第一处理单元5012。计数单元5011用于通过采样方法获取第一预设时间内经过多链路的报文个数;第一处理单元5012用于根据第一预设时间与报文个数计算平均报文时间间隔。本实施例中,获取模块501还包括第二处理单元5013,用于计算第二链路时延,计算公式为:δtd=(δt回包时间-δt上行交织-δtd下行交织)/2+δtd下行交织其中,δtd为第二链路时延,δt回包时间为回包时间,δt上行交织为上行交织时间,δtd下行交织为下行交织时间。本实施例中,获取模块501还包括第三处理单元5014,用于计算第一链路时延,其中,第三处理单元5014包括:第一记录子单元:用于接收到发送端发送的一组报文后,由稳定链路发送确认报文至发送端,记录稳定链路的发送时间为第一时间,其中,确认报文中包含期望的序列号;第二记录子单元:用于接收到发送端由不稳定链路发送的包含期望的序列号的下一组组报文后,记录第二时间;第一计算子单元:根据第二时间,第一时间以及稳定链路的上行时延计算不稳定链路的数据流时延,计算公式为:δtl1=t2-t1-δtd2其中,δtl1为数据流时延,t1为第一时间,t2为第二时间,δtd2为稳定链路的上行时延;第二计算子单元:根据获取的至少两组不稳定链路的数据流时延,计算数据流时延的平均值,平均值为第一链路时延δtl。本实施例中,更新模块503包括重计算单元5031,用于若获取的多个第一链路时延中,最新一次获取的时延与上一次获取的时延满足更新规则,重新计算报文缓存个数。综上所述,本实施例的装置通过获取模块获取平均报文时间间隔、链路时延和链路时延差,通过计算模块计算报文缓存个数,通过更新模块503在链路时延满足更新规则,重新计算报文缓存个数,能够合理利用的资源与开销,解决不同链路的时延带来的乱序问题。应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。另外,本文中术语“系统”和“网络”在本文中常可互换使用。在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1