TCP中的有关计算


 

1、发送方利用率 

传播时延 RTT  发送速率 R 分组长度 L

分组进入发送速率R的链路实际所需时间 :t1= L/R

在t1之后,最后1比特数据进入发送端信道

t2=RTT/2+L/R

t2时最后1比特到达接受端,接受端返回ACK到发送端

总共所需时间 t3=RTT+L/R

发送方利用率  t1/t3

 

2、TCP吞吐量

一个长存活期的TCP连接的平均吞吐量可能是多少?

忽略在超时事件后出现的慢启动阶段,在一个特定的往返间隔内,TCP发送数据的速率是拥塞窗口与当前RTT的函数

设窗口函数为w字节,往返时间是RTT秒,TCP的发送速率是 w/RTT

TCP通过每经过1个RTT将w增加1个MSS探测出额外的带宽,直到一个丢包事件发生为止。

当丢包事件发生时,W表示w的值。假设连接持续期间RTT和W几乎不变,那么TCP的传输速率在 W/(2*RTT) 到 W/RTT 之间变化

当速率增长到 W/RTT 时,网络丢弃来自连接的分组,然后发送速率就会减半,然后增加.......不断重复

TCP吞吐量在两个极值之间线性增长,所以有

                             一条连接的平均吞吐量  =  (0.75 * W)/ RTT

另一种说法

丢包率 L 往返时间 RTT 和最大报文长度 MSS

                           一条连接的平均吞吐量  =  (1.22 * MSS)/ (RTT * sqrt(L))

 

3、估计往返时间与超时

 TCP采用超时/重传机制

超时间隔必须大于该连接的往返时间,否则会造成不必要的重传

超时间隔到底有多大!?

样本RTT(表示为SampleRTT),即从某报文段被发出到对该报文段被收到之间的时间量

由于路由器的拥塞和端系统负载的变化,SampleRTT值会随之波动

EstimatedRTT = (1-α) * EstimatedRTT+α * SampleRTT

SampleRTT的变化在计算EstimatedRTT 的过程中趋于平缓

除了估算RTT外,测量RTT的变化也是有价值的

RTT偏差 DevRTT

DevRTT = (1-β) * DevRTT + β * |SampleRTT-EstimatedRTT|

假设已经给出了EstimatedRTT 和 DevRTT,超时间隔应该大于EstimatedRTT ,加一定的余量

TimeoutInterval = EstimatedRTT + 4 * DevRTT

当出现超时时,TimeoutInterval 会加倍。

你可能感兴趣的:(TCP中的有关计算)