During this period, the data throughput from LBL to UC Berkeley (sites separated
by 400 yards and two IMP hops) dropped from 32 Kbps to 40 bps.
拥塞问题通常被描述为由高速链路到慢速链路的转换,以及此瓶颈处缓冲区的数据包建立/丢弃。 我想要了解的是这样的构建会如何导致端到端吞吐量的下降,而不是简单地在链接的高速部分引起多余的活动/重传进入完整的缓冲区。例如,请考虑以下网络:
fast slow fast
A ======== B -------- C ======== D
A和D是端点,B和C是从高速网络到低速网络转换的数据包缓冲区。所以例如A / B和C / D之间的链路为10Mbps,B / C之间的链路为56Kbps。现在,如果A向D发送一个大(假设理论上是无限的)消息,我试图理解的是为什么如果它只是用数据敲打TCP连接就会花费更多时间而不是适应连接中间较慢的链路速度。我设想B只是一些缓冲器以56Kbps的固定速率耗尽的东西,无论它的缓冲器被A锤击的程度有多大,而且无论因为满缓冲器而丢弃了多少数据包。因此,如果A总是保持B的缓冲区满(或者可能是满的情况),并且B总是以56Kbps的最大速率进行传输,那么通过使用慢启动,吞吐量会如何变得更好?
我唯一能想到的是,如果已收到的相同数据包D必须在拥塞时通过慢速B / C链路重新传输,这就阻止了新数据包。但D不会经常确认它收到的任何数据包,所以重传的数据包应该主要是那些合法地没有被D接收的数据包因为它们被丢弃在B的缓冲区吗?
答案 0 :(得分:2)
请记住,网络涉及在多台计算机之间共享资源。非常简单,需要慢启动以避免少量TCP会话耗尽路由器缓冲区(在图中,这很可能是在B点和C点)
旧TCP将与发送注入多个的发送者建立连接 进入网络的段,最多由广告所宣传的窗口大小 接收器。虽然这两个主机位于同一个LAN上时可以, 如果发送者和发送者之间有路由器和较慢的链接 接收器,问题可能出现。一些中间路由器必须排队 数据包,该路由器可能会耗尽空间。 [2]显示了这种天真的方法如何降低TCP的吞吐量 连接很大。
...
[2] V. Jacobson, "Congestion Avoidance and Control," Computer Communication Review, vol. 18, no. 4, pp. 314-329, Aug. 1988. ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z.
路由器必须具有有限的缓冲区。链路之间的速度不匹配越大,没有缓慢启动的缓冲区耗尽的可能性就越大。缓冲区耗尽后,平均TCP吞吐量会下降,因为缓冲会增加TCP利用链路的能力(防止不必要的瞬间链路饱和下降)。
请注意,上面的RFC 2001已被RFC 5681取代;但是,RFC 2001为您的问题提供了更可靠的答案。
从你的OP ......
现在,如果A向D发送一个大的(比如理论上无限的)消息,那么我想要理解的是,为什么如果它只是用数据敲打TCP连接而不是适应连接过程中链接速度较慢。
首先,TCP中没有无限消息。在慢启动出现之前,TCP受初始窗口大小的限制。
所以,假设最初的TCP段长度为64KB。如果整个TCP段填充B处路由器的tx缓冲区,由于涉及丢包,ACK和TCP退避的动态,TCP随着时间的推移利用较少的链路。让我们来看看个别情况:
第二种情况既不公平也不明智。 TCP在看到任何数据包丢失时会退出...共享单个链路的多个主机必须使用慢启动才能保持情况正常。
顺便说一句,我从未见过一个在接口上有9秒缓冲的路由器。没有用户会容忍这种延迟。大多数路由器的最大速度大约为1-2秒,而这是几年前的T-1速度。由于多种原因,今天的缓冲区甚至更小。