首页 > 代码库 > DPDK QoS之分层调度器
DPDK QoS之分层调度器
原创翻译,转载请注明出处。
分层调度器的时机主要体现在TX侧,正好在传递报文之前。它的主要目的是在每个网络节点按照服务级别协议来对不同的流量分类和对不同的用户的报文区分优先级并排序。
一、概述
分层调度器跟以前使用网络处理器实现的每条流或一组流的报文队列和调度的流量管理器很相似。它看起来像在传输之前的一个临时存储了很大数量报文的缓冲区(入队操作)。当网卡TX请求更多报文去发送的时候,这些报文递交给网卡TX的预定义的SLA的报文选择逻辑模块之后会删除。(出队操作)。
分层调度器对大数量的报文队列做了优化。当只需要小数量的队列时,会使用消息传递队列来替代。更多详情参考"Worst Case Scenarios for Performance"。
二、分层调度
如下图:
分层的第一级是 Ethernet TX 1/10/40端口,之后的分级是子端口,流水线,流分类和队列。
有代表性的是,每一个子端口表示一个预定义好的用户组,而每一个流水线表示一个个人用户。每一个流分类表示不同的流量类型,流量类型包含了具体的丢包率,时延,抖动等需求,比如语音,视频或数据传输。每一个队列从一到多个相同用户相同类型的连接里接待(原文是动词:host)报文。
下面的表格对每个分层做了功能描述:
# 级别 兄弟 功能描述
1 Port 0 1、以太端口1/10/40 GbE输出; 2、多个端口具有相同的优先级,RR调度
2 Subport 可配置,默认8个 1、使用令牌桶算法流量整形(每个子端口一个令牌桶) 2、每个流分类在子端口级别上有强制上限。 3、当高优先级不使用时,低优先级的流分类可以重用子端口的带宽
3 Pipe 可配置,默认4K 1、使用令牌桶算法流量整形,每个流水线一个令牌桶
4 Traffic Class 4 1、同一个流水线的流分类按严格优先级顺序处理 2、在流水线级别每个流分类有强制的上限 3、当高优先级不使用时,低优先级的流分类可以重用流水线的带宽 4、当子端口流分类超额订购之后(配置造成的),流水线的流分类上限是一个动态调整的值。并共享给所有子端口流水线
5 queue 4 1、同一个流分类里的队列按照预定义的权重按WRR调度
DPDK QoS之分层调度器