读书有三到:谓心到,眼到,口到。——明·朱熹
文章目录
- 对链接吞吐量的简化描述
- 高带宽路径的TCP
- 公平性
对链接吞吐量的简化描述
为了简化对一条TCP连接吞吐量的描述,我们首先忽略连接过程中处于慢启动状态的时间,因为这一状态时间极短,而且相比于其他状态的线性增长,该状态的指数式增长会将计算复杂化;而对于快速恢复状态,这一状态仅在网络轻度拥塞时出现,时间也极短,予以忽略。因此,我们只考虑处于拥塞避免状态时的吞吐量。
在拥塞避免状态下,每经过一个RTT拥塞窗口长度增加一个MSS,直到发生超时事件时,设当前拥塞窗口长度为W,则切换到慢启动状态再切换回来时,拥塞窗口长度变为当前的sstresh值(即W/2),然后重复这一过程。因此,当W不变时,窗口长度从W/2线性增长到W,然后再回到W/2,其平均吞吐量也就是(W/2RTT+W/RTT)/2=0.75W/RTT:
高带宽路径的TCP
随着数据量增大,TCP的吞吐量要求也在提高。有公式可以计算一条TCP连接的吞吐量(L是丢包率):
因此想保证高吞吐量的话,丢包率必须很低很低。因此我们需要根据一些方面的考虑设计新版的TCP。
公平性
当多条TCP连接通过一个链路时,我们需要考虑TCP连接的公平性,即是否每个连接能分到同样的链路资源。我们先考虑一种理想情况,此时有两条连接共享一条链路,这两条连接的MSS和RTT相同,且假设它们一直处于拥塞避免状态。
下图是两条连接的吞吐量情况,设一开始一条连接的吞吐量明显大于另一条:
我们可以发现代表当前吞吐量的点逐渐趋于平等带宽共享的线,我们可以对这个过程进行分析。一开始该点处于A处,由于处于拥塞避免状态,两条TCP连接的吞吐量都线性增长;增长到B点后,链路发生丢包,于是两条链接吞吐量都减半,到达C点(注意此时连接1减的比连接2要多);由于假设一直处于拥塞避免状态,吞吐量从C点线性增长到D点,然后再减半,如此循环往复,两条连接的吞吐量逐渐趋于相等。
注意,这只是理想化的情形,在实际应用中,由于多条连接的各种参数不同,TCP的这种趋于平等共享的自动调节机制也会失效。特别的,具有较小RTT的连接往往能占到更多的链路资源,因为它打开拥塞窗口的速度更快;如果UDP连接和TCP连接共享链路,由于UDP连接不会去限制吞吐量,所以正常情况下它会无限的挤压TCP连接的链路资源;第三种情况是,如果一个应用同时用多条TCP连接进行传输,这个应用占据的链路资源也会多于只用一条TCP连接传输资源的应用。
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!