TFRC: TCP-Friendly Rate Control(TCP友好速率控制算法)。
實時媒體流業(yè)務(wù)需要一個穩(wěn)定的網(wǎng)絡(luò)傳輸速率,以使其在播放端可以平穩(wěn)流暢地播放,達到用戶所期望的播放質(zhì)量。當前Internet網(wǎng)的數(shù)據(jù)傳輸業(yè)務(wù)基本上都是基于TCP的。TCP采用速率減半的擁塞退避機制,這很容易引起數(shù)據(jù)流過大的速率波動,對多媒體的傳輸是非常不利的。研究表明在傳輸過程采用TCP/IP協(xié)議在用戶較多時回放將發(fā)生延遲和不連續(xù)現(xiàn)象。而UDP不具備擁塞退避機制,在擁塞的網(wǎng)絡(luò)環(huán)境中,UDP流將大量搶占TCP流的網(wǎng)絡(luò)帶寬,同時自身的丟包也迅速增加,并可能帶來系統(tǒng)擁塞崩潰的潛在危險。因此,TCP與UDP協(xié)議都不能很好地滿足實時媒體流業(yè)務(wù)的需要。隨著Internet中多媒體實時業(yè)務(wù)的迅速增長,研究一個適合于多媒體傳輸,并具有擁塞退避機制,能夠與TCP協(xié)議公平分享帶寬的傳輸協(xié)議,成為了Internet傳輸?shù)囊粋重要課題。
TFRC正是這樣一種協(xié)議。它基于數(shù)學(xué)模型,由發(fā)送方根據(jù)網(wǎng)絡(luò)環(huán)境調(diào)整數(shù)據(jù)流的發(fā)送速率,進而達到擁塞控制的目的。在同等條件下,TFRC流具有與TCP流近似相同的吞吐量,因此,可以“公平地”與TCP共享網(wǎng)絡(luò)帶寬。另一方面,TFRC吞吐量變化穩(wěn)定、抖動較小,因此更加適合電話、流媒體等對傳輸速率的平滑性要求較高的應(yīng)用。
TFRC適用于固定數(shù)據(jù)包大小的應(yīng)用程序,它根據(jù)網(wǎng)絡(luò)環(huán)境的好壞,通過調(diào)整每秒鐘發(fā)送的數(shù)據(jù)包數(shù)來調(diào)整數(shù)據(jù)傳輸速率。TFRC是基于接收方的機制,它在接收方計算擁寨控制信息,例如丟包事件率等。
TFRC的擁塞控制機制如下:
* 數(shù)據(jù)接收方測量丟包事件率p,然后將其與時間戳一起反饋給發(fā)送方;
* 發(fā)送方利用反饋信息中的時間戳測量回環(huán)時間RTT;
* 將丟包事件率p和RTT代入TFRC的吞吐量方程,經(jīng)計算得到一個傳輸速率;
* 發(fā)送方然后根據(jù)這個計算得到的速率來調(diào)整其數(shù)據(jù)發(fā)送速率。
在TFRC中,丟失事件率是由接收端完成。接收端對每個到達的分組和丟失的分組都進行記錄。如果至少有三個序列號大于當前應(yīng)到達的分組的序列號的分組到達,那么分組被認為丟失了。與TCP不同,如果一個分組延遲到達(在三個后續(xù)分組后到達),該延遲分組可填補TFRC的接收記錄的間隙,接收端重新計算丟失事件率。
與TFRCP類似,是對丟失事件率的響應(yīng),同一個窗口內(nèi)的多個分組丟失被記入同一丟失事件。這是通過獲取丟失分組標稱到達時刻得差值是否大于當前RTT估計值來判斷的。如果二者之差小于當前RTT估計值,那么該分組丟失記入上一個分組丟失同一事件中,否則該分組被認為屬于新的分組丟失事件。
在TFRC中,兩個連續(xù)分組丟失事件的第一個分組序列號之差被稱為丟失事件間隔。如果一個丟失事件A由序列號為S_A的分組開始,緊接著丟失事件由序列號為S_B的分組開始,那么丟失事件間隔定義為:I=S_B-S_A。
平均丟失間隔為對最近的n個丟失事件間隔進行加權(quán)移動平均所獲得,n值大小決定了TFRC對擁塞的反應(yīng)速度,n不大于8。設(shè)I_mean為計算獲得的平均丟失間隔,那么丟失事件率為:p=1/I_mean。