可编程全功能速率限制器设计硬件交换机
Fully Functional Rate Limiter Design on Programmable Hardware Switches
意义
速率限制器在网络QoS管理中发挥着关键作用,例如带宽分配和性能隔离。
挑战
速率限制器可以在网络中的不同位置实现(例如, NIC,交换机);然而,在某些情况下,网络运营商无法访问终端主机,速率限制只能在网络设备上实现(例如,移动核心网络,IaaS云提供裸机)。
但是可编程交换机的最近趋势为实现这样的网络内速率限制提供了机会。
虽然目前的可编程硬件交换机提供了一定程度的分组处理灵活性,但仍然存在一些约束:
- 交换机中的数据流是单向的,只能从交换机缓冲区到交换电路;
- 可编程性仅限于工作在交换机电路上,不适用于缓冲器;
- 交换机上的计算是有限的,不支持乘法和除法等操作和时间逻辑;
- 开关存储器难以扩展到多流处理。
方案
速率限制器的设计空间包括算法选择
- 泄漏桶
- 令牌桶
过度流量策略
- 流量整形
- 流量监管
实现方法
- 基于计时器
- 基于事件
由于可编程硬件交换机的限制,我们只能实现带流量监管的令牌桶算法。
在速率限制算法中,配置了承诺速率和突发大小两个参数,并维护了一个可变令牌。令牌随时间累积,以突发大小作为阈值进行约束。对于每个数据包,如果有足够的令牌,则发送数据包,减少令牌;否则,报文将被丢弃。令牌随时间累积可以通过两种方式实现。
速率限制器性能由于硬件限制而导致的不足:基于定时器的速率限制器对TCP不友好,吞吐量振荡;基于事件的速率限制器在速率控制上不灵活。
由于基于事件的速率限制器的报文到达时间间隔通常小于基于定时器的刷新时间间隔,甚至小于RTT。这样,令牌的积累、更新和消耗就会更及时,从而实现更平稳、更精确的速率控制。
然而,基于事件的速率限制器在速率控制方面不灵活。是因为在令牌更新时,时间间隔速率的乘积需要相乘,目前可编程硬件不支持因此只能配置有限的速率。
实现乘法。为了克服计算量有限的问题,我们提出了近似乘法表(AMT)。AMT的关键思想是预先计算中间结果并存储在表中,然后将运行时的所有计算转换为表查找。由于不能预先计算任意粒度和范围(如实数域)的乘法和乘法器的乘积,所以它实际上是一种近似算法。需要对存储空间(即粒度)和准确性(结果中的误差)之间的权衡进行分析。同样,我们也可以用近似除法表(ADT)进行除法。
内存效率优化。稀缺的交换机内存是一个潜在的可伸缩性限制(根据配置的速率限制的数量),从而提高了令牌桶算法的内存使用。
开放问题
总结
实现了一个具有以下特征的全功能速率限制器:
- 承诺速率饱和
- 低振荡
- 速率控制灵活性
- 高存储效率。