DCTCP是数据中心环境的TCP变体。 The source is here
DCTCP在商用交换机中使用ECN功能来限制交换机中缓冲区的队列长度在阈值K附近。这样做很少发生丢包,因为K远小于缓冲区的容量,因此缓冲区几乎不满。
DCTCP可实现小流量的低延迟,同时保持大流量的高吞吐量。原因是当队列长度超过阈值K时,拥塞通知将被反馈给发送者。在发送方,随着时间的推移计算拥塞概率的值,因此发送方将相应于拥塞程度降低发送速率。
DCTCP声明小队列长度将减少流的延迟或传输时间。我怀疑这一点。因为除非丢包导致重传等延迟。在DCTCP中,很少发生丢包。
交换机上的小队列强制发件人降低发送速率,因此强制数据包在发送者的TX缓冲区中排队。
交换机上的队列越大,发送方的发送速率越高,数据包就会在发送方的TX缓冲区中排队,现在在交换机的缓冲区中排队。
所以我认为小队列和大队列的延迟仍然是一样的。
您怎么看?
答案 0 :(得分:0)
交换机中的缓冲区不会增加网络容量,只有在遇到流量突发时才会导致数据包丢失。但是,TCP可以通过减慢发送来处理数据包丢失,这正是在达到网络容量时需要做的事情。
如果您在限制下连续运行网络,则交换机的队列将一直满或接近满,因此如果队列已满,您仍然会丢失数据包。但是,您还会增加延迟,因为数据包需要一些时间才能从队列的末尾到达它将被转发的开头。此延迟再次导致TCP堆栈对拥塞反应较慢,这又会增加拥塞,数据包丢失等。
因此理想的开关的行为类似于网络电缆,例如:根本没有任何缓冲区。 您可以通过搜索" bufferbloat"来阅读有关大缓冲区引起的问题的更多信息,例如http://en.wikipedia.org/wiki/Bufferbloat
当怀疑基准时自己。
答案 1 :(得分:0)
这取决于队列占用率。 DCTCP旨在维持小队列占用,因为作者认为排队延迟是长延迟的原因。
因此,队列的最大大小无关紧要。在最大队列大小为16Mb或最大队列大小仅为32kb的情况下,如果我们可以保持队列占用率始终在8kb左右或者小的大小,排队延迟将是相同的。
阅读NSDI 2012的一篇论文,作为DCTCP第一作者M. Alizadeh的论文。 HULL还旨在维持短队列占用率。
他们谈论的小缓冲区是因为数据中心交换机的趋势从“存储转发”缓冲区转移到“直通”缓冲区。只需google它,您就可以从CISCO或某些相关网页上找到一些文档。