部分。
[0036]在所附圖樣中:
[0037]圖1A系統(tǒng)地介紹了兩個主要實(shí)體,包含由可變下載會話數(shù)和擁塞控制器組成的典型多會話下載控制器。
[0038]圖1B系統(tǒng)地介紹了掛起片段的緩沖列表;
[0039]圖2為示例會話控制器產(chǎn)生的決策進(jìn)程流程圖;
[0040]圖3為用于實(shí)施圖4流程選定策略的進(jìn)程流程圖。
[0041]圖4為另一個擁塞控制器進(jìn)程的流程圖,該控制器用于決定優(yōu)化線路使用的最佳策略;
[0042]圖5中所示原理圖演示了如何使用多個流實(shí)現(xiàn)更好性能;
[0043]圖6所示圖表顯示了使用單個流獲得的實(shí)際結(jié)果。
[0044]首選實(shí)施例的詳細(xì)說明
[0045]本發(fā)明介紹了一種可使用擁塞控制機(jī)制有效控制多個連接吞吐量、進(jìn)而減少與單個流相關(guān)問題的方法。
[0046]以下說明及圖樣中將涉及到下列縮略語:
[0047]CSC-當(dāng)前下載會話計數(shù)
[0048]TSC-目標(biāo)下載會話計數(shù)=當(dāng)前鏈接總量
[0049]PSC-先前會話計數(shù)
[0050]⑶S-當(dāng)前下載速度
[0051]PDS-先前下載速度
[0052]以下說明中將用到下列術(shù)語:
[0053]塊-由起始和結(jié)束偏差確定的長度可變數(shù)據(jù)部分;
[0054]片段-具有預(yù)定義長度的數(shù)據(jù)部分;片段可以包括單個塊或?qū)⑦M(jìn)程分成多個塊。
[0055]可以由一個或多個會話使用一個或多個范圍請求下載每個塊。另外,可以并行下載多個塊。
[0056]當(dāng)前片段(CF)-當(dāng)前請求的片段;
[0057]活動片段(AF)-正在下載的片段;
[0058]掛起片段(PF)-在播放器請求之前已下載的片段;
[0059]目標(biāo)完成片段(TCF)-期望完成的下一個片段的序列號(順序編號);
[0060]掛起片段計數(shù)(PFC)-掛起片段的數(shù)量;
[0061]活動掛起片段數(shù)(APC);
[0062]最后掛起片段(LPF)。
[0063]下載會話-用于控制塊數(shù)據(jù)從URL (統(tǒng)一資源定位符)到另一客戶端的傳輸?shù)倪壿媽?shí)體。例如:客戶端與http://www.youtube, com/之間的HTTP連接。下載會話由其連接和持續(xù)時間定義。
[0064]自適應(yīng)會話-用于下載整個片段或長度可變的預(yù)定義片段塊的會話;
[0065]漸進(jìn)式會話-用于下載沒有預(yù)定義片段的長度可變文件塊的會話;
[0066]總下載速度-在一定時間間隔內(nèi)從所有會話中獲得的總數(shù)據(jù)(字節(jié)數(shù))除以時間間隔。
[0067]策略-并發(fā)下載會話數(shù)及其目標(biāo)下載持續(xù)時間。
[0068]每個策略具有以下屬性:
[0069]a.currentStrategyBest,由以下定義
[0070]If(currentDownloadSpeed>currentStarategyBest){
[0071]currentStarategyBest = currentDownloadSpeed ;
[0072]}Else{
[0073]currentStrategyBest = currentStrategyBest- (currentStrategyBest-currentAverageSpeed)/20);
[0074]}
[0075]b.currentStrategyfforse,由以下定義:
[0076]If(currentDownloadSpeecKcurrentStarategyfforse){
[0077]currentStarategyfforse = currentDownloadSpeed ;
[0078]}Else{
[0079]currentStarategyfforse = currentStarategyfforse+(currentAverageSpeed-currentStarategyfforse)/20 ;
[0080]}
[0081]c.currentStrategyMax,由當(dāng)前策略(自最后將其選為活動后)測得的最大下載速度定義。
[0082]d.currentStrategyMin,由當(dāng)前策略(自最后將其選為活動后)測得的最小下載速度定義。
[0083]本發(fā)明提供一種并行使用可變流數(shù)以隨時擴(kuò)大鏈接吞吐量的通用機(jī)制(無論所下載內(nèi)容及其播放速度如何)。
[0084]圖1A系統(tǒng)地介紹本發(fā)明示例實(shí)施例的主要實(shí)體。會話控制器(100)(集成到客戶端應(yīng)用程序的軟件模塊或作為客戶端設(shè)備制造商所提供的操作系統(tǒng)/固件一部分的軟件)負(fù)責(zé)管理和監(jiān)控URL(130)的可變下載會話數(shù)(110),其中,用于決定并發(fā)會話數(shù)、各會話持續(xù)時間和/或片段大小的策略由擁塞控制器(120)決定。
[0085]該會話控制器使緩沖器保持當(dāng)前片段以及掛起片段列表(此列表初始為空),如示意圖1B所示。
[0086]圖2所示為示例會話控制器產(chǎn)生的決策進(jìn)程流程圖。它以接收來自播放器下載指定文件的請求為起點(diǎn)(200)。該會話先根據(jù)文件類型檢查所請求文件應(yīng)以漸進(jìn)性會話下載還是自適應(yīng)會話下載(即,如果文件為預(yù)分成給定大小的片段)(205)。其假定控制器知道清單文件/播放列表文件并知道如何檢索當(dāng)前質(zhì)量等級。
[0087]如果下載模式已確定為自適應(yīng),即已預(yù)定義片段大小,則該進(jìn)程將檢查加速是否未開始第I個活動片段以及剩下的下載時間是否大于某個閾值(210)。如果符合這兩個條件,則將為活動片段開始片段加速(220)(圖3)。
[0088]該會話控制器將檢查目標(biāo)完成片段是否已完成(230),S卩,進(jìn)程當(dāng)前等待的片段將完成下載。如已完成,則該進(jìn)程將根據(jù)以下公式計算所允許下載的并發(fā)片段數(shù)(不會影響單個片段的下載速度):
[0089]允許的并發(fā)數(shù)=(最后完成片段的下載時間/最后完成的片段持續(xù)時間)* (掛起片段數(shù)+1)。
[0090]TCF(進(jìn)程當(dāng)前等待的片段)將遞增(250)。如果以下條件為真時,該進(jìn)程隨后檢查是否應(yīng)添加掛起片段(260): (LPF運(yùn)行超過10ms I | LPF已完成)&& (PFCXMaxPendingFragments)&&(允許的并發(fā)數(shù)〉A(chǔ)PC+1) | | (APC〈允許的并發(fā)數(shù)+1)&&(LPF剩余時間〈LPF片段持續(xù)時間 /(PFC+ 安全系數(shù)))I I (LPF 進(jìn)度% >100-100/(PC+3)),其中,MaxPendingFragments為最大掛起片段數(shù)。無需檢索超過最大數(shù),因?yàn)閿?shù)據(jù)沒有用。
[0091]這些條件可確保僅在當(dāng)前下載已至少完成當(dāng)前策略定義的特定持續(xù)時間百分比(提高安全系數(shù),以免根據(jù)隨機(jī)波動進(jìn)行決策)或片段大小定義的特定字節(jié)計數(shù)百分比時才可開始下一個下載任務(wù)。
[0092]掛起片段隨后將定義(添加)為活動(270)且該進(jìn)程隨后將等待維護(hù)間隔(280)并返回至(210) ο
[0093]使用TCP協(xié)議(或HTTP)時,總下載速度可能受TCP內(nèi)部擁塞控制影響,具體取決于因中斷而發(fā)回的數(shù)據(jù)包數(shù)量。
[0094]如果下載模式已確定為漸進(jìn)式,則第一個會話由具有無窮大持續(xù)時間片段的默認(rèn)策略定義(225)。
[0095]圖3為用于實(shí)施圖4流程選定策略的流程圖??砂疵總€預(yù)定義時間間隔調(diào)用圖3中的進(jìn)程,該進(jìn)程可以確保CSC(當(dāng)前會話計數(shù))等于圖4中的進(jìn)程所確定的計數(shù),并且調(diào)用圖4中的進(jìn)程以在任何給定時間使用可用帶寬。該進(jìn)程可以測量當(dāng)前下載速度、將其與當(dāng)前測得的下載速度比較并確定應(yīng)運(yùn)行的并發(fā)會話數(shù)以及每個會話的持續(xù)時間。<