高端路由器buffer的发展历史与趋势

简介

本文探讨了高端路由器中数据包缓冲的历史和演变。在路由器和交换机中,缓冲器对于防止网络拥塞期间的数据丢失至关重要。这些缓冲器的适当大小是学术界和工业界都激烈争论的问题。

本文试图提供当前实践和未来趋势的概述。

网络芯片中的缓冲器

在典型的路由/交换芯片中,你会找到三种类型的数据包缓冲器。

No alt text provided for this image

入口缓冲器

入口缓冲器保存输入链路中到达的数据包,同时包头(通常为数据包的前128-256字节)由数据包处理逻辑进行处理。这个处理逻辑会检查数据包头中的各种协议头部,以计算下一跳,即数据包需要到达的下一个路由器/网络设备来达到最终目的地。然后,它为数据包指定出口队列/优先级,并确定数据包必须从哪个出口输出链路出去。数据包处理逻辑还负责许多与本讨论无关的其他功能。

数据包在入口缓冲器中保留一段有限的时间,直到处理完成。数据包处理流水线的延迟通常是有界的,对于固定流水线架构,大约为1-2微秒。即使在像MX系列的Trio芯片这样的灵活处理引擎中,典型的数据包处理(IP转发)延迟也在8-10微秒的量级。入口缓冲器的大小被设置为在处理包头时保持住数据包内容。

网络芯片的性能是根据它能够以线速处理的每秒比特流量(在不丢包的情况下)和满足该速率的最小数据包大小来衡量。

虽然以太网链路上的IP数据包的最小大小可以低至64字节,但许多网络芯片会考虑典型的网络负载,并设计它们的数据包处理流水线以满足比64B数据包更大的数据包的性能 - 有效降低了芯片的每秒数据包数。通过这样做,可以优化数据包处理逻辑以节省芯片的面积和功耗。虽然典型的工作负载的平均数据包大小大于350B(如维基百科上描述的Internet Mix模式),但在短暂的小数据包突发期间(通常是保持网络活跃的控制数据包或TCP协议的syn/ack数据包),可能会出现超额订阅(oversubscription)的情况,即资源/逻辑正在承载超过其处理能力的负载。入口缓冲器在数据处理超额订阅的瞬时期间吸收数据包突发。当这些缓冲器满了时,它们会根据优先级进行丢弃,以确保关键的控制数据包在其它流量之前发送到数据包处理流水线。

延迟带宽缓冲区(DBB)

在数据包处理完成并确定数据包的下一跳之后,数据包通常进入一个深度缓冲区,通常称为延迟带宽缓冲区或数据包缓冲区。这个缓冲区在网络出现瞬时拥塞,路由器的某些或所有输出链路都超额订阅的情况下提供缓冲。此时,有更多的数据包尝试从这些链路中流出,而链路不能处理这么多数据包。

网络拥塞发生在通过网络流动的流量超过网络的最大容量时。造成拥塞的原因有很多。网络中可能存在故意超额预订的情况,以降低系统成本。这会导致流量超过容量的时间段,当一些用户利用带宽超过平均分配的带宽时。多播/广播流量也可能导致拥塞,当多个主机开始互相发送流量时。当一些接口在端点处停止运行,并且流量需要分发到余下的接口时,它可能导致上游网络设备中的拥塞,直到这些接口重新启动。用户配置错误,例如配置错误的网络,可能导致拥塞,直到这些错误被修复。即使在设计完美的网络中,由于应用程序和用户流量的爆发性,也可能有一些时间段,一些路由器/交换机在这些时间段内看到流量超过它们的链路容量。

在拥塞时期,路由器可能会发现其部分或全部的输出链路过度订阅,目的流量超过了链路的容量。在极端的拥塞情况下,所有的输入流量可能都希望通过一个单一的输出。尽管需要对由于配置错误或硬件故障而导致的持续拥塞进行根本原因分析和修复,但在路由器芯片中具有数据包缓冲区以吸收瞬态拥塞有助于整体网络的健康和吞吐量。

这些缓冲区还补偿了端到端拥塞控制算法中固有的传播延迟,当网络的端点对拥塞事件粗略地做出反应时。我将在后续章节中详细讨论拥塞控制算法。

出口缓冲区

在网络拥塞期间,路由器需要确保高优先级流量和其他控制流量不会导致数据包丢失,并且满足不同用户在不同优先级级别上的服务质量(QoS)。路由器/高端交换机具有复杂的排队和调度子系统,用于在延迟带宽缓冲区内为不同的流量维护不同的队列。调度程序以不超过接口链路容量的速率将流量从这些缓冲区传输到输出端口接口的浅层出口缓冲区。

这些出口缓冲区的大小恰好足够隐藏从延迟带宽缓冲区到输出接口之间的往返延迟,以便流量可以从输出接口流出,不会有突发性和在数据包中间发生不足。

No alt text provided for this image

一个高速路由器可能由多个模块化路由芯片通过交换结构相互连接构建。我将使用术语"分组转发实体(PFE)"来指代这些模块化路由芯片。

在联合输入/输出(CIOQ)架构中,数据包分别在入口PFE和出口PFE(数据包从中退出路由器的PFE)上进行缓冲。如果路由器内部存在瞬态拥塞,延迟带宽缓冲区将保留数据包,以将数据包从入口通过交换结构移动到出口。出口PFE的延迟带宽缓冲区是深缓冲区,在网络拥塞期间,数据包会在这里排队较长时间。

No alt text provided for this image

在虚拟输出队列(VOQ)架构中,所有的延迟带宽缓冲都在入口PFE中完成。在这里,数据包在入口PFE处排队到虚拟输出队列中。VOQ唯一对应于数据包需要离开的最后一个PFE/输出链路/输出队列。数据包通过出口PFE上的一个复杂调度器从入口PFE移动到出口PFE,仅当它能够将数据包从其输出链路上调度出去时,它才会从入口PFE中提取数据包。在VOQ架构中,目标为输出队列的数据包可以在其VOQ中的多个入口PFE中进行缓冲。

包缓冲区的大小

两个派别

在网络交换机和路由器的包缓冲区大小方面存在两派观点。许多学者领导的派别认为,缓冲区基本上是膨胀的!他们发表了大量的数学分析论文来证明他们的观点。

然后有数据中心(DC)网络运营商,他们采取保守的方法,并要求为他们的路由器/交换机提供较大的缓冲区,以避免数据包在其中的任何流中丢失 - 尤其是对于高度分布式的云/数据挖掘应用。在大数据应用中,数百个处理查询的服务器可能向一个汇总所有流的响应的单个服务器发送大量的流量突发。这种“大量”会导致持续数十毫秒的瞬时拥塞情况。在这些情况下不丢失流量很重要,因为任何流量丢失都可能导致这些应用的长时间完成时间。数据中心内的存储应用对数据包丢失也非常敏感。总之,现代数据中心的流量是双峰分布的,由短期低速“小流量”和长期高速“大流量”组成。大多数流量(80-90%)是小流量,但它们只占据了10-15%的数据流量负载。其余的90%的流量负载由少量的大流量承载。大流量对应于大数据传输,如备份,并需要高吞吐量。小流量对延迟敏感,包括查询和控制消息,并且需要尽量避免数据包丢失,以避免降低整体应用性能。数据中心运营商倾向于较大的缓冲区,以避免小流量的数据包丢失,因为在许多传统交换机中不支持动态区分小流量和大流量。

互联网服务提供商在缓冲方面有不同的要求,因为他们的路由器的主要目标是尽快地转发大量数据,以满足高优先级流量(如视频/语音通话、协议流量等)的服务级别协议(SLA)。他们希望将昂贵/高容量的广域网链路尽可能高效地利用,以降低设备成本。高度利用的链路可能出现更多的数据包丢失风险。因此,他们要求路由器具有足够的缓冲区,以区分能够容忍数据包丢失的尽力而为流量和必须在几乎没有流量丢失的情况下传送的高优先级流量。

在过去的二十年间,缓冲区大小一直是一个热门话题。随着路由芯片在单个芯片/封装中提供更多带宽,而内存随着工艺节点的进展并没有像逻辑那样大幅提升,提供慷慨的缓冲区变得越来越昂贵。

无论应用为何(交换/路由),行业趋势是尽可能减少缓冲区大小而不会对QoS产生不利影响,并且严重依赖于流量工程、先进的端到端拥塞控制算法和主动队列管理(AQM)来及早通知拥塞给端点,并保持具有小延迟带宽缓冲的饱和链路

拥塞控制算法

拥塞控制算法适用于具有闭环反馈的协议,其中接收方向发送方发送有关接收到的数据包的信息。TCP/IP是一个受欢迎的协议套件,占据了互联网数据传输的80%以上。可以参考维基百科或许多在线文章了解更多关于这个协议套件的内容。TCP(传输控制协议)是一个L4协议标准,用于终端(服务器/客户端)建立和维护网络连接或流,使这些终端中的高层应用程序能够可靠地传输数据。许多高层应用程序,如HTTP、FTP、流媒体和电子邮件,都使用TCP。TCP与IP协议一起工作,IP协议是路由器和交换机用来转发数据包的三层协议。

TCP是一个面向连接的协议,需要在发送方和接收方之间建立连接后才能进行数据传输。在较高的层次上,TCP从应用层的数据流中接收数据,将其分成块,并添加TCP头部创建一个TCP段。然后将TCP段封装到IP数据报中,并通过网络传输到终端。TCP头包含许多字段,有助于建立和维护连接,检测丢失的段进行重新传输和拥塞控制。其中一个字段是序列号字段。TCP为数据流中的每个字节分配一个递增的序列号。在发送段时,它发送该段数据中第一个字节的序列号。接收方使用序列号将接收到的TCP段组合起来。对于每个接收到的段,接收方发送一个表示它期望从发送方接收到的下一个段的确认(ACK)。缺失的ACK表示网络中的数据包丢失或网络拥塞。发送方利用这些信息来降低传输速率,并重新传输丢失的段。

自TCP/IP诞生以来,许多拥塞控制算法已经被开发出来,帮助终端在拥塞期间调节数据传输率到网络中。这些算法依赖于改变拥塞窗口大小,即发送方在等待确认时可以发送的TCP段的数量,以响应网络拥塞。

往返时延(RTT)

No alt text provided for this image

理解往返时延(RTT)对于缓冲区大小和开发拥塞控制算法至关重要。RTT是数据包从发送方到接收方的往返时间,以及确认从接收方返回到发送方所需的时间。RTT受到网络的物理跨度(即光纤/DAC电缆在路径中的总长度)、网络设备的延迟和终端的延迟的影响,后者通常包括通过软件堆栈提取数据并发送到上层协议的延迟。

RTT根据终端的位置和路径上的网络设备的拥塞情况而变化很大。例如,在数据中心,RTT在30-50微秒范围内。在具有长距离光纤和多个路由器之间的WAN和核心网络中,端点之间的RTT通常在几十毫秒的范围内。RTT的主要部分由光缆的延迟所占据。例如,纽约到SFO的距离约为4000公里。如果光线在这两个端点之间单纯地通过一根光纤来回,仅光纤上的时间就需要大约40毫秒。在现实生活中,数据包必须经过中间的多个路由器,路由器的延迟会增加RTT。对于省级通信,RTT进一步增加,达到200-300毫秒。

TCP流的终端通过慢启动和拥塞避免模式来避免拥塞。在这种模式下,可以使用像添加性增加和乘性减少(AIMD)这样的算法,在多个TCP流存在的情况下稳定运行。

慢启动中,发送方通过允许每个接收到的ACK发送额外的TCP段来增加拥塞窗口的大小。拥塞窗口的大小开始很小,并以指数增长的方式增加,每个ACK增加一个最大段大小(MSS),从而迅速增加窗口大小,直到窗口大小达到阈值。此时进入拥塞避免阶段,在这个阶段,拥塞窗口大小每个往返时间增加一个MSS(线性增加)。在这个阶段,如果通过丢包检测到拥塞,则发送方将拥塞窗口减半(传输速率减半),并重新开始。

主动队列管理

如果路由器在其延迟带宽缓冲区满之前等待将数据包丢弃,那么在发送方有机会响应丢包之前,已经在网络中的更多数据流量将进入已经满的队列,并导致大量的尾端丢包。尾端丢包是不好的。几乎所有具有深度数据包缓冲区的交换机/路由器都支持加权随机早期丢包(WRED),以提前向发送方通知拥塞情况。WRED通过使用WRED曲线,在队列完全填满之前概率性地丢弃数据包,防止队列完全填满。

一些路由器和数据中心交换机还支持显式拥塞通知(ECN)。在ECN中,当路由器遇到拥塞时(通过增加路由器内部的延迟来观察),它会以概率性地标记一些数据包为“经历过拥塞”并直接转发它们。ECN标记使用IP头的流量类别字段。当终端接收到设置了ECN位的数据包时,它们在发送ACK时将拥塞信息回传给发送方,并使用此信息降低进入网络的传输速率。

虽然ECN有助于在不引起WRED相关的数据包丢失的情况下减少拥塞,但它具有一些限制。如果网络经历高丢包率,ECN可能无法很好地工作,因为被标记的数据包也可能会丢失,并且拥塞信息可能无法准确传达。ECN相对较新。如果不同的ECN实现使用不同的标记算法或对拥塞的响应不同,可能会存在互操作性问题,从而影响机制的有效性。如今,ECN主要在受严格控制的数据中心网络中部署,因为在这种网络中更容易实施统一的端到端ECN协议。

在过去的十年中,一些供应商已经集成了先进的AQM技术,可以进行流感知的早期丢弃 - 如在队列内区分小流量与大流量(基于输入流量速率)并通过动态调整不同流量的队列长度来防止丢弃小流量。

典型缓冲区大小确定方法

在路由器ASIC内部确定延迟带宽缓冲区大小的关键是确保在发送方暂停或减少进入网络的流量以响应网络拥塞时,缓冲区不会变空。在这种情况下,缓冲区充当一个储备,使得链路在发送方减小窗口大小以响应拥塞时仍然保持繁忙。如果缓冲区变空,路由器的输出链路就没有完全利用,这是不可取的。

在最近十年以前,常用的经验法则是,具有C的聚合端口速度(以比特每秒为单位)的路由器,传送具有往返时间RTT的流量,需要一个等于RTT *C的缓冲区来保持其输出链路繁忙。这被称为延迟带宽乘积(DBP)或带宽延迟乘积(BDP)。当路由器的总容量小于几百亿比特每秒时,这个规则被广泛用于早期路由器。

例如,在Juniper第一代带有paradise芯片组的PTX路由器中,具有400Gbps端口密度的PFE提供了4G字节的数据包缓冲区。这足够覆盖大多数核心路由器应用的80ms RTT。

这种根据延迟带宽乘积来确定缓冲区大小的模型适用于两个端点之间的几个长时间存在的TCP流以及单个路由器经历瓶颈的情况。该规则的提出者声称,即使存在多个主导/长时间存在的TCP流,同步仍然可能发生在多个长时间存在的TCP流之间。

规则经验缓冲区大小的限制

这种经验法则缓冲区大小无法很好地适应当前每秒百万亿比特的总端口带宽的现代路由器。例如,具有14.4Tbps路由芯片和100毫秒RTT的路由器将需要144GB的延迟带宽缓冲区。这是一个无法置于芯片内或外部内存中的极大缓冲区。

当今,由于高密度和带宽,广泛使用HBM内存进行数据包缓冲。下一代HBM3可以每个部件提供24G字节的总容量。要实现144Gb的数据包缓冲,我们需要6个HBM3部件。即使是使用最大尺寸的晶圆尺寸,也很难在晶圆的边缘为六个HBM3接口腾出空间,因为大多数边缘(或我们称之为沿海区域)都将被用于高速WAN链路所需的串行器件。因此,路由器芯片必须在提供的端口密度和延迟带宽缓冲之间进行妥协。

更新的理论缓冲区大小

路由器通常传输数千个流,每个流具有非常不同的RTT(因为这些流的端点可能不同),而且这些流很少同步。典型的缓冲区大小在这些情况下不适用。有许多关于在存在多个流的情况下缓冲区大小的研究。

斯坦福大学的研究人员在2004年发表的SIGCOMM论文中声称,对于N个长时间存在的非同步流,所需的缓冲区仅为C*RTT_min/ sqrt(N),以保持链路繁忙。这意味着长时间存在的流越多,所需的缓冲就越少。例如,使用上述数学公式,当1.44Tbps路由器通过10,000个长时间存在的流时,只需要1.44GB的DBB。这对于使用芯片内和外部内存的组合来说是完全可以实现的。作者还得出结论,在短时间存在的流(在slow_start阶段结束的流)或非TCP流中,拥塞控制算法不起作用,在这些情况下,延迟带宽缓冲区的大小直接与路由器链路上的负载和流的长度成正比,且小于C * RTT_min/sqrt(N)

其他研究人员的后续研究论文也发现,缓冲区大小取决于输出/输入容量比率以及链路的饱和程度。例如,如果数据中心运营商可以通过在其规模扩展架构中添加更多交换机来略微降低链路利用率,那么这些芯片的缓冲要求就会显著降低。

尽管这些论文几十年前就发表了,但服务提供商和网络芯片供应商直到最近几年才不得不接受结果并减少其设备中的缓冲,当时存储器无法跟随工艺尺寸的进展而提升。犹豫的原因在于很难确定N的价值,这在不同的时间间隔内因客户流量和在这些路由器上运行的应用程序而异。

学术论文通常不考虑实际的流量场景,因为它们依赖于合成流量和严格控制的实验室设置。大多数论文也认为短暂的丢包或链路闲置是可以接受的行为。不幸的是,许多应用在有丢包的情况下无法正常运行。这些应用程序需要更深的缓冲区,大约为几十毫秒,以在拥塞期间缓冲敏感于丢包的流量。因此,确定缓冲区的大小是一个复杂的决策,没有一种方程适用于所有应用程序!

现代路由器和过度订阅的缓冲区

如我在前一节中提到的,高端路由芯片供应商需要做出艰难的选择,权衡芯片内和包内的交换和缓冲容量。

他们可以完全依赖芯片内的SRAM来进行延迟带宽缓冲。但是,与尺寸的进展相比,芯片内的SRAM没有像逻辑单元那样扩展。例如,在先进的3纳米工艺中,256MB的内存和控制器占据了整个芯片的15-20%大小。以7.2Tbps的流量来计算,这相当于约35微秒的延迟带宽缓存。数据中心中的高带宽交换机,大多数流量的往返时间小于50微秒,可以从芯片内缓冲中获益。

对于支持数千个具有不同QoS属性和往返时间(在数十毫秒范围内)以及频繁的瞬时拥塞事件的高带宽路由芯片,50微秒并不起作用。这些路由芯片有两种选择:

他们可以完全依赖HBM等外部存储器进行延迟带宽缓冲。但是,如果每个数据包都需要往返到HBM,对于一个14.4Tbps的路由芯片,我们需要足够的HBM接口来支持14.4 Tbps的读写带宽。即使使用每个部件具有6.5Tbps带宽的HBM3技术,这也意味着每个封装需要六个HBM3部件。从核心芯片到HBM部件提供如此多的HBM接口是很困难的,同样,在2.5D封装中放置如此多的HBM部件也是不可能的。此外,外部存储器的延迟很大,会显著增加路由器的排队延迟。

因此,许多高端路由ASIC开始使用混合缓冲方法,其中延迟带宽缓冲在芯片内存和外部存储器之间分散。数据包在其各自的队列中缓冲在芯片内的延迟带宽缓冲区中。队列子系统监视每个队列的长度。当队列超过可配置的阈值时,到达该队列的新数据包将发送到外部存储器。当从队列中出队数据包时,且队列不再拥塞,到达率小于出队率时,队列长度减少。当队列长度低于芯片内的阈值时,属于该队列的新数据包保留在芯片内!这些架构仅分配部分总带宽用于外部存储器,从而减少了与芯片的外部存储器接口数量。

为什么这已经足够了?虽然有成千上万的流量可能通过路由器,但很多流量不会遇到持续的拥塞,这要归功于先进的拥塞控制算法和更智能的网络管理,可以平均分配网络流量。小的短暂拥塞事件可以单独由芯片内的缓冲器吸收。只有少部分队列经历了持续的拥塞。随着它们增长,这些队列可以受益于深缓冲区。

下一代带宽为6.5Tbps,容量为24GByte的HBM3器件可以为大约2.5Tbps的输出链路提供延迟带宽缓冲约70毫秒。假设任何时候最多只有25%的流量拥塞,一个外部内存部件就足够支持一个10Tbps的路由ASIC。对于美国境内的少部分拥塞流量来说,RTT为75毫秒已经足够。

构建混合缓冲系统

在路由芯片中构建一个能够高效利用芯片内部和外部内存延迟带宽缓冲,并满足所有QoS要求的混合缓冲子系统面临许多挑战。

共享芯片内存

高度希望将延迟带宽缓冲器内部的芯片部分完全共享给所有的输入和输出链路,因为在可能出现所有输入端口的数据希望从几个输出端口离开的拥塞场景中,让这些队列占用大部分缓冲器以避免分组丢失是可取的。

对于拥有144个100G端口的14.4Tbps路由器,同时让所有这些端口对共享的延迟带宽缓冲器进行访问是一项挑战。许多高端架构使用两种技术使这些缓冲设计更可行。使用宽数据总线允许多个100G端口的数据共享相同的宽接口用于共享缓冲器。共享缓冲器本身被静态地划分为许多块,数据被分成较小的块并分散到不同的块中,以分布读写操作到许多存储器中,减少存放热点。这样做的一个副作用是相同数据包的不同块被乱序地写入和读出这些块。在缓冲器之外的控制逻辑需要将这些事务按顺序重新排列,然后将它们提供给下游模块。

共享的延迟带宽缓冲器也带来了独特的物理设计挑战-需要在客户端和内存块之间进行精心的地板规划和布线,如果内存的放置和路由规划不恰当,布线拥塞的开销可能高达内存面积的50%。

一些供应商进一步发展了中央共享缓冲器的方法,将相同的芯片内存块集合共享给延迟带宽缓冲器和出口缓冲器。这样可以灵活地为芯片的不同使用情况划分内存。

外部内存超额订阅管理

对于超额订阅的外部内存,需要使用复杂的算法来确定何时将队列移动到芯片外的延迟带宽缓冲器。每个输出队列可以被分配一个配置的配置文件,告诉队列在转移到外部内存之前可以填充多少。但是,如果算法仅仅根据队列的长度单独做出决策,那么在多个输出链路同时出现极端拥塞的情况下,它可能决定将比外部内存接口处理能力更大的比例的传入流量发送到芯片外。这将导致外部内存供给管道出现不希望的丢包情况。这为缓冲管理逻辑增加了额外的复杂性,需要仔细规划在拥塞队列之间的芯片外移动。

在队列之间分配芯片内缓冲区

在商业边缘应用中,在给定的时间间隔内可能会有数千个流量处于活动状态。由于有限的片上缓冲,提供相同的队列阈值(队列在片上内存中增长多少后移至外部内存)是不可取的。这些芯片架构必须提供灵活性,以便网络运营商为每个配置的队列选择一个“配置文件”。但是,实际通过配置的队列的流量可能与配置的速率有很大差异,这导致缓冲区空间和资源的低效利用。先进的架构大量投资于根据实时队列排空速率动态调整混合队列长度和片外阈值的算法,以实现对时延带宽缓冲区的高效利用。一些供应商还通过调整这些流量的缓冲区分配来动态区分大型流和小型流,并防止小型流丢包。

数据包抖动

路由器不应该重新排序流量中的数据包。但是,如果队列在片上和外部内存之间移动,由于从外部内存读取时产生的数百个周期的额外延迟,它需要额外的逻辑来从外部内存中预取内容并保持队列中的数据包之间的排序要求。此预取操作会为出口缓冲区增加额外的缓冲区区域。

尽管在实现中存在种种挑战,但混合方法可能是当前工艺节点/内存和封装技术条件下高容量路由芯片唯一有效的方法。高端路由芯片供应商继续投资于先进算法,以有效利用芯片上有限的内存资源和有限的到外部内存的带宽。

未来

在硅片领域,随着3D封装技术的最新进展,可以将多个芯片堆叠在一起(逻辑处理芯片和存储芯片的混合)。当存储芯片层堆叠在逻辑处理芯片上时,逻辑芯片从存储器中获得更高的数据吞吐量,因为从存储器到逻辑的互连可以利用整个芯片的表面积。目前,这项技术主要被用于面向高性能计算的CPU芯片。不久的将来,高端网络芯片供应商将开始使用这项技术,以增加核心中汇总的端口容量的带宽和缓冲区容量。

在拥塞控制方面,过去几十年来取得了许多进展,迄今为止已有20多个拥塞控制和主动队列管理(AQM)算法。

基于延迟的算法,发送方通过密切监测流的往返延迟调节进入网络的流量,已变得流行。FQ-CoDel/PIE是两种针对缓冲区膨胀的AQM算法。TCP BBRv2(由谷歌开发)根据实时网络模型动态调整发送速率。与传统基于数据包丢失的算法创建的突发相比,这些算法还可以更均匀地调整带宽,有助于减轻大型网络中的拥塞。学术界和工业界正在进行改进大型网络中各种流的拥塞控制算法的性能、效率和公平性的工作。同时,还在开发基于机器学习的实时拥塞场景网络模型。凡是由端点持续减轻的任何拥塞都可以减少路由器的缓冲区需求。

因此,混合缓冲和主动队列管理技术的进步、先进的3D封装技术以及拥塞控制算法的改进将使高端路由芯片在不牺牲任何优势的情况下每2到3年将带宽翻倍!

参考资料

  1. 《Sizing router buffers》 by Guido Appenzeller, Isaac Keslassy, and Nick McKeown- ACM SIGGCOM 2004
  2. 《Updating the Theory of Buffer Sizing》 by Bruce Spang, Serhat Arslan, and Nick Mckeown
  3. 几家网络芯片厂商的开源文章/白皮书