一种流调度方法与流程

文档序号:20917126发布日期:2020-05-29 13:40阅读:587来源:国知局
一种流调度方法与流程

本发明涉及通信技术领域,具体地说,涉及通信技术中数据传输领域对应的传输层的流的调度方法,更具体地说,涉及一种流调度方法。



背景技术:

万维网是一个有许多相互连接的超文本组成的系统,作为最重要的互联网应用,万维网(worldwideweb,简称www)成为了目前互联网信息传播的主要媒介。据统计,截止2017年12月底,我国互联网用户已达7.72亿,普及率为55.8%。网页是万维网中的基本信息单位,它由文字、图片、声音、视频等多种媒体信息组成,这些信息统称为网页元素。随着网页内容丰富程度大大增加,组成整个网页的元素的数量和分布范围也大幅增长,网页加载时延的高低会严重影响用户的服务体验并决定网络服务的用户数量。对于时延敏感型的网络服务来说,即使很小的时延也会带来较大的损失。在浏览器中,以电商巨头亚马逊为例,100ms(毫秒)的时延会造成1%货物销售量的降低;一旦谷歌的搜索页面时间增加0.5ms,则会降低其20%的访问流量;对于一些网络应用程序如在线游戏、视频聊天、实时支付、金融交易等,网络时延的高低是满足其服务质量最为重要的指标之一。

为了减少网络时延,提高服务质量,现有技术从不同层次对网络协议进行了一系列的优化。优化主要针对两个问题:

第一,队头阻塞(head-of-lineblocking)问题。

在应用层,队头阻塞问题指的是http请求或者响应必须遵循一定的顺序,如果前一个请求或者响应没有完成,则不能进行下一个。

例如,在http/1.0协议中,如果浏览器需要从服务器请求多个网页元素,http/1.0需要对于每个网页元素请求都重新建立一个tcp连接,并且等到接收到对应的网页元素后才能进行下一次请求,由于大部分的网页元素都很小,所需传输时间很短,而tcp每次建立连接之后都要经历慢启动来探测网络中可用的传输带宽,这样的做法使得传输的效率很低。

在http/1.1协议中,在连续的请求时保持tcp连接打开的状态,不用等到收取响应后再请求下一个元素,这种技术被称为“流水线”(pipelining),然而http/1.1也存在一些问题,虽然它可以在一个tcp连接上连续请求,但是所有的响应必须按照请求发送的顺序来按序接收,因此单个慢响应可以阻塞其后的所有响应,为了解决这个问题,spdy(http/2协议的前身)采取了多路复用(multiplexing)的方法,即多个请求/响应共享一个tcp连接,且它们的传输是并行的方式,在应用层不会相互产生队头阻塞。

在传输层,队头阻塞的问题是指,由于spdy协议在一条tcp连接上进行多路复用,而tcp只支持顺序传输,因此一个请求的数据缺失会影响到其他请求数据的传送。

第二,网络内容的优先级设置。如果无差别地传输所有请求/响应,在带宽有限的情况下,一些关键请求可能会被阻塞,因此,在应用层协议中,spdy协议引入了请求优先级的概念,使得优先级高的请求/响应得到更多的带宽资源,从而有针对性地优化了关键请求的时延。在传输层也有工作针对网络内容的优先级进行了协议的改进,例如,multcp通过更改tcp拥塞控制的参数来实现资源成比例共享;ptcp使用与tcp连接功能相同的微流,通过控制微流的数量来提供优先级的划分。然而,在tcp层面做优先级划分的工作会给应用层带来管理连接和分配资源上的负担,作为一个多路复用的协议,quic可以在传输层提供对多个流的管理和资源分配功能,这一特性为不同流的优先级的划分提供了可能。

为了降低网页加载时延,提高用户体验,google近年推出了一种新型传输层协议quic(quickudpinternetconnections,快速udp互联网连接)。quic协议对传输层进行了多路复用:在建立了客户端到服务器之间的基本连接之后,对于每个网页元素的传输,它都单独提供一个“流”(stream)进行数据传输,流的开启和关闭都是轻量级的,不会影响其所属连接且流与流相互之间独立,不影响各自的传输。在quic的基础上又有学者提出了把传输时所使用的一条物理链路扩展到多条物理链路,这就又形成了mpquic(multipathquic)协议。现有技术中,在传输过程中通过mpquic协议对流进行调度主要包括两种方式,一种是通过lrf(lowest-rtt-first,最小往返时延优先)调度器对流进行调度,另一种是通过sa-ecf调度器进行调度;下面对两种调度器对流的调度过程进行说明。

采用lrf(lowest-rtt-first,最小往返时延优先)调度器进行调度:在传输数据时,lrf调度器将所有流视为平等的关系,以轮询的方式对它们的数据无差别地进行打包,对于每个打包好的数据包,选择当前rtt(往返时延)最小的链路进行传输。在多路径的场景中,lrf首先使用rtt最小的路径直到填满其发送窗口为止,然后使用rtt第二小的路径,以此类推。

采用sa-ecf调度器进行调度:在传输数据时,sa-ecf调度器从现有多条路径当中选择两条路径,一条为不一定有可用传输空间的rtt最小路径;另一条为保证有传输空间的rtt最小路径。在传输每个数据包时,sa-ecf调度器根据该数据包对应的流所剩下的待传输数据量和路径参数信息,估计该流在每条路径所耗费的传输时间,并为此数据包选择一条估计时间最短的路径。这一做法是为了避免当前数据包在一条可能会影响流的完成时间的路径上传输。

但是以上两种调度器,在对流进行调度时也都存在相应的缺陷:

针对lrf调度器,lrf调度器在对流进行调度时没有考虑http/2的优先级设置,因为没有考虑优先级设置,所有就很有可能导致关键流的完成时间增加。此外,由于不同的路径可能存在不同的特性,如延迟、带宽等。例如,wifi和mbb(mobilebroadband,移动宽带)这两种不同的网络路径间的rtt差异是常见的,而且差异很大。当路径的rtt差异很大时,lrf调度器所使用的调度方式,使得数据从不同的路径发送到接收端时,存在接收端的接收乱序问题,接收方需要更大的缓存和更多时间来等待慢路径上的数据。

针对sa-ecf调度器,sa-ecf调度器在对流进行调度时,不同的流首先会竞争快路径,等到快路径被占满发送窗口时,才使用慢路径,在这种情况下,会导致与lrf调度器同样的接收端乱序的问题。此外,在网页的传输过程中,每个网页元素都对应mpquic协议中的一个流,不同种类的网页元素偏好不同的路径。例如html文档适合在rtt较低的路径上进行传输,而图像适合在带宽较高的路径上进行传输。然而,sa-ecf调度器的调度方法考虑的是每个数据包的调度可能会对当前流的完成时间的影响,其完成时间估计是基于当前剩余数据量来计算的,并没有从流的角度考虑资源的分配问题,这就很可能导致流在不合适的路径上传输。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种流调度方法以及基于此方法对流进行调度的流调度器。

本发明的目的是通过以下技术方案实现的:

根据本发明的第一个方面,本发明提供一种流调度方法,包括如下步骤:

s1、对于请求/响应,发起对应的流,所述流带有优先级信息和对应网页元素大小信息。

s2、根据当前流的优先级以及各条路径当前已经被分配的流的优先级,计算当前流被分配到各条路径上可获得的带宽,其中,对于所述流采用先到先处理的模式,对于同时到达的多个流,根据其各自对应的优先级,按照优先级从高到低进行处理。其中,计算当前流被分配到各条路径上可获得的带宽,包括:s21、针对所有路径,分别计算已经被分配到该路径上的数据所属的流与当前流的优先级之和;s22、根据当前流的优先级在优先级之和中的占比计算得到当前流在该条路径上可获得的带宽,其可获得的带宽在该条路径总带宽中的占比与其优先级在优先级之和中的占比一致。

s3、根据当前流在每条路径上可获得的带宽以及每条路径的单向时延将当前流的数据量均衡分配到一条或多条路径上,以使被分配在不同路径上的同一个流的数据量的总传输时间最小。其中,所述步骤s3具体包括如下步骤:s31、获取所有路径的单向时延,并将各条路径按照其对应单向时延进行排列;s32、按照步骤s31中的排列顺序,从单向时延最小的路径开始,依次两两计算相邻路径的单向时延差,每计算一次单向时延差进行一次数据分配,在每次数据分配时,将当前流所包含的部分数据分配到当次计算中单向时延较小的路径以及所有单向时延小于该条路径的其他路径上,每条路径上被分配的数据量由本次计算的单向时延差与当前流在该条路径上可获得的带宽的乘积确定;s33、某次计算单向时延差后,若当前流的剩余数据不足以完成本次数据分配,则将剩余数据按当前流在各路径上可获得的带宽成比例分配到本次计算中单向时延较小的路径以及所有单向时延小于该条路径的其他路径上。

s4、各路径基于分配结果对其上的数据进行发送。优选的,通过多个传输轮次完成所有流的发送,其中,每一个传输轮次中,每条路径轮流发送数据包。

其中,每条路径发送数据包之前,进行数据包的封装,封装的数据包个数等于该路径上流的个数。

优选的,对每一个数据包进行封装,包括:从被分配到该路径上的数据所属的所有流中选择一个流,根据数据包允许的字节数选择该流在该路径上的部分数据打包成一个数据包。

其中,从被分配到该路径上的数据所属的所有流中选择一个流,采用按概率随机选择的方式;每个流被选到的概率为该流的优先级除以这条路径上所有流的优先级总和。

根据本发明的第二方面,本发明提供了一种流调度器,包括存储器和处理器,所述存储器中存储计算机程序,所述处理器执行所述计算机程序以实现根据本发明第一方面所述的流调度方法的步骤。

与现有技术相比,本发明的优点在于:

首先,在本发明中,每条路径上的各流按照其优先级进行带宽共享,这样就确保了优先级高的流在与其他流共享同一条路径时,能够得到更多的带宽资源,且其带宽资源不会被其他流过分抢占,从而有效的防止优先级高的关键流被阻塞。其次,本发明对于数据量小的流,将其只分配到一条路径上,以免在传输过程中被其他路径拖慢完成时间;对于数据量大的流将其分配到多条条路径上,使其可以同时利用多条路径进行带宽聚合,缩短其完成时间。再次,本发明在流开始传输前进行路径分配,在流传输的起始阶段就能同时利用多条路径进行传输,因此避免了当流需要在多条路径上进行传输时,在传输过程的一段时间内只争用一条路径所产生的单路径突发流量,进而降低了接收端出现乱序的概率。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1为根据本发明实施例的一种流调度方法的流程示意图;

图2为根据本发明实施例的一种流调度方法的网络结构示意图;

图3为根据本发明实施例的示例一对应条件下的流a采用不同的方法时传输完成时间的对比示意图;

图4为根据本发明实施例的示例一对应条件下的流b采用不同的方法时传输完成时间的对比示意图;

图5为根据本发明实施例的示例二对应条件下的流a采用不同的方法时传输完成时间的对比示意图;

图6为根据本发明实施例的示例二对应条件下的流b采用不同的方法时传输完成时间的对比示意图;

图7为根据本发明实施例的示例三对应条件下的流a采用不同的方法时传输完成时间的对比示意图;

图8为根据本发明实施例的示例三对应条件下的流b采用不同的方法时传输完成时间的对比示意图。

具体实施方式

为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

附图中所示的方框图仅仅是功能实体示例,不一定必须与物理上独立的实体相对应,即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图也仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

本发明主要从基于mpquic协议的流调度方法出发对流的完成时间进行优化,发明人在研究mpquic协议的流调度方法时,发现不同的调度方法对网络时延有很大的影响。经过调研发现:现有的流调度方法在多路径场景中存在两个问题:第一,现有的方法选择先占满快路径,然后再使用慢路径进行传输,这样会带来接收端乱序的问题,影响流的完成时间;第二,现有的方法没有根据不同流的应用层特性(流的大小和流的优先级)来进行路径分配,导致了流可能在不合适的路径上进行传输。因此,发明人提出了一种新的流调度方法,根据流的应用层特性对其进行路径分配,以达到减少网络时延的目的。

发明人在设计本发明的流调度方法时,从以下四个方面出发:

(1)传输层优先级的设置和意义:由于需要在传输层进行不同优先级的流的调度,因此传输层的优先级的设置十分重要。为了解决该问题,发明人引入了http/2的优先级设置作为传输层的优先级参考。http/2的优先级是应用层级别的优先级,通常由浏览器进行设置,其值表征了对应所请求的网页元素的关键程度。目前所有主流的浏览器如chrome,firefox,safari等都支持http/2。在本发明中,传输层优先级值的意义代表该网页元素对时延的要求,值越大代表该网页元素的优先级越高,其所要求的时延越低。

(2)如何在调度中体现流的优先级:为了基于优先级对流的完成时间进行优化,在本发明的流调度方法中,对流的调度顺序以及资源分配比例都会将优先级纳入考虑,通过充分考虑不同优先级的流对带宽和时延的需求,实现流的传输优化。

(3)对于不同大小的流,如何同时优化其完成时间:在本发明中,根据流的大小和路径的特征参数,设计了一个优化模型,其优化目标是流的完成时间,该模型保证了数据量小的流可以避免使用可能会拖慢其完成时间的路径,同时也保证数据量大的流可以同时聚合多条路径的带宽,优化流的传输时间。

(4)如何避免单条路径上的突发流量:基于上述优化模型,本发明设计了对应的算法,保证其可以实时地为流分配路径。本发明的流调度方法在流开始传输前进行路径分配,并保证在流在开始传输时就能同时使用所分配的路径。因此避免了当流需要在多条路径上进行传输时,在一段时间内只争用一条路径时所产生的突发流量。

为了优化流在传输过程中的完成时间,发明人提出了一种流调度方法,通过优化流的调度方式,实现减少其完成时间的目的。概括的说,流的传输过程中包括如下步骤:(1)接收客户端发起的网页元素请求;(2)对于每个请求的响应,传输层都发起一个对应的流(stream),该流带有优先级以及对应网页元素大小的信息;(3)调度器根据现有的多条路径的参数,结合当前所需要分配的流的信息,对该流的数据进行路径分配,所得的分配结果具体到该流在每条路径上所需要传输的数据量;(4)等所有流都被分配后,根据分配结果,对所有流进行传输。

下面结合附图及实施例详细说明本发明。

根据本发明的一个实施例,本发明提供了一种流调度方法,用于对带有优先级信息的流的调度,如图1所示,基于优先级的流调度方法,包括如下步骤:a1、a2、a3和a4。下面具体详细说明每个步骤。

a1、对于请求/响应,发起对应的流,所述流带有优先级信息和对应网页元素大小信息。

在某一时间段内,可能存在若干个用户对服务器发起请求,针对这些请求,传输层都会发起一个对应的流,其中,每个流其本身都会携带有标识其优先级的信息以及标识其对应网页元素大小信息。在本发明中,传输层优先级值的意义代表该网页元素对时延的要求,值越大代表该网页元素的优先级越高,其所要求的时延越低。

a2、计算流在各路径上的带宽。具体的,根据当前流的优先级以及各条路径当前已经被分配的流的优先级,计算当前流被分配到各条路径上可获得的带宽,其中,对于所述流采用先到先处理的模式,对于同时到达的多个流,根据其各自对应的优先级,按照优先级从高到低进行处理。

由于这些请求/响应中有的存在不同的先后顺序,而有的却发生在同一时刻,所以本发明中对这些流进行了区分,在对这些流进行调度时,对于不同时刻到达的流,采用先到先处理的模式,而对于同时到达的流,按优先级从高到低的顺序进行流的分配。

由于流的整体完成时间决定于最慢的路径,因此每一条流应该被合理分配到异构路径上以平衡其完成时间。例如,对于一个流s,当前传输流s的路径为n条,定义流s的总数据量为d,定义流s的整体完成时间为t,流s在第i条路径上估计的完成时间ti,第i条路径上被分配的流s的数据量为di,其中n和i皆为正整数,由此,ti可由以下公式算得:

其中oi为第i条路径的单向时延,bsi为流s当前时刻如果被分配到第i条路径上会得到的带宽。

在本发明中,每条路径上的各流按照其优先级进行带宽共享,这样就确保了优先级高的流在与其他流共享同一条路径时,能够得到更多的带宽资源,且其带宽资源不会被其他流过分抢占,从而有效的防止优先级高的关键流被阻塞。

根据本发明的一个实施例,计算当前流被分配到各条路径上可获得的带宽,包括:

a21、针对所有路径,分别计算已经被分配到该路径上的数据所属的流与当前流的优先级之和。

a22、根据当前流的优先级在优先级之和中的占比计算得到当前流在该条路径上可获得的带宽,其可获得的带宽在该条路径总带宽中的占比与其优先级在优先级之和中的占比一致。

为了满足同一路径上的流按优先级进行带宽共享的原则,本发明设计了同一路径上的流带宽共享的机制:

例如,定义第i条路径上已经被分配的所有流的优先级值之和为sumi,流s的优先级值为pr,则流s被分配到第i条路径上可获得的带宽bsi可由如下公式算得:

其中bi为第i条路径本身的总带宽。

基于以上公式,构建流s传输完成时间模型,流s的整体完成时间t可表示为:

(p1)mint

t=max{ti|i∈[1,2,...,n]}

a3、对流包含的数据进行路径分配。根据当前流在每条路径上可获得的带宽以及每条路径的单向时延将当前流的数据量均衡分配到一条或多条路径上,以使被分配在不同路径上的同一个流的数据量的总传输时间最小。

流所包含的数据量大小与其传输时间有着重要关系,同等情况下,数据量大的流所耗费的传输时间比数据量小的流所耗费的传输时间长。本发明中为了防止数据量大的流传输时间过长,在进行路径分配时将其分配到多条路径,通过多条路径传输的方式来缩短其完成时间;而将数据量小的流只分配到一条路径,防止由于路径之间的单向时延的差异增长其完成时间。

根据本发明的一个实施例,通过步骤a31和a32和/或a33实现流的数据的分配。

a31、获取所有路径的单向时延,并将各条路径按照其对应单向时延进行升序排列或降序排列。

a32、按照步骤a31中的排列顺序,从单向时延最小的路径开始,依次两两计算相邻路径的单向时延差,每计算一次单向时延差进行一次数据分配,在每次数据分配时,将当前流所包含的部分数据分配到当次计算中单向时延较小的路径以及所有单向时延小于该条路径的其他路径上,每条路径上被分配的数据量由本次计算的单向时延差与当前流在该条路径上可获得的带宽的乘积确定。

由于每条路径上的传输时间的下限为该路径的单向时延,因此本发明根据单向时延从低到高的顺序对所有路径进行排序,再从单向时延最低的路径开始对当前流所包含的数据进行分配。为了更好的理解本实施例,下面结合公式和文字对其进行说明如下:

例如,先对所有路径进行升序排列,在对当前流所包含的数据进行分配时,以pathx来表示路径,其中,下标x为正整数,用于表示该条路径在升序排列后的排列顺序,ox用来表示各路径的单向时延。首先从单向时延第一小的路径path1和单向时延第二小的路径path2开始,首先将path1的单向时延o1与path2的单向时延o2相比,将(o2-o1)×bs1大小的数据量分配到path1,以平衡path1和path2的传输时间。然后将单向时延第二小的路径path2和第三小的路径path3进行比较,分别将(o3-o2)×bs1和(o3-o2)×bs2分配到path1和path2,以此平衡path3和path1、path2的传输时间。重复上述过程,直到某次计算单向时延差后当前流的剩余数据不足以完成本次数据分配或者所有路径针对当前流的完成时间相等。若先对所有路径进行降序排列,则在对当前流所包含的数据进行分配时,从排列在最后的路径开始对数据进行分配,也就是还是从单向时延最小的路径开始。

在这个过程中,若当前流的数据量小于(o2-o1)×bs1,则当前流的所有数据将全部被分配到单向时延第一小的路径path1上,若当前流的数据量大于(o2-o1)×bs1,则当前流的数据将被分配到包括单向时延第一小的路径path1在内的多条路径上;从而使得本发明的方法实现了根据流所包含的数据量的大小为流选择合适的路径。对于数据量小的流,将其只分配到一条路径上,以免在传输过程中被其他路径拖慢完成时间;对于数据量大的流将其分配到多条条路径上,使其可以同时利用多条路径进行带宽聚合,缩短其完成时间。

a33、某次计算单向时延差后,若当前流的剩余数据不足以完成本次数据分配,则将剩余数据按当前流在各路径上可获得的带宽成比例分配到本次计算中单向时延较小的路径以及所有单向时延小于该条路径的其他路径上。

具体地说,若某次计算单向时延差后,发现当前流的剩余数据不足以完成本次数据分配,也就是说,虽然现在还存在没有被分配到当前流数据的路径,但是当前流的剩余数据的数据量又小于按上述分配方式执行本次数据分配所需求的数据量,例如,当前流的数据量大于(o2-o1)×bs1且小于(o2-o1)×bs1+(o3-o2)×bs1+(o3-o2)×bs2,则在第一次计算相邻路径的单向时延差后,将(o2-o1)×bs1大小的数据量分配到单向时延第一小的路径path1,然后,第二次计算相邻路径的单向时延差,发现剩余的数据量小于(o3-o2)×bs1+(o3-o2)×bs;当前流在单向时延第一小的路径path1可获得的带宽为1mbps,当前流在单向时延第二小的路径path2上能够获得的带宽为2mbps,则将这些剩余的数据按照1:2的比例分配到单向时延第一小的路径path1和单向时延第二小的路径path2上。

当所有路径的传输时间相等时,说明对当前流的数据分配已经用完了所有的路径,此时所有路径的针对当前流的完成时间是相等的,最理想的状态就是此时当前流的数据刚好被全部分配完毕,但是在实际中这种情况发生的概率极低,而发生概率较高的情况是:当前流还有剩余数据未被分配。在这种发生概率较高的情况下,本发明的方法将当前流的剩余数据按照当前流在各路径上可获得的带宽,成比例地分配到每一条路径上;通过这种方式将剩余数据分配到所有路径,使其可以同时利用所有路径进行带宽聚合,缩短其完成时间。例如,流s的剩余数据量为ds,当前的路径总条数n为5,流s在第一条路径上所占的带宽为bs1,在第二条路径上所占的带宽为bs2,在第三条条路径上所占的带宽为bs3,在第四条路径上所占的带宽为bs4,在第五条路径上所占的带宽为bs5。则在这次数据分配中,第一条路径上所获得的数据量为第一条路径上所获得的数据量为第三条路径上所获得的数据量为第四条路径上所获得的数据量为第五条路径上所获得的数据量为综上所述可以看出:在这次数据分配中,各条路径所分配的数据的比例为:bs1:bs2:bs3:bs4:bs5。

根据本发明的一个实施例,针对当前流所包含数据的路径分配,本发明设计了一个算法,其伪代码如下:

procedureschedulestream

sortedlist

(将所有路径按单向时延从小到大的顺序排序,并将排序后的结果记入sortedlist中。)

initializedi=0,i∈[1,2,...,n]

(初始化所有路径上被分配的流s的数据量为0。)

d′←d

forpathiinsortedlist[1,...,n-1]do

ogap←oi+1–oi

(从单向时延最低的路径开始,依次两两计算相邻路径之间的单向时延差。)

(如果流s的数据量说明数据量足以平均当前的传输时间差值。对于第1到i条路径,分配指定量(ogap×bsj)的数据。)

(如果流s的数据量说明数据量不足以平均当前的传输时间差值。对于第1到i条路径,按比例对其分配数据——分配指定量的数据。)

(如果在上一步骤结束之后还有未被分配的数据,我们将这些剩余的数据按照当前流在各路径上可获得的带宽成比例分配到每一条路径上——每条路径上被分配指定量。)

endprocedure

a4、各路径基于分配结果对其上的数据进行发送。

在同时到达的所有流全部都被分配到相应的路径上之后再开始传输,相较于现有技术中lrf调度器采用的每次选择rtt最小的路径的方法,以及sa-ecf调度器采用的每次选择估计传输时间最小的路径进行传输,直到好的路径的发送窗口被填满为止的方法,本发明在流开始传输前进行路径分配,在流传输的起始阶段就能同时利用多条路径进行传输,因此避免了当流需要在多条路径上进行传输时,在传输过程的一段时间内只争用一条路径所产生的单路径突发流量。

根据本发明的一个实施例,在步骤a4中,通过多个传输轮次完成所有流的发送,其中,每一个传输轮次中,每条路径轮流发送数据包。

在确认所有同时到达的流都被分配路径后,本发明中通过多个传输轮次对这些流所包含的数据进行传输,在一个传输轮次中,由于每个路径上所分配的流的数量可能不一致,考虑到路径之间的公平性问题,本发明规定在一个传输轮次中,每条路径轮流进行发送,重复执行传输轮次,直到所有流完成发送为止。

根据本发明的一个实施例,各路径基于分配结果对其上的数据进行发送,每条路径发送数据包之前,进行数据包的封装,封装的数据包个数等于该路径上流的个数。在每条路径发送数据之前,首先要进行数据包的封装,也就是将数据打包形成数据包,路径对形成的数据包进行发送。

根据本发明到的一个实施例,对每一个数据包进行封装,包括:从被分配到该路径上的数据所属的所有流中选择一个流,在数据包允许的字节数范围内选择该流在该路径上的部分数据或全部数据打包成一个数据包。重复上述过程,直到该路径上的数据包的数量与分配到该路径上的数据所属的流的数量相等。所以每条路径在执行一次发送时,其发送的数据包的数量与该路径上的数据所属的流的数量相等。其中,从被分配到该路径上的数据所属的所有流中选择一个流,采用按概率随机选择的方式;每个流被选到的概率为该流的优先级除以这条路径上所有流的优先级总和。

在多个传输轮次中,在打包某个流的最后一个数据包时,最理想的情况是剩下的字节数正好能填满所有空缺,但是由于协议的拥塞控制等机制的影响,数据包的大小并不是一成不变的,因此这个状态是很难做到的。为了提高传输效率,现有技术的做法是将多个流剩下的字节一并打包成一个数据包,但是这种做法可能带来的影响是丢失一个数据包可能会同时影响到其携带的所有流的传输,因此本发明中在进行数据包的封装时,每次只选择一个流的数据形成一个数据包,即使某个流的剩余数据占不满一个数据包也不将其他流的数据打包的这个数据包内,从而防止了因为一个数据包的丢失影响到其他流的传输。

按照优先级确定各流被选到的概率,因此,流的优先级越高,流被选到的概率越大,由于流被选到的概率与其优先级值成正比,因此流在该路径上所占有的实际带宽约为其被选到的概率乘以该路径的带宽,以此来实现同一路径上的数据按其所属的流的优先级比例共享带宽。

通过本方法的流调度方式,在流开始传输前进行了路径分配,在引入了mpquic协议的技术背景下,接收端会将原来多个流的公用缓存空间划分给每一个流,也就是接收端针对其要接收的每个流都单独提供一个缓存空间,因此在通过多个传输轮次对所有流进行发送的过程中,即使其中某一个流因为缓存空间被占满而造成数据包阻塞时,也不会影响其他流的传输,从而解决了因一个流产生阻塞而造成所有流被阻塞的问题。

为了验证本发明的实际效果,发明人设计了以下三个示例;在各个示例中以pstream表示本发明提出的基于优先级的流调度方法;以lrf表示采用每次选取rtt最小的路径进行传输来缩短传输时间的方法,即现有技术中lrf调度器所采用的方法;以sa-ecf表示不考虑流的特性只估计流的传输时间来进行路径分配的方法,即现有技术中sa-ecf调度器所采用的方法。

在对比这三种方法时,首先,构建一个如图2所示的网络,该网络有两条路径,且两条路径之间存在性能差异。这样的设置可以模拟手机端的移动应用同时连接wifi和数据流量的网络特征。然后,设定同时传输两个具有不同应用特征的流。两个流分别代表两种不同的网页元素,其各自的优先级设置参考safari浏览器中的设置。第一个流a为html文档,其大小为26kb,其优先级为255;第二个流b为图像文件,其大小为900kb,其优先级为8。

根据本发明的示例一,用于比较在两条路径存在带宽差异的情况下,三种不同的流调度方法中两个流的完成时间。

本示例中,将路径1的带宽设置为1mbps(兆比特每秒),将路径2的带宽设置为依次设置为1mbps、20mbps、40mbps、60mbps、80mbps和100mbps,将两条路径的rtt均设置为1ms(毫秒),以增加两条路径的带宽异构性,得到如图3和图4所示的结果。

基于如图3和图4所示的结果,总的来说,本发明的基于优先级的流调度方法在针对关键流的传输方面要好于其他两种流调度方法。在lrf调度器所采用的方法中,由于不考虑路径的带宽异质性,而本示例中两条路径的rtt又相同,因此数据包可能均匀分布在两条路径上,这样的方法对优先级高的关键流a可能会产生很大的影响,因为在接收端聚合两条路径上所传输的a的数据时,其最终的完成时间受制于带宽低的路径1。在sa-ecf调度器所采用的方法中,首先使用较好路径(即路径2)的拥塞窗口并使路径1空闲一段时间,然后才在路径1上传输数据包。路径2上的突发流量不仅使得接收端需要更大的缓冲区来缓存数据,而且还会导致接收端出现更严重的数据包失序,延长了流的完成时间。而在本发明的基于优先级的流调度方法中,将流预先分配到路径上,并且流从传输开始就同时利用调度的路径,从而减少了突发流量,缩短了完成时间;由于在调度时考虑了优先级,本发明对于关键流a的完成时间明显快于其它两种方法,使得本发明在关键流的传输方面,较现有技术具有显著的进步。

根据本发明的示例二,用于比较在两条路径存在rtt差异的情况下,三种不同的流调度方法中两个流的完成时间。

本示例中,将两条路径的带宽均设置为1mbps(兆比特每秒),将路径1的rtt设置为1ms,将路径2的rtt依次设置为1ms、80ms、160ms、240ms、320ms和400ms,以增加两条路径的rtt异质性,得到如图5和图6所示的结果。

基于如图5和图6所示的结果,总的来说,对于这三种流调度方法,在流b上的性能差异不如流a上的性能差异明显,这是因为在rtt异构的路径下的调度决策在影响小流的完成时间方面起着更重要的作用。对于a,本发明在缩短其完成时间方面具有明显的优势,随着路径rtt差异的增大,这种优势逐渐减弱,这是因为在sa-ecf调度器所采用的方法中,在一条路径具有明显优势的情况下,更少地使用差的路径。对于流b,性能差异并不明显。这是因为路径的带宽差异很小,所以sa-ecf调度器所采用的方法容易导致突发流量的这一缺点没有体现出来。

根据本发明的示例三,用于比较在两条路径既存在rtt差异又存在带宽差异的情况下,三种不同的流调度方法中两个流的完成时间。

本实施例中,将路径1的带宽和rtt分别设置为1mbps和1ms,将路径2的带宽和rtt依次设置为1mbps和1ms、20mbps和80ms、40mbps和160ms、60mbps和240ms、80mbps和320ms以及100mbps和400ms,得到如图7和图8所示的结果。

基于如图7和图8所示的结果,总的来说,本发明的基于优先级的流调度方法相对于其他两种方法,在两个流的完成时间方面具有非常明显的提升。这是因为本发明的基于优先级的流调度方法考虑到了流的特征与路径特征的匹配性。优先级高的数据量小的流a偏好rtt较低的路径,而优先级低数据量大的流b偏好带宽较高的路径。在这种情况下,在本发明的基于优先级的流调度方法中,两条流更多地在不同的路径上进行传输,这样也减少了两条流之间在同一条路径上进行资源竞争,有效地同时缩短了两个流的完成时间。在这种路径异质性下,其他两种流调度方法由于不考虑流类型和路径特征的匹配而失去了优势,从而在流竞争同一路径时造成不必要的流间阻塞。

综上所述,与不考虑优先级的现有技术相比,本发明考虑到了流所传输的应用层内容的优先级要求,在传输层根据其优先级对其进行调度。将流的优先级与调度方法结合:首先,使得优先级高的关键流在调度的顺序上优先于其他流;其次,本发明能保证在关键流与其他流共享路径时,其带宽资源不被其他流过分抢占。除此之外,在多条路径的场景下,本发明的基于优先级的流方法可以在流传输的起始阶段就能同时利用多条路径进行传输,降低了单条路径上产生突发流量而导致接收端乱序的概率。

需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1