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 会加倍。