朝花夕拾-报文缓存之四

前言
不同时代的数通网络技术,都有着其当时的贡献。让我们进入时光隧道,跟随前辈的足迹,去探访前辈们垦荒的年代吧。
本文既非产品工程技术文档,亦非原厂文宣,乃朝花夕拾,史海拾贝,温故而知新,文笔粗拙,贻笑大方。


<续前文>

缓存效率

网络设备的可用缓存容量并非等于内存组件的总和或手册上列出的值。在计算实际容量时必须考虑一些因素,如缓存共享,缓存数量和效率。缓存共享会有物理或逻辑上的约束。物理情况的示例是,一个线卡上的出口缓存不能用于另一个线卡上的端口。同样,具有多个网络处理器的线卡通常不会在它们之间共享缓存资源。逻辑约束的示例是,将一些固定内存分配给每个接口,然后将剩余内存分配到共享池。

除了内存大小的限制之外,还可能对缓存的数量(通常称为报文描述符)和缓存使用效率有限制。例如,网络设备有1GB的队列内存和1M报文描述符,则单个缓存的平均大小将为 1KB。如果平均报文大小为250B,且使用固定的1 KB缓存,则有效缓存限制为250MB。网络设备可以有固定大小的缓存,可变大小的缓存池(如64字节,128字节,256字节,1500字节等)。在评估可用缓存容量时,需要考虑这些因素。

与时俱进的硬件 – 混合缓存

内存带宽是限制具有深度缓存的网络设备性能提高的关键因素之一。商用内存带宽再大,甚至自定义内存也无法满足带宽需求。即使是片上存储器也会限制性能,因为它们将FIB、统计和排队操作的数量减半。

该问题的解决办法是,支持不同速度的片上和片外缓存器。拥塞队列中的报文在片外缓存,而空队列或轻度拥塞队列中的报文仍保留在片上。这称为逐出/再入模型。多个入口芯片可能正在为拥塞的目标排队,因此聚合的片外缓存带宽仍可能大大超过在片外缓存拥塞队列中的每个报文所需的内存速度。此外,如果将某些流量分类到有保证的转发队列或优先级队列中,则它们应保留在片上,这将片外带宽要求限制为尽最大努力流量。

由于芯片的发展速度比内存更快(摩尔定律比商业内存每年10%的增长要快),这种差距可能会随着时间的推移而显着扩大。随着芯片带宽的增加,即使是高端定制存储器也需要采用这种模式。该模式的好处是,相对于片外缓存所有报文,可以降低功耗。

如何测量缓存大小

即使对于单个队列,也有多种方法来检测缓存容量。按照复杂性和实用性的增加顺序,首先是物理内存大小。手册上的”4GB缓存”通常意味着总共有4GB的内存。这可能反映也可能不反映出实际的缓存能力。第二种测量方法是仍然使用内存大小,但专注于实际的缓存功能。这考虑到了对缓存的实际数量(即报文描述符)、每个缓存的大小以及平均报文大小的任何限制,以查看将用于存储报文的内存量。第三,接口速度可以包含在计算中,从而产生基于时间的值,例如100usec或50毫秒。对于上述任一方法,都可以执行此操作。最后,缓存量可以包括预期的RTT,并测量BDP。在评估和部署网络设备时应关注基于实际时间和基于BDP的值。然后,可以将这些值输入到体系架构分析中。

缓存大小调整建议

往返时间的重要性

熟悉和了解RTT对于正确调整缓存大小是很有用的。具有短RTT的主机对可以更快地对拥塞做出反应,并且在给定的吞吐量级别下不需要那么多的”正在传输”的报文。流量的数量也很重要,其在计算中的权重,学术界仍有争论。假设BDP(带宽 * RTT)是潜在有用缓存的上限。这允许将报文的整个TCP窗口存储在单个队列中。斯坦福核心模型建议将BDP除以长寿命流数量的平方根。原始的斯坦福模型旨在保持链路完整,但可能导致报文丢失。

将缓存大小调整锚定到BDP会带来另一个复杂问题。假设TCP流已找到其最佳拥塞窗口。对于传输大文件的少量流,这是一个有效的假设,但对于许多会话仅使用初始拥塞窗口的段完成的Web流量则不然。所有基于BDP的模型都以TCP响应能力为核心,TCP和流量模式的最新发展减少了大象流量。

当然,并非给定网络位置中的所有流量都具有相同的RTT。对于面向客户的全球企业VPN边缘链路或没有缓存的位置,可能需要基于250毫秒RTT的大缓存。对于消费者互联网接入,大量流量位于国内,其中大部分在非常接近客户的缓存中终止,这可能导致平均RTT低于30毫秒。最后一公里拥堵是另一个需要考虑的重要因素。当RTT超过300毫秒时,通常是由于最后一公里的拥塞,特别是在带宽可用性甚至每秒都可能有很大差异的移动网络中。

网络设备的配置

各个路由器和接口应在适当的时候自定义缓存。使用路由器默认值或最大功能通常不是网络性能的最佳选择。

在没有特定于应用程序的要求的情况下,网络设备在网络中的位置是缓存大小调整的主要考虑因素。各种最常见特征包括带宽、平均路由行程时间、超额订阅和链路速度范围。流量模式和负载等其他因素也很重要,但这些因素可能会在网络设备的生命周期内发生变化。网络设备在网络中的位置也可能在其生命周期中发生变化。

核心设备

核心由高链路速度和大量并发流定义,通常大于10K。较大的流量最大限度地减少了TCP同步,并导致流量模式相对于网络的其他部分是平滑的。最大标称RTT取决于网络,可能高达250毫秒而不会出现拥塞。

每个端口平均缓存容量为5-10毫秒的网络设备在核心效果良好,尤其是当多个端口动态共享缓存时(在需要时单个端口上的缓存速度为25毫秒)。每端口25毫秒提供了足够的的安全保证。

SP边缘设备

在传统的SP边缘,面向核心和面向客户的链路可以分开查看,因为它们在流量计数和拥塞频率方面具有不同的流量特征。但与内核相比,SP边缘的研究和实验较少,且部署了广泛的缓存、AQM和QoS策略。少量流可能会主导面向客户的链路。这意味着在核心中使用的许多流的平滑功能不适用。最保守的做法是增加缓存。

当缓存在多个面向客户的接口之间共享时,它们不太可能同时拥塞。各个接口仍应预配与带宽和平均RTT成比例的缓存。面向核心的链路会受益于TCP平滑效果,即流数增加。面向内核的链路的缓存大小也可能受益于接口之间的共享缓存。

对于大多数流量具有较短RTT的位置,可以对两种接口类型进行最坏情况 BDP的调整。许多高带宽流量将流向RTT低得多的区域缓存。在其他情况下,如提供全局企业VPN服务的网络设备或没有缓存的网络设备,此方案将不适用。边缘网络设备的另一个特征是核心链路和面向边缘的链路之间存在显著的速度差异。直观地说,这种情况似乎需要更多的缓存。还好这种情况并不常见。在速度不匹配的场景中,底层TCP最为重要。由于报文和ACK在长期流循环中来回切换,因此当报文位于较快的链路上时,最慢的链接将在报文之间产生间隙。这减少了直接连接到快速接口的主机产生的潜在突发。

基于上述原因,作为最常见部署方法,面向核心的链路缓存可以减少到加权平均RTT的50%。面向客户的缓存要求不会从高流量计数中受益,但仍可能根据加权平均RTT延迟降低到BDP。对于大多数边缘网络设备来说,能够缓存10-30毫秒范围内所有端口的硬件应该足够了。在属于高RTT路径的链路上可以设置较长的队列,在其他链路(尤其是面向核心的链路)上设置较短的队列。如果要使用大缓存,必须注意不要引入过多的延迟。

对等设备

对等互连接口是SP网络中最关键的链路之一。它们传递具有相对较高的RTT和流量计数的流量,因此具有许多核心链路的特征。在大多数情况下,SP会预配其对等互连链接,以最大程度地减少任何拥塞。在这种情况下,可以将它们视为核心链接。但商业考虑有时会导致极端持续的拥堵。在这种情况下,建议在内核范围的上限上进行缓存(25 毫秒)。

数据中心

很难对数据中心网络提出通用的建议。在此环境中,拥塞通常是由于应用程序而不是许多随机流的交互造成的。要考虑的关键因素是流量和模式、流量持续时间、应用程序对丢失和延迟的容忍度以及RTT。

替代方法

在设计网络时,商业考虑因素不能被忽视,因此,所需的缓存量并不总是可行的。具有片上缓存功能的单芯片网络设备具有更高的密度,且通常可显著降低成本和功耗。部署较小的缓存(10MB)时,一个关键的考虑因素是预期的拥塞类型和数量以及可用的队列管理技术。

<未完待续>

希望本文能对了解数通网络设备提供一点粗浅的感性认识。
本文有关信息均来自公开资料。

滚动至顶部