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