本申請(qǐng)要求于2014年3月18日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY”、編號(hào)為61/954,970的共同未決的美國(guó)臨時(shí)專利申請(qǐng)和于2014年5月28日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY”、序列號(hào)為14/289,403的美國(guó)專利申請(qǐng)的優(yōu)先權(quán);故以引用方式將所述美國(guó)臨時(shí)專利申請(qǐng)和美國(guó)專利申請(qǐng)的公開(kāi)內(nèi)容并入本文。本申請(qǐng)涉及共同讓與的于2014年5月28日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING EXTENDED TRANSMISSION CONTROL FUNCTIONALITY”、序列號(hào)為14/289,016的美國(guó)專利申請(qǐng);于2014年5月28日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING EXTENDED TRANSMISSION CONTROL FUNCTIONALITY”、序列號(hào)為14/289,181的申請(qǐng);于2014年5月28日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING ENHANCED SIGNALING”、序列號(hào)為14/289,348的申請(qǐng);于2014年5月28日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING SELECTIVE UTILIZATION OF REDUNDANT ENCODED CONTENT DATA FUNCTIONALITY”、序列號(hào)為14/289,458的申請(qǐng);于2014年5月28日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING A MULTIPLE INTERFACE ARCHITECTURE”、序列號(hào)14/289,476的申請(qǐng);以及于2014年5月28日遞交的、名稱為“TRANSPORT ACCELERATOR IMPLEMENTING CLIENT SIDE TRANSMISSION FUNCTIONALITY”、序列號(hào)14/289,499的申請(qǐng);所述申請(qǐng)中的每個(gè)申請(qǐng)被與本文一起并發(fā)地遞交,并且以引用方式將所述申請(qǐng)的全部公開(kāi)內(nèi)容明確地并入本文。
背景技術(shù):
越來(lái)越多的內(nèi)容正通過(guò)可用的通信網(wǎng)絡(luò)被傳輸。通常,該內(nèi)容包括許多類型的數(shù)據(jù),所述數(shù)據(jù)包括例如音頻數(shù)據(jù)、視頻數(shù)據(jù)、圖像數(shù)據(jù)等。視頻內(nèi)容,特別是高分辨率視頻內(nèi)容,通常包括相對(duì)大的數(shù)據(jù)文件或者數(shù)據(jù)的其它集合。相應(yīng)地,消費(fèi)這樣的內(nèi)容的端用戶設(shè)備或者其它客戶端設(shè)備上的用戶代理(UA)通常請(qǐng)求并且接收包括期望的視頻內(nèi)容的內(nèi)容的分段的序列。例如,UA可以包括在用戶設(shè)備上執(zhí)行的請(qǐng)求數(shù)據(jù)(通常是多媒體數(shù)據(jù))并且接收所請(qǐng)求的數(shù)據(jù)以用于進(jìn)行進(jìn)一步處理以及可能用于顯示在用戶設(shè)備上的客戶端應(yīng)用或者過(guò)程。
許多類型的應(yīng)用目前依賴于HTTP來(lái)進(jìn)行前述的內(nèi)容傳遞。在許多這樣的應(yīng)用中,HTTP傳輸?shù)男阅軐?duì)于伴隨應(yīng)用的用戶體驗(yàn)是至關(guān)重要的。例如,直播流傳送具有幾個(gè)可能妨礙視頻流傳送客戶端的性能的限制。兩個(gè)限制特別突出。第一,媒體片段隨時(shí)間逐個(gè)地變得可用。該限制防止客戶端連續(xù)地下載大量數(shù)據(jù),這繼而影響下載速率估計(jì)的準(zhǔn)確度。由于多數(shù)流傳送客戶端根據(jù)“請(qǐng)求-下載-估計(jì)”的循環(huán)來(lái)操作,所以其當(dāng)下載估計(jì)不準(zhǔn)確時(shí)通常運(yùn)轉(zhuǎn)得不好。第二,當(dāng)觀看直播事件流傳送時(shí),用戶一般不想遭受與實(shí)際直播事件時(shí)間軸的長(zhǎng)延遲。這樣的行為防止流傳送客戶端建立大緩沖器,這繼而可能導(dǎo)致更多重新緩沖。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本公開(kāi)內(nèi)容的實(shí)施例提供了用于由客戶端設(shè)備的傳輸加速器(TA)加速?gòu)膬?nèi)容服務(wù)器向所述客戶端設(shè)備的用戶代理(UA)傳遞內(nèi)容的方法。實(shí)施例的方法包括:由所述TA的請(qǐng)求管理器(RM)將由所述UA提供的分段請(qǐng)求各自細(xì)分成用于請(qǐng)求所述內(nèi)容的塊(chunk)的多個(gè)塊請(qǐng)求,其中,所述塊請(qǐng)求的內(nèi)容塊的大小被確定為獨(dú)立于所述內(nèi)容服務(wù)器的網(wǎng)絡(luò)擁塞避免操作來(lái)提高網(wǎng)絡(luò)傳輸速率。實(shí)施例的方法還包括:由所述RM向所述TA的連接管理器(CM)提供所述多個(gè)塊請(qǐng)求中的塊請(qǐng)求以便請(qǐng)求所述內(nèi)容的塊;以及,由所述CM經(jīng)由在所述CM與所述內(nèi)容服務(wù)器之間建立的多個(gè)連接從所述內(nèi)容服務(wù)器請(qǐng)求所述內(nèi)容的所述塊。
根據(jù)本公開(kāi)內(nèi)容的實(shí)施例提供了被配置為用于由客戶端設(shè)備的傳輸加速器(TA)加速?gòu)膬?nèi)容服務(wù)器向所述客戶端設(shè)備的用戶代理(UA)傳遞內(nèi)容的裝置。實(shí)施例的裝置包括:用于由所述TA的請(qǐng)求管理器(RM)將由所述UA提供的分段請(qǐng)求各自細(xì)分成用于請(qǐng)求所述內(nèi)容的塊的多個(gè)塊請(qǐng)求的單元,其中,所述塊請(qǐng)求的內(nèi)容塊的大小被確定為獨(dú)立于所述內(nèi)容服務(wù)器的網(wǎng)絡(luò)擁塞避免操作來(lái)提高網(wǎng)絡(luò)傳輸速率。實(shí)施例的裝置還包括:用于由所述RM向所述TA的連接管理器(CM)提供所述多個(gè)塊請(qǐng)求中的塊請(qǐng)求以用于請(qǐng)求所述內(nèi)容的塊的單元;以及,用于由所述CM經(jīng)由在所述CM與所述內(nèi)容服務(wù)器之間建立的多個(gè)連接從所述內(nèi)容服務(wù)器請(qǐng)求所述內(nèi)容的所述塊的單元。
根據(jù)本公開(kāi)內(nèi)容的實(shí)施例提供了用于由客戶端設(shè)備的傳輸加速器(TA)加速?gòu)膬?nèi)容服務(wù)器向所述客戶端設(shè)備的用戶代理(UA)傳遞內(nèi)容的計(jì)算機(jī)程序產(chǎn)品。實(shí)施例的計(jì)算機(jī)程序產(chǎn)品包括具有記錄在其上的程序代碼的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)。實(shí)施例的程序代碼包括:用于由所述TA的請(qǐng)求管理器(RM)將由所述UA提供的分段請(qǐng)求各自細(xì)分成用于請(qǐng)求所述內(nèi)容的塊的多個(gè)塊請(qǐng)求的程序代碼,其中,所述塊請(qǐng)求的內(nèi)容塊的大小被確定為獨(dú)立于所述內(nèi)容服務(wù)器的網(wǎng)絡(luò)擁塞避免操作來(lái)提高網(wǎng)絡(luò)傳輸速率。實(shí)施例的程序代碼還包括:用于由所述RM向所述TA的連接管理器(CM)提供所述多個(gè)塊請(qǐng)求中的塊請(qǐng)求以用于請(qǐng)求所述內(nèi)容的塊的程序代碼;以及,用于由所述CM經(jīng)由在所述CM與所述內(nèi)容服務(wù)器之間建立的多個(gè)連接從所述內(nèi)容服務(wù)器請(qǐng)求所述內(nèi)容的所述塊的程序代碼。
根據(jù)本公開(kāi)內(nèi)容的實(shí)施例提供了被配置為用于由客戶端設(shè)備的傳輸加速器(TA)加速?gòu)膬?nèi)容服務(wù)器向所述客戶端設(shè)備的用戶代理(UA)傳遞內(nèi)容的裝置。實(shí)施例的裝置包括至少一個(gè)處理器和耦合到所述至少一個(gè)處理器的存儲(chǔ)器。實(shí)施例的所述至少一個(gè)處理器被配置為:由所述TA的請(qǐng)求管理器(RM)將由所述UA提供的分段請(qǐng)求各自細(xì)分成用于請(qǐng)求所述內(nèi)容的塊的多個(gè)塊請(qǐng)求,其中,所述塊請(qǐng)求的內(nèi)容塊的大小被確定為獨(dú)立于所述內(nèi)容服務(wù)器的網(wǎng)絡(luò)擁塞避免操作來(lái)提高網(wǎng)絡(luò)傳輸速率。實(shí)施例的所述至少一個(gè)處理器還被配置為:由所述RM向所述TA的連接管理器(CM)提供所述多個(gè)塊請(qǐng)求中的塊請(qǐng)求以用于請(qǐng)求所述內(nèi)容的塊;以及,由所述CM經(jīng)由在所述CM與所述內(nèi)容服務(wù)器之間建立的多個(gè)連接從所述內(nèi)容服務(wù)器請(qǐng)求所述內(nèi)容的所述塊。
附圖說(shuō)明
圖1A示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的適于傳輸加速操作的系統(tǒng)。
圖1B示出了關(guān)于如可以關(guān)于根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的傳輸加速器的配置來(lái)實(shí)現(xiàn)的請(qǐng)求管理器和連接管理器的實(shí)施例的細(xì)節(jié)。
圖1C示出了關(guān)于根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的傳輸加速器配置的細(xì)節(jié)。
圖2示出了說(shuō)明根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的提供請(qǐng)求管理器和連接管理器功能的傳輸加速器的操作的流程圖。
圖3示出了使用門限參數(shù)來(lái)確定何時(shí)可以在連接上請(qǐng)求另一個(gè)數(shù)據(jù)塊的連接管理器的示例性實(shí)施例。
圖4示出了使用門限參數(shù)來(lái)確定何時(shí)連接管理器當(dāng)前能夠立即作出塊請(qǐng)求的連接管理器的示例性實(shí)施例。
圖5示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的利用關(guān)于多個(gè)內(nèi)容服務(wù)器來(lái)使用的多個(gè)連接來(lái)進(jìn)行對(duì)于客戶端設(shè)備的內(nèi)容傳輸。
圖6示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的在其中將請(qǐng)求管理器與多個(gè)連接管理器接合的配置。
圖7示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的下載塊速率減損。
圖8示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的將塊請(qǐng)求分類到紀(jì)元中。
圖9示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的下載流水線速率減損。
圖10A至圖10C示出了根據(jù)本公開(kāi)內(nèi)容的各種T值選擇的結(jié)果。
圖11示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的各種下載塊速率和下載流水線速率組合的平均間隙。
圖12示出了用于根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的重新排序?qū)拥倪壿媶卧?/p>
圖13A至圖13C示出了根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的請(qǐng)求管理器與連接管理器之間的算法執(zhí)行的高級(jí)調(diào)用流。
圖14A至圖14C示出了針對(duì)使用根據(jù)本公開(kāi)內(nèi)容的實(shí)施例的傳輸加速器連接到單個(gè)起源服務(wù)器的單個(gè)用戶代理所生成的圖表。
具體實(shí)施方式
術(shù)語(yǔ)“示例性”在本文中用于表示“充當(dāng)示例、實(shí)例或者說(shuō)明”。任何在本文中被描述為“示例性”的方面不必理解為是比其它方面優(yōu)選或者有優(yōu)勢(shì)的。
在本描述內(nèi)容中,術(shù)語(yǔ)“應(yīng)用”可以還包括具有可執(zhí)行內(nèi)容的文件,可執(zhí)行內(nèi)容諸如是:目標(biāo)代碼、腳本、字節(jié)碼、標(biāo)記語(yǔ)言文件和補(bǔ)丁。另外,在本文中引用的“應(yīng)用”可以還包括本質(zhì)上不是可執(zhí)行的的文件,所述文件諸如是可能需要被打開(kāi)的文檔或者需要被訪問(wèn)的其它數(shù)據(jù)文件。
如在本描述內(nèi)容中使用的,術(shù)語(yǔ)“內(nèi)容”可以包括具有視頻、音頻、視頻和音頻的組合的數(shù)據(jù)、或者處于一個(gè)或多個(gè)質(zhì)量水平的其它數(shù)據(jù),所述質(zhì)量水平通過(guò)比特率、分辨率或者其它因素被確定。內(nèi)容可以還包括可執(zhí)行內(nèi)容,可執(zhí)行內(nèi)容諸如是:目標(biāo)代碼、腳本、字節(jié)碼、標(biāo)記語(yǔ)言文件和補(bǔ)丁。另外,“內(nèi)容”可以還包括本質(zhì)上不可執(zhí)行的文件,所述文件諸如是可能需要被打開(kāi)的文檔或者需要被訪問(wèn)的其它數(shù)據(jù)文件。
如本描述內(nèi)容中使用的,術(shù)語(yǔ)“分段”指可以被用戶設(shè)備請(qǐng)求和/或在用戶設(shè)備處被接收的內(nèi)容的一個(gè)或多個(gè)部分。
如本描述內(nèi)容中使用的,術(shù)語(yǔ)“流傳送內(nèi)容”指可以根據(jù)實(shí)現(xiàn)內(nèi)容的實(shí)時(shí)傳輸或者在一段時(shí)間中的內(nèi)容的傳輸?shù)囊粋€(gè)或多個(gè)標(biāo)準(zhǔn)來(lái)從服務(wù)器設(shè)備被發(fā)送并且在用戶設(shè)備處被接收的內(nèi)容。流傳送內(nèi)容標(biāo)準(zhǔn)的示例包括那些支持經(jīng)解交織的信道(或者多個(gè)信道)的流傳送內(nèi)容標(biāo)準(zhǔn)和那些不支持經(jīng)解交織的信道(或者多個(gè)信道)的流傳送內(nèi)容標(biāo)準(zhǔn)。
如本描述內(nèi)容中使用的,術(shù)語(yǔ)“部件”、“數(shù)據(jù)庫(kù)”、“模塊”、“系統(tǒng)”等旨在指計(jì)算機(jī)相關(guān)的實(shí)體,計(jì)算機(jī)相關(guān)的實(shí)體是硬件、固件、硬件和軟件的組合、軟件、或者執(zhí)行中的軟件。例如,部件可以但不限于是運(yùn)行在處理器上的過(guò)程、處理器、對(duì)象、可執(zhí)行文件、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說(shuō)明,運(yùn)行在計(jì)算設(shè)備上的應(yīng)用和計(jì)算設(shè)備兩者都可以是部件。一個(gè)或多個(gè)部件可以存在在過(guò)程和/或執(zhí)行的線程內(nèi),并且部件可以位于一個(gè)計(jì)算機(jī)上和/或被分布到兩個(gè)或多個(gè)計(jì)算機(jī)之中。另外,這些部件可以從具有存儲(chǔ)在其上的各種數(shù)據(jù)結(jié)構(gòu)的各種計(jì)算機(jī)可讀介質(zhì)執(zhí)行。部件可以諸如根據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)分組的信號(hào)通過(guò)本地和/或遠(yuǎn)程過(guò)程進(jìn)行通信(例如,來(lái)自一個(gè)部件的數(shù)據(jù)通過(guò)信號(hào)在本地系統(tǒng)中、分布式系統(tǒng)中和/或與其它系統(tǒng)跨諸如是互聯(lián)網(wǎng)的網(wǎng)絡(luò)地與另一個(gè)部件交互)。
如本文中使用的,術(shù)語(yǔ)“用戶裝備”、“用戶設(shè)備”和“客戶端設(shè)備”包括能夠從web服務(wù)器請(qǐng)求和接收內(nèi)容以及向web服務(wù)器發(fā)送信息的設(shè)備。這樣的設(shè)備可以是固定設(shè)備或者移動(dòng)設(shè)備。可以可互換地使用術(shù)語(yǔ)“用戶裝備”、“用戶設(shè)備”和“客戶端設(shè)備”。
如本文中使用的,術(shù)語(yǔ)“用戶”指在用戶設(shè)備上或者客戶端設(shè)備上接收內(nèi)容并且向網(wǎng)站發(fā)送信息的個(gè)人。
圖1A示出了根據(jù)本文中的概念適合于通過(guò)通信網(wǎng)絡(luò)來(lái)提供對(duì)諸如可以包括音頻數(shù)據(jù)、視頻數(shù)據(jù)、圖像數(shù)據(jù)、文件數(shù)據(jù)等的內(nèi)容的傳輸?shù)南到y(tǒng)100。相應(yīng)地,客戶端設(shè)備110被示為經(jīng)由網(wǎng)絡(luò)150與服務(wù)器130相通信,由此服務(wù)器130可以根據(jù)本公開(kāi)內(nèi)容的概念向客戶端設(shè)備110傳輸存儲(chǔ)在數(shù)據(jù)庫(kù)140中的各種內(nèi)容。應(yīng)當(dāng)認(rèn)識(shí)到,盡管僅單個(gè)客戶端設(shè)備和單個(gè)服務(wù)器和數(shù)據(jù)庫(kù)在圖1A中被表示,但系統(tǒng)100可以包括多個(gè)的任意或全部這樣的設(shè)備。例如,服務(wù)器130可以包括服務(wù)器群的服務(wù)器,其中,多個(gè)服務(wù)器可以被集中地和/或以分布式配置來(lái)放置,以為內(nèi)容傳輸?shù)母咚叫枨筇峁┓?wù)。替代地,諸如當(dāng)內(nèi)容中的一些或全部?jī)?nèi)容存在于也被并置在該設(shè)備上的數(shù)據(jù)庫(kù)140(高速緩存)中并且通過(guò)服務(wù)器130被提供給傳輸加速器120時(shí),服務(wù)器130可以被并置在與傳輸加速器120相同的設(shè)備上(例如,取代通過(guò)網(wǎng)絡(luò)150,直接通過(guò)I/O單元113連接到傳輸加速器120)。同樣地,用戶可以擁有多個(gè)客戶端設(shè)備,和/或多個(gè)用戶可以各自擁有一個(gè)或多個(gè)客戶端設(shè)備,所述客戶端設(shè)備中的任何或全部客戶端設(shè)備適合于根據(jù)本文中的概念的內(nèi)容傳輸。
客戶端設(shè)備110可以包括對(duì)可操作為經(jīng)由網(wǎng)絡(luò)150接收內(nèi)容的傳輸?shù)脑O(shè)備的各種配置。例如,客戶端設(shè)備110可以包括有線設(shè)備、無(wú)線設(shè)備、個(gè)人計(jì)算設(shè)備、平板或者墊板型計(jì)算設(shè)備、便攜式蜂窩電話、啟用WiFi的設(shè)備、啟用藍(lán)牙的設(shè)備、電視、具有顯示器的一副眼鏡、一副增強(qiáng)現(xiàn)實(shí)眼鏡或者任何其它可以使用任何可用的方法或者基礎(chǔ)設(shè)施與服務(wù)器130通信的被連接到網(wǎng)絡(luò)150的通信、計(jì)算或者接口設(shè)備??蛻舳嗽O(shè)備110被稱為“客戶端設(shè)備”,因?yàn)樗梢赃\(yùn)行為或者被連接到運(yùn)行為服務(wù)器130的客戶端的設(shè)備。
所示出的實(shí)施例的客戶端設(shè)備110包括多個(gè)功能框,所述多個(gè)功能框在這里被示為包括處理器111、存儲(chǔ)器112和輸入/輸出(I/O)單元113。盡管為簡(jiǎn)單起見(jiàn)未在圖1A中的表示中被示出,但客戶端設(shè)備110可以包括額外的功能框,例如,用戶接口、射頻(RF)模塊、照相機(jī)、傳感器陣列、顯示器、視頻播放器、瀏覽器等,所述各項(xiàng)中的一些或全部項(xiàng)可以被根據(jù)本文中的概念的操作利用。前述功能框可以通過(guò)一個(gè)或多個(gè)總線(例如,總線114)被操作地連接??偩€114可以包括用于允許所連接的單元、模塊和部件通信和互操作的邏輯和物理連接。
存儲(chǔ)器112可以是任何類型的易失性或者非易失性存儲(chǔ)器,并且在一個(gè)實(shí)施例中可以包括閃速存儲(chǔ)器。存儲(chǔ)器112可以被永久地安裝在客戶端設(shè)備110中,或者可以是可移除存儲(chǔ)器單元(例如,可移除存儲(chǔ)器卡)。盡管被示為單個(gè)單元,但存儲(chǔ)器112可以包括多個(gè)分立的存儲(chǔ)器和/或存儲(chǔ)器類型。
存儲(chǔ)器112可以存儲(chǔ)或者包括諸如可以形成應(yīng)用、操作系統(tǒng)、文件、電子文檔、內(nèi)容等的各種計(jì)算機(jī)可讀代碼段。例如,所示出的實(shí)施例的存儲(chǔ)器112包括定義傳輸加速器(TA)120和UA 129的計(jì)算機(jī)可讀代碼段,所述計(jì)算機(jī)可讀代碼段當(dāng)由處理器(例如,處理器111)執(zhí)行時(shí)提供可以如本文中描述的那樣操作的邏輯電路。由存儲(chǔ)器112存儲(chǔ)的代碼段可以提供除前述的TA 120和UA 129之外的應(yīng)用。例如,存儲(chǔ)器112可以存儲(chǔ)在根據(jù)本文中的實(shí)施例訪問(wèn)來(lái)自服務(wù)器130的內(nèi)容時(shí)有用的應(yīng)用(例如,瀏覽器)。如果服務(wù)器130是web服務(wù)器的話,這樣的瀏覽器可以是web瀏覽器,例如,用于通過(guò)連接151和152經(jīng)由網(wǎng)絡(luò)150訪問(wèn)和查看web內(nèi)容和經(jīng)由HTTP與服務(wù)器130通信的超文本傳輸協(xié)議(HTTP)web瀏覽器。作為一個(gè)示例,HTTP請(qǐng)求可以通過(guò)連接151和152經(jīng)由網(wǎng)絡(luò)150從客戶端設(shè)備110中的瀏覽器被發(fā)送給服務(wù)器130。HTTP響應(yīng)可以通過(guò)連接152和151經(jīng)由網(wǎng)絡(luò)150從服務(wù)器130被發(fā)送給客戶端設(shè)備110中的瀏覽器。
UA 129可操作為從諸如是服務(wù)器130的服務(wù)器請(qǐng)求和/或接收內(nèi)容。UA 129可以例如包括請(qǐng)求數(shù)據(jù)(例如,多媒體數(shù)據(jù))并且接收所請(qǐng)求的數(shù)據(jù)以便進(jìn)行進(jìn)一步處理以及可能便于顯示在客戶端設(shè)備110的顯示器上的客戶端應(yīng)用或者過(guò)程(例如,瀏覽器、DASH客戶端、HTTP直播流傳送(HLS)客戶端等)。例如,客戶端設(shè)備110可以執(zhí)行包括用于回放媒體的UA 129的代碼,所述代碼諸如是獨(dú)立的媒體回放應(yīng)用或者被配置為運(yùn)行在互聯(lián)網(wǎng)瀏覽器中的基于瀏覽器的媒體播放器。在根據(jù)實(shí)施例的操作中,UA 129決定在流傳送內(nèi)容會(huì)話期間的各種時(shí)間點(diǎn)處請(qǐng)求內(nèi)容文件的分段中的哪些分段或者序列以便傳輸。例如,UA 129的DASH客戶端配置可以操作為,諸如基于最近的下載狀況來(lái)決定在每個(gè)時(shí)間點(diǎn)處從內(nèi)容的哪個(gè)表示(例如,高分辨率表示、中等分辨率表示、低分辨率表示等)請(qǐng)求哪個(gè)分段。同樣地,UA 129的web瀏覽器配置可以操作為作出對(duì)web頁(yè)面或者其部分等的請(qǐng)求。通常,UA使用HTTP請(qǐng)求來(lái)請(qǐng)求這樣的分段。
TA 120根據(jù)本文中的概念適合于提供對(duì)期望的內(nèi)容的分段中的分段或者序列的增強(qiáng)傳遞(例如,可以在提供視頻流傳送、文件下載、基于web的應(yīng)用、一般web頁(yè)面等時(shí)可以被使用的前述的內(nèi)容分段)。實(shí)施例的TA120適于允許僅支持標(biāo)準(zhǔn)接口(例如,實(shí)現(xiàn)標(biāo)準(zhǔn)化TCP傳輸協(xié)議的HTTP 1.1接口)的通用或者傳統(tǒng)UA(即,還未被預(yù)先設(shè)計(jì)為與TA交互的UA)作出分段請(qǐng)求,以仍然從使用TA執(zhí)行那些請(qǐng)求中獲益。額外地或者替代地,實(shí)施例的TA 120提供增強(qiáng)型接口,增強(qiáng)型接口用于促進(jìn)向被設(shè)計(jì)為利用增強(qiáng)型接口的功能的UA提供進(jìn)一步的益處。實(shí)施例的TA 120適于根據(jù)現(xiàn)有內(nèi)容傳輸協(xié)議(諸如是通過(guò)實(shí)現(xiàn)標(biāo)準(zhǔn)化TCP傳輸協(xié)議的HTTP接口使用TCP)執(zhí)行分段請(qǐng)求,因此允許通用或者傳統(tǒng)媒體服務(wù)器(即,還未被預(yù)先設(shè)計(jì)為與TA交互的媒體服務(wù)器)為所述請(qǐng)求提供服務(wù),同時(shí)向UA和客戶端設(shè)備提供對(duì)分段的增強(qiáng)型傳遞。
在提供前述的增強(qiáng)型分段傳遞功能時(shí),本文中的實(shí)施例的TA 120包括如本文中描述的架構(gòu)部件和協(xié)議。例如,圖1A中所示出的實(shí)施例的TA 120包括請(qǐng)求管理器(RM)121和連接管理器(CM)122,其協(xié)作以提供如在下面進(jìn)一步描述的各種增強(qiáng)型分段傳遞功能。
除前述的形成應(yīng)用、操作系統(tǒng)、文件、電子文檔、內(nèi)容等的代碼段之外,存儲(chǔ)器112可以包括或者以其它方式提供被客戶端設(shè)備110的功能框使用的各種寄存器、緩沖器和存儲(chǔ)器單元。例如,存儲(chǔ)器112可以包括播放緩沖器,諸如,可以提供用于假脫機(jī)輸入(spool)來(lái)自服務(wù)器130的流傳送的分段的數(shù)據(jù)的先入/先出(FIFO)存儲(chǔ)器,并且被客戶端設(shè)備110回放。
實(shí)施例的處理器111可以是任何能夠執(zhí)行指令以控制客戶端設(shè)備110的操作和功能的通用或者專用處理器。盡管被示為是單個(gè)單元,但處理器111可以包括多個(gè)處理器或者分布式處理架構(gòu)。
I/O單元113可以包括和/或耦合到各種輸入/輸出部件。例如,I/O單元113可以包括和/或耦合到顯示器、揚(yáng)聲器、麥克風(fēng)、鍵區(qū)、指點(diǎn)設(shè)備、觸摸敏感屏幕、用戶接口控制單元和任何其它允許用戶提供輸入命令和從客戶端設(shè)備110接收輸出的設(shè)備或者系統(tǒng)。任何或者全部這樣的部件可以被用于提供客戶端設(shè)備110的用戶接口。額外地或者替代地,I/O單元113可以包括和/或耦合到磁盤控制器、網(wǎng)絡(luò)接口卡(NIC)、射頻(RF)收發(fā)機(jī)和任何其它促進(jìn)客戶端設(shè)備110的輸入和/或輸出功能的設(shè)備或者系統(tǒng)。
在用于訪問(wèn)和播放流傳送內(nèi)容的操作中,客戶端設(shè)備110使用鏈路151和152經(jīng)由網(wǎng)絡(luò)150與服務(wù)器130通信以獲得內(nèi)容數(shù)據(jù)(例如,如前述的分段),所述內(nèi)容數(shù)據(jù)當(dāng)被渲染時(shí)提供對(duì)內(nèi)容的回放。相應(yīng)地,UA 129可以包括由處理器111執(zhí)行的用于在客戶端設(shè)備110中建立內(nèi)容回放環(huán)境的內(nèi)容播放器應(yīng)用。當(dāng)發(fā)起對(duì)特定內(nèi)容文件的回放時(shí),UA 129可以與服務(wù)器130的內(nèi)容傳遞平臺(tái)通信以獲得內(nèi)容標(biāo)識(shí)符(例如,一個(gè)或多個(gè)列表、清單、配置文件、或者其它標(biāo)識(shí)期望的內(nèi)容的一個(gè)或多個(gè)媒體段或分段以及它們的時(shí)序邊界的標(biāo)識(shí)符)。關(guān)于媒體段以及它們的時(shí)序的信息被UA 129的流傳送內(nèi)容邏輯單元用于控制請(qǐng)求用于回放內(nèi)容的分段。
服務(wù)器130包括一個(gè)或多個(gè)可操作為向客戶端設(shè)備提供期望的內(nèi)容的系統(tǒng)。例如,服務(wù)器130可以包括可操作為經(jīng)由網(wǎng)絡(luò)150向各種客戶端設(shè)備流傳送內(nèi)容的標(biāo)準(zhǔn)HTTP web服務(wù)器。服務(wù)器130可以包括內(nèi)容傳遞平臺(tái),內(nèi)容傳遞平臺(tái)包括任何可以向用戶設(shè)備110傳遞內(nèi)容的系統(tǒng)或者方法。內(nèi)容可以被存儲(chǔ)在與服務(wù)器130相通信的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)中,例如,所示出的實(shí)施例的數(shù)據(jù)庫(kù)140。數(shù)據(jù)庫(kù)140可以被存儲(chǔ)在服務(wù)器130上,或者可以被存儲(chǔ)在通信地耦合到服務(wù)器130的一個(gè)或多個(gè)服務(wù)器上。數(shù)據(jù)庫(kù)140的內(nèi)容可以包括各種形式的數(shù)據(jù),數(shù)據(jù)諸如是視頻、音頻、流傳送文本以及任何其它可以被服務(wù)器130在一段時(shí)間內(nèi)傳輸?shù)娇蛻舳嗽O(shè)備110的內(nèi)容,例如,直播網(wǎng)絡(luò)廣播內(nèi)容和所存儲(chǔ)的媒體內(nèi)容。
數(shù)據(jù)庫(kù)140可以包括多個(gè)不同的源或者內(nèi)容文件和/或任何特定內(nèi)容的多個(gè)不同的表示(例如,高分辨率表示、中等分辨率表示、低分辨率表示等)。例如,內(nèi)容文件141可以包括特定多媒體匯編的高分辨率表示,并且因此包括當(dāng)被傳輸時(shí)的高比特率表示,而內(nèi)容文件142可以包括相同的特定多媒體匯編的低分辨率表示,并且因此包括當(dāng)被傳輸時(shí)的低比特率表示。額外地或者替代地,任何特定內(nèi)容的不同表示可以包括諸如可以由內(nèi)容文件143提供的前向糾錯(cuò)(FEC)表示(例如,包括對(duì)內(nèi)容數(shù)據(jù)的冗余編碼的表示)。統(tǒng)一資源定位符(URL)、統(tǒng)一資源標(biāo)識(shí)符(URI)和/或統(tǒng)一資源名稱(URN)是與這些根據(jù)本文中的實(shí)施例的內(nèi)容文件中的全部?jī)?nèi)容文件相關(guān)聯(lián)的,并且因此這樣的URL、URI和/或URN可以可能與諸如是字節(jié)范圍的其它信息一起被利用,以標(biāo)識(shí)和訪問(wèn)所請(qǐng)求的數(shù)據(jù)。
網(wǎng)絡(luò)150可以是無(wú)線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)或者任何其它適于傳輸如本文中描述的內(nèi)容的網(wǎng)絡(luò)。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)150可以包括互聯(lián)網(wǎng)的至少部分??蛻舳嗽O(shè)備110可以通過(guò)諸如由網(wǎng)絡(luò)連接151表示的雙向連接被連接到網(wǎng)絡(luò)150。替代地,客戶端設(shè)備110可以經(jīng)由諸如由啟用了多媒體廣播多媒體系統(tǒng)(MBMS)的網(wǎng)絡(luò)提供的單向連接(例如是連接151、152,并且網(wǎng)絡(luò)150可以包括MBMS網(wǎng)絡(luò),并且服務(wù)器130可以包括廣播組播服務(wù)中心(BM-SC)服務(wù)器)被連接。連接可以是有線連接,或者可以是無(wú)線連接。在一個(gè)實(shí)施例中,連接151可以無(wú)線連接,例如,蜂窩4G連接、無(wú)線保真(WiFi)連接、藍(lán)牙連接或者另一種無(wú)線連接。服務(wù)器130可以通過(guò)諸如由網(wǎng)絡(luò)連接152表示的雙向連接被連接到網(wǎng)絡(luò)150。服務(wù)器130可以通過(guò)單向連接被連接到網(wǎng)絡(luò)150(例如,使用在3GPP TS.26.346中描述的協(xié)議和服務(wù)的MBMS網(wǎng)絡(luò)或者ATSC 3.0網(wǎng)絡(luò))。連接可以是有線連接,或者可以是無(wú)線連接。
圖1A中所示出的實(shí)施例的客戶端設(shè)備110包括可操作為根據(jù)本文中的概念提供對(duì)期望的內(nèi)容的分段中的分段或者序列的增強(qiáng)型傳遞的TA 120。如上面討論的,所示出的實(shí)施例的TA 120包括協(xié)作以提供各種增強(qiáng)型分段傳遞功能的RM 121和CM 122。實(shí)施例的UA 129與RM 121之間的接口124和RM 121與CM 122之間的接口123提供類HTTP連接。例如,前述接口可以使用標(biāo)準(zhǔn)HTTP協(xié)議以及包括額外的信令(例如,使用與HTTP的信令技術(shù)相似的信令技術(shù)所提供的),以支持根據(jù)本文中的實(shí)施例的增強(qiáng)型分段傳遞的特定功能方面。
圖1B示出了關(guān)于如可以關(guān)于如圖1A中示出的TA 120的配置來(lái)實(shí)現(xiàn)的RM 121和CM 122的實(shí)施例的細(xì)節(jié)。特別地說(shuō),RM 121被示為包括請(qǐng)求隊(duì)列(RQ)191a-191c、請(qǐng)求調(diào)度器192(包括請(qǐng)求分塊算法193)和重新排序?qū)?94。CM 122被示為包括T值管理器195、準(zhǔn)備就緒計(jì)算器196和請(qǐng)求接收機(jī)/監(jiān)控器197。應(yīng)當(dāng)認(rèn)識(shí)到,盡管關(guān)于圖1B中示出的RM 121和CM 122的實(shí)施例示出了特定功能框,但可以實(shí)現(xiàn)用于執(zhí)行根據(jù)如本文中描述的實(shí)施例的功能的額外的或者替代的功能框。
在圖1B中示出的RM 121的實(shí)施例中提供了RQ 191a-191c,以由一個(gè)或多個(gè)UA(例如,UA 129)提供對(duì)由TA 120接收的請(qǐng)求的排隊(duì)。所示出的實(shí)施例中示出的多個(gè)RQ中的不同RQ可以被用于提供關(guān)于各種請(qǐng)求的排隊(duì)。例如,RQ中的不同的RQ可以各自與請(qǐng)求優(yōu)先級(jí)的不同級(jí)別相關(guān)聯(lián)(例如,直播流傳送媒體請(qǐng)求可以接收最高優(yōu)先級(jí),而流傳送媒體接收較低的優(yōu)先級(jí),并且web頁(yè)面內(nèi)容接收更低的優(yōu)先級(jí))。相似地,RQ中的不同的RQ可以各自與不同的UA、不同類型的UA等相關(guān)聯(lián)。應(yīng)當(dāng)認(rèn)識(shí)到,盡管在所示出的實(shí)施例中表示了三個(gè)這樣的隊(duì)列,但本文中的實(shí)施例可以包括任意數(shù)量的這樣的RQ。
實(shí)施例的請(qǐng)求調(diào)度器192實(shí)現(xiàn)一個(gè)或多個(gè)根據(jù)本文中的概念的用于調(diào)度分段請(qǐng)求和/或塊請(qǐng)求的調(diào)度算法。例如,請(qǐng)求調(diào)度器192的邏輯單元可以操作為,基于何時(shí)當(dāng)前被RM請(qǐng)求的分段的被接收的或者已請(qǐng)求但還未被接收的數(shù)據(jù)的量下降到某個(gè)門限量以下、何時(shí)RM不具有RM可以針對(duì)其作出另一個(gè)塊請(qǐng)求的已被接收的分段請(qǐng)求等,確定RM是否對(duì)于來(lái)自UA的分段請(qǐng)求準(zhǔn)備就緒。額外地或者替代地,請(qǐng)求調(diào)度器310的邏輯單元可以操作為,確定是否將作出塊請(qǐng)求,以提供近似是給定當(dāng)前網(wǎng)絡(luò)狀況下可能的最大下載速率的連接的聚合下載速率,以使得在網(wǎng)絡(luò)中的被緩存的數(shù)據(jù)的量盡可能少等。請(qǐng)求調(diào)度器310可以例如操作為,諸如每當(dāng)RM從UA接收新的數(shù)據(jù)下載請(qǐng)求時(shí)、每當(dāng)RM成功地向CM發(fā)出用于檢查用于發(fā)出對(duì)于相同或者不同的起源服務(wù)器的更多請(qǐng)求的繼續(xù)的準(zhǔn)備就緒性的塊請(qǐng)求時(shí)、每當(dāng)針對(duì)已被發(fā)出的塊請(qǐng)求的數(shù)據(jù)下載被完成時(shí)等時(shí)候,向CM查詢塊請(qǐng)求準(zhǔn)備就緒性。
在根據(jù)實(shí)施例的操作中,請(qǐng)求調(diào)度器192可以使用信用系統(tǒng)(例如,用于維護(hù)與RQ 191a-191c中的每個(gè)請(qǐng)求隊(duì)列相關(guān)聯(lián)的邏輯信用)以用于選擇從其發(fā)出下一個(gè)塊請(qǐng)求的下一個(gè)RQ。伴隨每個(gè)被發(fā)出的新塊請(qǐng)求,請(qǐng)求調(diào)度器可以向與每個(gè)RQ相關(guān)聯(lián)的現(xiàn)有信用添加特定量的信用,以及向與新塊請(qǐng)求從其被生成的RQ相關(guān)聯(lián)的現(xiàn)有信用減除特定量的信用。額外地或者替代地,實(shí)施例的請(qǐng)求調(diào)度器192可以在選擇下一個(gè)塊請(qǐng)求將從其被發(fā)出的下一個(gè)RQ時(shí)考慮每個(gè)RQ的優(yōu)先級(jí)。同樣地,請(qǐng)求調(diào)度器192可以監(jiān)控重新排序緩沖器的大小(例如,從對(duì)與RQ 191a-191c中的每個(gè)請(qǐng)求隊(duì)列相關(guān)聯(lián)的塊請(qǐng)求的部分或者完全響應(yīng)的被緩存的數(shù)據(jù)的量),由此請(qǐng)求調(diào)度器可以操作為,當(dāng)重新排序緩沖器中與給定RQ相關(guān)聯(lián)的被緩存的數(shù)據(jù)的量超過(guò)特定門限時(shí),減緩或者停止從該RQ發(fā)出塊請(qǐng)求。實(shí)施例的請(qǐng)求調(diào)度器192可以操作為,當(dāng)被緩存的數(shù)據(jù)的量下降到門限以下時(shí),恢復(fù)從該RQ的正常請(qǐng)求發(fā)出。
所示出的實(shí)施例的請(qǐng)求調(diào)度器192被示為包括采用請(qǐng)求分塊算法193的形式的分段請(qǐng)求分塊功能。實(shí)施例的請(qǐng)求分塊算法193提供被用于對(duì)所請(qǐng)求的分段進(jìn)行細(xì)分以提供多個(gè)對(duì)應(yīng)的較小數(shù)據(jù)請(qǐng)求的邏輯單元。上面引用的名稱為“TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY”的專利申請(qǐng)?zhí)峁┤缈梢员徽?qǐng)求分塊算法193實(shí)現(xiàn)的根據(jù)實(shí)施例的關(guān)于計(jì)算合適的塊大小(chunk size)的額外的細(xì)節(jié)。
實(shí)施例的重新排序?qū)?94提供用于從響應(yīng)于前述塊請(qǐng)求而被提供的塊來(lái)重構(gòu)所請(qǐng)求的分段的邏輯單元。應(yīng)當(dāng)認(rèn)識(shí)到,響應(yīng)于塊請(qǐng)求而被提供的數(shù)據(jù)的塊可以被TA 120無(wú)序地接收,并且因此重新排序?qū)?94的邏輯單元可以操作為對(duì)數(shù)據(jù)進(jìn)行重新排序,可能作出對(duì)于缺失的數(shù)據(jù)的請(qǐng)求,以因此提供所請(qǐng)求的數(shù)據(jù)分段,以便提供給請(qǐng)求方UA。
CM 122的所示出的實(shí)施例的T值管理器195提供用于確定和/或管理用于提供關(guān)于塊請(qǐng)求的控制(例如,確定何時(shí)將作出塊請(qǐng)求)的一個(gè)或多個(gè)參數(shù)(例如,門限參數(shù)等)的邏輯。相似地,CM 122的所示出的實(shí)施例的準(zhǔn)備就緒計(jì)算器196提供用于確定和/或管理用于提供關(guān)于塊請(qǐng)求的控制(例如,在CM 122與RM 121之間信號(hào)發(fā)送對(duì)于下一個(gè)塊請(qǐng)求的準(zhǔn)備就緒性)的一個(gè)或多個(gè)參數(shù)(例如,下載速率參數(shù))的邏輯單元。在上面的名稱為“TRANSPORT ACCELERATOR IMPLEMENTING REQUEST MANAGER AND CONNECTION MANAGER FUNCTIONALITY”的引用專利申請(qǐng)中提供了根據(jù)實(shí)施例的關(guān)于計(jì)算這樣的參數(shù)以及它們的使用的細(xì)節(jié)。
實(shí)施例的請(qǐng)求接收機(jī)/監(jiān)控器197提供可操作為管理塊請(qǐng)求的邏輯單元。例如,請(qǐng)求接收機(jī)/監(jiān)控器197可以操作為從RM 121接收塊請(qǐng)求、監(jiān)控對(duì)一個(gè)或多個(gè)內(nèi)容服務(wù)器所作出的塊請(qǐng)求的狀態(tài)、以及接收響應(yīng)于塊請(qǐng)求而被提供的數(shù)據(jù)塊。
在根據(jù)實(shí)施例的操作中,如由圖2的流200示出的,RM 121從UA 129接收針對(duì)分段的請(qǐng)求(框201)。根據(jù)本文中的實(shí)施例,RM 121適于從通用或者傳統(tǒng)UA(即,還未被預(yù)先設(shè)計(jì)為與RM交互的UA)接收分段請(qǐng)求并對(duì)其作出響應(yīng),因此提供與這樣的傳統(tǒng)UA的兼容性。相應(yīng)地,RM 121可以操作為將UA 129與TA 120的擴(kuò)展傳輸協(xié)議操作隔離。然而,如從下面的討論中將被更充分地理解的,UA 129可以是適于擴(kuò)展傳輸協(xié)議操作的,由此RM 121和UA 129(例如,通過(guò)使用用于實(shí)現(xiàn)這樣的特征的RM 121與UA 129之間的信令)協(xié)作以實(shí)現(xiàn)擴(kuò)展傳輸協(xié)議操作的一個(gè)或多個(gè)特征。
在根據(jù)實(shí)施例的操作中,請(qǐng)求接收機(jī)/監(jiān)控器197可以收集關(guān)于與每個(gè)塊請(qǐng)求相關(guān)聯(lián)的下載時(shí)間和/或下載速率的統(tǒng)計(jì),并且使用這樣的統(tǒng)計(jì)來(lái)確定正被下載的塊請(qǐng)求是否太慢。當(dāng)塊請(qǐng)求下載被認(rèn)為慢(例如,慢于特定門限)時(shí),請(qǐng)求接收機(jī)/監(jiān)控器197可以發(fā)出對(duì)于慢進(jìn)展塊請(qǐng)求的未被接收的部分的一個(gè)或多個(gè)塊請(qǐng)求。另外,請(qǐng)求接收機(jī)/監(jiān)控器197可以取消慢進(jìn)展塊請(qǐng)求,并且可以可選地關(guān)閉被用于慢進(jìn)展塊請(qǐng)求的底層傳輸連接(例如,使用傳輸控制協(xié)議或者擴(kuò)展傳輸協(xié)議),并且打開(kāi)新的連接。
圖1C示出了關(guān)于實(shí)施例的傳輸加速器配置的進(jìn)一步的細(xì)節(jié)。圖1C的示例性實(shí)施例包括適于促進(jìn)關(guān)于客戶端設(shè)備110的傳輸加速器代理操作的TA 120的配置。圖1C中示出的TA 120的實(shí)施例包括如本文中描述的可操作為生成塊請(qǐng)求和管理向一個(gè)或多個(gè)服務(wù)器作出的對(duì)于期望的內(nèi)容的請(qǐng)求的RM 121和CM 122。此外,所示出的實(shí)施例的TA 120包括根據(jù)本文中的概念的促進(jìn)代表一個(gè)或多個(gè)UA所代理的傳輸加速器操作的額外的功能。例如,TA 120被示為包括提供關(guān)于UA 129a-129c的代理服務(wù)器接口的代理服務(wù)器1021。所示出的實(shí)施例的TA 120還被示為包括提供關(guān)于UA 129d的web服務(wù)器接口的瀏覽器適配器1022,其中,UA 129d被示為瀏覽器型用戶代理(例如,用于訪問(wèn)和查看web內(nèi)容以及經(jīng)由HTTP與web服務(wù)器通信的HTTP web瀏覽器)。除提供關(guān)于UA的代理接口的前述功能框之外,圖1C中示出的TA 120的實(shí)施例被示為包括根據(jù)本文中的概念的在促進(jìn)內(nèi)容的加速傳輸時(shí)有用的額外的功能框。特別地說(shuō),TA 120被示為包括棧處理1023、TA請(qǐng)求分派器1024、棧處理1025和套接字層1026。在上面引用的名稱為“TRANSPORT ACCELERATOR IMPLEMENTING A MULTIPLE INTERFACE ARCHITECTURE”的專利申請(qǐng)中提供關(guān)于TA代理配置的實(shí)施例的進(jìn)一步的細(xì)節(jié)。
實(shí)施例的TA 120實(shí)現(xiàn)請(qǐng)求通常小于由UA所請(qǐng)求的內(nèi)容分段的內(nèi)容的部分的數(shù)據(jù)傳輸。相應(yīng)地,實(shí)施例的RM 121操作為對(duì)所請(qǐng)求的分段進(jìn)行細(xì)分(框202),以提供多個(gè)對(duì)應(yīng)的較小數(shù)據(jù)請(qǐng)求(在本文中被稱為在其中所請(qǐng)求的數(shù)據(jù)包括“塊”的“塊請(qǐng)求”)。由實(shí)施例的TA 120請(qǐng)求的塊的大小通常小于由UA 129請(qǐng)求的分段的大小。因此,來(lái)自UA 129的每個(gè)分段請(qǐng)求可以觸發(fā)RM 121生成并向CM 122作出多個(gè)塊請(qǐng)求,以恢復(fù)該分段。這樣的塊請(qǐng)求可以包括數(shù)據(jù)對(duì)象(包括分段內(nèi)容或者其某個(gè)部分)的某種形式的內(nèi)容標(biāo)識(shí)符(例如,URL、URI、URN等),可能具有諸如是包括期望的內(nèi)容塊的字節(jié)范圍的其它信息,由此塊進(jìn)行聚合以提供所請(qǐng)求的分段。
由TA 120請(qǐng)求的塊的大小可以是基于多個(gè)考慮中的任何考慮的。通常,CM 122可以確定目標(biāo)塊大小或者與塊大小選擇相關(guān)的信息,并且將這些信息提供給RM 121,并且RM 121使用所提供的目標(biāo)塊大小或者與塊大小選擇相關(guān)的信息來(lái)確定分段被劃分成的實(shí)際塊大小。CM 122當(dāng)CM 122用信號(hào)發(fā)送它對(duì)于另一個(gè)塊請(qǐng)求準(zhǔn)備就緒時(shí)向RM 121提供目標(biāo)塊大小或者與塊大小選擇相關(guān)的信息。相應(yīng)地,所示出的流200的實(shí)施例提供了RM 121在框209處諸如基于由CM 122向RM 121提供的目標(biāo)塊大小或者與塊大小選擇相關(guān)的信息確定塊大小。實(shí)施例的CM 122可以實(shí)現(xiàn)用于確定將被請(qǐng)求的塊的目標(biāo)大小或者確定與塊大小選擇相關(guān)的信息的一個(gè)或多個(gè)算法。在根據(jù)這樣的實(shí)施例的操作中,CM 122可以用信號(hào)向RM 121發(fā)送適于CM正在提供的傳輸?shù)膲K請(qǐng)求的目標(biāo)大小,并且RM可以使用所提供的目標(biāo)大小來(lái)確定當(dāng)它基于從UA接收的分段請(qǐng)求形成將向CM作出的請(qǐng)求時(shí)的實(shí)際塊大小。
作為用于確定塊大小的操作的一個(gè)示例,對(duì)于可以通過(guò)其作出下一個(gè)塊請(qǐng)求的給定連接,CM可以具有服務(wù)器130可以通過(guò)該連接立即發(fā)送的數(shù)據(jù)的量的精確或者近似的大小W(應(yīng)當(dāng)認(rèn)識(shí)到,塊大小在該示例中是獨(dú)立于分段大小以及甚至可能由RM所使用的分段組裝算法的)。CM 122可以例如確定諸如是在W和Cmax中的最小值處的目標(biāo)塊請(qǐng)求大小的下一個(gè)塊請(qǐng)求的合適目標(biāo)塊大小,其中,Cmax是期望的塊大小請(qǐng)求的上界(例如,Cmax可以是塊請(qǐng)求的內(nèi)容塊的預(yù)定的最大大小,其中,分段被劃分成大小小于或者等于最大大小的塊請(qǐng)求)。以這種方式設(shè)置期望的目標(biāo)塊請(qǐng)求大小的原因在于,服務(wù)器一通過(guò)那個(gè)連接接收該大小的請(qǐng)求,服務(wù)器就可以立即通過(guò)那個(gè)連接發(fā)送整個(gè)響應(yīng)。在當(dāng)向服務(wù)器作出請(qǐng)求時(shí)以這種方式選擇全部塊請(qǐng)求大小的情況下,并且如果從服務(wù)器向CM發(fā)送的全部分組被接收并且被有序地接收,則甚至當(dāng)CM正在通過(guò)多個(gè)連接請(qǐng)求數(shù)據(jù)時(shí),由CM請(qǐng)求的全部數(shù)據(jù)也將按照當(dāng)CM作出請(qǐng)求時(shí)的次序到達(dá)。
然而應(yīng)當(dāng)認(rèn)識(shí)到,針對(duì)任何特定情形的對(duì)塊大小的選擇可以取決于系統(tǒng)的各種方面,盡管塊大小可以仍然被設(shè)置為使得將作出請(qǐng)求的上行鏈路業(yè)務(wù)的比率與響應(yīng)于所述請(qǐng)求被提供的下行鏈路業(yè)務(wù)的量成可接受的比例。當(dāng)CM可以對(duì)請(qǐng)求進(jìn)行流水線操作(例如,在單個(gè)TCP連接上對(duì)幾個(gè)HTTP請(qǐng)求進(jìn)行流水線操作)時(shí),則相對(duì)小的塊大小可能是令人滿意的。在這樣的情況下,CM 122的邏輯單元可以操作為選擇相對(duì)小的目標(biāo)塊大小,其中,目標(biāo)塊大小仍然是大得足以使得每塊的請(qǐng)求和響應(yīng)報(bào)頭開(kāi)銷不變得過(guò)高的。當(dāng)不支持或者不允許流水線時(shí),或者當(dāng)支持或者允許僅有限量的流水線時(shí),CM 122的邏輯單元可以操作為選擇較大的目標(biāo)塊大小,因?yàn)榉駝t它可能不可能利用全部鏈路容量(例如,目標(biāo)塊大小在此情況下可以被選擇為使得所使用的連接的數(shù)量與塊大小的乘積超過(guò)帶寬-延遲乘積(BDP))。
如根據(jù)實(shí)施例被實(shí)現(xiàn)的塊大小可以被理想地選擇為成比例于或者至少小于在傳輸數(shù)據(jù)塊時(shí)所使用的連接(例如,TCP連接)的擁塞窗口。然而,實(shí)施例的TA 120被實(shí)現(xiàn)在接收機(jī)側(cè)(例如,客戶端設(shè)備110),并且因此一般不具有擁塞窗口信息。TA 120的邏輯單元仍然可以操作為確定關(guān)于任何特定連接的擁塞窗口的近似。例如,實(shí)施例的TA 120可以操作為模擬接收機(jī)處的TCP發(fā)送者行為,以便估計(jì)由服務(wù)器130所體驗(yàn)的連接的擁塞窗口。
下面提供了如可以由本文中的實(shí)施例的CM 122和RM 121的邏輯單元實(shí)現(xiàn)的用于計(jì)算塊大小的示例性技術(shù)。CM 122可以根據(jù)該技術(shù)向RM 121提供下面的與塊大小選擇相關(guān)的信息:
基于該與塊大小選擇相關(guān)的信息,RM 121可以確定將把大小F的分段劃分成的塊的數(shù)量P,由此分段被劃分成P個(gè)大小盡可能相等的塊(例如,使用IETF RFC 5053或者IETF RFC 6330中指定的劃分函數(shù)),可以然后被計(jì)算。例如,RM 121可以如下面所示的那樣使用前述參數(shù)計(jì)算塊大?。?/p>
Pmax=max{1,floor(F/Cmin)}
Pmin=max{1,floor(F/Cmax)}
P=max{Pmin,min{Pmax,N}}(等價(jià)地,P=min{Pmax,max{Pmin,N}})
前述的用于確定塊大小的技術(shù)確保當(dāng)F被劃分成P個(gè)大小相等的塊時(shí)最小塊大小至少是min{F,Cmin}。使用這樣的技術(shù)計(jì)算的塊大小特別良好地適于在其中CM可以在其最大程度上使用流水線(例如,HTTP流水線)的情形中使用。
當(dāng)CM不能使用流水線時(shí),可以根據(jù)實(shí)施例利用計(jì)算塊大小的不同方法。例如,當(dāng)例如CM 122用信號(hào)向RM 121發(fā)送該CM對(duì)于另一個(gè)塊請(qǐng)求準(zhǔn)備就緒時(shí),CM 122可以動(dòng)態(tài)地確定目標(biāo)塊大小T,并且向RM 121提供T。每個(gè)時(shí)間點(diǎn)處的T的值可以是基于多個(gè)因素的,包括當(dāng)前網(wǎng)絡(luò)狀況、當(dāng)前下載速度和如在本文中的其它地方描述的其它度量。
RM 121可以使用從實(shí)施例的CM 122接收的T的值來(lái)如下面那樣計(jì)算下一個(gè)請(qǐng)求的塊大小,其中,N是RM 121將從其生成下一個(gè)塊請(qǐng)求的分段中的未被請(qǐng)求的字節(jié)的數(shù)量:
ChunkSize:=min(N,T)
在根據(jù)實(shí)施例的操作中,使全部塊大小相同可能不是可取的。例如,實(shí)施例可以當(dāng)初始向服務(wù)器發(fā)送請(qǐng)求時(shí)使用較小的塊大小,并且隨時(shí)間增大塊請(qǐng)求的大小(例如,連接的擁塞窗口通常隨時(shí)間增大,并且因此塊大小可以根據(jù)該預(yù)期被增大)。通過(guò)初始使用較小塊大小,TA 120可以在流傳送會(huì)話的開(kāi)始處體驗(yàn)關(guān)于數(shù)據(jù)傳輸?shù)钠谕捻憫?yīng)性,并且此后通過(guò)增大塊大小來(lái)獲得上行鏈路和下行鏈路帶寬利用之間的較好的折中。
使用全都大小相同的塊可能同樣是不可取的,因?yàn)槭褂眠@樣的同質(zhì)塊大小可能導(dǎo)致TA與服務(wù)器之間的全部連接同時(shí)空閑,因此導(dǎo)致低效的信道使用。此外,在其中非常小的塊被請(qǐng)求(例如,由于N小)的情形中,前一個(gè)塊請(qǐng)求較大可能是可取的。下面的技術(shù)適于使用下面的用于由RM 122來(lái)計(jì)算塊大小的參數(shù)來(lái)解決前述考慮:
塊大小可以被RM 122如下面所示那樣使用前述參數(shù)來(lái)計(jì)算:
P=T*(1+A*revbits(I)/232)
如果P*X>N,設(shè)置ChunkSize:=P
否則,設(shè)置ChunkSize:=N
I=(I+1)mod 232
在上面的計(jì)算中,revbits(I)是當(dāng)I被表示為32比特值時(shí)所生成的值,I的32比特以逆序被列出,并且然后經(jīng)逆轉(zhuǎn)的32比特被看作整數(shù)值。例如,如果I=7,則被表示為32比特值的I是00000000000000000000000000000111,并且因此revbits(I)是整數(shù)值11100000000000000000000000000000,該整數(shù)值是3,758,096,384,并且因此revbits(7)/232=0.875。應(yīng)當(dāng)認(rèn)識(shí)到,如可以根據(jù)本文中的實(shí)施例被作出的塊大小確定可以關(guān)于一個(gè)或多個(gè)內(nèi)容傳輸會(huì)話(例如,流傳送媒體會(huì)話)先驗(yàn)地、與內(nèi)容傳輸會(huì)話的發(fā)起同期地、在一個(gè)或多個(gè)內(nèi)容傳輸會(huì)話期間動(dòng)態(tài)地等以及在上述各項(xiàng)的組合的情況下被執(zhí)行。相應(yīng)地,如在圖2的框209處被執(zhí)行的確定塊大小可以諸如通過(guò)在關(guān)于流200中所表示的其它操作的各種時(shí)間處實(shí)現(xiàn)前述技術(shù)中的一項(xiàng)或多項(xiàng)技術(shù)而被執(zhí)行。
此外,盡管已在本文中參考CM 122和RM 121的用于作出塊大小確定的邏輯單元的可互操作性描述了實(shí)施例,但實(shí)施例可以利用用于塊大小確定的其它邏輯單元。例如,實(shí)施例可以僅在CM 122內(nèi)或者僅在RM 121內(nèi)確定塊大小,或者使用用于確定塊大小的其它模塊或者邏輯單元或者信息。例如,RM 121可以利用可以由CM 122提供的下載統(tǒng)計(jì)來(lái)動(dòng)態(tài)地確定各種塊請(qǐng)求的塊大小。
不考慮塊大小確定的時(shí)序和用于作出確定的邏輯單元可以被部署在哪里,實(shí)施例的RM 121操作為,確定從CM 122請(qǐng)求哪些數(shù)據(jù),以可靠地接收和恢復(fù)所請(qǐng)求的分段。相應(yīng)地,實(shí)施例的RM 121提供一個(gè)或多個(gè)所選擇的塊請(qǐng)求(如可以是與由UA 129時(shí)常向CM 122作出的一個(gè)或多個(gè)分段請(qǐng)求相關(guān)聯(lián)的)(圖2的框203)。
在根據(jù)實(shí)施例的操作中,RM 121可以從CM 122接收指示CM對(duì)于作出下一個(gè)塊請(qǐng)求準(zhǔn)備就緒的塊準(zhǔn)備就緒信令。例如,TA 120(例如,CM 122)可以實(shí)現(xiàn)用于確定用于提供關(guān)于塊請(qǐng)求的控制(例如,確定何時(shí)將作出塊請(qǐng)求和/或在CM 122與RM 121之間用信號(hào)發(fā)送下一個(gè)塊請(qǐng)求的準(zhǔn)備就緒性)的一個(gè)或多個(gè)參數(shù)(例如,下載速率參數(shù)、門限參數(shù)等)的邏輯單元,如由所示出的實(shí)施例的框210示出的。下面提供了根據(jù)實(shí)施例的關(guān)于計(jì)算這樣的參數(shù)以及它們的使用的細(xì)節(jié)。
由RM 121向CM 122作出的塊請(qǐng)求中的一些塊請(qǐng)求可以是針對(duì)還未到達(dá)并且RM 121已視為可能永遠(yuǎn)不到達(dá)或者可能太晚到達(dá)的已被請(qǐng)求的數(shù)據(jù)的。額外地或者替代地,由RM 121向CM 122作出的塊請(qǐng)求中的一些塊請(qǐng)求可以是針對(duì)從原始分段被生成的經(jīng)FEC編碼的數(shù)據(jù)的,由此RM 121可以對(duì)從CM 122接收的數(shù)據(jù)進(jìn)行FEC解碼以恢復(fù)分段或者其某個(gè)部分。RM 121向UA 129傳遞所恢復(fù)的分段。相應(yīng)地,可以存在根據(jù)本發(fā)明的實(shí)施例的RM的各種配置,各種配置諸如可以包括不使用FEC數(shù)據(jù)并且因此僅請(qǐng)求來(lái)自原始源分段的數(shù)據(jù)的部分的基本RM配置(RM-基本)和可以請(qǐng)求來(lái)自原始源分段的數(shù)據(jù)的部分以及從源分段被生成的相匹配的FEC分段的FEC RM配置(RM-FEC)。
實(shí)施例的RM 121可能不知道時(shí)序和/或帶寬可用性限制,因此促進(jìn)RM121與CM 122之間的相對(duì)簡(jiǎn)單的接口,并且因此RM 121可以操作為在不由RM 121考慮這樣的限制的情況下作出塊請(qǐng)求。替代地,RM 121可以適于知道諸如可以由CM 122或者客戶端設(shè)備110內(nèi)的其它模塊提供給RM121的時(shí)序和/或帶寬可用性限制,并且因此RM 121可以操作為基于這樣的限制作出塊請(qǐng)求。
實(shí)施例的RM 121適用于具有多個(gè)不同的CM配置的操作。此外,某些實(shí)施例的RM 121可以并發(fā)地與多于一個(gè)CM接合,諸如用以從多個(gè)CM請(qǐng)求分段中的相同分段或者序列的數(shù)據(jù)塊。每個(gè)這樣的CM可以例如支持不同的網(wǎng)絡(luò)接口(例如,第一CM可以具有與設(shè)備上高速緩存的本地接口,第二CM可以使用與3G網(wǎng)絡(luò)接口的HTTP/TCP連接,第三CM可以使用與4G/LTE網(wǎng)絡(luò)接口的HTTP/TCP連接,第四CM可以使用與WiFi網(wǎng)絡(luò)接口的HTTP/TCP連接,等等)。
在根據(jù)實(shí)施例的操作中,CM 122與RM 121接合以接收塊請(qǐng)求,并且通過(guò)網(wǎng)絡(luò)150發(fā)送那些請(qǐng)求(圖2的框204)。CM 122接收對(duì)塊請(qǐng)求的響應(yīng)(框205)并且將響應(yīng)傳遞回RM 121(框206),其中,由UA 129請(qǐng)求的分段從由RM 121接收的塊中被決定(框207),并且被提供給UA 129(框208)。CM 122的功能操作為決定何時(shí)請(qǐng)求由RM 121作出的塊請(qǐng)求的數(shù)據(jù)。根據(jù)本文中的實(shí)施例,CM 122適于從通用或者傳統(tǒng)服務(wù)器(即,還未被預(yù)先設(shè)計(jì)為與CA交互的服務(wù)器)請(qǐng)求和接收塊。例如,CM 122從其請(qǐng)求數(shù)據(jù)的服務(wù)器可以包括在MBMS服務(wù)部署中被使用的BM-SC服務(wù)器。
與上面討論的RM 121一樣,可以存在根據(jù)本發(fā)明的實(shí)施例的CM的各種配置。例如,可以提供多連接CM配置(例如,CM-mHTTP),由此CM適于通過(guò)多個(gè)TCP連接使用HTTP。多連接CM配置可以操作為諸如取決于網(wǎng)絡(luò)狀況、對(duì)數(shù)據(jù)的需求、擁塞窗口等動(dòng)態(tài)地改變連接(例如,TCP連接)的數(shù)量。作為另一個(gè)示例,可以提供擴(kuò)展傳輸協(xié)議CM配置(例如,CM-xTCP),其中,CM在擴(kuò)展形式的TCP連接(在本文中被稱為xTCP)之上使用HTTP。這樣的擴(kuò)展傳輸協(xié)議可以提供適于促進(jìn)根據(jù)本文中的概念的由TA 120進(jìn)行的分段的增強(qiáng)型傳遞的操作。例如,xTCP的一個(gè)實(shí)施例甚至當(dāng)所發(fā)送的分組被丟失時(shí)將確認(rèn)提供回服務(wù)器(與當(dāng)分組被丟失時(shí)的TCP的重復(fù)確認(rèn)方案不同)。這樣的xTCP數(shù)據(jù)分組確認(rèn)方案可以被TA 120采用,以避免服務(wù)器響應(yīng)于確定數(shù)據(jù)分組缺失而降低數(shù)據(jù)分組被發(fā)送的速率。作為又一個(gè)示例,專有協(xié)議CM配置(例如,CM-rUDP),其中,CM使用專有用戶數(shù)據(jù)報(bào)協(xié)議(UDP)協(xié)議,并且從服務(wù)器發(fā)送響應(yīng)數(shù)據(jù)的速率可以是在不變的預(yù)先配置的速率處,或者協(xié)議內(nèi)可以存在用于確保發(fā)送速率盡可能高而不會(huì)不良地?fù)砣W(wǎng)絡(luò)的速率管理。這樣的專有協(xié)議CM可以與支持專有協(xié)議的專有服務(wù)器協(xié)作地操作。
應(yīng)當(dāng)認(rèn)識(shí)到,盡管已關(guān)于從服務(wù)器130請(qǐng)求來(lái)自源文件的數(shù)據(jù)的CM122討論了所示出的實(shí)施例,但取決于CM具有的用于訪問(wèn)數(shù)據(jù)的接口的類型,源文件可以是在服務(wù)器上可用的,或者可以被本地存儲(chǔ)在客戶端設(shè)備上。在某些實(shí)施例中,包含從相匹配的源文件使用FEC編碼所生成的修復(fù)符號(hào)的FEC文件可以還是在服務(wù)器上可用的。在這樣的實(shí)施例中,可以例如存在針對(duì)每個(gè)源文件的一個(gè)FEC文件,其中,獨(dú)立于被用于請(qǐng)求數(shù)據(jù)的CM的特定實(shí)施例地使用本領(lǐng)域中已知的FEC編碼技術(shù)從源文件生成每個(gè)FEC文件。
進(jìn)一步地,根據(jù)實(shí)施例,客戶端設(shè)備110可以能夠(例如,通過(guò)WiFi或者藍(lán)牙接口)連接到一個(gè)或多個(gè)在本文中被稱為幫助器設(shè)備的其它設(shè)備(例如,被放置得鄰近的各種配置的設(shè)備),其中,這樣的幫助器設(shè)備可以具有通過(guò)3G或者LTE連接的(對(duì)于不同的幫助器設(shè)備,潛在地通過(guò)不同載波)與諸如是服務(wù)器130的一個(gè)或多個(gè)服務(wù)器的連接。因此,客戶端設(shè)備110可以能夠使用幫助器設(shè)備的連接來(lái)向諸如是服務(wù)器130的一個(gè)或多個(gè)服務(wù)器發(fā)送塊請(qǐng)求。在此情況下,TA 120內(nèi)可以存在用于向幫助器設(shè)備中的每個(gè)幫助器設(shè)備進(jìn)行連接和發(fā)送塊請(qǐng)求以及接收響應(yīng)的CM。在這樣的實(shí)施例中,幫助器設(shè)備可以將相同分段的不同塊請(qǐng)求發(fā)送給相同或者不同的服務(wù)器(例如,相同分段可以是對(duì)于多個(gè)服務(wù)器上的幫助器設(shè)備可用的,其中,例如不同服務(wù)器由相同或者不同的內(nèi)容傳遞網(wǎng)絡(luò)提供商來(lái)提供)。
已在上面描述了實(shí)施例,在其中諸如使用數(shù)據(jù)對(duì)象標(biāo)識(shí)符(例如,URL、URI、URN等)和塊內(nèi)容的數(shù)據(jù)對(duì)象內(nèi)的字節(jié)范圍來(lái)作出多個(gè)塊請(qǐng)求,以用于將內(nèi)容的期望的分段作為多個(gè)塊進(jìn)行傳送。然而,某些內(nèi)容服務(wù)器(例如,服務(wù)器130)配置可能不支持這樣的字節(jié)范圍請(qǐng)求,并且因此可以操作為響應(yīng)于塊請(qǐng)求返回完整數(shù)據(jù)對(duì)象而非字節(jié)范圍的內(nèi)容的塊。相應(yīng)地,如果仍然作出了多個(gè)塊請(qǐng)求,則完整數(shù)據(jù)對(duì)象的多個(gè)實(shí)例將被傳送給客戶端設(shè)備。本文中的傳輸加速器的實(shí)施例操作為,檢測(cè)是否字節(jié)范圍請(qǐng)求被操作為內(nèi)容的源的服務(wù)器所支持。例如,實(shí)施例的TA 120可以初始發(fā)出HTTP字節(jié)范圍請(qǐng)求,并且分析響應(yīng)代碼以確定字節(jié)范圍請(qǐng)求是否被支持(例如,接收206響應(yīng)代碼可以用于確定字節(jié)范圍請(qǐng)求被支持,而接收200響應(yīng)代碼可以用于確定字節(jié)范圍請(qǐng)求不被支持)。如果字節(jié)范圍請(qǐng)求被確定為被支持(例如,響應(yīng)于被發(fā)送到主機(jī)(起源)服務(wù)器的一個(gè)或多個(gè)塊請(qǐng)求,HTTP206被接收),則TA 120可以繼續(xù)進(jìn)行其用于將分段請(qǐng)求劃分成塊請(qǐng)求以便向該主機(jī)服務(wù)器進(jìn)行發(fā)送的邏輯單元。然而,如果字節(jié)范圍請(qǐng)求被確定為不被主機(jī)服務(wù)器支持(例如,響應(yīng)于被發(fā)送到該主機(jī)(起源)服務(wù)器的一個(gè)或多個(gè)塊請(qǐng)求,HTTP 200被接收),則TA 120可以取消指定被發(fā)送到該主機(jī)服務(wù)器的字節(jié)范圍的全部未完成的請(qǐng)求。在確定了服務(wù)器不支持字節(jié)范圍請(qǐng)求(例如,服務(wù)器不是符合HTTP 1.1的)的情況下,TA 120可以操作為修改其操作,以避免使用將導(dǎo)致相同數(shù)據(jù)對(duì)象的多個(gè)實(shí)例被傳輸?shù)亩鄠€(gè)塊請(qǐng)求。例如,RM 121可以操作為作出對(duì)CM 122的完整數(shù)據(jù)對(duì)象(例如,內(nèi)容文件)的請(qǐng)求,由此CM 122對(duì)應(yīng)地從服務(wù)器130請(qǐng)求完整文件。盡管這樣的操作不可以提供相比于在其中塊請(qǐng)求被支持的傳輸加速器操作的最優(yōu)性能,但在其中內(nèi)容服務(wù)器不支持字節(jié)范圍請(qǐng)求的情形下,這樣的操作避免對(duì)內(nèi)容的重復(fù)傳送。
應(yīng)當(dāng)認(rèn)識(shí)到,甚至在字節(jié)范圍請(qǐng)求被支持的情況下,最優(yōu)性能也可能由于各種客戶端設(shè)備和/或服務(wù)器配置而不產(chǎn)生。例如,由CM 122向服務(wù)器130作出的塊請(qǐng)求的大小可以是相當(dāng)小的,并且關(guān)于通過(guò)其作出這樣的塊請(qǐng)求的連接被實(shí)現(xiàn)的通信協(xié)議可以實(shí)現(xiàn)特定技術(shù),所述特定技術(shù)用于通過(guò)減少通過(guò)網(wǎng)絡(luò)被發(fā)送的分組的數(shù)量來(lái)提高網(wǎng)絡(luò)效率。這樣的技術(shù)可能不良地影響(例如,延遲)本文中的塊請(qǐng)求。例如,可以關(guān)于TCP連接實(shí)現(xiàn)Nagle的算法,以提供對(duì)多個(gè)小型出站消息的合并,并且一次發(fā)送它們?nèi)?例如,只要存在對(duì)于其來(lái)說(shuō)發(fā)送者未收到任何確認(rèn)的被發(fā)送的分組,則發(fā)送者可以保持對(duì)其輸出進(jìn)行緩沖,直到它具有值得輸出的完整分組為止,以使得輸出可以被一次全部發(fā)送)。盡管通常提高網(wǎng)絡(luò)效率,但Nagle的算法的操作可以延遲塊請(qǐng)求。塊請(qǐng)求的這樣的延遲可以諸如通過(guò)導(dǎo)致流傳送內(nèi)容中的失速、直播流傳送中的不允許的延遲等而導(dǎo)致不可接受的用戶體驗(yàn)。相應(yīng)地,實(shí)施例操作為禁用網(wǎng)絡(luò)效率技術(shù),例如,Nagle的算法,其操作為減少通過(guò)網(wǎng)絡(luò)被發(fā)送的分組的數(shù)量。
在字節(jié)范圍請(qǐng)求被內(nèi)容服務(wù)器支持的情況下,客戶端設(shè)備可能仍然不具有關(guān)于將被請(qǐng)求的內(nèi)容文件和/或分段的大小的信息。然而,為了提供根據(jù)本文中的實(shí)施例的傳輸加速的優(yōu)點(diǎn),實(shí)施例的TA 120的操作作出如上面描述的針對(duì)內(nèi)容的塊的請(qǐng)求。為獲得關(guān)于內(nèi)容文件以及因此其分段的大小的信息,TA 120可以操作為初始發(fā)出一個(gè)或多個(gè)小的塊請(qǐng)求(例如,16KB請(qǐng)求),由此,對(duì)那些請(qǐng)求的響應(yīng)將包含來(lái)自服務(wù)器的實(shí)際內(nèi)容大小。TA 120的邏輯單元(例如,RM 121和/或CM 122的邏輯單元)此后可以使用該信息來(lái)確定如何將分段劃分成塊和對(duì)剩余的請(qǐng)求進(jìn)行調(diào)度。實(shí)施例的TA 120當(dāng)內(nèi)容文件的大小不是已知的時(shí)可以以與前述方式相似的替代方式操作。例如,如果TA 120將作出對(duì)于已知大小的內(nèi)容文件的多個(gè)塊請(qǐng)求,則當(dāng)內(nèi)容文件的大小在第一個(gè)塊請(qǐng)求的時(shí)間處不是已知的時(shí),TA 120可以作出相似數(shù)量的具有相似時(shí)序的請(qǐng)求的塊請(qǐng)求。如果分段大小不是已知的,則RM121可以假設(shè)分段大小是無(wú)限的(或者無(wú)界的),直到從具有被包括的大小的塊請(qǐng)求接收響應(yīng)為止。伴隨該實(shí)施例,將潛在存在對(duì)于超過(guò)分段的結(jié)尾的分段的字節(jié)范圍的塊請(qǐng)求。因此,根據(jù)實(shí)施例,來(lái)自支持字節(jié)范圍請(qǐng)求的服務(wù)器的對(duì)于塊請(qǐng)求的響應(yīng)可以:(a)如果所請(qǐng)求的字節(jié)范圍與分段的實(shí)際字節(jié)范圍之間存在完全重疊,則是HTTP 206OK響應(yīng),并且因此塊請(qǐng)求的字節(jié)范圍將在響應(yīng)中從服務(wù)器被返回;(b)如果塊請(qǐng)求中的所請(qǐng)求的字節(jié)范圍與分段的實(shí)際字節(jié)范圍之間不存在任何重疊,則是HTTP 404錯(cuò)誤響應(yīng),并且沒(méi)有分段的字節(jié)將在響應(yīng)中被服務(wù)器提供;(c)是HTTP響應(yīng),其指示塊請(qǐng)求中的字節(jié)范圍與分段的字節(jié)范圍之間存在部分重疊,并且塊請(qǐng)求的字節(jié)范圍與分段的字節(jié)范圍之間的重疊將在響應(yīng)中從服務(wù)器被返回。在這些情況中的一些或全部情況下,響應(yīng)將還包括分段的大小?;谠谒鲰憫?yīng)中的任何響應(yīng)中被接收的該信息,RM 121可以設(shè)置分段的實(shí)際大小以用于任何進(jìn)一步的響應(yīng)或者處置。
從前述內(nèi)容中應(yīng)當(dāng)認(rèn)識(shí)到,實(shí)施例的RM 121適于恰當(dāng)?shù)靥幹脤?duì)未知大小的分段的塊請(qǐng)求的可能的響應(yīng)。例如,具有錯(cuò)誤碼或者警告的HTTP響應(yīng)將由RM 121無(wú)縫地處置,因?yàn)镽M可以確定這些響應(yīng)由于請(qǐng)求無(wú)效或者分段的部分無(wú)效的字節(jié)范圍(一旦RM在響應(yīng)中獲得實(shí)際分段大小RM就可以確定)而本該是所預(yù)期的。
前述的用于處置未知大小的分段的技術(shù)可以在多數(shù)環(huán)境中正確運(yùn)行。例如,分段有可能比在單個(gè)RTT中被請(qǐng)求以用于HTTP漸進(jìn)下載流傳送的內(nèi)容長(zhǎng)得多,并且因此,由于分段的大小將在整個(gè)分段在塊請(qǐng)求中被請(qǐng)求之前在響應(yīng)中被獲得,所以通常在已知分段大小之前所作出的塊請(qǐng)求中的字節(jié)范圍中的全部字節(jié)范圍將是有效的字節(jié)范圍。相似地,對(duì)于DASH流傳送,分段的回放時(shí)間有可能在持續(xù)時(shí)間上是幾個(gè)RTT,并且因此,除了在當(dāng)下載速率比當(dāng)前的回放速率高得多時(shí)的情況下(在此情況下,可能存在少量以不與分段重疊的字節(jié)范圍來(lái)發(fā)送的塊請(qǐng)求,但這通常在所選擇的回放顯著在下載速率以下時(shí)發(fā)生,在此情況下,作出具有不與分段重疊的字節(jié)范圍的塊請(qǐng)求的影響被顯著降低)之外,相同的分析是有效的。
相應(yīng)地,傳輸加速器可以操作為,甚至在不充足的信息是對(duì)于最優(yōu)地實(shí)現(xiàn)塊請(qǐng)求可用的情況下,立即請(qǐng)求內(nèi)容,并且稍后當(dāng)信息是可用的時(shí)使用信息來(lái)確定塊大小和調(diào)度合適的塊請(qǐng)求。
如上面討論的,可以提供多連接CM配置(例如,CM-mHTTP),由此CM適于使用多個(gè)連接來(lái)根據(jù)本文中的概念從一個(gè)或多個(gè)內(nèi)容服務(wù)器請(qǐng)求和接收內(nèi)容。在多個(gè)連接正在使用中的情況下,關(guān)于CM如何迫使不同連接是彼此公平的(例如,用以確保連接的下載速率保持與彼此合理地接近,諸如在二的因子之內(nèi))的公平性方面出現(xiàn)。
一種用于提供關(guān)于多連接的一個(gè)水平的公平性的相對(duì)簡(jiǎn)單的技術(shù)包括在其中CM控制連接中的每個(gè)連接的接收窗口大小的實(shí)現(xiàn)方式。例如,CM122可以將全部TCP連接的接收窗口大小設(shè)置為是相等的,并且是大得足以使可用帶寬可以被TCP連接近似完全利用的,但不是太大得使一些TCP連接不時(shí)以比其它TCP連接快得多的速率來(lái)下載的。這樣的實(shí)現(xiàn)方式可以實(shí)現(xiàn)對(duì)于每個(gè)這樣的TCP連接的近似相等的下載速率。
一種避免控制接收窗口大小的用于提供關(guān)于多連接的公平性的替代技術(shù)包括適于控制每個(gè)連接上的已請(qǐng)求但還未被傳遞的數(shù)據(jù)的量的實(shí)現(xiàn)方式。該技術(shù)的目標(biāo)在于提高連接的聚合下載速率,確保連接正在以近似相同的速率下載,以及減少在網(wǎng)絡(luò)中被緩沖的數(shù)據(jù)的量。實(shí)現(xiàn)該技術(shù)的實(shí)施例利用一個(gè)或多個(gè)門限參數(shù)來(lái)決定何時(shí)另一個(gè)數(shù)據(jù)塊將在多個(gè)連接中的特定連接上被請(qǐng)求。可以根據(jù)實(shí)施例關(guān)于多個(gè)連接中的每個(gè)連接利用前述門限參數(shù)的相同值。如果需要,替代實(shí)施例可以關(guān)于一個(gè)或多個(gè)連接來(lái)利用前述門限參數(shù)的不同值。
根據(jù)控制每個(gè)連接上的已請(qǐng)求但還未被傳遞的數(shù)據(jù)的量的連接公平性實(shí)現(xiàn)方式的實(shí)施例,門限參數(shù)Thresh被定義為CM控制其值的多個(gè)八位字節(jié),并且被用于決定何時(shí)數(shù)據(jù)的另一個(gè)塊可以在連接上被請(qǐng)求。例如,當(dāng)TCP連接上的已請(qǐng)求但還未被接收的數(shù)據(jù)的量在Thresh以下時(shí),則可以在該連接上作出另一個(gè)數(shù)據(jù)塊請(qǐng)求。然而,如果TCP連接上的已請(qǐng)求但還未被接收的數(shù)據(jù)的量在Thresh處或者以上時(shí),則不在該TCP連接上作出另一個(gè)數(shù)據(jù)塊請(qǐng)求。
圖3示出了根據(jù)使用門限參數(shù)Thresh來(lái)決定何時(shí)另一個(gè)數(shù)據(jù)塊可以在連接上被請(qǐng)求的實(shí)施例的操作。在所示出的示例中,假設(shè)當(dāng)對(duì)于全部當(dāng)前請(qǐng)求的將接收的剩余數(shù)據(jù)的量下降到Thresh以下時(shí),CM對(duì)于任何特定連接上的另一個(gè)塊請(qǐng)求準(zhǔn)備就緒。例如,CM 122可以包括前述的CM-mHTTP配置,并且可以利用如圖3中所示的三個(gè)TCP連接,其中,CM已在全部三個(gè)連接上作出針對(duì)數(shù)據(jù)的HTTP塊請(qǐng)求,以使得三個(gè)TCP連接中的每個(gè)TCP連接上的將被接收的剩余數(shù)據(jù)的量仍然在門限量Thresh以上。在該場(chǎng)景中,CM當(dāng)前不能在這三個(gè)連接中的任何連接上再作出任何HTTP請(qǐng)求。相應(yīng)地,CM對(duì)于來(lái)自RM的另一個(gè)塊請(qǐng)求不是準(zhǔn)備就緒的,因?yàn)榧词笴M未從RM接收另一個(gè)塊請(qǐng)求,CM也不可以立即作出針對(duì)該塊的請(qǐng)求。
圖4示出了根據(jù)使用門限參數(shù)Thresh來(lái)決定何時(shí)CM當(dāng)前能夠立即作出塊請(qǐng)求的實(shí)施例的操作。在該示例中,再次假設(shè)當(dāng)針對(duì)全部當(dāng)前的請(qǐng)求將接收的剩余數(shù)據(jù)的量下降到門限量Thresh以下時(shí),CM 122對(duì)于任何特定連接上的另一個(gè)塊請(qǐng)求準(zhǔn)備就緒。在圖4的示例中,針對(duì)所述連接中的至少一個(gè)連接(例如,TCP連接2和TCP連接3)已接收了足夠數(shù)據(jù),使得可以作出另一個(gè)請(qǐng)求。
選擇門限參數(shù)Thresh的值的目標(biāo)在于,該值被選擇為是大得足以使連接的聚合下載速率近似是給定的當(dāng)前網(wǎng)絡(luò)狀況下的可能的最大下載速率的,而同時(shí)是盡可能小的,以確保不同連接正在以近似相同的速率下載數(shù)據(jù),并且使得在網(wǎng)絡(luò)中被緩沖的數(shù)據(jù)的量盡可能小。當(dāng)HTTP流水線被用在個(gè)體的TCP連接上時(shí),可以基于本文中描述的方法動(dòng)態(tài)地確定Thresh的值。將塊大小C選擇為是盡可能小的促進(jìn)前述內(nèi)容。然而,如之前討論的,塊大小應(yīng)當(dāng)是大得足以使請(qǐng)求塊的開(kāi)銷是被用于接收塊響應(yīng)的下載帶寬的一小部分的。例如,如果C被設(shè)置為8KB,并且HTTP請(qǐng)求的大小是200字節(jié),則針對(duì)該值C的塊請(qǐng)求的相對(duì)開(kāi)銷是大約2.5%。假設(shè)TCP確認(rèn)業(yè)務(wù)通常是TCP下載業(yè)務(wù)的少量百分比,則這是合理的折中。
應(yīng)當(dāng)認(rèn)識(shí)到,當(dāng)流水線不被實(shí)現(xiàn)時(shí),盡管如上面描述的那樣直接使用前述門限參數(shù)變得有問(wèn)題,但可以仍然實(shí)現(xiàn)基于門限的算法以提供本文中的連接公平性。例如,在固定數(shù)量N的TCP連接正被使用的情況下,如果每個(gè)塊請(qǐng)求的大小是Thresh,則網(wǎng)絡(luò)上的未完成的字節(jié)的總量將是至多N*Thresh。因此,如果鏈接到服務(wù)器的帶寬延遲乘積大,則大值的Thresh可能是可取的,而如果帶寬延遲乘積不大,則小值的Thresh可能是可取的。應(yīng)當(dāng)認(rèn)識(shí)到,在這樣的實(shí)現(xiàn)方式中,折中通常是與上面描述的流水線的情況下的折中相同的(即,門限參數(shù)Thresh的值應(yīng)當(dāng)是大得足以允許以接近最大可能速率的速率接收數(shù)據(jù)的,同時(shí)被保持為小得足以避免網(wǎng)絡(luò)上的不必要的緩沖)。然而相比于流水線的情況,門限參數(shù)Thresh的值在該非流水線示例中應(yīng)當(dāng)小了大約N/2到N的因子。
已概括地描述了用于實(shí)現(xiàn)關(guān)于由本文中的實(shí)施例的傳輸加速器所利用的多個(gè)連接的公平性的門限參數(shù)的使用,下面提供關(guān)于計(jì)算這樣的門限參數(shù)的合適值的細(xì)節(jié)。應(yīng)當(dāng)理解,下面闡述的技術(shù)以替代的方式計(jì)算門限參數(shù)Thresh的值,并且可以被應(yīng)用于流水線和非流水線的情況。
在根據(jù)實(shí)施例的操作中,CM 122基于當(dāng)前的網(wǎng)絡(luò)狀況動(dòng)態(tài)并且連續(xù)地調(diào)整Thresh的值,因?yàn)門hresh的最優(yōu)值可以根據(jù)網(wǎng)絡(luò)狀況變化。在實(shí)現(xiàn)根據(jù)本文中的實(shí)施例的用于確定Thresh的值(例如,圖2的框210處的操作)的技術(shù)時(shí)可以采用多個(gè)下載速率參數(shù)(例如,DR、DFR和DCR)。這樣的下載速率參數(shù)提供對(duì)數(shù)據(jù)、數(shù)據(jù)的分段和/或數(shù)據(jù)的塊多么快地被從服務(wù)器下載到客戶端的測(cè)量,并且可以通過(guò)多少個(gè)字節(jié)已在時(shí)間窗口中被接收而被確定。例如,DR(下載速率)被定義為連接(例如,TCP連接)的聚合平均下載速率(例如,在合適的時(shí)間窗口上被測(cè)量,或者被使用加權(quán)移動(dòng)平均進(jìn)行平均)。DFR(下載分段速率)被相似地定義為連接的聚合平均下載速率,只是在DFR的情況下,每個(gè)分段的第一個(gè)分組以及接收分段的第一個(gè)分組與接收前面的分組(來(lái)自任何分段,通過(guò)TCP連接中的任何TCP連接)之間的時(shí)間不被包括在平均中(即,“被減損(discount)”)。同樣地,DCR(下載塊速率)被定義為連接的聚合平均下載速率,除了在DCR的情況下,每個(gè)塊的第一分組以及接收塊的第一個(gè)分組與接收前面的分組(來(lái)自任何塊,通過(guò)TCP連接中的任何連接)之間的時(shí)間不被包括在平均中(即,“被減損”)。
DCR通常將是相對(duì)高的(即,高于如果下載速率將在包括第一個(gè)分組塊的字節(jié)并且包括第一個(gè)分組與前一個(gè)分組之間的時(shí)間的整個(gè)時(shí)間窗口上被平均情況下的DCR),并且在某種意義上,它可以表示取決于例如網(wǎng)絡(luò)狀況、被使用的TCP連接的數(shù)量和其它因素的接口上的真實(shí)可用帶寬。通常,將是這樣的情況:DCR是至少DFR,盡管可能不總是這樣的情況,并且有時(shí)DFR可以大于DCR。通常,DCR計(jì)算的目標(biāo)在于,在不需要來(lái)自服務(wù)器或者其它外部網(wǎng)絡(luò)單元的明確反饋的情況下,給出指示如何控制數(shù)據(jù)的流水線的值。
可以諸如根據(jù)以下公式使用這樣的下載速率參數(shù)來(lái)確定和/或調(diào)整門限參數(shù)Thresh:
如果DCR>DFR*1.05,則增大Thresh的值
否則,如果DCR<=DFR*1.05,則減小Thresh的值
其中,Thresh的增大/減小值可以是預(yù)定的值(例如,2KB),可以取決于DCR比DFR的相對(duì)比率,等等。
可以不時(shí)地使用這樣的用于確定門限參數(shù)Thresh的技術(shù)。例如,Thresh的值可以在預(yù)定的時(shí)間段之后(例如,每?jī)擅?、在事件發(fā)生時(shí)(例如,在諸如是10個(gè)RTT的多個(gè)RTT之后,或者每當(dāng)塊請(qǐng)求被CM接收時(shí))等時(shí)候被調(diào)整。
實(shí)施例可以額外地或者替代地操作為動(dòng)態(tài)地測(cè)量所述下載速率參數(shù)中的一個(gè)或多個(gè)下載速率參數(shù),并且相應(yīng)地確定/調(diào)整門限參數(shù)。例如,在確定/調(diào)整Thresh之后,實(shí)施例可以基于在對(duì)Thresh的調(diào)整已發(fā)生之后已被發(fā)出的塊來(lái)測(cè)量DCR和DFR。此后,可以使用這些已更新的下載速率參數(shù)來(lái)調(diào)整Thresh的值。DCR和DFR的前述經(jīng)動(dòng)態(tài)更新的測(cè)量可以例如是基于所發(fā)出的固定數(shù)量T的塊請(qǐng)求的。這樣的技術(shù)具有DFR和DCR的測(cè)量周期不取決于RTT的優(yōu)點(diǎn),這是可取的,但不需要明確地測(cè)量RTT。另一個(gè)優(yōu)點(diǎn)在于,它避免隨后的調(diào)整將基于在Thresh最后一次被調(diào)整之前發(fā)生的對(duì)DCR和DRF的測(cè)量而作出、并且因此不再反映當(dāng)前的網(wǎng)絡(luò)狀況的可能性。
本發(fā)明的實(shí)施例可以利用除了或者替代前述的下載速率參數(shù)(即,DR、DFR和DCR)的下載速率參數(shù)。例如,代替在上面的Thresh確定中使用DFR,實(shí)施例的CM 122可以使用DDDR(下載減損延遲速率),所述DDDR被定義為連接的聚合平均下載速率,除了在DDDR的情況下,如下面詳述的,當(dāng)計(jì)算DDDR時(shí),每個(gè)被延遲的塊請(qǐng)求的第一個(gè)分組的字節(jié)以及每個(gè)被延遲的塊請(qǐng)求的第一個(gè)分組與前一個(gè)被接收的分組之間的時(shí)間不被計(jì)數(shù)(即,“被減損”)。
在實(shí)現(xiàn)利用DDDR下載速率參數(shù)的實(shí)施例時(shí),CM 122可以操作為,如果塊請(qǐng)求在CM用信號(hào)通知它對(duì)于下一個(gè)塊請(qǐng)求準(zhǔn)備就緒時(shí)立即被RM121提供給CM,則將塊請(qǐng)求分類為“未被延遲”。相似地,如果塊請(qǐng)求未在CM信號(hào)通知它對(duì)于下一個(gè)塊請(qǐng)求準(zhǔn)備就緒時(shí)立即被RM 121提供給CM(例如,存在諸如由于當(dāng)CM信號(hào)通知它對(duì)于下一個(gè)塊請(qǐng)求準(zhǔn)備就緒時(shí)RM不具有它可以作出的塊請(qǐng)求所引起的某種延遲)則CM 122可以將塊請(qǐng)求分類為“被延遲”。CM 122可以因此將DDDR計(jì)算為下載速率,除了CM在計(jì)算DDDR的分子時(shí)不對(duì)每個(gè)被延遲的塊請(qǐng)求的第一個(gè)分組的字節(jié)進(jìn)行計(jì)數(shù),并且在計(jì)算DDDR的分母時(shí)不對(duì)每個(gè)被延遲的塊請(qǐng)求的第一個(gè)分組與前一個(gè)被接收的分組之間的時(shí)間進(jìn)行計(jì)數(shù)。實(shí)施例的CM可以操作為,為了一致性,將它在一開(kāi)始時(shí)接收的第一個(gè)塊請(qǐng)求看作被延遲的塊請(qǐng)求。
從前述內(nèi)容可以認(rèn)識(shí)到,使用DDDR的實(shí)現(xiàn)方式可以使用與其它實(shí)現(xiàn)方式(例如,在其中使用DFR的實(shí)現(xiàn)方式)稍微不同的CM 122與RM 121之間的API。例如,當(dāng)CM用信號(hào)向RM通知它對(duì)于塊請(qǐng)求準(zhǔn)備就緒時(shí),RM可以立即利用塊請(qǐng)求作出響應(yīng)(假設(shè)RM具有可用于作出的塊請(qǐng)求),在此情況下,在計(jì)算DDDR時(shí)塊請(qǐng)求被CM歸類為未被延遲的塊請(qǐng)求。替代地,如果RM向CM提供不是響應(yīng)于來(lái)自CM的、關(guān)于其對(duì)于塊請(qǐng)求準(zhǔn)備就緒的信號(hào)的塊請(qǐng)求,則CM將在計(jì)算DDDR時(shí)把塊請(qǐng)求歸類為被延遲的。可以在RM與UA之間定義相似的API。
可以如下面闡述的那樣計(jì)算實(shí)施例的DDDR下載速率參數(shù):
Z=0
Tr=0
每當(dāng)分組P被接收時(shí)(大小為B個(gè)字節(jié),在掛鐘時(shí)間Tw處):
如果P是被延遲的塊的第一個(gè)分組,則{S=Tw}
否則,如果P不是被延遲的塊的第一個(gè)分組,則
{Tr=Tr+(Tw-S);
Z=Z+B;
S=Tw
}
DDDR=Z/Tr
在根據(jù)實(shí)施例的操作中,DDDR可以在不是下載的全部時(shí)間的時(shí)間窗口上被計(jì)算或者求平均。例如,假如DDDR將在持續(xù)時(shí)間為W秒的最后一個(gè)時(shí)間窗口上被計(jì)算,則分子Z_W和分母Tr_W可以在最后W秒上被計(jì)算,由此,DDDR=Z_W/Tr_W。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,可以使用相似的技術(shù)來(lái)計(jì)算DDDR的其它變型,諸如使用具有半衰期W的指數(shù)加權(quán)移動(dòng)平均(EWMA)。
應(yīng)當(dāng)認(rèn)識(shí)到,使用DDDR而不是DFR的優(yōu)點(diǎn)在于,計(jì)算DDDR不利用任何從RM被傳遞給CM的特殊知識(shí)。特別地說(shuō),CM可以在RM沒(méi)有用信號(hào)向CM通知哪些塊屬于新的分段的情況下計(jì)算DDDR值。此外,使用DDDR允許CM準(zhǔn)確地測(cè)量CM實(shí)際正在下載的時(shí)間,而沒(méi)有任何特殊情況。相反,使用DFR呈現(xiàn)關(guān)于當(dāng)存在每分段的僅一個(gè)塊時(shí)DFR與DCR之間不存在任何差別的問(wèn)題。因?yàn)槭褂肈DDR不具有這個(gè)問(wèn)題,所以當(dāng)每分段僅存在一個(gè)塊時(shí),采用DDDR的實(shí)施例可以被使用,而沒(méi)有特殊例外。作為進(jìn)一步的優(yōu)點(diǎn),當(dāng)RM由于分段還不可用而將不必然能夠?yàn)镃M提供該分段的第一個(gè)塊請(qǐng)求時(shí),DDDR是對(duì)于直播案例的合適測(cè)量,但是更正確地處理當(dāng)下一個(gè)分段的第一個(gè)塊可以在CM用信號(hào)發(fā)送對(duì)于下一個(gè)塊請(qǐng)求的準(zhǔn)備就緒性時(shí)被作出時(shí)的情況。相反,采用DFR的實(shí)施例將該新分段的第一個(gè)分組減損,盡管如果CM對(duì)于下一個(gè)塊請(qǐng)求準(zhǔn)備就緒的話不存在任何將該第一個(gè)分組減損的原因。相似地,由于與上面相同的原因,DDDR是針對(duì)使用低/高水位策略的下載情況的合適測(cè)量(即,伴隨DDDR和DFR兩者,在隨著緩沖器填滿低和高水位之間而下載時(shí)立即被請(qǐng)求的分段的第一個(gè)分組不應(yīng)當(dāng)被減損,然而在達(dá)到高水位之后和等待直到耗盡到低水位之前被請(qǐng)求的分段的第一個(gè)分組應(yīng)當(dāng)被減損)。
實(shí)施例以上面關(guān)于下載速率參數(shù)DFR描述的全部方法來(lái)使用下載速率參數(shù)DDDR。例如,實(shí)施例的CM 122可以利用DDDR來(lái)作出關(guān)于如何調(diào)整門限值Thresh的決策,其中,Thresh是在其以下作出新的塊請(qǐng)求的TCP連接的緩沖器水平。即,如果B是TCP連接上的已請(qǐng)求但還未被接收的數(shù)據(jù)的量,則當(dāng)B<Thresh時(shí),可以由CM作出新的塊請(qǐng)求。
下載速率參數(shù)DPR(下載流水線速率)是可以除了或者替代前述的下載速率參數(shù)(即,DR、DFR、DCR和DDDR)而被使用的下載速率參數(shù)的另一個(gè)示例。DPR可以例如被用作在上面的Thresh確定中使用DFR或者DDDR的替代。根據(jù)實(shí)施例被利用的DPR與DFR、DCR或DDDR相似,盡管存在如下面闡述的差別。
DPR被定義為連接(例如,TCP連接)的聚合平均下載速率,除了DPR的計(jì)算將在請(qǐng)求被作出時(shí)不具有任何未完成的數(shù)據(jù)的、在連接上被作出的塊請(qǐng)求的第一個(gè)分組減損。在計(jì)算DPR時(shí),如果組請(qǐng)求被延遲(例如,在RM被通知CM對(duì)于下一個(gè)塊請(qǐng)求準(zhǔn)備就緒時(shí),沒(méi)有作出塊請(qǐng)求),則塊的一些最先的分組被減損。因此,DPR與真實(shí)下載速率幾乎相同,并且對(duì)于初始時(shí)段,DPR與DCR之間可能不存在任何差別。例如,如在下面詳細(xì)描述的,在會(huì)話一開(kāi)始時(shí)在不同連接上作出的最先一些塊請(qǐng)求將被分類為不被流水線操作的,(并且因此,這些塊的最先的分組將不被DPR或者DCR計(jì)數(shù)),并且相似地,如果這樣的分段僅在給定的時(shí)間軸上可用,并且前一個(gè)分段在下一個(gè)分段可用之前被完全下載,則直播場(chǎng)景中的分段請(qǐng)求的最先的塊請(qǐng)求可以被分類為不被流水線操作的。相似地,當(dāng)使用高低水位下載方法時(shí),在將媒體緩沖器耗盡到低水位之后立即作出的對(duì)于按需內(nèi)容的塊請(qǐng)求可以被分類為不被流水線操作的,因?yàn)楫?dāng)這些塊請(qǐng)求被作出時(shí),全部TCP連接都不在使用中。
對(duì)于利用DPR的實(shí)施例,當(dāng)下一個(gè)塊請(qǐng)求在連接上被作出時(shí),該連接的已請(qǐng)求但還未被接收的數(shù)據(jù)的量可以被稱為經(jīng)網(wǎng)絡(luò)緩沖的數(shù)據(jù)Buff。門限參數(shù)Thresh表示該連接的當(dāng)前的流水線門限。相應(yīng)地,如上面討論的,當(dāng)Buff<Thresh時(shí),新的塊請(qǐng)求可以被放到連接上。
假設(shè)CM在全部連接上使用流水線。在根據(jù)實(shí)施例的操作中,如果塊請(qǐng)求在Buff>=alpha*Thresh時(shí)被接收,則CM可以將對(duì)于特定連接的塊請(qǐng)求分類為“被流水線操作”(未延遲/按時(shí))以便確定DPR,并且如果塊請(qǐng)求在Buff<alpha*Thresh時(shí)被接收,則CM可以將塊請(qǐng)求分類為“不被流水線操作”(被延遲/不按時(shí))以便確定DPR,其中是alpha是<1的常量(例如,alpha=1/2或者alpha=2/3)。
在不使用任何流水線的情況下,用于確定DPR的對(duì)塊請(qǐng)求進(jìn)行遲分類的技術(shù)可能與前述的技術(shù)不同。在實(shí)施例的遲分類技術(shù)中,計(jì)算所發(fā)出的不完整的塊請(qǐng)求的數(shù)量R,所述所發(fā)出的不完整的塊請(qǐng)求在正被考慮的塊請(qǐng)求的響應(yīng)的第一部分被返回的時(shí)間點(diǎn)處已接收了部分響應(yīng)。如果R大于固定的常量fmin,則實(shí)施例的CM可以將請(qǐng)求分類為按時(shí)的,并且否則將它分類為延遲的。
額外地或者替代地,在不使用流水線的情況下的用于確定DPR的對(duì)塊請(qǐng)求的遲分類的技術(shù)包括分析與內(nèi)容服務(wù)器的空閑連接。例如,在請(qǐng)求被發(fā)出的時(shí)間處,CM 122的邏輯單元可以對(duì)與服務(wù)器130的空閑TCP連接的數(shù)量進(jìn)行計(jì)數(shù)。如果空閑連接的數(shù)量超過(guò)給定的門限(例如,可用連接的一半),則請(qǐng)求可以被分類為延遲的。否則請(qǐng)求可以被分類為按時(shí)的。
不考慮在將請(qǐng)求分類為被流水線操作的或者延遲的時(shí)所采用的特定技術(shù),可以利用被流水線操作/延遲的分類來(lái)計(jì)算DPR。在根據(jù)實(shí)施例計(jì)算DPR時(shí),如果塊請(qǐng)求被分類為被流水線操作的則該塊請(qǐng)求的第一個(gè)分組不被減損,并且如果塊請(qǐng)求被分類為不被流水線的則該塊請(qǐng)求的第一個(gè)分組被減損。如前述內(nèi)容中使用的,“被減損”表示在該第一個(gè)分組中被接收的字節(jié)不被計(jì)數(shù),并且接收該第一個(gè)分組與前一個(gè)被接收的分組之間的時(shí)間不被計(jì)數(shù),而“不被減損”表示在該第一個(gè)分組中被接收的字節(jié)被計(jì)數(shù),
并且接收該第一個(gè)分組與前一個(gè)被接收的分組之間的時(shí)間被計(jì)數(shù)。
實(shí)施例的DPR下載速率參數(shù)可以如下面闡述的那樣被計(jì)算(應(yīng)當(dāng)認(rèn)識(shí)到,下面的示例在確定“被流水線操作”(未延遲/按時(shí))和“不被流水線操作”(延遲或者不按時(shí))分類時(shí)利用了前述的經(jīng)網(wǎng)絡(luò)緩沖的數(shù)據(jù)Buff和門限參數(shù)Thresh分析技術(shù),而其它實(shí)施例可以利用諸如是上面描述那些技術(shù)的替代技術(shù)來(lái)進(jìn)行這些分類):
在TCP連接上作出具有Buff個(gè)八位字節(jié)的已請(qǐng)求但還未被接收的數(shù)據(jù)的塊請(qǐng)求,其中,Thresh是該TCP連接的以八位字節(jié)計(jì)的當(dāng)前的流水線門限。
如果(Buff>=alpha*Thresh),則將該塊請(qǐng)求分類為“被流水線操作”
否則,如果(Buff<alpha*Thresh)則將該塊請(qǐng)求分類為“不被流水線操作”
響應(yīng)于塊請(qǐng)求,在TCP連接上接收塊。
Z=0
Tr=0
每當(dāng)分組P被接收時(shí)(大小為B字節(jié),在掛鐘時(shí)間Tw處):
如果P是被分類為“不被流水線操作”的塊的第一個(gè)分組,則{S=Tw}
否則,
{Tr=Tr+(Tw-S);
Z=Z+B;
S=Tw
}
DPR=Z/Tr
在根據(jù)實(shí)施例的操作中,可以在不是下載的全部時(shí)間的時(shí)間窗口上對(duì)DPR進(jìn)行計(jì)算或者求平均。例如,假如將在持續(xù)時(shí)間為W秒的最后的時(shí)間窗口上計(jì)算DPR,則可以在最后W秒上計(jì)算分子Z_W和分母Tr_W,由此,DPR=Z_W/Tr_W。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,相似的技術(shù)可以被用于計(jì)算DCR或者DPR的其它變型,諸如是使用具有半衰期W的EWMA。
作為根據(jù)本文中的實(shí)施例的使用EWMA計(jì)算DCR和DPR的示例,假設(shè)不被減損的分組(不是塊的第一個(gè)分組)被接收,該分組包含B比特的數(shù)據(jù),并且該分組與(任何類型的)前一個(gè)分組的到達(dá)之間的時(shí)間是dt??梢匀缦碌馗翫CR:
DCR=DCR*exp(-alpha*dt)
DCR=TDCR+B/alpha
前述內(nèi)容中的alpha的值可以被選擇為例如使得一段時(shí)間上的平均衰減與1/alpha成比例。將alpha的時(shí)間單位與實(shí)施例的時(shí)間單位dt對(duì)齊。例如,如果在前述內(nèi)容中用毫秒來(lái)表述dt,并且目標(biāo)是秒上的1/e的衰減,則根據(jù)一個(gè)實(shí)施例,alpha=1/1000。作為另一個(gè)示例,如果用秒來(lái)表述dt,并且目標(biāo)是秒上的1/e的衰減,則根據(jù)一個(gè)實(shí)施例,alpha=1。進(jìn)一步采用前述的示例實(shí)施例,對(duì)于可能的多秒(例如是5秒)上的1/e的目標(biāo)衰減,如果用毫秒來(lái)表述dt,則alpha=1/5000,并且如果用秒來(lái)表述dt,則根據(jù)本文中的實(shí)施例,alpha=1/5。
上面的用于使用EWMA來(lái)計(jì)算DCR的概念可以被應(yīng)用于使用EWMA對(duì)DPR的計(jì)算(將塊的未被足夠地進(jìn)行流水線操作的第一個(gè)分組減損)。例如,用于使用EWMA計(jì)算DPR的實(shí)施例可以對(duì)于DCR和DPR兩者使用相同值alpha。然而,替代實(shí)施例可以對(duì)DCR和DPR使用不同的平均常量(例如,對(duì)于DCR使用alphaC,以及對(duì)于DPR使用alphaP)。
已描述了用于計(jì)算下載速率參數(shù)DCR和DPR的技術(shù),下面將提供在調(diào)整門限值Thresh(即,在其以下作出新的塊請(qǐng)求的連接的緩沖器水平)時(shí)的它們的使用的示例。應(yīng)當(dāng)認(rèn)識(shí)到,存在可以通過(guò)其來(lái)根據(jù)本文中的概念使用DCR和DPR獲得Thresh的值的許多技術(shù)。
作為將DCR和DPR用于調(diào)整門限參數(shù)Thresh的值的一個(gè)示例性示例,讓R是當(dāng)HTTP塊請(qǐng)求被CM作出時(shí)與當(dāng)對(duì)該請(qǐng)求的第一個(gè)響應(yīng)被CM接收時(shí)之間的平均響應(yīng)時(shí)間。對(duì)于每個(gè)塊請(qǐng)求,讓RTT是當(dāng)請(qǐng)求被作出時(shí)與當(dāng)?shù)谝粋€(gè)響應(yīng)被接收時(shí)之間的響應(yīng)時(shí)間。使用前述內(nèi)容,R=(1-a1)*R+a1*RTT。可以認(rèn)識(shí)到,存在用于計(jì)算R的許多方法,諸如,使用EWMA在時(shí)間窗口上或者在RTT測(cè)量的數(shù)量上對(duì)所測(cè)量的RTT求平均,通過(guò)在固定的之前的時(shí)間窗口上或者在RTT測(cè)量的固定的之前的數(shù)量上求平均等。
在根據(jù)實(shí)施例利用DCR和DPR來(lái)調(diào)整Thresh時(shí),讓Thresh是跨被分配給門限的全部連接的字節(jié)的總量??梢匀缦碌囟ㄆ?例如每a2*R秒地)更新Thresh的值:
如果(DCR*a3>DPR),則Thresh=min{Thmax,Thresh(1+a4)}
否則,如果(DCR*a5>DPR>=DCR*a3),則Thresh=min{Thmax,Thresh*(1+a6)}
否則如果(DCR*a5<=DPR),則Thresh=max{Thmin,Thresh*(1-a7)}其中,常量a1、a2、a3、a4、a5、a6和a7以及門限最小值和最大值Thmin和Thmax的示例值如下:
a1=0.05
a2=2
a3=0.7
a4=0.5
a5=0.95
a6=0.1
a7=0.05
Thmin=32KB
Thmax=1MB
從前述內(nèi)容中可以認(rèn)識(shí)到,DCR將是至少DPR。在DPR顯著小于DCR的情況下,它是對(duì)塊的第一個(gè)分組與前一個(gè)分組之間存在大的間隙(例如,塊請(qǐng)求未被足夠快地作出)的指示。在DCR和DPR是相同或者接近相同的值的情況下,實(shí)施例可以操作為保持門限參數(shù)Thresh在它的當(dāng)前值處,或者可能緩慢地升高該值。
在根據(jù)本文中的實(shí)施例調(diào)整門限參數(shù)Thresh時(shí),目標(biāo)是獲得將與塊內(nèi)的任何其它分組之間的間隔近似相同的塊的第一個(gè)分組與前一個(gè)塊的分組之間的分組間間隔(即,分組間間隔≈分組內(nèi)間隔)。當(dāng)達(dá)到這樣的條件時(shí),足夠的數(shù)據(jù)已被流水線操作,并且請(qǐng)求已被提前足夠遠(yuǎn)地作出,使得帶寬效率最優(yōu)化。因此,盡管實(shí)現(xiàn)小的門限參數(shù)以確保不同連接正在以近似相同的速率下載數(shù)據(jù),并且使在網(wǎng)絡(luò)中被緩沖的數(shù)據(jù)的量盡可能小可能是可取的,但實(shí)施例操作為實(shí)現(xiàn)足夠大的門限以避免分組間間隔中的顯著間隙。
應(yīng)當(dāng)認(rèn)識(shí)到,根據(jù)本文中的概念,可以關(guān)于前述內(nèi)容來(lái)利用各種替代方案。例如,在DCR和DPR的某些值處,當(dāng)作出調(diào)整Thresh的值的決策時(shí),Thresh的值可以不改變(例如,當(dāng)DPR小于但大致上等于DCR的值時(shí),諸如是當(dāng)DPR/DCR的值在區(qū)間(0.9,0.95)內(nèi)時(shí))。相應(yīng)地,替代的實(shí)施例可以操作為通過(guò)設(shè)置Thresh=Thresh*(DCR/DPR)來(lái)調(diào)整Thresh的值。盡管該技術(shù)與上面討論的方案相似,但它在可以被應(yīng)用的調(diào)整的量方面更靈活,并且因此可以減少配置參數(shù)的數(shù)量。作為替代實(shí)施例的另一個(gè)示例,可以通過(guò)設(shè)置Thresh=Thresh+delta*(1-DPR/DCR)來(lái)調(diào)整Thresh的值,其中,delta=32KB。該替代技術(shù)是基于加性的增大的,并且可以較緩慢地收斂。應(yīng)當(dāng)認(rèn)識(shí)到,實(shí)現(xiàn)用于調(diào)整門限參數(shù)Thresh的前述替代技術(shù)中的任一項(xiàng)替代技術(shù)的實(shí)施例可以繼續(xù)應(yīng)用門限最小值和最大值限制Thmin和Thmax。
可以認(rèn)識(shí)到,各種下載速率參數(shù)(例如,DPR、DCR和DFR)可以被用于確定允許多少已請(qǐng)求但還未被接收的數(shù)據(jù)和用于管理每個(gè)連接上的已請(qǐng)求但還未被接收的數(shù)據(jù)的量。此外,如本文中提供的下載速率參數(shù)(例如,DPR和DFR)可以被用于向UA提供(例如,用于確定何時(shí)請(qǐng)求和/或請(qǐng)求什么分段的)下載統(tǒng)計(jì)。
從前述內(nèi)容中可以認(rèn)識(shí)到使用DPR和DCR來(lái)計(jì)算門限參數(shù)值Thresh的各種優(yōu)點(diǎn)。例如,DPR的值區(qū)分流水線值Thresh是否提供用于達(dá)到下載速率DCR的足夠流水線,因?yàn)镈PR與DCR之間的差別在于,DPR將被流水線操作的塊的最先的分組包括為下載速率的一部分,而DCR不包括這些。因此,如果Thresh是足夠大的,則DCR與DPR的值之間應(yīng)當(dāng)僅存在小的差別,而如果Thresh不是足夠大的,則DPR的值與DCR的值之間應(yīng)當(dāng)存在較大差別,其中,通常,DCR的值大于DPR的值。作為進(jìn)一步的優(yōu)點(diǎn),CM可以在不具有來(lái)自RM的任何信令或者輸入的情況下計(jì)算DPR。
如前面提到的,可以在確定何時(shí)關(guān)于多連接CM配置(例如,CM-mHTTP)的連接作出塊請(qǐng)求時(shí)利用前述的下載速率參數(shù)和門限參數(shù),由此,CM適于根據(jù)本文中的概念使用多個(gè)連接來(lái)從一個(gè)或多個(gè)內(nèi)容服務(wù)器請(qǐng)求和接收內(nèi)容。例如,在B是全部連接上的已請(qǐng)求但還未被接收的字節(jié)的數(shù)量的情況下,可以基于將B與Thresh進(jìn)行的比較來(lái)作出關(guān)于新的塊請(qǐng)求是否可以被發(fā)出的確定(例如,如果B<Thresh,則新的塊請(qǐng)求可以被發(fā)出)。
在新請(qǐng)求將在多連接(例如,CM-mHTTP)配置中被發(fā)出的情況下,可以選擇用于該新請(qǐng)求的多個(gè)連接中的合適的連接。例如,根據(jù)實(shí)施例,可以為新請(qǐng)求選擇具有最少數(shù)量的未完成的字節(jié)(例如,已請(qǐng)求但還未被接收的字節(jié))的連接。然而,替代實(shí)施例可以單個(gè)地對(duì)于每個(gè)連接作出關(guān)于新請(qǐng)求的決策。實(shí)施例可以例如為塊請(qǐng)求選擇連接以提供負(fù)載均衡,由此,針對(duì)任何特定連接的塊請(qǐng)求可以基于其一個(gè)或多個(gè)下載速率參數(shù)被進(jìn)行加權(quán)。在一個(gè)連接上的還未被內(nèi)容服務(wù)器完整地提供服務(wù)的塊請(qǐng)求被重新發(fā)送的情況下,可以整體或者部分地在一個(gè)或多個(gè)不同的連接上重新發(fā)送該塊請(qǐng)求,以降低該請(qǐng)求的完成時(shí)間變得太遲的可能性。
可以例如根據(jù)下面的公式對(duì)于N個(gè)活動(dòng)連接中的每個(gè)活動(dòng)連接作出關(guān)于是否作出新的塊請(qǐng)求的決策:
如果(B<Thresh/N),則該連接可以接受另一個(gè)塊請(qǐng)求其中,B是該連接上的已請(qǐng)求但還未被接收的字節(jié)的數(shù)量。
可以由提供多連接配置(例如,CM-mHTTP)的CM來(lái)動(dòng)態(tài)地調(diào)整將被使用的連接(例如,TCP連接)的數(shù)量N。例如,可以預(yù)先選擇用于CM實(shí)例的連接的最小和最大數(shù)量(例如,最小連接=2,以及最大連接=8),由此,可以基于一個(gè)或多個(gè)操作度量來(lái)動(dòng)態(tài)地調(diào)整在任何給定時(shí)間處被使用的連接的特定數(shù)量。諸如在分組錯(cuò)誤率是與RTT相關(guān)的并且因此額外的連接可以被支持的情況下,添加連接可以例如被用于提供額外的吞吐量。
通常,實(shí)施例操作為使關(guān)于任何特定連接的已請(qǐng)求但還未被接收的數(shù)據(jù)在量上小于該特定連接的擁塞窗口。在擁塞窗口小的情況下,因此會(huì)建議比在擁塞窗口大的情況下大的數(shù)量的連接。不幸的是,客戶端設(shè)備(例如,客戶端設(shè)備110)通常不能訪問(wèn)擁塞窗口信息。相應(yīng)地,本文中的實(shí)施例可以操作為在動(dòng)態(tài)地調(diào)整由CM使用的連接的數(shù)量時(shí)利用如上面描述的下載參數(shù)和/或門限參數(shù)。
在根據(jù)實(shí)施例動(dòng)態(tài)地調(diào)整連接的數(shù)量時(shí),讓X_i=min{CWND_i,RWIN_i,SWIN_i},其中,分別地,對(duì)于連接i,CWND_i是發(fā)送者的當(dāng)前的擁塞窗口大小,RWIN_i是接收者窗口大小,以及SWIN_i是發(fā)送者窗口大小。額外地,讓RTT是平均RTT,例如,被測(cè)量為當(dāng)塊請(qǐng)求被作出的時(shí)間與當(dāng)對(duì)該塊請(qǐng)求的第一個(gè)響應(yīng)通過(guò)連接被接收的時(shí)間之間的平均時(shí)間的平均RTT。DPR通常是至多X_i/RTT在i上的和,相似地,DPR通常是至多BuffAvg/RTT,其中,BuffAvg是全部連接內(nèi)的已請(qǐng)求但還未被接收的數(shù)據(jù)的平均量。實(shí)施例的CM具有對(duì)RTT和DPR的測(cè)量,并且可操作為控制門限參數(shù)Thresh和塊請(qǐng)求大小(如上面討論的),并且因此控制BuffAvg。盡管這樣的CM可能不直接知道X_i的對(duì)于每個(gè)i的值,但該CM仍然可以根據(jù)以下公式調(diào)整連接的數(shù)量N:
如果DPR小于BuffAvg/RTT,則連接的數(shù)量N可以被增大。
如果DPR近似等于BufAvg/RTT,則連接的數(shù)量N可以被減小。
已在上面描述了關(guān)于利用用于為客戶端設(shè)備傳送內(nèi)容的多個(gè)連接的CM配置的實(shí)施例??梢躁P(guān)于一個(gè)或多個(gè)內(nèi)容服務(wù)器(例如,如圖1A中所示的內(nèi)容服務(wù)器130或者如圖5中所示的內(nèi)容服務(wù)器130a和130b)作出這樣的連接。相應(yīng)地,應(yīng)當(dāng)認(rèn)識(shí)到,可以關(guān)于使用實(shí)施例的傳輸加速器來(lái)提供內(nèi)容的傳送的一個(gè)或多個(gè)內(nèi)容服務(wù)器應(yīng)用本文中的概念。
在根據(jù)實(shí)施例的操作中,CM負(fù)責(zé)建立和管理跨越一個(gè)或多個(gè)接口(例如,LTE接口、WiFi接口等)的與一個(gè)或多個(gè)內(nèi)容服務(wù)器的全部連接,以及向RM指示CM何時(shí)對(duì)于將在連接中的一個(gè)連接上被作出的另一個(gè)塊請(qǐng)求準(zhǔn)備就緒。讓Thresh為由CM管理的接口的以八位字節(jié)(字節(jié))計(jì)的門限值,其中,如上面描述的,基于DCR和DPR向上或者向下調(diào)整Thresh的值,只是對(duì)DPR的定義被如下地修改。讓B是跨越由CM管理的接口的全部連接的、已由CM請(qǐng)求但還未被接收的八位字節(jié)(字節(jié))的總數(shù)。當(dāng)塊請(qǐng)求被CM作出時(shí),如果B<alpha*Thresh,則塊請(qǐng)求在DPR計(jì)算中被看作被延遲的,而如果B>=alpha*Thresh,則塊請(qǐng)求在DPR計(jì)算中被看作未被延遲的。讓ND是除了與每個(gè)活動(dòng)的內(nèi)容服務(wù)器的一個(gè)連接之外CM可以使用的連接的目標(biāo)總數(shù)。ND的值可以由CM動(dòng)態(tài)地確定,或者其可以被設(shè)置為常量值(例如,ND=8)。讓NO是CM當(dāng)前正從事于其塊請(qǐng)求的內(nèi)容服務(wù)器(起源服務(wù)器)的數(shù)量。則,CM維護(hù)的連接的總計(jì)目標(biāo)數(shù)量近似是N=ND+NO,這是基于以下內(nèi)容的:
讓B_I是跨越由CM管理的接口的與起源服務(wù)器I的全部連接的、已由CM請(qǐng)求但還未被接收的八位字節(jié)(字節(jié))的總數(shù)。
讓N_I=ND*(floor(sum_J<=I{B_J}/sum_I{B_I})-floor(sum_J<I{B_J}/sum_I{B_I}))+1是通過(guò)由CM管理的接口與起源服務(wù)器I的連接的目標(biāo)數(shù)量,并且因此sum_I{N_I}=ND+NO。
當(dāng)B<Thresh時(shí),則CM用信號(hào)向RM發(fā)送它對(duì)于塊請(qǐng)求準(zhǔn)備就緒。
當(dāng)CM從RM接收塊請(qǐng)求時(shí),則
確定塊請(qǐng)求是針對(duì)哪個(gè)起源服務(wù)器I的
如上面描述的來(lái)確定N_I
確定A_I=與I的活動(dòng)*連接的數(shù)量
如果A_I>=N_I,則在具有最少量的已請(qǐng)求但還未被接收的數(shù)據(jù)的與I的活動(dòng)連接上作出針對(duì)塊的HTTP請(qǐng)求
如果A_I<N_I,則開(kāi)啟與I的新連接,并且在該連接上作出針對(duì)塊的HTTP請(qǐng)求
如果當(dāng)針對(duì)塊的HTTP請(qǐng)求被作出時(shí)B<alpha*Thresh(當(dāng)計(jì)算DPR時(shí),不對(duì)塊的第一個(gè)分組和塊的第一個(gè)分組與前一個(gè)分組之間的時(shí)間進(jìn)行計(jì)數(shù)),則將塊請(qǐng)求分類為被延遲的。
在根據(jù)前述示例性實(shí)施例的操作中,如果連接具有已請(qǐng)求但還未被傳遞的數(shù)據(jù)、連接不具有已請(qǐng)求的數(shù)據(jù)但還未超時(shí)(如由客戶端測(cè)量的)或者連接被服務(wù)器用信號(hào)通知已超時(shí),則連接被認(rèn)為是活動(dòng)的。
如前面討論的,圖1B提供了TA 120的RM 121和CM 122部件的高層架構(gòu)。下面參考圖1C的傳輸加速器配置來(lái)提供關(guān)于TA 120的一個(gè)示例性實(shí)施例的進(jìn)一步的細(xì)節(jié),以為實(shí)現(xiàn)TA 120的這樣的實(shí)施例的部件提供上下文。
該示例性實(shí)施例的RM 121優(yōu)選被配置為在TA 120內(nèi)提供以下功能。RM 121從TA請(qǐng)求分派器1024接受將被加速的來(lái)自UA 129的請(qǐng)求,以進(jìn)行數(shù)據(jù)下載。在根據(jù)實(shí)施例的操作中,RM 121可以用信號(hào)向TA請(qǐng)求分派器1024通知對(duì)接受將被加速的另一個(gè)數(shù)據(jù)請(qǐng)求的準(zhǔn)備就緒性。RM 121將數(shù)據(jù)請(qǐng)求拆分成塊請(qǐng)求。在根據(jù)實(shí)施例的操作中,針對(duì)起源服務(wù)器I的每個(gè)塊請(qǐng)求的優(yōu)選大小CTarget(I)由CM 122來(lái)指示。實(shí)施例的RM 121在優(yōu)選大小附近均勻地展寬塊請(qǐng)求大小。RM 121向CM 122發(fā)出塊請(qǐng)求。在根據(jù)實(shí)施例的操作中,塊請(qǐng)求在CM 122指示它對(duì)于新的請(qǐng)求準(zhǔn)備就緒時(shí)被發(fā)出。RM 121可以在調(diào)度算法的限制內(nèi)調(diào)度塊請(qǐng)求,以確??缭絹?lái)自不同UA 129的請(qǐng)求隊(duì)列的公平性,并且同時(shí)確保合適的請(qǐng)求優(yōu)先級(jí)劃分。RM 121將對(duì)塊請(qǐng)求的響應(yīng)組裝成對(duì)來(lái)自UA 129的請(qǐng)求的響應(yīng)。RM 121可以然后將這些響應(yīng)傳送回UA 129,以使得數(shù)據(jù)以有序和連續(xù)的方式被傳遞給上層。
這個(gè)示例性實(shí)施例的CM 122優(yōu)選被配置為在TA 120內(nèi)提供以下功能。CM 122管理去往每個(gè)起源服務(wù)器的HTTP塊請(qǐng)求的數(shù)量。實(shí)施例的CM 122發(fā)出對(duì)多個(gè)起源服務(wù)器的塊請(qǐng)求。在根據(jù)實(shí)施例的操作中,塊請(qǐng)求的數(shù)量在所定義的配置參數(shù)之間變化。例如,實(shí)施例的CM 122計(jì)算DCR和DPR,其中,DCR和DPR被用于計(jì)算聚合值T,所述聚合值T被用于計(jì)算由RM121進(jìn)行的請(qǐng)求分塊的優(yōu)選塊大小CTarget(I)。根據(jù)實(shí)施例的這樣的操作的目的在于,使塊足夠大足以獲得好的速率,但保持所請(qǐng)求數(shù)據(jù)的總量盡可能小。實(shí)施例的CM 122決定對(duì)向棧處理1025發(fā)出新的塊請(qǐng)求的準(zhǔn)備就緒性。在根據(jù)實(shí)施例的操作中,CM 122將塊請(qǐng)求準(zhǔn)備就緒性傳送給RM 121。根據(jù)實(shí)施例的這樣的操作的目的在于,在棧處理1025中保持連接繁忙,但不提前過(guò)遠(yuǎn)地使塊請(qǐng)求排隊(duì)等候。CM 122可以向棧處理1025作出針對(duì)塊的請(qǐng)求(例如,HTTP請(qǐng)求),并且向RM 121提供數(shù)據(jù)響應(yīng)。
已描述了該示例性實(shí)施例的TA 120及其RM 121和CM 122的一般功能,下面提供如可以在根據(jù)示例性實(shí)施例的TA 120的RM和CM部件內(nèi)實(shí)現(xiàn)的算法。
在根據(jù)實(shí)施例的操作中,CM 122保持對(duì)DCR和/或平均DCR的測(cè)量。CM 122可以例如通過(guò)測(cè)量下載速率但減損塊響應(yīng)之間的間隙來(lái)完成此。為減損塊之間的間隙,實(shí)施例的CM 122減損針對(duì)每個(gè)塊所接收的第一個(gè)數(shù)據(jù)中的字節(jié),并且還減損塊的第一個(gè)數(shù)據(jù)的到達(dá)與針對(duì)前一個(gè)被接收的塊所接收的最后的數(shù)據(jù)的到達(dá)之間的時(shí)間。在圖7中示出了DCR減損的一個(gè)示例,其中,被減損的時(shí)間和數(shù)據(jù)由Xs指定。通常,如圖7中所示,針對(duì)HTTP請(qǐng)求所接收的響應(yīng)數(shù)據(jù)的區(qū)塊(block)是TCP網(wǎng)絡(luò)分組的凈荷。然而,由于傳輸錯(cuò)誤和其它缺陷,每個(gè)單個(gè)TCP段可以不是隔離地被接收的,而相反是在較大區(qū)塊中被接收的(例如,特別是當(dāng)通過(guò)具有小RTT的快速鏈路下載時(shí))。因此,被一次接收的個(gè)體數(shù)據(jù)區(qū)塊可以不提供對(duì)TCP分組的良好近似,因?yàn)楸灰淮谓邮盏膫€(gè)體數(shù)據(jù)區(qū)塊是包括由CM 122一次接收的數(shù)據(jù)的多個(gè)TCP分組的大得多的區(qū)塊。下面描述的由CM 122進(jìn)行的DCR計(jì)算考慮了一次接收數(shù)據(jù)的大區(qū)塊的可能性,并且相似地,下面描述的由CM122進(jìn)行的DPR計(jì)算考慮了一次接收數(shù)據(jù)的大區(qū)塊的可能性。
DCR是對(duì)如果塊請(qǐng)求是任意大的話可以在給定狀況下達(dá)到的下載速率的估計(jì)。應(yīng)當(dāng)指出,如果塊請(qǐng)求小,則發(fā)出每個(gè)塊請(qǐng)求與開(kāi)始接收響應(yīng)之間的空閑時(shí)間將負(fù)面地影響總體下載速率。增大塊大小將因此某種程度上增大有效的下載速率。DCR估計(jì)被針對(duì)該效應(yīng)進(jìn)行校正,并且因此是基本上獨(dú)立于所選擇塊大小的。
為計(jì)算DCR,根據(jù)實(shí)施例計(jì)算運(yùn)行變量TDCR和ZDCR,其對(duì)應(yīng)于在接收數(shù)據(jù)上花費(fèi)的時(shí)間的累積量和當(dāng)每個(gè)塊的第一個(gè)被接收的區(qū)塊被丟棄時(shí)被接收的數(shù)據(jù)的量。還根據(jù)實(shí)施例利用幫助器數(shù)據(jù)結(jié)構(gòu)unseen_chunk_ids,其包含塊ID,并且跟蹤針對(duì)其的請(qǐng)求已被發(fā)出,但還沒(méi)有數(shù)據(jù)被接收的塊ID。
前述的根據(jù)實(shí)施例的變量和數(shù)據(jù)結(jié)構(gòu)的初始化可以是如下面所示那樣的,其中,MSS是優(yōu)選被設(shè)置為接近TCP分組的最大大小的常量(例如,MSS=1500字節(jié)),并且Cmult是小于1的常量(例如,Cmult=2/3):
設(shè)置TDCR=0
設(shè)置ZDCR=0
設(shè)置unseen_chunk_ids=empty_set()
設(shè)置Tlast_data_recv=現(xiàn)在(以毫秒計(jì))
在根據(jù)實(shí)施例的操作中,當(dāng)新的塊請(qǐng)求C從RM過(guò)來(lái)時(shí),它的ID被如下面所示那樣添加到未看見(jiàn)的塊ID的集合:
unseen_chunk_ids.add(chunk_idC)
然后根據(jù)實(shí)施例向棧處理1025發(fā)出塊請(qǐng)求C。
當(dāng)塊請(qǐng)求C的數(shù)據(jù)到達(dá)時(shí),根據(jù)實(shí)施例執(zhí)行以下步驟以更新TDCR、ZDCR和unseen_chunk_ids:
讓current_time是當(dāng)前的時(shí)間(以毫秒計(jì))
讓deltaT=current_time-Tlast_data_recv(自最后被接收的任何塊的任何數(shù)據(jù)以來(lái)的時(shí)間)
Tlast_data_recv=current_time
讓deltaZ=被接收的數(shù)據(jù)的量(包括HTTP報(bào)頭開(kāi)銷)
如果chunk_idC在unseen_chunk_ids中:
如果deltaZ>MSS則
TDCR=TDCR+deltaT*Cmult*(deltaZ–MSS)/deltaZ
ZDCR=ZDCR+deltaZ-MSS
從unseen_chunk_ids中移除chunk_idC
否則:
TDCR=TDCR+deltaT
ZDCR=ZDCR+deltaZ
從前述內(nèi)容中可以認(rèn)識(shí)到,如果deltaZ<=MSS是針對(duì)對(duì)于其來(lái)說(shuō)沒(méi)有之前的數(shù)據(jù)已被接收的塊所接收的數(shù)據(jù)的量,則deltaT和deltaZ全部被減損(即,什么都不添加到TDCR和ZDCR)。然而,如果deltaZ>MSS是針對(duì)對(duì)于其來(lái)說(shuō)沒(méi)有之前的數(shù)據(jù)已被接收的塊所接收的數(shù)據(jù)的量,則取代將deltaT和deltaZ全部減損,根據(jù)前述內(nèi)容的操作將deltaT減損一個(gè)因子Cmult*(deltaZ-MSS)/deltaZ,并且將被減損的值添加到TDCR,并且進(jìn)一步將deltaZ減損一個(gè)因子(deltaZ-MSS)/deltaZ,并且將被減損的值添加到ZDCR。因此,實(shí)質(zhì)上僅被接收的數(shù)據(jù)的第一個(gè)MSS被減損,而剩余部分在DCR參數(shù)ZDCR和TDCR中被計(jì)數(shù)。將deltaT額外減損Cmult確保被減損的deltaZ值除以被減損的deltaT值的比值大于deltaZ除以deltaT的比值,這繼而確保當(dāng)由于Cmult<1,deltaZ>MSS時(shí),因接收針對(duì)對(duì)于其來(lái)說(shuō)沒(méi)有之前的數(shù)據(jù)已被接收的塊所接收的數(shù)據(jù)而產(chǎn)生的對(duì)DCR的總體影響總體來(lái)說(shuō)將比對(duì)DPR的影響更積極。
TDCR和ZDCR是單調(diào)遞增的數(shù)。實(shí)施例的CM 122進(jìn)一步操作為記錄DCR的一些歷史,并且因此CM可以保存(TDCR,ZDCR)對(duì)的數(shù)組,例如可以按它們的歷史次序來(lái)進(jìn)行存儲(chǔ)。該數(shù)組在本文中被稱為mapTDCRZDCR。每當(dāng)新的數(shù)據(jù)被接收時(shí),mapTDCRZDCR的更新根據(jù)實(shí)施例發(fā)生。在實(shí)踐中,從mapTDCRZDCR移除舊的條目以避免歷史的無(wú)界增長(zhǎng)可能是可取的,并且因此mapTDCRZDCR可以根據(jù)本文中的實(shí)施例被存儲(chǔ)在循環(huán)隊(duì)列中。
對(duì)于對(duì)示例性實(shí)施例進(jìn)行的討論的剩余部分,DCR(dcr_dpr_estimate_win)表示在前一個(gè)持續(xù)時(shí)間為dcr_dpr_estimate_win的窗口上被估計(jì)的DCR,其中,dcr_dpr_estimate_win是配置參數(shù)。
HTTP客戶端的所達(dá)到的下載速率取決于該客戶端多么積極地請(qǐng)求數(shù)據(jù)。例如,如果大文件正在被下載,則可以達(dá)到高的下載速率,這是因?yàn)槭裁葱枰徽?qǐng)求是提前清楚的,并且因此TA 120可以被操作為使得它將永遠(yuǎn)不會(huì)急需將要發(fā)出的塊請(qǐng)求。另一方面,如果客戶端是例如播放直播內(nèi)容的DASH客戶端,則它可能僅能夠提前請(qǐng)求數(shù)據(jù)的小片段(因?yàn)樵诰眠h(yuǎn)的未來(lái)視頻不可用),并且因此可能不能夠達(dá)到非常高的下載速率。
根據(jù)實(shí)施例的所利用的下載流水線速率(DPR)是對(duì)當(dāng)前狀態(tài)(例如,塊大小、并發(fā)度)下的可達(dá)到的飽和下載速率的估計(jì)。換句話說(shuō),DPR對(duì)以當(dāng)前的TA 120設(shè)置利用大文件下載將達(dá)到的速率進(jìn)行估計(jì)。
為根據(jù)本文中的實(shí)施例計(jì)算DPR,將塊請(qǐng)求分組到紀(jì)元(epoch)中??梢岳缑慨?dāng)塊請(qǐng)求被延遲時(shí)(例如,當(dāng)自從TA 120變?yōu)閷?duì)發(fā)送塊請(qǐng)求準(zhǔn)備就緒并且下一個(gè)塊請(qǐng)求已發(fā)出起,大量時(shí)間已過(guò)去時(shí))開(kāi)始新的紀(jì)元。可以通過(guò)測(cè)量下載速率但將針對(duì)塊或者子請(qǐng)求所下載的第一個(gè)數(shù)據(jù)之間的間隙從新紀(jì)元中減損來(lái)計(jì)算DPR。
在CM 122處從RM 121接收的塊請(qǐng)求被分類到紀(jì)元中。在根據(jù)實(shí)施例的操作中,針對(duì)每個(gè)“被延遲”的塊請(qǐng)求開(kāi)始新的紀(jì)元。在圖8中示出了對(duì)將塊請(qǐng)求分類到紀(jì)元中的說(shuō)明,其中,塊請(qǐng)求在以下條件中的一個(gè)或多個(gè)條件下通常被指定為遲的或者被延遲的:下載會(huì)話的第一個(gè)被發(fā)出的塊請(qǐng)求;當(dāng)從UA 129去往RM 121的請(qǐng)求是遲的時(shí);在緩沖器的高/低水位耗盡情況下的按需流傳送中;以及在直播流傳送中,當(dāng)分段在固定的時(shí)間軸上是可用的時(shí)。當(dāng)紀(jì)元的第一個(gè)數(shù)據(jù)到達(dá)時(shí),其被計(jì)數(shù)為“被延遲”的,并且被從DPR計(jì)算中減損。在圖9中示出了DPR減損的一個(gè)示例,其中,由Xs指定的時(shí)間和數(shù)據(jù)被減損。通常,如圖9中所示,針對(duì)HTTP請(qǐng)求所接收的響應(yīng)數(shù)據(jù)的區(qū)塊是TCP網(wǎng)絡(luò)分組的凈荷。然而,與上面描述的DCR技術(shù)相似,下面描述的DPR技術(shù)考慮了多于一個(gè)TCP網(wǎng)絡(luò)分組可以被一次接收的可能性。
可以根據(jù)下面描述的算法來(lái)計(jì)算DPR。應(yīng)當(dāng)認(rèn)識(shí)到,關(guān)于DPR的計(jì)算所采取的方法與上面描述的對(duì)DCR的計(jì)算相似。如之前一樣,讓MSS是優(yōu)選被設(shè)置為接近TCP分組的最大大小的常量(例如,MSS=1500字節(jié))。與上面使用的Cmult相似,假設(shè)Pmult是小于1的常量(例如,Pmult=2/3)。Cmult和Pmult的值可以根據(jù)實(shí)施例被設(shè)置為相同的值或者不同的值。根據(jù)實(shí)施例的所采用的DPR計(jì)算算法取決于配置參數(shù)epoch_time_threshold,所述配置參數(shù)epoch_time_threshold是請(qǐng)求準(zhǔn)備就緒與觸發(fā)新紀(jì)元的請(qǐng)求發(fā)出之間的時(shí)間(以毫秒計(jì))的最小量(例如,epoch_time_threshold=20是用于該參數(shù)的合理設(shè)置)。實(shí)施例的DPR算法可以記錄TDPR和ZDPR變量,其中,計(jì)時(shí)器TDPR對(duì)TA在下載數(shù)據(jù)上花費(fèi)的時(shí)間的累積量(將紀(jì)元之間的間隙減損)進(jìn)行計(jì)數(shù),并且計(jì)數(shù)器ZDPR對(duì)被接收的字節(jié)的累積數(shù)量(將在紀(jì)元開(kāi)始處被接收的最先的突發(fā)減損)進(jìn)行計(jì)數(shù)。該算法可以也記錄多個(gè)其它變量,所述其它變量諸如是current_epoch_id(即,被分配給新的塊請(qǐng)求的當(dāng)前的紀(jì)元號(hào))、awaited_epoch_id(即,對(duì)于其來(lái)說(shuō)最先被接收的數(shù)據(jù)凈荷還未被減損的下一個(gè)紀(jì)元ID)、ready_flag(即,指示是否CM對(duì)接受新的請(qǐng)求準(zhǔn)備就緒的標(biāo)志)和last_ready_time(即,如果ready_flag被設(shè)置的話,指示當(dāng)CM變?yōu)閷?duì)接受新的塊請(qǐng)求準(zhǔn)備就緒時(shí)的時(shí)間點(diǎn)(如果ready_flag未被設(shè)置的話,該值不被使用))。
在根據(jù)實(shí)施例的DPR計(jì)算算法啟動(dòng)時(shí),可以如下地設(shè)置前述變量:
設(shè)置TDPR=0
設(shè)置ZDPR=0
設(shè)置current_epoch_id=0
設(shè)置awaited_epoch_id=0
設(shè)置ready_flag=True
設(shè)置last_ready_time=現(xiàn)在(以毫秒計(jì))–epoch_time_threshold–1
設(shè)置Tlast_data_recv=現(xiàn)在(以毫秒計(jì))
當(dāng)塊請(qǐng)求C從RM 121過(guò)來(lái)時(shí),實(shí)施例的DPR計(jì)算算法如下地操作:
設(shè)置delta=現(xiàn)在(以毫秒計(jì))–last_ready_time
如果ready_flag==True and delta>epoch_time_threshold,
設(shè)置current_epoch_id=current_epoch_id+1
C.epoch_id=current_epoch_id
ready_flag=False
調(diào)用內(nèi)部的準(zhǔn)備就緒性更新算法
塊請(qǐng)求C可以然后被發(fā)給棧處理1025。
當(dāng)塊請(qǐng)求D的數(shù)據(jù)到達(dá)時(shí),實(shí)施例的DPR計(jì)算算法如下地操作:
讓current_time=現(xiàn)在(以毫秒計(jì))
讓deltaT=current_time-Tlast_data_recv(自從最后被接收的任何塊的任何數(shù)據(jù)以來(lái)的時(shí)間)
Tlast_data_recv=current_time
讓deltaZ=所接收的數(shù)據(jù)的量,包括HTTP報(bào)頭開(kāi)銷
如果D.epoch_id≥awaited_epoch_id,
//數(shù)據(jù)開(kāi)始新紀(jì)元,減損。
如果deltaZ>MSS則
TDPR=TDPR+deltaT*Pmult*(deltaZ–MSS)/deltaZ
ZDPR=ZDPR+deltaZ-MSS
設(shè)置awaited_epoch_id=D.epoch_id+1
否則:
TDPR=TDPR+deltaT
ZDPR=ZDPR+deltaZ
在根據(jù)實(shí)施例的操作中,deltaZ確實(shí)包括HTTP報(bào)頭開(kāi)銷,并且對(duì)于DCR計(jì)算中的對(duì)應(yīng)片段是同樣的。不包括報(bào)頭開(kāi)銷可能通常是重要的,因?yàn)閳?bào)頭可能是大到足以影響算法的(例如,如果塊大小小的話)。
在前述的描述內(nèi)容中,被用于DCR的變量Tlast_data_recv與被用于DPR的變量是不同的。因?yàn)閮烧咚惴ㄔ谙嗤瑫r(shí)間點(diǎn)處被調(diào)用,所以公共的變量假如它不被每DPR和DCR調(diào)用更新兩次的話則也可以被使用。
TDPR和ZDPR是單調(diào)遞增的數(shù)。CM可以記錄那些值的一些歷史,并且因此,實(shí)施例的CM 122將這些變量存儲(chǔ)在在本文中被稱為mapTDPRZDPR的循環(huán)隊(duì)列中??梢砸耘c用于DCR的循環(huán)隊(duì)列大致相同的方式來(lái)選擇那個(gè)循環(huán)隊(duì)列的大小。
對(duì)于對(duì)示例性實(shí)施例進(jìn)行的討論的剩余部分,DPR(dcr_dpr_estimate_win)表示在前一個(gè)持續(xù)時(shí)間為dcr_dpr_estimate_win的窗口上被估計(jì)的DPR,其中,dcr_dpr_estimate_win通常將是與用于DCR的持續(xù)時(shí)間相同的持續(xù)時(shí)間。
實(shí)施例的CM 122保存針對(duì)T值的測(cè)量,T值是對(duì)活動(dòng)塊請(qǐng)求的聚合大小的近似。在根據(jù)實(shí)施例的操作中,請(qǐng)求被分塊,并且CM 122基于它針對(duì)T值的當(dāng)前測(cè)量來(lái)指示對(duì)發(fā)出新的塊請(qǐng)求的準(zhǔn)備就緒性。根據(jù)實(shí)施例的T值調(diào)整算法的目標(biāo)在于,T應(yīng)當(dāng)是大得足以確保接近可能的最大下載速率的,同時(shí)受制于前述內(nèi)容,T應(yīng)當(dāng)是盡可能小的。如果T值太小,則CM 122看到大于當(dāng)當(dāng)前的HTTP塊請(qǐng)求完成時(shí)與當(dāng)來(lái)自下一個(gè)HTTP塊請(qǐng)求的第一個(gè)響應(yīng)開(kāi)始時(shí)之間的平均的“間隙”。這在圖10A中被示出。如果T值是正好的,則對(duì)下一個(gè)HTTP塊請(qǐng)求的第一個(gè)響應(yīng)以與當(dāng)前的HTTP塊請(qǐng)求完成之后的塊的全部其它分組相同的步調(diào)到來(lái)。這在圖10B中被示出。如果T值太大,大量HTTP塊請(qǐng)求被比必要的更快地提交。這在圖10C中被示出。
實(shí)施例的CM 122使用DPR和DCR的當(dāng)前的值(在前一個(gè)持續(xù)時(shí)間為dcr_dpr_estimate_win的窗口上求平均)來(lái)定期地調(diào)整T值測(cè)量。下面的DCR與DPR之間的關(guān)系通常保持為:DCR通常是至少與DPR一樣大的;當(dāng)塊的第一個(gè)數(shù)據(jù)區(qū)塊與前一個(gè)被接收的數(shù)據(jù)區(qū)塊之間存在大于平均的間隙(這暗示更多數(shù)據(jù)應(yīng)當(dāng)在鏈路上被請(qǐng)求,并且因此T應(yīng)當(dāng)被增大)時(shí),DCR通常大于DPR;以及,當(dāng)塊的第一個(gè)數(shù)據(jù)區(qū)塊與前一個(gè)被接收的數(shù)據(jù)區(qū)塊之間存在平均的間隙(這暗示請(qǐng)求是足夠早和大的,并且因此,T是足夠大的并且可以被減小)時(shí),DCR通常近似等于DPR。在圖11中示出了當(dāng)DCR=DPR時(shí)的平均間隙和當(dāng)DCR>DPR時(shí)的大于平均的間隙的概念。
在根據(jù)實(shí)施例的操作中,T值調(diào)整算法使用前述的觀察來(lái)定期地調(diào)整T值,并且維護(hù)用于給定的鏈路狀況的最優(yōu)的T。下面闡述了由實(shí)施例的CM122所使用的配置參數(shù)和T值調(diào)整算法:
在實(shí)施例的T值調(diào)整算法啟動(dòng)時(shí),可以如下地初始化所述變量:
設(shè)置TInit=CInit*sminTotal(或者如果可用的話從歷史文件加載它)
last_tvalue_update_time=現(xiàn)在(以毫秒計(jì))
設(shè)置Tmin=Cmin*sminTotal
設(shè)置w=dcr_dpr_estimate_win
在根據(jù)實(shí)施例的操作中,每當(dāng)數(shù)據(jù)被接收或者對(duì)于活動(dòng)的CM發(fā)生100毫秒的超時(shí)(即,CM具有一些未完成的已請(qǐng)求的數(shù)據(jù))時(shí):
如果DCR(w)是無(wú)效的或者DPR(w)是無(wú)效的
返回
current_time=現(xiàn)在(以毫秒計(jì))
如果current_time–last_tvalue_update_time>tMinTAdjInterval,
如果DCR(w)>DPR(w)*cm_cp_ratio_max,
ratio=cm_cp_ratio_max
否則如果DCR(w)<DPR(w)*cm_cp_ratio_min,
ratio=cm_cp_ratio_min
否則:
ratio=DCR(w)/DPR(w)
z=1+cm_step_alpha*(cm_target_delta*ratio–1)
設(shè)置T=min(Tmax,max(T*z,Tmin))
last_tvalue_update_time=current_time
以浮點(diǎn)算術(shù)根據(jù)實(shí)施例執(zhí)行以上函數(shù)中的計(jì)算。在終止時(shí),實(shí)施例的CM 122操作為,如果TAhistory_filename已通過(guò)配置被設(shè)置,則將T的最終值寫入歷史文件。
在根據(jù)實(shí)施例的操作中,RM 121向CM 122查詢針對(duì)起源服務(wù)器I的對(duì)發(fā)出新的塊請(qǐng)求的準(zhǔn)備就緒性。CM 122可以繼而通過(guò)使用準(zhǔn)備就緒性算法來(lái)確定它對(duì)于向起源服務(wù)器I發(fā)出新的塊請(qǐng)求是否準(zhǔn)備就緒。在內(nèi)部,實(shí)施例的CM 122記錄已向網(wǎng)絡(luò)棧發(fā)出的針對(duì)不同起源服務(wù)器的塊請(qǐng)求。CM可以使用該信息連同關(guān)于每起源服務(wù)器被網(wǎng)絡(luò)棧允許的連接的最大數(shù)量的配置信息來(lái)調(diào)節(jié)和調(diào)度去往棧的塊請(qǐng)求。CM可以還使用它的對(duì)T值的測(cè)量來(lái)確保在不過(guò)度地致力于比必要的請(qǐng)求得更快的情況下鏈路被用到它的最大容量。
下面闡述了被實(shí)施例的CM 122使用的配置參數(shù)和準(zhǔn)備就緒性算法:
當(dāng)由RM 121向CM查詢對(duì)于特定起源服務(wù)器的準(zhǔn)備就緒性時(shí),實(shí)施例的CM 122可以執(zhí)行以下操作:
QI=去往起源服務(wù)器I的活動(dòng)塊請(qǐng)求的當(dāng)前數(shù)量
Q=去往全部起源服務(wù)器的活動(dòng)塊請(qǐng)求的當(dāng)前數(shù)量=sumI(QI)
RAvg=接收來(lái)自全部起源服務(wù)器的塊請(qǐng)求的平均當(dāng)前數(shù)量(使用RAvg計(jì)算算法)。
//找到Qallow,其是
//max{Z:T>=Cmin*(Z+1)
//and(ready_threshold*Z<=1000*RAvg or Z<sminTotal)
//and Z–Q+QI<smaxOrg
//and Z<smaxTotal}
bound1=floor(T/Cmin)–1
bound2=max(floor(1000*Ravg/ready_threshold),sminTotal-1)
bound3=smaxOrg+Q-QI–1
bound4=smaxTotal-1
QallowI=min{bound1,bound2,bound3,bound4}
在QallowI>=Q的情況下,CM對(duì)去往任何起源服務(wù)器I的塊請(qǐng)求準(zhǔn)備就緒
為理解根據(jù)實(shí)施例被實(shí)現(xiàn)的準(zhǔn)備就緒性算法,讓deltaI是可以可能對(duì)于特定起源服務(wù)器I被發(fā)出的額外塊請(qǐng)求。則QallowI(其針對(duì)準(zhǔn)備就緒性被計(jì)算)是如果我們將成功發(fā)出deltaI個(gè)塊請(qǐng)求的情況下系統(tǒng)中的活動(dòng)塊請(qǐng)求的總數(shù)(即,QallowI=deltaI+Q)。
在根據(jù)實(shí)施例的操作中,CM 122保存對(duì)接收數(shù)據(jù)的活動(dòng)塊請(qǐng)求的平均數(shù)量的測(cè)量(R)以便在準(zhǔn)備就緒性算法中使用。下面闡述了用于由實(shí)施例的CM 122計(jì)算RAvg的配置參數(shù)和算法:
在用于計(jì)算RAvg的算法啟動(dòng)時(shí),可以根據(jù)實(shí)施例如下地初始化所述變量:
設(shè)置RAvg=0(或者如果可用的話從歷史文件加載它)
last_Ravg_value_update_time=現(xiàn)在(以毫秒計(jì))
在根據(jù)實(shí)施例的操作中,每當(dāng)數(shù)據(jù)被接收或者對(duì)于活動(dòng)的CM 122發(fā)生100毫秒的超時(shí)(即,CM 122具有一些未完成的已請(qǐng)求的數(shù)據(jù))發(fā)生時(shí):
current_time=現(xiàn)在(以毫秒計(jì))
R=跨越全部起源服務(wù)器的接收數(shù)據(jù)的活動(dòng)塊請(qǐng)求的當(dāng)前數(shù)量
如果current_time–last_Ravg_value_update_time>tMinRAvgAdjInterval,
如果R>RAvg,
RAvg=R
否則:
RAvg=((1-receive_req_avg_const)*RAvg)+
(receive_req_avg_const*R)
last_Ravg_value_update_time=current_time
在終止時(shí),如果TAhistory_filename已通過(guò)配置被設(shè)置,則實(shí)施例的CM 122可以將RAvg寫入歷史文件。
根據(jù)實(shí)施例被實(shí)現(xiàn)的內(nèi)部的準(zhǔn)備就緒性算法的目的在于,更新CM 122內(nèi)的ready_flag和last_ready_time。這些參數(shù)可以被CM 122用于將到來(lái)的請(qǐng)求分類到前述的紀(jì)元中以便進(jìn)行DPR計(jì)算。
在根據(jù)實(shí)施例的操作中,該內(nèi)部準(zhǔn)備就緒性算法由CM 122在塊請(qǐng)求被從RM 121接收之后和用于已被發(fā)出的塊請(qǐng)求中的任何塊請(qǐng)求的數(shù)據(jù)被從棧接收之后立即執(zhí)行。以下內(nèi)容提供了根據(jù)本文中的實(shí)施例被采用的內(nèi)部準(zhǔn)備就緒性更新算法:
如果ready_flag==True,
返回//如果準(zhǔn)備就緒性已被建立則跳過(guò)
讓A是活動(dòng)的起源服務(wù)器(具有至少一個(gè)活動(dòng)的塊請(qǐng)求的服務(wù)器)的列表
對(duì)于A中的i:
針對(duì)起源服務(wù)器i確定準(zhǔn)備就緒性
如果CM對(duì)于起源服務(wù)器i準(zhǔn)備就緒
ready_flag=True
last_ready_time=現(xiàn)在(以毫秒計(jì))
在查詢對(duì)于特定起源的請(qǐng)求準(zhǔn)備就緒性之后并且在將請(qǐng)求分塊之前,實(shí)施例的RM 121向CM 122查詢對(duì)于特定起源服務(wù)器的塊請(qǐng)求的優(yōu)選塊大小。在根據(jù)實(shí)施例的操作中,CM 122使用優(yōu)選塊大小計(jì)算算法來(lái)向RM 121傳送對(duì)于起源服務(wù)器請(qǐng)求的優(yōu)選塊大小。在計(jì)算優(yōu)選塊大小時(shí)可以利用以下參數(shù)。
當(dāng)查詢對(duì)于起源服務(wù)器I的優(yōu)選塊大小時(shí),實(shí)施例的CM 122可以如下地操作:
計(jì)算QallowI
T=當(dāng)前的T值
CTarget(I)=max(T/(QallowI+1),Cmin)
在根據(jù)實(shí)施例的操作中,RM 121使用來(lái)自CM 122的優(yōu)選塊大小(CTarget(I))值來(lái)將來(lái)自UA 129的針對(duì)起源服務(wù)器I的下一個(gè)被調(diào)度的請(qǐng)求分塊,以便向CM 122發(fā)出。相應(yīng)地,RM可以使用分塊算法來(lái)提供對(duì)請(qǐng)求的分塊。由實(shí)施例的RM 121使用的分塊算法的目標(biāo)包括:使塊大小近似是RM 121從CM 122取回的CTarget(I)值;展寬不同塊請(qǐng)求的塊大小,以避免請(qǐng)求完成時(shí)間的同步(例如,可以與優(yōu)選塊大小CTarget(I)成比例地展寬塊大小);和/或避免作出非常小的塊請(qǐng)求。下面闡述了由實(shí)施例的RM 121用于分塊的配置參數(shù):
在根據(jù)實(shí)施例的操作中,RM 121還使用在啟動(dòng)時(shí)被初始化為0的(例如,在TA 120的運(yùn)行時(shí)期間)持續(xù)的計(jì)數(shù)器ctr。計(jì)數(shù)器ctr可以最方便地被實(shí)現(xiàn)為32比特?zé)o符號(hào)整數(shù)。
N=將被分塊的請(qǐng)求中的剩余的未被請(qǐng)求的字節(jié),或者對(duì)于開(kāi)放端點(diǎn)的字節(jié)范圍請(qǐng)求是None
計(jì)算p=ceil(CTarget(I)*(1+chunk_spread*(reverse_bits(ctr)/2**32)))
//應(yīng)當(dāng)指出:reverse_bits()將字中的比特倒轉(zhuǎn)
//見(jiàn)下面。
如果N不是None,
如果chunk_hysteresis*p<N,
設(shè)置ChunkSize=p
或者:
設(shè)置ChunkSize=N
或者:
設(shè)置ChunkSize=p
ctr=(ctr+1)%(2**32)
返回ChunkSize
reverse_bits()函數(shù)將32比特?zé)o符號(hào)整數(shù)中的比特倒轉(zhuǎn),由此,最有效的比特變成最無(wú)效的比特,第二有效的比特變成第二無(wú)效的比特,等等。該函數(shù)具有用于在從0到2^32–1的范圍中展寬整數(shù)的屬性,并且確實(shí)展寬具有比隨機(jī)展寬將具有的距離大的距離的短序列。作為參考,可以如下地實(shí)現(xiàn)該函數(shù):
在根據(jù)實(shí)施例的操作中,從用戶代理(包括瀏覽器)接收的HTTP請(qǐng)求在RM 121中被拆分,并且塊請(qǐng)求被發(fā)送給CM 122。實(shí)施例的CM 122決定何時(shí)新的塊請(qǐng)求可以被發(fā)送以及哪些起源服務(wù)器可用于處理新的塊請(qǐng)求。實(shí)施例的RM 121在以下條件下獲得調(diào)度用于向CM 122發(fā)出的塊請(qǐng)求的機(jī)會(huì):每當(dāng)RM 121從UA 129接收新的數(shù)據(jù)下載請(qǐng)求時(shí);每當(dāng)針對(duì)已被發(fā)出的塊請(qǐng)求的數(shù)據(jù)被接收時(shí);以及每當(dāng)在CM 122可能準(zhǔn)備好發(fā)出對(duì)于相同或者不同起源服務(wù)器的更多請(qǐng)求時(shí)RM 121成功地向CM 122發(fā)出塊請(qǐng)求時(shí)。在根據(jù)實(shí)施例的操作中,RM 121選擇來(lái)自UA 129的下一個(gè)請(qǐng)求以拆分并向CM 122移交塊請(qǐng)求,由此RM可以使用請(qǐng)求調(diào)度算法來(lái)達(dá)到這個(gè)目的。實(shí)施例的請(qǐng)求調(diào)度算法的目的在于:確保沒(méi)有任何來(lái)自UA 129的連接在TA 120存在時(shí)是急需的(如果在TA 120不存在時(shí)它將不是急需的的話);實(shí)現(xiàn)跨連接(UA 129與代理服務(wù)器之間的連接)或者跨起源服務(wù)器的公平性;以及,是連續(xù)工作的(例如,如果至少一個(gè)流可以在調(diào)度機(jī)會(huì)處被提供服務(wù),則至少一個(gè)請(qǐng)求將被提供服務(wù))??梢杂蓪?shí)施例的RM 121跨不同查詢地使用簡(jiǎn)單輪詢(round robin)調(diào)度。實(shí)施例的請(qǐng)求調(diào)度器記錄最后被提供服務(wù)的隊(duì)列,并且當(dāng)被給與調(diào)度另一個(gè)塊請(qǐng)求的機(jī)會(huì)時(shí),它挑選來(lái)自下一個(gè)隊(duì)列的開(kāi)頭的請(qǐng)求,并且測(cè)試CM 122對(duì)于起源服務(wù)器的針對(duì)該請(qǐng)求的準(zhǔn)備就緒性。如果需要,還可以使用由RM 121使用的更復(fù)雜的調(diào)度算法。
在啟動(dòng)時(shí),可以如下地初始化由請(qǐng)求調(diào)度器使用的參數(shù):
設(shè)置current_queue_id=0//記錄最后被提供服務(wù)的隊(duì)列
當(dāng)被給與調(diào)度與CM 122的請(qǐng)求的機(jī)會(huì)時(shí),實(shí)施例的RM 121循環(huán)地執(zhí)行以下操作,直到返回false為止:
實(shí)施例的RM 121內(nèi)的重新排序?qū)?94的目的在于,向上面的部件提供對(duì)連續(xù)的有序數(shù)據(jù)的傳遞。由于從UA 129進(jìn)來(lái)的數(shù)據(jù)下載請(qǐng)求被分塊成跨與起源服務(wù)器的多個(gè)連接來(lái)發(fā)送的多個(gè)塊請(qǐng)求,所以由RM 121接收回的數(shù)據(jù)可能不是有序的。在根據(jù)實(shí)施例的操作中,重新排序?qū)?94對(duì)在RM 121內(nèi)被內(nèi)部地接收的數(shù)據(jù)進(jìn)行緩沖,并且僅向上面的層/部件傳遞連續(xù)的數(shù)據(jù)。實(shí)施例的重新排序?qū)?94對(duì)每個(gè)隊(duì)列進(jìn)行緩沖,以使得數(shù)據(jù)可以被有序地傳遞。然而,根據(jù)本文中的實(shí)施例,一個(gè)隊(duì)列上的缺失的數(shù)據(jù)不應(yīng)當(dāng)阻塞另一個(gè)隊(duì)列。在圖12中示出了用于重新排序?qū)?94的邏輯單元。
在圖13A、13B和13C中示出了根據(jù)前述的示例性實(shí)施例的RM 121與CM 122之間的算法執(zhí)行的高層調(diào)用流。特別地說(shuō),圖13A示出了根據(jù)本文中的實(shí)施例的啟動(dòng)和結(jié)束調(diào)用流。圖13B示出了根據(jù)本文中的實(shí)施例的當(dāng)經(jīng)加速的請(qǐng)求被從傳輸加速器分派器接收時(shí)的調(diào)用流。圖13C示出了根據(jù)本文中的實(shí)施例的當(dāng)塊數(shù)據(jù)從棧被接收或者超時(shí)時(shí)的調(diào)用流。
圖14A、14B和14C示出了使用smin=4和smaxOrg=20針對(duì)使用本文中的實(shí)施例的TA 120連接到單個(gè)起源服務(wù)器的單個(gè)UA而生成的圖表。在圖14A中所示的仿真中,可用帶寬是6656千比特每秒,分組丟失率是0.1%,并且往返時(shí)間是50毫秒。在該仿真中,T的值平均上是近似80千字節(jié),所使用的TCP連接的平均數(shù)量近似是4,以及所達(dá)到的呈現(xiàn)速率是近似5000千比特,這是在可用帶寬以下可得的最高可能呈現(xiàn)速率。在圖14B中所示的仿真中,可用帶寬是6656千比特每秒,分組丟失率是1%,并且往返時(shí)間是50毫秒。在該仿真中,T的值平均上是近似120千字節(jié),所使用的TCP連接的平均數(shù)量近似是7或者8,以及所達(dá)到的呈現(xiàn)速率是近似5000千比特,這是在可用帶寬以下可得的最高可能呈現(xiàn)速率。因此,將圖14B的仿真與圖14A的仿真進(jìn)行比較,在具有相同的可用帶寬和往返時(shí)間,但在圖14B中具有比圖14A中高的丟失的情況下,所使用的連接的平均數(shù)量更高,并且T的值更高,但仍然是合理的,并且仍然達(dá)到最高呈現(xiàn)速率。在圖14C中所示的仿真中,可用帶寬是12288千比特每秒,分組丟失率是1%,以及往返時(shí)間是200毫秒。在該仿真中,T的值平均上是近似1兆字節(jié),所使用的TCP連接的平均數(shù)量是近似20,以及所達(dá)到的呈現(xiàn)速率是近似9500千比特,這是在可用帶寬以下可得的最高可能呈現(xiàn)速率。因此,將圖14C的仿真與圖14B的仿真進(jìn)行比較,在具有兩倍的可用帶寬和四倍的往返時(shí)間,并且具有相同的丟失率的丟失的情況下,所使用的連接的平均數(shù)量更高,并且T的值與往返時(shí)間和可用帶寬的增加的乘積成比例地更高,并且仍然達(dá)到最高呈現(xiàn)速率。
應(yīng)當(dāng)認(rèn)識(shí)到,可以修改或者適配傳輸加速器的操作以用于關(guān)于特定接口來(lái)使用。例如,根據(jù)本文中的概念實(shí)現(xiàn)的CM的實(shí)施例可以操作為,在知道瓶頸通常是無(wú)線接入網(wǎng)的情況下,當(dāng)網(wǎng)絡(luò)接口是3G/4G/LTE時(shí)是關(guān)于塊請(qǐng)求非常積極的,所述無(wú)線接入網(wǎng)由PFAIR(成比例的公平性)排隊(duì)策略支配(其將不對(duì)使用網(wǎng)絡(luò)的其它用戶裝備(UE)有害)。對(duì)應(yīng)地,當(dāng)網(wǎng)絡(luò)接口是通過(guò)共享WiFi公共接入網(wǎng)的時(shí),實(shí)施例可以實(shí)現(xiàn)較不積極的CM,所述共享WiFi公共接入網(wǎng)使用將潛在對(duì)使用網(wǎng)絡(luò)的其它較不積極的UE有害的FIFO排隊(duì)策略。如與通過(guò)與內(nèi)容服務(wù)器的網(wǎng)絡(luò)連接被獲得相對(duì)的,在數(shù)據(jù)從本地存儲(chǔ)器被訪問(wèn)(例如,如可以已從較早的廣播被加入隊(duì)列的)的情況下,傳輸加速器的實(shí)施例可以實(shí)現(xiàn)適于訪問(wèn)來(lái)自本地高速緩存的數(shù)據(jù)的CM,所述本地高速緩存是與關(guān)于網(wǎng)絡(luò)連接所使用的設(shè)計(jì)非常不同的設(shè)計(jì)。
盡管圖1A中所示出的實(shí)施例的RM 121被示為被與CM 122的單個(gè)實(shí)例接合,但如圖6的實(shí)施例中所示的,某些實(shí)施例的RM 121可以與多于一個(gè)這樣的CM接合。這樣的CM可以例如支持不同的網(wǎng)絡(luò)接口(例如,CM122a可以具有至設(shè)備上高速緩存622的本地接口,CM 122b可以使用至WiFi網(wǎng)絡(luò)接口的HTTP/TCP連接,以及CM 122c可以使用至4G/LTE網(wǎng)絡(luò)接口的HTTP/TCP連接,等等)。額外地或者替代地,這樣的CM可以提供本質(zhì)上相似的網(wǎng)絡(luò)接口(例如,不同的WiFi鏈路)。RM 121可以因此并發(fā)地與多個(gè)CM接合,由此,RM 121可以例如可操作為從多個(gè)CM請(qǐng)求相同分段或者分段的序列的數(shù)據(jù)塊(例如,數(shù)據(jù)請(qǐng)求的一部分被發(fā)送到使用至4G/LTE接口的HTTP/TCP連接的第一CM-xTCP,并且數(shù)據(jù)請(qǐng)求的一部分被發(fā)送到使用至WiFi接口的HTTP/TCP連接的第二CM-mHTTP)。RM可以聚合從所述CM中的每個(gè)CM接收的數(shù)據(jù),以重構(gòu)由UA請(qǐng)求的分段,并且將響應(yīng)提供回UA。
額外地或者替代地,盡管圖1A中所示出的實(shí)施例的CM 122被示為被與RM 121的單個(gè)實(shí)例接合,但某些實(shí)施例的CM 122可以并發(fā)地與多于一個(gè)這樣的RM接合。例如,多個(gè)RM(每個(gè)RM針對(duì)客戶端設(shè)備110的不同UA的)可以適于使用相同的CM或多個(gè)CM,由此,CM可以適于解決任何由于RM的并發(fā)操作產(chǎn)生的對(duì)連接的競(jìng)爭(zhēng)。替代地,單個(gè)RM可以適于關(guān)于多個(gè)UA使用,由此,RM適于解決任何由于UA的并發(fā)操作產(chǎn)生的對(duì)連接的競(jìng)爭(zhēng)。
盡管已詳細(xì)示出和描述了所選擇的方面,但應(yīng)當(dāng)理解,可以在其中作出各種替換和改變,而不會(huì)脫離如由下面的權(quán)利要求書定義的本發(fā)明的精神和范圍。