前言
不同时代的数通网络技术,都有着其当时的贡献。让我们进入时光隧道,跟随前辈的足迹,去探访前辈们垦荒的年代吧。
本文既非产品工程技术文档,亦非原厂文宣,乃朝花夕拾,史海拾贝,温故而知新,文笔粗拙,贻笑大方。
<续前文>
AFD和DPP的应用优势
使用生产数据中心流量对新一代交换机芯片的缓存机制进行测试,并使用实际应用程序进行测试,以研究AFD和DPP对应用程序性能的影响。这些结果与具有深度大缓存但缓存管理简单的传统数据中心交换机的应用程序性能结果进行了比较。
这些测试比较了使用简单深度大缓存交换机搭建的网络上的应用性能,以及采用具有智能缓存管理功能的交换机搭建的网络上的应用性能。结果表明,后者为Hadoop应用程序提供了更好的性能。结果还表明,Hadoop应用程序不需要深度大缓存。简单深度大缓存交换机上的最大缓存利用率仅为每个端口5MB,而具有智能缓存管理功能的交换机为1.2或1.9MB。
这些测试检查了不同缓存架构和管理机制对数据中心应用程序性能的影响。这些测试研究了两个应用程序流量场景:数据挖掘应用程序和一组典型的大型企业IT数据中心应用程序。这些应用程序的流量分别为82%和95%的老鼠流量小于100KB。在测试中,在两个正在研究的网络上启动了相同的应用程序工作负载。结果表明,智能缓存管理提供的应用程序性能明显优于简单的深度大缓存交换机系统,尤其是在应用程序以高负载运行时。
对于数据挖掘应用程序,简单的深度大缓存平台的流完成时间延长了20%到30%。对于大型企业IT数据中心应用中,智能缓存管理提供了一个数量级的更好的流量性能。
采用传统简单大缓存管理的交换机平等对待队列中的所有流量。他们需要在所有流中缓存报文,以帮助确保老鼠流在拥塞期间不会遇到报文丢弃。由于队列受相同的FIFO调度的约束,队列中的所有报文都经历了排队延迟的增加。长时间的排队延迟危及老鼠流和大象流的性能,即使交换机在拥塞期间没有丢弃报文。智能缓存管理交换机的流量完成时间更短,是应用性能提高的直接指标。由于使用智能缓存管理来识别大象流和老鼠流,并对它们使用最适合其转发要求的不同排队管理方案,因此流完成时间更短。即使用智能管理,这些交换机为大象流提供了持续的高吞吐量,具有公平性,且它们为老鼠流提供了足够的缓存空间和低排队延迟。
在测试中,智能缓存管理交换机上同时启用了AFD和DPP。DPP可以将出口端口上的老鼠流映射到低延迟优先级队列,即使端口由于突发或微突发而暂时拥塞,也能帮助保证这些流的低延迟,此映射有助于确保及时完成携带查询、响应和快速同步消息的老鼠流。同时AFD TCP拥塞控制机制透明地合作,为大象流提供最大吞吐量,而不会过度填充出口队列。
智能缓存管理与大象流
与简单缓存管理的影响相比,AFD和DPP对大象流和老鼠流性能的影响如下。
在所研究的应用中,大象流约占流量的10%至20%,但占流量负载的90%。事实上,广泛的研究表明,这些百分比在现代数据中心网络中也是非常典型的。
对于大多数经过测试的工作负载,这两个网络表现出相似的大象流性能。当应用程序工作负载通过简单的深度大缓存交换机运行时,交换机会缓存所有内容以避免报文丢失,瓶颈链路上的队列会过多。较长的队列延迟破坏了大象流或多个报文重新传输的性能优势。
当通过智能缓存管理交换机发送相同的工作负载时,当队列深度超过指定的阈值时,AFD会通过有选择地公平地丢弃来自大象流的报文来主动管理队列深度。有意的报文丢弃触发了发送端的TCP拥塞控制机制,并且已减慢报文传输速度。现在,过多的数据不再在交换机上的队列中等待,而是在发送端上等待。此方法使交换机队列保持较短,平均队列延迟较低。尽管与简单的深度大缓存系统相比,AFD的报文丢失次数更多,但报文丢失是通过TCP快速重传快速检测和恢复的,并且对流量性能的影响微乎其微。然而使用AFD降低队列延迟的好处是显著的。最终平均大象流完成时间与AFD相似或更好。
通过启用ECN,可以消除AFD故意丢弃报文的情况。启用ECN后,AFD不会将报文丢弃应用于大象流。相反它根据计算的丢弃可能性在大象流报文中标记ECN位。
观察对比缓存利用试验结果表明,两个网络的缓存利用率存在显著差异。
由于传统的简单大缓存管理,数据流(主要是大象流)占用了端口上的所有可用缓存空间。相比之下,智能缓存管理交换机使用的缓存空间不到3MB,每个端口仅占可用缓存的一部分,以处理相同的工作负载,并产生相似或更好的性能。众所周知,向交换机添加深度缓存资源会在交换机的制造过程中引入较高的额外成本。然而,正如结果所显示的那样,这种额外的成本并没有为数据挖掘应用程序或典型的大型企业IT应用程序中大象流的性能带来明确的好处。
智能缓存管理与老鼠流
小于100 KB的老鼠流约占数据挖掘应用程序中流的83%,占研究的大型企业IT应用程序中流的95%。 在这两种应用配置文件中,具有智能缓存管理功能的交换机和简单的深度大缓存交换机在100KB老鼠流完成时间方面表现出截然不同的结果。在智能缓存管理交换机上,老鼠流平均完成时间保持在0.21到0.25毫秒的范围内,这与总体流量负载无关。在简单深度大缓存交换机上,老鼠流完成时间随着整体工作负载的增加而增加,在数据挖掘应用程序中达到最大21.37ms,在企业IT应用程序中达到5.22 ms。借助智能缓存管理,老鼠流性能显著提高。
老鼠流对延迟和报文丢弃很敏感。简单的深度大缓存交换机提供足够的存空间,以防止在拥塞期间老鼠流中报文丢失,但老鼠流必须在过度生长的队列中经历更长的队列延迟,这使它们无法实现最佳性能。在智能缓存管理交换机上,老鼠流受AFD和DPP保护。AFD可以通过限制大象流可以使用的平均缓存为老鼠流保留足够的缓存,这有助于确老鼠流中没有发生报文丢弃。可以部署DPP将老鼠流移动到单独的队列:低延迟优先级队列。这种方法允许老鼠流中的报文绕过常规队列并接收优先级LLQ的优先级和转发处理,从而在拥塞期间为老鼠流提供更快的完成时间。
小结
现代数据中心应用程序具有高度分布式架构和重尾流量分布。
大约80%到90%的流量是老鼠流量。另外10%到20%是大象流,但它们贡献了90%的数据流量负载。大象流需要高带宽和吞吐量,并在链路拥塞期间主动占用缓存空间。老鼠流对延迟和报文丢失很敏感。
聚合的同时老鼠流会导致微爆发,这在现代分布式数据中心应用程序中很常见。具有简单大缓存管理的数据中心交换机无法区分老鼠流和大象流。不能以不同的方式对待它们,满足它们在链路拥塞期间的不同转发要求。使用简单的深度大缓存空间来避免报文丢弃的方法成本高昂,但它既没有效率也没有效果,而是用排队延迟来减少报文丢弃。它无法提供最佳的应用程序性能。
采用智能缓存管理,包括带ETRAP和DPP的AFD的交换机可以区分老鼠流和大象流,并对它们应用不同的队列管理技术。因此,老鼠流可以具有足够的缓存,以避免在链路拥塞期间丢失报文,并且可以在队列调度中优先处理以实现低延迟。同时,大象流可以根据其数据速率公平地访问所需的带宽。因此,具有智能缓存管理功能交换机可以为老鼠流和大象流提供优化的队列管理,从而实现最佳的流完成时间和更好的应用性能。智能缓存管理交换机解决了现代数据中心中流量负载增加和大量迁移流量模式的挑战,而无需在交换机上占用过大或深的缓存。它提供了一种更有效和更具成本效益的方式来支持现代数据中心应用程序,特别是那些具有微爆发的应用程序。
参考资料一:TCP 拥塞控制
TCP有自己的拥塞控制机制。它的特点是缓慢启动,然后是拥塞避免阶段。动态由窗口大小(未确认报文的数量)控制。
流开始启动时缓慢。发件人每次收到确认(ACK)消息时,都会将窗口大小增加1。它有效地使下一个路由行程时间(RTT)中的报文速率加倍。此过程将一直持续到报文丢失为止。下图显示了慢启动过程。
TCP使用报文丢失作为隐式拥塞通知。为了快速检测报文丢失并从中恢复,以减少其对整个 TCP会话的影响,现代TCP实现了快速重传。快速重新传输不是等待TCP重新传输超时段来确认报文丢失,而是作为TCP的增强功能,根据来自接收端的重复ACK消息检测报文丢失。当预期序列号的报文正确到达接收端时,接收端通过发送带有下一个预期报文序列号的 ACK消息来确认该报文。当报文无序到达时(如当报文丢失时),接收端会重新发送最后一条ACK消息以再次描述预期的报文。收到第三条重复的ACK消息后,发送端将重新发送丢失的报文,而不等待计时器过期。收到重新传输的报文后,接收端将查看其收到的报文,并发送一条新的ACK消息,其中包含预期的下一个报文序列号。
下图显示快速重传:
接收端通过发送一条ACK消息来确认报文4,该消息具有下一个预期的序列号5。报文5在途中丢失,报文6、7和8到达接收端。收到每个消息后,接收端将再次发送具有预期序列号5的ACK消息。此行为会导致发件人收到三个重复的ACK消息,其预期的序列号为 5。发送端现在知道报文5已丢失,并将重新传输它。在收到重新发送的报文5后, 接收方在其接收窗口中查看报文,并发送具有新预期序列号的ACK消息。在此示例中,由于报文6、7和8的接收顺序正确,因此下一个ACK消息的序列号为9。在发送方端,除了重新传输丢失的报文外,发送端还将报文丢失视为网络拥塞的信号。因此,它将传输窗口减少了一半,以缓解拥堵。
现代TCP堆栈使用快速重传来快速检测报文丢失,并通过重新传输丢失的报文从中恢复。除了重新传输丢失的报文之外,TCP拥塞控制机制还会将其传输窗口大小减小一半,以避免额外的拥塞。如果以前的窗口大小为W,则新窗口大小将变为W/2。由于未确认的未确认报文数为W,这超过了新窗口大小W/2,因此发送方将暂停,直到未确认的报文数减少到 W/2。然后发送端将恢复传输,并在收到每封ACK消息时逐渐增加其窗口大小,直到再次发生拥塞,即直到另一个报文丢失导致窗口大小再次减小到W/2。当流进入此拥塞避免阶段时,其窗口大小或报文传输速率将呈现W和W/2之间的锯齿状模式。下图显示了此避免拥塞阶段的窗口大小动态。
TCP使用ACK消息和报文丢失作为信号来自定时钟其报文传输。TCP的锯齿拥塞控制算法旨在填充任何缓存,并故意造成偶尔的损失,以向发送端提供反馈。无论瓶颈链路上的缓存有多大,TCP都会偶尔溢出缓存。因此TCP需要报文丢失才能正常运行。报文丢失和重新传输是TCP拥塞控制过程的正常部分。
参考资料二:调整网络中的缓存大小
TCP拥塞控制机制会导致TCP发送端在发生链路拥塞时显著变慢,然后在拥塞得到解决后逐渐恢复速度。如果在此阶段没有足够的报文离开网络链路,则该链路将空闲运行。这是对链路容量的浪费。若要在拥塞期间以100%的吞吐量运行链路,网络设备上的缓存需要足够大,以帮助确保始终有报文离开链路。已经进行了广泛的研究和实验,以确定如何在拥塞期间调整缓存大小以维持100%的链路带宽利用率。众所周知的带宽延迟积定义了单个TCP流的缓存大小的基线:
上述公式中,C是链路带宽,RTT是单个流的往返时间。
最近的研究集中在网络中具有多个数据流的缓存大小调整上,这在生产网络中是一个更现实 的场景。这些新发现表明,具有多个流的100%链路利用率所需的缓存大小远小于带宽延迟积确定的大小,因为多路复用流在拥塞期间平滑了流量的突发性,如下图所示:
所需的缓存大小是带宽延迟积值除以流数的平方根:
上述公式中,C 是链路带宽,RTT 是往返时间,N 是长寿命流的数量
下图显示在数据中心网络中使用100微秒的平均 RTT:
显示了不同链路速度和各种流量数的缓存大小。缓存大小会随着流数的增加而迅速减小。例如在具有2500个流的100 Gbps链路上,只需要25 KB的缓存。
在缓存包含足够的报文以保持拥塞的链路以100%的吞吐量运行后,任何额外的缓存都不会提供任何额外的吞吐量优势。但是,由于TCP的锯齿拥塞控制算法旨在填充任何缓存空间,并故意导致偶尔的报文丢失以向发送端提供拥塞反馈,因此额外的缓存将被填充,从而导致队列延迟增加。长时间排队延迟会对应用程序的整体性能产生负面影响。因此,选择正确的缓存大小和正确的缓存管理方案对于使网络能够为应用程序提供最佳性能和支持是非常重要的。
<全文结束>
希望本文能对了解数通网络设备提供一点粗浅的感性认识。
本文有关信息均来自公开资料。