实时媒体流业务需要一个稳定的网络
传输速率,以使其在播放端可以平稳流畅地播放,达到用户所期望的播放质量。当前Internet网的数据传输业务基本上都是基于TCP的。TCP采用速率减半的拥塞退避机制,这很容易引起
数据流过大的速率波动,对
多媒体的传输是非常不利的。研究表明在传输过程采用
TCP/IP协议在用户较多时回放将发生延迟和不连续现象。而UDP不具备拥塞退避机制,在拥塞的网络环境中,UDP流将大量抢占TCP流的网络
带宽,同时自身的
丢包也迅速增加,并可能带来系统拥塞崩溃的潜在危险。因此,TCP与UDP协议都不能很好地满足实时媒体流业务的需要。随着Internet中
多媒体实时业务的迅速增长,研究一个适合于
多媒体传输,并具有拥塞退避机制,能够与
TCP协议公平分享带宽的
传输协议,成为了Internet传输的一个重要课题。
TFRC正是这样一种协议。它基于数学模型,由发送方根据网络环境调整
数据流的发送速率,进而达到
拥塞控制的目的。在同等条件下,TFRC流具有与TCP流近似相同的
吞吐量,因此,可以“公平地”与TCP共享网络带宽。另一方面,TFRC
吞吐量变化稳定、抖动较小,因此更加适合电话、
流媒体等对
传输速率的平滑性要求较高的应用。
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。