关键词:VPP Qos 限速
引言
当前主流的数据转发平台VPP适用于多种NFV设备的底层转发底座,是一款兼容性和稳定性极高的转发平台。
流量限速是大多数网络设备都具备的基本功能,而VPP的Policy模块可以实现基于多种维度的流量限速,如:基于用户,基于session,基于流,等等。
VPP Policy模块流程图:
整个限速功能模块主要还是通过令牌桶算法实现该功能
控制面主要是将下发的配置进行一个表项的配置和单位转换
- CLI:接收用户配置下发的上下行限速参数,单位Kbps
- Attach:保存用户配置信息
- Compute:将限速参数转换为单位为Byte/Tick
数据面功能根据当前令牌桶进行判定报文是否通行
- 数据面多线程会通过Spinlock自旋锁进行临界资源判定,保证整个转发面的限速功能正常
- 数据进入限速Policy模块会计算出当前数据包和上一个数据包之间的tick时间,通过限速配置算出当前令牌桶的总数
- 判定令牌桶深度是否大于报文长度,如果大于则放行该报文
- 放行报文之后令牌桶深度减去报文长度
总结:该限速模块逻辑清晰,可以移植到其他有需要的软件中作为限速功能模块代码。