面向数据中心网络的缓冲区优化策略研究
2023-07-27王刚
王刚
(安徽电子信息职业技术学院 教学科研处,安徽 蚌埠233030)
交换机设备的缓冲区能在网络拥塞或流量突发时避免丢包的现象发生。为降低硬件成本和最大限度地提高缓冲区利用率,交换机的多个队列将共享同一个片上缓冲区。这种共享自然会导致各种问题。具体来说,一个队列的过度增长可能会损害另一个队列的性能,可能会出现饥饿、吞吐量不足等问题。这种有害干扰可能发生在看似独立的队列之间,例如映射到不同端口的队列或由独立应用程序形成的队列。网络设备通常采用分层数据包准入控制来协调共享空间的使用。缓冲区管理算法在队列之间动态分割缓冲区空间[1-3],主动队列管理算法选择性地接纳传入的数据包,为每个单独队列分配缓冲区切片[4-5]。
但是,缓冲区大小跟不上交换机容量的增加,缓冲区不足使缓冲区管理算法无法为每个队列提供隔离[6-7]。另外,由于数据中心网络存在突发流量和网络拥塞incast现象,缓冲区的瞬态需要在设备级别进行控制。缓冲区共享方案需要提供隔离、有限的消耗时间和高突发容忍度[8]。因此,本文提出了基于主动管理的缓冲区优化策略——DCBOpti(Data Center Network Buffer OPtimization)策略。DCBOpti是一种主动缓冲区管理算法,在不牺牲吞吐量的情况下减缓突发流量的影响。具体来说,DCBOpti同时利用了设备级别的总缓冲区占用率和单个队列排空时间。
1 缓冲区优化策略设计
通过缓冲区管理和主动队列管理之间的协作,片上缓冲区空间能得到充分利用。考虑一个输出队列共享内存分组交换芯片,缓冲区管理方法动态决定每个队列的最大长度,主动队列管理方法决定传入的数据包是否将被排队、标记、修剪或丢弃。数据包的优先级记为p,属于同一优先级的数据会被分配到同一个队列。
1.1 设计关键属性
为了最大化共享缓冲区的好处,缓冲区共享方案需要满足三个关键属性,即隔离、有限的排空时间和可预测的突发容忍度。
1.1.1 隔离 由于缓冲区被多个队列共享,因此某一个队列过度使用缓冲区可能会干扰交换机中其他队列使用共享缓冲区的能力。为了避免跨队列的干扰,必须隔离不同流量的优先级。每个优先级在任何给定时间占用可配置的最小缓冲区量。
1.1.2 有限的排空时间 排队延迟是造成短流完成时间高的根本原因。诸如基于ECN(Explicit Congestion Notification)的AQM(Active Queue Management)方法能用于减少队列长度。排队延迟也会影响缓冲区的排空时间,即被占用的缓冲区可以多快用于传入流量。由于多个队列可以共享一个端口的带宽,因此具有相同队列长度的两个队列可能会遇到不同的排队延迟。
为了避免高排队延迟的有害后果,缓冲区共享方案需要限制每个队列的消耗时间。具体来说,缓冲区共享方案需要通过配置来限制服务速率为μ(t)的队列的占用缓冲区q(t)。
1.1.3 可预测的突发容忍度 突发容忍度的定义为缓冲区共享方法可以存储在缓冲区中的数据包的最大突发。当缓冲区具有足够的容量承载突发流量,或者缓冲区中的数据包可以足够快地被转发,则缓冲区共享方法能够吸收传入的突发流量。但是,始终保持突发大小的空缓冲区量会剥夺队列中宝贵的缓冲区,从而导致潜在的吞吐量损失。
1.2 优化策略
(1)
DCBOpti提供跨优先级的隔离。具体来说,DCBOpti限定了每个优先级占用的总缓冲区,为每个优先级提供最低缓冲保证。DCBOpti 通过在计算每个队列阈值时考虑每个优先级的拥塞队列数,因此,没有任何优先级可以独占缓冲区并饿死其他缓冲区。给定优先级的每个队列阈值会随着该优先级的更多队列拥塞而降低。
(2)
(3)
(4)
结合公式(3),能得到如下关系:
(5)
同理,可以推导出优先级 可用的缓冲区总量的上限 ,即:
(6)
DCBOpti通过根据每个队列的排空率按比例分配缓冲区空间来限制排空时间。DCBOpti 分配的阈值上限为任何优先级队列p的排空时间由Γ下式给出,即:
(7)
结合公式(3),可得如下所示的不等式关系:
(8)
(9)
DCBOpti的突发容忍度与其他优先级的拥塞队列数量无关。相反,突发容忍度只会减少相同优先级的拥塞队列的数量。
如果到达率 使得每个队列在t=0 时的阈值以大于相应队列的排空率的速度降低,则聚合缓冲区无法根据阈值的变化进行排空。在这种情况下,DCBOpti的突发容忍度如公式(10)所示。
(10)
在t=0时,初始的缓冲区占用情况如下所示:
(11)
(12)
根据公式(1),阈值和队列长度变化率如下所示:
(13)
(14)
通过求解公式(13)和(14),能得到:
(15)
通过整理公式(15),得到队列中流量的到达率如下所示:
(16)
2 实验评估
本研究使用网络模拟器NS3进行实验评估[9]。实验所使用的拓扑由16个交换机和 256 个服务器组成,每个链路的容量为10 Gbps,每个链接都有10 μs传播延迟。实验使用两种流量负载,即网络搜索流量和incast流量。
将DCBOpti与现有的缓冲区管理策略进行比较,分别是动态阈值策略(DynaTh)、流量感知策略(Flow-aware)、完全共享策略(TotalS)和智能缓冲区策略(IB)。其中,DynaTh按比例分配缓冲区;Flow-aware是基于DynaTh的策略,并优先考虑短流;TotalS允许每个队列共享剩余缓冲区;IB同样是基于DynaTh策略,并使用了近似公平丢弃策略。
不同网络负载下缓冲区策略的对比结果如图1所示。由结果可知,DCBOpti 大大降低了流完成时间。图1展示了不同负载的数据流完成时间的减缓度,其中固定请求大小为缓冲区大小的30%。在低负载下,与DynaTh、Flow-aware、TotalS和 IB 相比,DCBOpti 将数据流完成时间的减缓度平均降低了10%。随着负载的增加,DCBOpti在40%负载下的数据流完成时间的减缓度相比其他策略平均下降了90%。
图1 不同网络负载下缓冲区策略的对比 图2 不同请求大小缓冲区策略的对比
图 2 中展示了不同请求大小的数据流完成时间的减缓度。即使请求大小只有缓冲区大小的15%,与 DynaTh和IB 相比,DCBOpti 平均将数据流完成时间的减缓度降低了将近40%,与 Flow-aware相比 降低了约30%,与 TotalS相比降低了超过50%。随着请求规模的增加,DCBOpti 的优势更加明显。在请求大小为缓冲区大小的 50% 时,与 DynaTh、Flow-aware、TotalS和 IB 相比,DCBOpti的数据流完成时间的减缓度平均降低了70%。
DCBOpti 不会牺牲吞吐量来服务短流或者突发流量。在图 3和图4中观察到,与其他策略相比,DCBOpti 实现了同等吞吐量。
图3 不同网络负载下的平均吞吐量 图4 不同请求大小下的平均吞吐量
3 结论
本研究提出数据中心网络缓存区优化策略(记为DCBOpti),以实现缓冲区共享,提供隔离、有限的排空时间和高突发容忍度。DCBOpti只使用内存管理单元可用的统计数据,具有可用性且易于实现。使用实验验证DCBOpti策略的有效性,结果显示DCBOpti能够有效降低流完成时间的减缓度,同时确保了吞吐量性能。后续的工作将对本研究提出的DCBOpti策略进行理论分析,并通过扩充实验以进一步评估所提出策略的性能。