br>[0096]在步驟(305)中,此進(jìn)程將檢查帶字節(jié)偏差的下載是否受URL(范圍請求)的支持。如果支持部分下載,則此進(jìn)程將通過循環(huán),該循環(huán)可根據(jù)擁塞控制器設(shè)定的參數(shù)監(jiān)控活動會話的狀態(tài)以及添加或提取CSC中的會話。會話控制器將從活動會話列表中拉出第一個會話(315),并檢查其是否已終止(317)。如果會話已終止,則它將檢查當(dāng)前會話計數(shù)(CSC)是否大于目標(biāo)會話計數(shù)(TSC) (320)。如果是,它將丟棄一個會話(325),檢查下一個會話是否可用(335),如果可用,則將其選擇為活動(342)。該進(jìn)程隨后將返回至(317),以檢查第一個活動會話是否已終止。另外,如果下一個會話不可用,則該進(jìn)程將檢查CSC是否小于TSC (340),如果是,則將為下一個塊添加新會話(345),直到CSC等于TSC。它隨后將轉(zhuǎn)至圖4以檢查當(dāng)前策略的性能。
[0097]在步驟(320)中,如果已確定CSC小于或等于目標(biāo)會話計數(shù)(TSC),也就是說可以添加會話,則此進(jìn)程會將下一個塊分配至當(dāng)前會話(330)并轉(zhuǎn)至(335)。
[0098]圖4為擁塞控制器進(jìn)程的流程圖,該控制器用于決定優(yōu)化線路使用的最佳策略。當(dāng)圖3中的進(jìn)程找不到其他活動會話時將調(diào)用圖4中的進(jìn)程。該流程圖介紹了根據(jù)外部更改(如線路更改)或內(nèi)部更改(系統(tǒng)所做的最后策略變化)選擇最恰當(dāng)策略的進(jìn)程。
[0099]該進(jìn)程將檢查CSC中最后更改之后所過時間是否在允許的時間限制內(nèi)(400)。如果不在允許的時間限制內(nèi)-將復(fù)位定時器(460)。該檢查的目的是為了在策略更改及后續(xù)結(jié)果檢查之間留出充足的時間,以穩(wěn)定系統(tǒng)。
[0100]如果已過去足夠時間,則該進(jìn)程將檢查當(dāng)前策略是否為第一個策略(即,具有無窮大持續(xù)時間的默認(rèn)系統(tǒng)策略)(402)。如果是-將設(shè)置第一個會話的結(jié)束偏差(403)并選擇第二個默認(rèn)策略(404),從而具有預(yù)定義會話數(shù)和進(jìn)程,以根據(jù)以下公式計算新塊大小(450):ChunkSize = CDS*TimeInterval/TSC,其中 TimeInterval 通常為幾秒,TSC 由選定策略決定。
[0101]如果當(dāng)前策略不是第一個策略,則該進(jìn)程將檢查自最后一次檢查之后策略是否已更改(405)。如果未發(fā)現(xiàn)策略更改,則該進(jìn)程將繼續(xù)檢查外部更改是否對通信線路造成影響且需要更改策略。該進(jìn)程將檢查當(dāng)前總下載速度(CDS)是否小于currentStrategyMax*CONSTl (410),其中CONSTl為以百分比表示的常量。例如,如果CONSTl = 0.8,則步驟(410)將檢查性能是否至少下降20% (與當(dāng)前策略的最大吞吐量相比)。如果檢查結(jié)果為肯定-將會做出策略更改決策且會選擇具有相對最高下載速度的策略(415)。該進(jìn)程隨后將繼續(xù)計算新塊大小(450)。
[0102]另外,如果當(dāng)前總下載速度(Q)S)不小于currentStrategyMax*CONSTl -則該進(jìn)程將檢查當(dāng)前總下載速度(O)S)是否大于currentStrategyBest*C0NST2 (420),其中C0NST2為以百分比表示的常量。例如,如果C0NST2 = 0.9,則步驟(420)將檢查當(dāng)前性能是否接近當(dāng)前策略的最大限值的90%并且該進(jìn)程很可能需要選擇具有較高最佳下載速度的策略(如存在)。如果檢查結(jié)果為肯定-將會做出更改策略的決定且會選擇具有最高下載速度的策略(425)。
[0103]無論策略是否已更改,該進(jìn)程隨后都將繼續(xù)計算新塊大小(450)。
[0104]在步驟(405)中,如果自最后一次檢查之后已更改策略,則該進(jìn)程將繼續(xù)檢查策略更改是否對通信線路造成影響且需要進(jìn)行其他策略更改。該進(jìn)程將檢查CDS是否大于PDS*lowerThd (預(yù)定義較低閾值)(430),換而言之,即是否已提高下載速度。如果已提高,則該進(jìn)程隨后將繼續(xù)檢查CDS是否大于roS*upperThrld(預(yù)定義高閾值)(435),換而言之,即是否已顯著提高下載速度??倳捰嫈?shù)(TSC)隨后將增加1(445)或乘以2(440),具體取決于下載速度的更改幅度。隨后將計算新塊大小(450)并復(fù)位定時器(460)。
[0105]在步驟(430)中,如果已確定下載速度自上次策略更改之后未提高,則該進(jìn)程將轉(zhuǎn)至步驟(450),以重新計算優(yōu)化塊大小并復(fù)位定時器。
[0106]圖5所示圖表顯示了使用多個動態(tài)流根據(jù)本發(fā)明方法獲得的實際結(jié)果。
[0107]圖6所示圖表顯示了使用單個流獲得的實際結(jié)果。單個流的速度可能會因瞬間高數(shù)據(jù)包丟失而大大下降,但如果是使用多個流,則其對總速度的影響不會很大(實際上,它會隨流數(shù)而減少)。增加流數(shù)量但不監(jiān)控總吞吐量和調(diào)整片段大小可能會導(dǎo)致所有流丟失數(shù)據(jù)包并且使總吞吐量非常糟糕。
[0108]熟悉該技術(shù)領(lǐng)域的人士將意識到,本發(fā)明的各個方面可能作為系統(tǒng)、方法或計算機(jī)程序產(chǎn)品來實施。相應(yīng)地,本發(fā)明的各個方面可能采取純硬件、純軟件(包括固件、駐留軟件、微代碼等)或軟硬件結(jié)合的實施方式,本文可能會將它們統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的各個方面可能采取計算機(jī)程序產(chǎn)品的形式,通過一個或多個載有計算機(jī)可讀程序代碼的計算機(jī)可讀介質(zhì)來實現(xiàn)。
[0109]可以采用一個或多個計算機(jī)可讀介質(zhì)的任意組合。計算機(jī)可讀介質(zhì)可以是計算機(jī)可讀信號介質(zhì)或計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)可能包括但不限于電子、磁、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置或設(shè)備,或者上述各項的任意合適組合。計算機(jī)可讀存儲介質(zhì)更具體的例子(不完全列表)包括:有一根或多根線的電氣連接、便攜式計算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光存儲設(shè)備、磁存儲設(shè)備,或者上述各項的任意合適組合。就本文而言,計算機(jī)可讀存儲介質(zhì)可以是任何能包含或存儲程序的有形介質(zhì),該程序須可供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或者與之配合使用。
[0110]計算機(jī)可讀信號介質(zhì)可包括以各種方式(例如在基帶中傳播或者作為載波的一部分傳播)傳播的數(shù)據(jù)信號,其中載有計算機(jī)可讀的程序代碼。這種傳播的信號可以采用多種形式,包括但不限于電磁信號、光信號或任意合適的組合。計算機(jī)可讀信號介質(zhì)可以是計算機(jī)可讀存儲介質(zhì)以外的任何計算機(jī)可讀介質(zhì),并且該計算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸可供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或者與之配合使用的程序。
[0111]計算機(jī)可讀介質(zhì)上載有的程序代碼可使用任何合適的介質(zhì)進(jìn)行傳輸,所述介質(zhì)包括但不限于無線、有線線路、光纜、射頻等,或者上述各項的任意合適組合。
[0112]用于執(zhí)行本發(fā)明各方面操作的計算機(jī)程序代碼可以用一種或多種編程語言的任意組合來編寫,所述編程語言包括面向?qū)ο蟮木幊陶Z言,例如Java、Smalltalk、C++等,還包括常規(guī)的過程式編程語言,例如“C”語言或類似的編程語言。程序代碼可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機(jī)上且部分在遠(yuǎn)程計算機(jī)上執(zhí)行,或者完全在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程執(zhí)行的情形中,遠(yuǎn)程計算機(jī)可以通過任何類型的網(wǎng)絡(luò),包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利用互聯(lián)網(wǎng)服務(wù)提供商來通過互聯(lián)網(wǎng)連接)。
[0113]上文根據(jù)本發(fā)明的實施方式,參照其方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中多個方框的組合,都可以由計算機(jī)程序指令實現(xiàn)。這些計算機(jī)程序指令可以提供給通用計算機(jī)、專用計算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器,從而賦予這些設(shè)備特定能力,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的這些指令能創(chuàng)造某些途徑,用于實現(xiàn)流程圖和/或框圖方框中指定的功能/操作。
[