-1

DCTCP 是用于数据中心环境的 TCP 的变体。来源在这里

DCTCP 使用商品交换机中的 ECN 功能将交换机中缓冲区的队列长度限制在阈值 K 左右。这样做,很少发生丢包,因为 K 远小于缓冲区的容量,因此缓冲区几乎没有满。

DCTCP 实现了小流的低延迟,同时保持大流的高吞吐量。原因是当队列长度超过阈值 K 时,将向发送者反馈拥塞通知。在发送方,随着时间的推移计算拥塞概率值,因此发送方将根据拥塞程度相应地降低发送速率。

DCTCP 指出,小队列长度将减少延迟或流的传输时间。我对此表示怀疑。因为除非丢包导致重传等高延迟。在 DCTCP 中,丢包很少发生。

  • 交换机上的小队列迫使发送者降低发送速率,因此迫使数据包在发送者的 TX 缓冲区中排队。

  • 交换机上更大的队列使发送方具有更高的发送速率,并且数据包在发送方的 TX 缓冲区中排队,现在它在交换机的缓冲区中排队。

所以我认为小队列和大队列的延迟仍然是一样的。

你怎么看?

4

2 回答 2

0

这取决于队列占用率。DCTCP 旨在保持较小的队列占用率,因为作者认为队列延迟是长延迟的原因。

因此,队列的最大大小无关紧要。在最大队列大小为 16Mb 或最大队列大小仅为 32kb 时,如果我们可以将队列占用率始终保持在 8kb 左右或较小的大小,排队延迟将是相同的。

阅读 DCTCP 的第一作者 M. Alizadeh 的一篇论文,来自 NSDI 2012 的 HULL。HULL 还旨在保持较短的队列占用率。

他们所说的小缓冲区是因为数据中心交换机的趋势从“存储转发”缓冲区转变为“直通”缓冲区。谷歌一下,你可以从 CISCO 或其他相关网页上找到一些文件。

于 2014-06-21T06:22:06.170 回答
0

交换机中的缓冲区不会增加网络的容量,它只会在流量突发时帮助不丢失太多数据包。但是,TCP 可以通过更慢的发送来处理丢包,这正是它在达到网络容量的情况下需要做的。

如果你连续在极限运行网络,交换机的队列将一直满或几乎满,所以如果队列满了你仍然会丢失数据包。但是,您也会增加延迟,因为数据包需要一些时间才能从它到达的队列末尾到达将被转发的开头。这种延迟再次导致 TCP 堆栈对拥塞的反应较慢,这再次增加了拥塞、数据包丢失等。

所以理想的交换机就像网线一样,例如根本没有任何缓冲。您可以通过搜索“bufferbloat”来了解更多关于大缓冲区引起的问题,例如http://en.wikipedia.org/wiki/Bufferbloat

并在有疑问时对自己进行基准测试。

于 2014-04-27T07:33:22.770 回答