DPDK编程指南(翻译)( 二十三 上)

23. QoS框架

本章介绍了DPDK服务质量(QoS)框架。

23.1. 支持QoS的数据包水线

具有QoS支持的复杂报文处理流水线的示例如下图所示。

Figure 23 1 Complex Packet Processing Pipeline with QoS Support

这个水线使用可重复使用的DPDK软件库构建。在这个流程中实现QoS的主要模块有:策略器,缓存器和调度器。下表列出了各块的功能描述。

# Block Functional Description
1 Packet I/O RX & TX 多个NIC端口的报文接收/传输。用于Intel 1GbE/10GbE NIC的轮询模式驱动程序(PMD)。
2 Packet parser 识别输入数据包的协议栈。检查数据包头部的完整性。
3 Flow classification 将输入数据包映射到已知流量上。使用可配置散列函数(jhash,CRC等)和桶逻辑来处理冲突的精确匹配表查找。
4 Policer 使用srTCM(RFC 2697)或trTCM(RFC2698)算法进行数据包测量。
5 Load Balancer 将输入数据包分发给应用程序worker。为每个worker提供统一的负载。保持流量对worker的亲和力和每个流程中的数据包顺序。
6 Worker threads 客户指定的应用工作负载的占位符(例如IP堆栈等)。
7 Dropper 拥塞管理使用随机早期检测(RED)算法(Sally Floyd-Van Jacobson的论文)或加权RED(WRED)。根据当前调度程序队列的负载级别和报文优先级丢弃报文。当遇到拥塞时,首先丢弃优先级较低的数据包。
8 Hierarchical Scheduler 具有数千(通常为64K)叶节点(队列)的5级分层调度器(级别为:输出端口,子端口,管道,流量类和队列)。实现流量整形(用于子站和管道级),严格优先级(对于流量级别)和加权循环(WRR)(用于每个管道流量类中的队列)。

整个数据包处理流程中使用的基础架构块如下表所示。

# Block Functional Description
1 Buffer manager 支持全局缓冲池和专用的每线程缓存缓存。
2 Queue manager 支持水线之间的消息传递。
3 Power saving 在低活动期间支持节能。

水线块到CPU cores的映射可以根据每个特定应用程序所需的性能级别和为每个块启用的功能集进行配置。一些块可能会消耗多个CPU cores(每个CPU core在不同的输入数据包上运行同一个块的不同实例),而另外的几个块可以映射到同一个CPU core。

23.2. 分层调度

分层调度块(当存在时)通常位于发送阶段之前的TX侧。其目的是根据每个网络节点的服务级别协议(SLA)指定的策略来实现不同用户和不同流量类别的数据包传输。

23.2.1. 概述

分层调度类似于网络处理器使用的流量管理,通常实现每个流(或每组流)分组排队和调度。它像缓冲区一样工作,能够在传输之前临时存储大量数据包(入队操作);由于NIC TX正在请求更多的数据包进行传输,所以这些数据包随后被移出,并且随着分组选择逻辑观察预定义的SLA(出队操作)而交给NIC TX。

Figure 23 2 Hierarchical Scheduler Block Internal Diagram

分层调度针对大量报文队列进行了优化。当只需要少量的队列时,应该使用消息传递队列而不是这个模块。有关更多详细的讨论,请参阅“Worst Case Scenarios for Performance”。

23.2.2. 调度层次

调度层次结构如下图所示。层次结构的第一级是以太网TX端口1/10/40 GbE,后续层次级别定义为子端口,管道,流量类和队列。

通常,每个子端口表示预定义的用户组,而每个管道表示单个用户/订户。每个流量类是具有特定丢失率,延迟和抖动要求(例如语音,视频或数据传输)的不同流量类型的表示。每个队列都承载属于同一用户的同一类型的一个或多个连接的数据包。

Figure 23 3 Scheduling Hierarchy per Port

下表列出了各层次的功能。

# Level Siblings per Parent Functional Description
1 Port 1.输出以太网端口1/10/40 GbE。2.多个端口以轮询方式调度,所有端口具有相同的优先级。
2 Subport Configurable (default: 8) 1.流量整形使用令牌桶算法(每个子口一个令牌桶)。2.Subport层对每个流量类(TC)强制执行上限。3. 较低优先级的TC能够重用较高优先级的TC当前未使用的子端口带宽。
3 Pipe Configurable (default: 4K) 使用令牌桶算法进行流量整形(每个pipe一个令牌桶)
4 TC 4 1.相同pipe的TC以严格的优先级顺序处理。2.在pipe级别每TC执行上限。3.较低优先级的TC能够重用当前未被较高优先级的TC使用的pipe带宽。4.当子卡TC超额(配置时间事件)时,管道TC上限被限制为由所有子端口管道共享的动态调整值。
5 Queue 4 根据预定权重,使用加权循环(WRR)对相同TC的队列进行服务。

太长了,后续。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容