可动态扩大通信链接吞吐量的拥塞控制方法_3

文档序号:9252691阅读:来源:国知局
br>[0096]在步骤(305)中,此进程将检查带字节偏差的下载是否受URL(范围请求)的支持。如果支持部分下载,则此进程将通过循环,该循环可根据拥塞控制器设定的参数监控活动会话的状态以及添加或提取CSC中的会话。会话控制器将从活动会话列表中拉出第一个会话(315),并检查其是否已终止(317)。如果会话已终止,则它将检查当前会话计数(CSC)是否大于目标会话计数(TSC) (320)。如果是,它将丢弃一个会话(325),检查下一个会话是否可用(335),如果可用,则将其选择为活动(342)。该进程随后将返回至(317),以检查第一个活动会话是否已终止。另外,如果下一个会话不可用,则该进程将检查CSC是否小于TSC (340),如果是,则将为下一个块添加新会话(345),直到CSC等于TSC。它随后将转至图4以检查当前策略的性能。
[0097]在步骤(320)中,如果已确定CSC小于或等于目标会话计数(TSC),也就是说可以添加会话,则此进程会将下一个块分配至当前会话(330)并转至(335)。
[0098]图4为拥塞控制器进程的流程图,该控制器用于决定优化线路使用的最佳策略。当图3中的进程找不到其他活动会话时将调用图4中的进程。该流程图介绍了根据外部更改(如线路更改)或内部更改(系统所做的最后策略变化)选择最恰当策略的进程。
[0099]该进程将检查CSC中最后更改之后所过时间是否在允许的时间限制内(400)。如果不在允许的时间限制内-将复位定时器(460)。该检查的目的是为了在策略更改及后续结果检查之间留出充足的时间,以稳定系统。
[0100]如果已过去足够时间,则该进程将检查当前策略是否为第一个策略(即,具有无穷大持续时间的默认系统策略)(402)。如果是-将设置第一个会话的结束偏差(403)并选择第二个默认策略(404),从而具有预定义会话数和进程,以根据以下公式计算新块大小(450):ChunkSize = CDS*TimeInterval/TSC,其中 TimeInterval 通常为几秒,TSC 由选定策略决定。
[0101]如果当前策略不是第一个策略,则该进程将检查自最后一次检查之后策略是否已更改(405)。如果未发现策略更改,则该进程将继续检查外部更改是否对通信线路造成影响且需要更改策略。该进程将检查当前总下载速度(CDS)是否小于currentStrategyMax*CONSTl (410),其中CONSTl为以百分比表示的常量。例如,如果CONSTl = 0.8,则步骤(410)将检查性能是否至少下降20% (与当前策略的最大吞吐量相比)。如果检查结果为肯定-将会做出策略更改决策且会选择具有相对最高下载速度的策略(415)。该进程随后将继续计算新块大小(450)。
[0102]另外,如果当前总下载速度(Q)S)不小于currentStrategyMax*CONSTl -则该进程将检查当前总下载速度(O)S)是否大于currentStrategyBest*C0NST2 (420),其中C0NST2为以百分比表示的常量。例如,如果C0NST2 = 0.9,则步骤(420)将检查当前性能是否接近当前策略的最大限值的90%并且该进程很可能需要选择具有较高最佳下载速度的策略(如存在)。如果检查结果为肯定-将会做出更改策略的决定且会选择具有最高下载速度的策略(425)。
[0103]无论策略是否已更改,该进程随后都将继续计算新块大小(450)。
[0104]在步骤(405)中,如果自最后一次检查之后已更改策略,则该进程将继续检查策略更改是否对通信线路造成影响且需要进行其他策略更改。该进程将检查CDS是否大于PDS*lowerThd (预定义较低阈值)(430),换而言之,即是否已提高下载速度。如果已提高,则该进程随后将继续检查CDS是否大于roS*upperThrld(预定义高阈值)(435),换而言之,即是否已显著提高下载速度。总会话计数(TSC)随后将增加1(445)或乘以2(440),具体取决于下载速度的更改幅度。随后将计算新块大小(450)并复位定时器(460)。
[0105]在步骤(430)中,如果已确定下载速度自上次策略更改之后未提高,则该进程将转至步骤(450),以重新计算优化块大小并复位定时器。
[0106]图5所示图表显示了使用多个动态流根据本发明方法获得的实际结果。
[0107]图6所示图表显示了使用单个流获得的实际结果。单个流的速度可能会因瞬间高数据包丢失而大大下降,但如果是使用多个流,则其对总速度的影响不会很大(实际上,它会随流数而减少)。增加流数量但不监控总吞吐量和调整片段大小可能会导致所有流丢失数据包并且使总吞吐量非常糟糕。
[0108]熟悉该技术领域的人士将意识到,本发明的各个方面可能作为系统、方法或计算机程序产品来实施。相应地,本发明的各个方面可能采取纯硬件、纯软件(包括固件、驻留软件、微代码等)或软硬件结合的实施方式,本文可能会将它们统称为“电路”、“模块”或“系统”。此外,本发明的各个方面可能采取计算机程序产品的形式,通过一个或多个载有计算机可读程序代码的计算机可读介质来实现。
[0109]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可能包括但不限于电子、磁、光学、电磁、红外或半导体系统、装置或设备,或者上述各项的任意合适组合。计算机可读存储介质更具体的例子(不完全列表)包括:有一根或多根线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备,或者上述各项的任意合适组合。就本文而言,计算机可读存储介质可以是任何能包含或存储程序的有形介质,该程序须可供指令执行系统、装置或设备使用或者与之配合使用。
[0110]计算机可读信号介质可包括以各种方式(例如在基带中传播或者作为载波的一部分传播)传播的数据信号,其中载有计算机可读的程序代码。这种传播的信号可以采用多种形式,包括但不限于电磁信号、光信号或任意合适的组合。计算机可读信号介质可以是计算机可读存储介质以外的任何计算机可读介质,并且该计算机可读介质可以发送、传播或者传输可供指令执行系统、装置或设备使用或者与之配合使用的程序。
[0111]计算机可读介质上载有的程序代码可使用任何合适的介质进行传输,所述介质包括但不限于无线、有线线路、光缆、射频等,或者上述各项的任意合适组合。
[0112]用于执行本发明各方面操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写,所述编程语言包括面向对象的编程语言,例如Java、Smalltalk、C++等,还包括常规的过程式编程语言,例如“C”语言或类似的编程语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在涉及远程执行的情形中,远程计算机可以通过任何类型的网络,包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用互联网服务提供商来通过互联网连接)。
[0113]上文根据本发明的实施方式,参照其方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中多个方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而赋予这些设备特定能力,使得通过计算机或其他可编程数据处理装置的处理器执行的这些指令能创造某些途径,用于实现流程图和/或框图方框中指定的功能/操作。
[
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1