擁塞控制比特率算法
【專利說(shuō)明】擁塞控制比特率算法
[0001]領(lǐng)域
[0002]本公開(kāi)涉及在網(wǎng)絡(luò)上的數(shù)據(jù)傳輸。具體地,本公開(kāi)的各個(gè)方面涉及使用包交換網(wǎng)絡(luò)中的不可靠傳輸協(xié)議控制擁塞的系統(tǒng)和方法。
【背景技術(shù)】
[0003]隨著數(shù)字流媒體服務(wù)和各種基于云的計(jì)算解決方案的日益流行,在遠(yuǎn)程設(shè)備之間快速而準(zhǔn)確地傳送大量數(shù)據(jù)的能力是關(guān)鍵的任務(wù)。通過(guò)網(wǎng)絡(luò)例如互聯(lián)網(wǎng)、廣域網(wǎng)(WAN)或局域網(wǎng)(LAN)的共享資源向目標(biāo)系統(tǒng)發(fā)送數(shù)字?jǐn)?shù)據(jù)通常包括數(shù)據(jù)轉(zhuǎn)換為格式化塊的安排,該格式化塊被稱為包,其可以具有固定或可變的長(zhǎng)度。每個(gè)數(shù)據(jù)包一般包括有效載荷或主體,其具有被輸送到目的地的基本用戶數(shù)據(jù)以及通常至少部分被包含在該數(shù)據(jù)包的報(bào)頭內(nèi)、用于路由和控制目的的某些增補(bǔ)信息?;\統(tǒng)來(lái)說(shuō),網(wǎng)絡(luò)、發(fā)送系統(tǒng)和接收系統(tǒng)可以使用該增補(bǔ)信息以確保將有效載荷正確路由并輸送到期望的目的地。
[0004]以這種方式通過(guò)包交換網(wǎng)絡(luò)傳輸數(shù)據(jù)通常不可避免的的結(jié)果是包丟失,這在一個(gè)或多個(gè)數(shù)據(jù)包不能正確地到達(dá)其目的地時(shí)發(fā)生。包丟失可能是由于包括信道擁塞、信號(hào)衰減的各種因素和其他原因而產(chǎn)生。為了防止導(dǎo)致包丟失發(fā)生的某些網(wǎng)絡(luò)狀況,同時(shí)也有效地使用網(wǎng)絡(luò)信道中的可用帶寬,各種擁塞控制技術(shù)已被開(kāi)發(fā)出來(lái)。此外,存在一定范圍的傳輸協(xié)議,其可以并入工具以處理包丟失,且當(dāng)發(fā)生包丟失時(shí)用于處理包丟失的特定方法取決于在數(shù)據(jù)傳送期間使用的特定傳輸協(xié)議。一般來(lái)說(shuō),這些傳輸協(xié)議可被分為兩種類型,即可靠的協(xié)議和不可靠的協(xié)議,其中,每種傳輸協(xié)議提出某些折衷,并且用于任何實(shí)例的特定協(xié)議選擇可取決于數(shù)據(jù)傳送的性質(zhì)。
[0005]可靠協(xié)議并入將每個(gè)數(shù)據(jù)包依次輸送到目的地并在包丟失的情況下重傳丟棄包的保證。可靠協(xié)議往往(但不總是)是面向連接的協(xié)議,而輸送保證通常通過(guò)建立用于特定通信會(huì)話的從接收器回到發(fā)送器的反向信道來(lái)實(shí)現(xiàn),接收器可以使用該反向信道發(fā)送某種類型的確認(rèn)接收來(lái)驗(yàn)證包被正確輸送。當(dāng)指示數(shù)據(jù)包未能正確地到達(dá)其目的地時(shí),發(fā)送器可以使用這些確認(rèn)以引導(dǎo)重傳過(guò)程??煽繀f(xié)議的流行和眾所周知的示例是傳輸控制協(xié)議(TCP),該協(xié)議也是面向連接的??煽康膮f(xié)議(例如TCP)很適合數(shù)據(jù)的準(zhǔn)確傳送是首要關(guān)注并且為了驗(yàn)證數(shù)據(jù)包被正確地輸送可容許一定量的延遲的任務(wù),諸如發(fā)送基于文本的電子郵件、數(shù)字內(nèi)容下載和音頻/視頻可以被緩存在目標(biāo)系統(tǒng)的媒體流服務(wù)。不幸地,數(shù)據(jù)驗(yàn)證性能和重傳數(shù)據(jù)引入相當(dāng)大的開(kāi)銷,使得許多可靠協(xié)議不受時(shí)間敏感應(yīng)用(包括實(shí)時(shí)數(shù)據(jù)傳送,諸如現(xiàn)場(chǎng)音頻和/或視頻流、在線視頻游戲和互聯(lián)網(wǎng)電話)的歡迎。
[0006]相反,如上所述,不可靠協(xié)議通常放棄對(duì)特定包的數(shù)據(jù)輸送驗(yàn)證的類型,并且通常特征在于它們不保證每個(gè)包到達(dá)其目的地并且它們也不保證以正確順序輸送包的事實(shí)。不可靠的協(xié)議往往是(但不總是)無(wú)連接的,并且通常在任何特定通信會(huì)話期間不建立固定的信道。每個(gè)數(shù)據(jù)包可以改為基于包含在每個(gè)數(shù)據(jù)包中的增補(bǔ)信息而獨(dú)立地路由。不可靠協(xié)議的流行和眾所周知的示例是用戶數(shù)據(jù)報(bào)協(xié)議(UDP),這也是無(wú)連接的。由于不可靠協(xié)議如UDP通過(guò)放棄上述的可靠性特性而具有相對(duì)減少的開(kāi)銷,它們更適于將延遲減到最小是首要關(guān)注的時(shí)間敏感應(yīng)用,諸如上述的實(shí)時(shí)應(yīng)用。
[0007]由于不可靠協(xié)議通常放棄數(shù)據(jù)包的重傳,被稱為前向糾錯(cuò)(FEC)的技術(shù)通常用于處理當(dāng)使用不可靠服務(wù)傳輸數(shù)據(jù)時(shí)的包丟失。FEC為接收設(shè)備提供獨(dú)立地重構(gòu)丟失的數(shù)據(jù)而不需要發(fā)送器重傳未能正確輸送的源包的能力。當(dāng)使用前向糾錯(cuò)時(shí),原始源數(shù)據(jù)通常以FEC包的形式被冗余編碼在發(fā)送器側(cè),F(xiàn)EC包與源包被同時(shí)傳送到接收器。在丟失源包的情況下,接收器設(shè)備可以使用包含在FEC包中的冗余編碼數(shù)據(jù)重構(gòu)丟失的數(shù)據(jù)而不必等待重傳。
[0008]重要的是,網(wǎng)絡(luò)狀況往往隨時(shí)間變化,導(dǎo)致網(wǎng)絡(luò)信道上可供發(fā)送器使用的最大比特率基于信道上的當(dāng)前載荷改變。當(dāng)發(fā)送器系統(tǒng)嘗試以高于信道的當(dāng)前可用帶寬的比特率發(fā)送數(shù)據(jù)包時(shí),作為響應(yīng),它可引起觸發(fā)嚴(yán)重包丟失的擁塞狀況。這對(duì)于涉及可靠數(shù)據(jù)傳輸(例如TCP)的不太時(shí)間敏感應(yīng)用可能是可容許的,因?yàn)閬G失數(shù)據(jù)的重傳得到保證;然而,這對(duì)于許多實(shí)時(shí)應(yīng)用和涉及不可靠傳輸?shù)钠渌麘?yīng)用可能是不能接受的,因?yàn)榘鼇G失可能達(dá)到使得接收器無(wú)法重構(gòu)丟失數(shù)據(jù)、導(dǎo)致不良結(jié)果(諸如信號(hào)丟失)的程度。另一方面,當(dāng)最大可用比特率改為遠(yuǎn)遠(yuǎn)超過(guò)由發(fā)送器提供的比特率時(shí),這也是不希望的,因?yàn)榻Y(jié)果導(dǎo)致網(wǎng)絡(luò)信道的全傳輸能力被低效使用并且在接收器側(cè)的信號(hào)質(zhì)量可能不必要地差。
[0009]不幸地,以有效使用網(wǎng)絡(luò)信道的可用帶寬而不引起導(dǎo)致不可接受的包丟失的擁塞狀況的方式使用不可靠協(xié)議傳送數(shù)據(jù)是巨大的挑戰(zhàn)。傳統(tǒng)的擁塞控制技術(shù)往往只適合可靠協(xié)議(例如TCP),該技術(shù)具有到內(nèi)置發(fā)送器的傳輸層的反饋,但對(duì)許多不可靠協(xié)議(例如UDP)是無(wú)效的,不可靠協(xié)議通常缺乏所需的反饋,除非由使用戶在傳輸層上單獨(dú)添加。此夕卜,設(shè)計(jì)用于TCP或其他可靠協(xié)議的擁塞控制或擁塞避免算法一般不會(huì)快到用于實(shí)時(shí)流媒體應(yīng)用或和可能不適合于涉及不可靠協(xié)議的許多數(shù)據(jù)傳送應(yīng)用,因?yàn)轫憫?yīng)于擁塞比特率指數(shù)降低可能導(dǎo)致實(shí)時(shí)信號(hào)的質(zhì)量受過(guò)大影響的結(jié)果。此外,雖然由比特率增加到擁塞點(diǎn)導(dǎo)致的包丟失可以在不太時(shí)間敏感的應(yīng)用(其使用TCP或其他可靠協(xié)議以重傳數(shù)據(jù))中是可容許的,但是在許多實(shí)時(shí)應(yīng)用中可能是不可接受的,這是由于導(dǎo)致接收器無(wú)力重構(gòu)數(shù)據(jù)。
[0010]因此,在本領(lǐng)域需要一種適合與UDP和其他不可靠傳輸協(xié)議使用的有效擁塞控制和擁塞避免技術(shù)。正是在這樣的背景下,產(chǎn)生了本公開(kāi)的各個(gè)方面。
【發(fā)明內(nèi)容】
[0011]根據(jù)本公開(kāi)的某些實(shí)施,由發(fā)送器計(jì)算系統(tǒng)執(zhí)行的方法可以包括通過(guò)網(wǎng)絡(luò)經(jīng)由不可靠協(xié)議向至少一個(gè)接收器設(shè)備發(fā)送數(shù)據(jù)包流。該數(shù)據(jù)包流可以包括源包和前向糾錯(cuò)(FEC)包。該方法可包括在所述發(fā)送期間,從至少一個(gè)接收器設(shè)備接收一個(gè)或多個(gè)反饋報(bào)告,每個(gè)所述周期性反饋報(bào)告表征在對(duì)應(yīng)時(shí)間周期內(nèi)的包丟失。該方法還可包括:在所述發(fā)送期間,響應(yīng)于所述反饋報(bào)告的至少一個(gè)反饋報(bào)告,調(diào)整所述數(shù)據(jù)包在該流中發(fā)送的速率。調(diào)整速率可以包括響應(yīng)于所述反饋報(bào)告中將所述包丟失表征為在可接受水平內(nèi)的反饋報(bào)告,增加發(fā)送所述FEC包的FEC速率同時(shí)保持發(fā)送所述源包的源速率。
[0012]根據(jù)本公開(kāi)的某些實(shí)施,發(fā)送器計(jì)算系統(tǒng)可以包括至少一個(gè)處理器單元和耦接到至少一個(gè)處理器單元的至少一個(gè)存儲(chǔ)器單元。該至少一個(gè)處理器單元和至少一個(gè)存儲(chǔ)器單元可以經(jīng)配置執(zhí)行一種方法。該方法可包括通過(guò)網(wǎng)絡(luò)經(jīng)由不可靠協(xié)議向至少一個(gè)接收器設(shè)備發(fā)送數(shù)據(jù)包流。該數(shù)據(jù)包流可以包括源包和前向糾錯(cuò)(FEC)包。該方法可包括在所述發(fā)送期間,從至少一個(gè)接收器設(shè)備接收一個(gè)或多個(gè)反饋報(bào)告,每個(gè)所述周期性反饋報(bào)告表征在對(duì)應(yīng)時(shí)間周期內(nèi)的包丟失。該方法還可包括:在所述發(fā)送期間,響應(yīng)于所述反饋報(bào)告的至少一個(gè)反饋報(bào)告,調(diào)整所述數(shù)據(jù)包在該流中發(fā)送的速率。調(diào)整速率可以包括響應(yīng)于所述反饋報(bào)告中將所述包丟失表征為在可接受水平內(nèi)的反饋報(bào)告,增加發(fā)送所述FEC包的FEC速率同時(shí)保持發(fā)送所述源包的源速率。
[0013]根據(jù)本公開(kāi)的某些實(shí)施,非臨時(shí)性計(jì)算機(jī)可讀介質(zhì)可體現(xiàn)有計(jì)算機(jī)可讀指令。計(jì)算機(jī)可讀指令可以經(jīng)配置以在執(zhí)行時(shí)實(shí)施一種方法。該方法可包括通過(guò)網(wǎng)絡(luò)經(jīng)由不可靠協(xié)議向至少一個(gè)接收器設(shè)備發(fā)送數(shù)據(jù)包流。該數(shù)據(jù)包流可以包括源包和前向糾錯(cuò)(FEC)包。該方法可包括在所述發(fā)送期間,從至少一個(gè)接收器設(shè)備接收一個(gè)或多個(gè)反饋報(bào)告,每個(gè)所述周期性反饋報(bào)告表征在對(duì)應(yīng)時(shí)間周期內(nèi)的包丟失。該方法還可包括:在所述發(fā)送期間,響應(yīng)于所述反饋報(bào)告的至少一個(gè)反饋報(bào)告,調(diào)整所述數(shù)據(jù)包在該流中發(fā)送的速率。調(diào)整速率可以包括響應(yīng)于所述反饋報(bào)告中將所述包丟失表征為在可接受水平內(nèi)的反饋報(bào)告,增加發(fā)送所述FEC包的FEC速率同時(shí)保持發(fā)送所述源包的源速率。
【附圖說(shuō)明】
[0014]本公開(kāi)的教義可以通過(guò)考慮下面結(jié)合附圖的【具體實(shí)施方式】很容易理解,其中:
[0015]圖1示出了根據(jù)本公開(kāi)的某些方面的示例數(shù)據(jù)傳輸和前向糾錯(cuò)技術(shù)的示意圖。
[0016]圖2示出了根據(jù)本公開(kāi)的某些方面的示例擁塞控制技術(shù)的流程圖。
[0017]圖3示出了根據(jù)本公開(kāi)的某些方面響應(yīng)于來(lái)自至少一個(gè)接收器設(shè)備的反饋而調(diào)整發(fā)送器設(shè)備的比特率速率的詳細(xì)示例的流程圖。
[0018]圖4示出了根據(jù)本公開(kāi)的某些方面的示例系統(tǒng)的框圖。
【具體實(shí)施方式】
[0019]雖然為了說(shuō)明的目的,下面的詳細(xì)描述包含了許多特定細(xì)節(jié),但是本領(lǐng)域的任何普通技術(shù)人員應(yīng)理解,對(duì)以下細(xì)節(jié)的許多變化和改變都在本發(fā)明的范圍之內(nèi)。因此,以下描述的本公開(kāi)的說(shuō)明性實(shí)施在對(duì)所要求保護(hù)的發(fā)明沒(méi)有任何一般性損失且不會(huì)對(duì)其強(qiáng)加限制的情況下進(jìn)行闡述。
[0020]導(dǎo)言
[0021]本公開(kāi)的各個(gè)方面涉及可與不可靠傳輸協(xié)議(例如UDP)使用的擁塞控制和/或擁塞避免技術(shù)。
[0022]根據(jù)某些方面,一個(gè)或多個(gè)發(fā)送器設(shè)備可以使用不可靠傳輸協(xié)議(例如UDP)將數(shù)據(jù)包發(fā)送到一個(gè)或多個(gè)接收器設(shè)備。數(shù)據(jù)包可以包括源包(含有所需的源數(shù)據(jù))以及FEC包(含有在源包中一個(gè)或多個(gè)無(wú)法到達(dá)一個(gè)或多個(gè)接收器設(shè)備的情況下用于糾錯(cuò)的源數(shù)據(jù)的冗余)兩者。周期性反饋報(bào)告可從一個(gè)或多個(gè)接收器設(shè)備發(fā)送到一個(gè)或多個(gè)發(fā)送器設(shè)備。反饋報(bào)告可以識(shí)別在對(duì)應(yīng)時(shí)間周期內(nèi)的包丟失,并且發(fā)送器可以使用該反饋報(bào)告以識(shí)別包丟失是否發(fā)生在該時(shí)間周期內(nèi),和/或識(shí)別在該對(duì)應(yīng)時(shí)間周期內(nèi)包丟失的程度。包丟失可(例如)由于發(fā)送器提供太高的比特率到數(shù)據(jù)流而發(fā)生。
[0023]根據(jù)某些方面,一個(gè)或多個(gè)發(fā)送器設(shè)備可以使用周期性反饋報(bào)告以調(diào)整被發(fā)送到一個(gè)或多個(gè)接收器設(shè)備的流中的數(shù)據(jù)包的比特率的方面。比特率的方面可以按優(yōu)化接收器設(shè)備的能力以獲得源數(shù)據(jù)的方式進(jìn)行調(diào)整。在某些方面,響應(yīng)于指示包丟失在可接受水平內(nèi)的反饋報(bào)告,F(xiàn)EC包的比特率可增大,同時(shí)響應(yīng)于初始反饋報(bào)告保持源包在流中的并發(fā)比特