DPDK QOS1 -- Linux HQOS的框架

【Intel DPDK】Qos_Sched实例在虚拟机中运行注意事项。 qos实例运行命令:./build/qos_sched -c 0x7 -n 4 -- --mst 0 --pfc 0,1,1,2 --pfc 1,0,1,2 --msz 1024 --cfg ./profile.cfg 1、大页内存不足,从头文件中可以看到这2个宏定义,NB_MBUF   (2*1024*1024)  #define MBUF_SIZE (1528 + sizeof(stru 阅读详情

QOS具体的原理这里不展开,QOS包含流量分类、流量标记、流量监管、流量整形、拥塞管理、拥塞避免等技术,上面各种QOS技术在设备上处理的顺序如下:

HQOS与传统的一层QOS相比,最大的区别是可以将调度队列划分为如物理级别、逻辑级别、应用或业务级别等多个调度级别,每一级别可以使用不同的特征进行流量管理,为了理解HQOS我们先了解下递归控制的概念,所谓的递归控制就是分层次地控制,而对于每个层次,控制方式可以一致,也可以不一致。

 

熟悉linux内核调度的都知道,对于组调度和TASK调度都采用了完全相同的调度方式,然而显然组和TASK是属于不同层次的,如下图所示:

从上面可以看出,递归控制是分层的,对于上面的图而言,除了叶子节点之外的每一个节点都是一颗独立的小树,不管是大树还是小树,对于控制或者组织逻辑而言,其性质是完全一样的。

linux实现的QOS框架,对队列进行了抽象(QDISC (排队规则)是queueing discipline的简写),其最主要有两个回调函数指针,一个是enqueue入队操作,一个是dequeue出队操作。不管是enqueue还是dequeue,其都并不一定真正将数据包排入队列,而仅仅是执行规定的一系列的操作,操作包含:
  1、对于叶子节点,入队或者从出队一个数据包;
  2、递归调用其它抽象队列的enqueue/dequeue操作。
 

注意上面提到了其它抽象队列,那么如何来定位这个抽象队列呢?这就需要一个抉择,也就是一个选择器(FILTER),根据数据包的特征来将数据包归入一个抽象队列(类、CLASS),并可以赋予一定的操作(ACTION),LINUX QOS的框架,如下图的表示:

所以从递归控制的角度和上面的图理解QOS框架,很容易将队列分为真实的队列和抽象的队列,真实队列和抽象队列的地位是平等的,但实际上,它们之间是有层次关系的,正是基于这种递归的“QDISC,CLASS,FILTER”三元组来进行的,让 QOS的框架实现的非常紧凑。

要实现调度,得有一个前提,就是数据包已经在队列里面了,那么目前还有一个问题没有解决,那就是数据包是如何到队列里面的??

 

对于进程调度而言,进程在被创建或者运行的时候,可以调用setscheduler系统调用来把进程放进某一个调度类的链表或者队列或者红黑树中以便让进程调度模块进行调度,但是对于数据包呢?肯定也有这么一个机制,可以统称为排队的规则(QDISC)。

 

这里的排队规则指的是数据包进入QOS,直到最终排队到某个队列之间的所有的规则,这样理解起来会比那个递归的“QDISC,CLASS,FILTER”更加容易,毕竟除了最终的队列,中间的过程只是决定数据包下一步将走向哪个分支,并不是真正的排队。


 所以说,整个数据包排队就是一系列的决定,最终画出了一条到达最终调度队列的一条唯一的路径,按照图论以及实现效率来理解,确定唯一的一条路径的最好的图就是树(算法导论说的,不太懂),从树根到达某个叶子节点,存在唯一的一条路径。那么,这一系列决定的过程正是数据包向下到达叶子的过程,决策点的唯一问题就在数据包到达数据的枝干节点后如何分支的问题,很显然,这棵树可以是N叉数,每个分支的高度也不一定相同,最终只要能到达一个叶子节点代表的调度队列即可。


 决定数据包走向哪个分支的动作内置在中间节点内部,每一个中间节点的决策算法可以相同也可以不同,这就形成了一个分层递归的结构树,按照这个方法去理解,QOS框架的入队逻辑就会简单多了, 我们可以在每一个中间节点配置一个FILTER, FILTER根据数据包的特征抉择它选择哪个孩子节点,如果在每一个中间节点都放置了一个令牌桶,这样就可以控制进入任意一个分支的数据包的速率。

 

如果说入队操作是在每一个节点按照过滤器配置的策略为一个数据包挑选一个分支最终进入叶子节点真实队列的话,那么出队操作则是一个自根部开始在每一个节点按照调度算法挑选一个分支,一直走到叶子节点取出一个数据包的过程。

 

不管是入队操作还是出队操作都是从根部到叶子的,越接近根部的节点越先参与分类和调度。
 

从出队的过程,我们可以看到这是一个在每一棵子树的每一层按照该子树的根规定的调度算法进行数据包调度的过程,和入队过程一样,这也是一个分层递归的结构树,按照这种理解,QOS的调度实体就是树中的每一个节点,当然也包括叶子节点,对于叶子节点,调度实体可以在任何数据结构中而不必非要是树节点(因为它不会有任何子树了),调度算法来抉择选择下面一层的哪个调度实体。

我们整个QOS框架的调度体系如下图:

 

HQoS配置学习 传统的QoS基于端口进行流量调度,无法区分用户和用户不同的业务。HQoS可以针对每个用户的业务流进行队列调度。 阅读详情

相关推荐

DPDK QoS之分层调度器

分层调度器的时机主要体现在TX侧,正好在传递报文之前。它的主要目的是在每个网络节点按照服务级别协议来对不同的流量分类和对不同的用户的报文区分优先级并排序。一、概述分层调度器跟以前使用网络处理器实现的每条流或一组流的报文队列和调度的流量管理器很相似。它看起来像在传输之前的一个临时存储了很大数量报文的缓冲区(入队操作)。当网卡TX请求更多报文去发送的时候,这些报文递交给网卡TX的预定义的SLA的报文选择逻辑模块之后会删除。(出队操作)。分层调度器对大数量的报文队列做了优化。当只需要小数量的队列时,会使用消息传递

oshhh的博客 547

DPDK QOS 5 -- Enqueue && Dequeue详细流程分析

入队流程 我们先看看,官网上是怎么说的: Enqueue Pipeline The sequence of steps per packet: Accessthe mbuf to read the data fields required to identify the destination queue for the packet. These fields are: port, s...

~~ LINUX ~~ 2393

DPDK与QoS(服务质量)

在DPDK提供的QoS框架中,一个复杂的处理流程被分成了几个不同的处理阶段,如下图所示:对于这些流程中模块,其具体解释是这样的:从这个图中可以看出,整个包的处理过程被分成了4个阶段完成。1.第一阶段是在线程0中的,主要的工作就是接收包然后进行检查校验。2.第二阶段是一个重点,主要工作是进行流分类,测速和负载均衡。把不同的流量导到不同的工作负载核上。3.第三阶段是在不同的负载核上处理业务报文。4.第四阶段也是一个非常重要的阶段,主要工作是根据算法调度,丢弃,最后发送出去。......

lingshengxiyou的博客 876

DPDK QOS2 -- DPDK的QOS框架

VPP HQOS处理报文整体框架如下图所示: 上图的QOS就是DPDK实现的HQOS,它的层次如下,官网摘录: The scheduling hierarchy As shown below. The first level of the hierarchy is the Ethernet TX port 1/10/40 GbE, with subsequent hierarchy lev...

~~ LINUX ~~ 1959

【信息科学与工程学】【通信工程】计算机科学与自动化——第二百三十三篇 云NaaS服务 系列二01

国家骨干网(含核心网、IP骨干网、OTN骨干网)/城域网【含3G/4G/5G接入网/PON接入网/OTN接入网+OTN/IP城域网+其他】/中心云(多/双/单Region+多AZ/双AZ/单AZ)+边缘DC+边缘计算节点+端计算节点包括IoT传感器、移动终端、CPE设备。通过5G NR(n78频段,带宽100MHz,子载波间隔30kHz)或GPON(下行2.5Gbps,上行1.25Gbps)接入。本地缓存小于10GB,主要用于临时数据暂存。位于地市级机房,部署MEC服务器(Intel Xeon Platin

weixin_49199313的博客 1332

【信息科学与工程学】【通信工程】计算机科学与自动化——第二百三十三篇 云NaaS服务 系列二02

字段内容类型​云网络自定义路由表(Custom Route Table):允许用户自定义 VPC 或子网的路由规则,控制流量走向,支持黑白名单、策略路由。端计算节点->边缘计算节点->边缘DC->中心云的网络情况及存储需求及配置情况列表​端计算节点为 VPC 内的云资源。边缘计算节点不适用。边缘 DC 和中心云为路由表管理平台。存储需求:路由条目存储于数据库。网络:路由表在虚拟路由器中执行。QoS:无。网络的端到端配置(从接入到汇聚到核心)​。

weixin_49199313的博客 328

HQoS简单介绍

HQoS的基本原理目前计算机网络的高速发展,使得对带宽、延迟、抖动敏感的语音、图像、重要数据越来越多地在网上 传输。为了能够对数据传输性能提供不同的承诺和保证,广泛使用了QoS(Quality of Service,服务质量)技术来保证网络传输质量。 随着用户规模的扩大,业务种类的增多,要求以太网设备不仅能够进一步细化区分业务流量,而且还能够对多个用户、多种业务、多种流量等...

weixin_34221276的博客 956

【信息科学与工程学】【通信工程】第一百九十一篇 路由器体系结构03

编号类型领域问题详细的数学分析(逐步推理)参数列表(表达式 / 数值范围 / 边界 / 测量)关联知识839DCI演进 · 收敛DCI 2030 年三大技术收敛方向步骤1:方向一:IPoDWDM 成为绝对主流(Omdia 2027 59% → 2030 80%+),OTN 退化为 OLS 纯光层。步骤2:方向二:800ZR+ 取代 400ZR 成为主力速率,PCS 使 800G 达 600–1000km。步骤3:方向三:AI 集群 DCI 催生 1.6T/3.2T 超短距(<10km)相干模块(OSFP-X

weixin_49199313的博客 858

DPDK-服务质量(QOS)框架

0x01 缘由      继续学习dpdk相关文档。QoS听了、看了好多次,但是从来没接触,趁现在学习下。      QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。 0x02 介绍       DPDK Quality of Service

3-Number 3815

【信息科学与工程学】【数据中心】第二十三篇 DDC网络-满足大规模训练、推理、存储区网络(Roce2组网)-第四篇 跨地域互联(管理区和推理区)

智算中心互联

weixin_49199313的博客 782

【信息科学与工程学】【安全领域】第一百四十一篇 SDN+安全服务链场景0001 算法01

编号类型领域子领域问题(要解决什么)问题的数学分析及数值分析及优化分析参数列表及参数的边界范围及极限及常量/数值/数字关联知识和法律法规A1(五元组→匹配树/TCAM映射)转发面 / 接入-边缘SC分流点(MCR/CR/BRAS)引流:按IP五元组+VLAN/QinQ+SRv6隧道信息区分租户/业务,决定送入哪个SRv6 TE Policy/BSID给定海量微流,如何把"租户T+业务B+(sa/da/SP/DP/proto)"快速映射为一条。

weixin_49199313的博客 598

华为HQoS的介绍配置实例以及故障案例分析-(值得收藏)

华为 HQoS(Hierarchical Quality of Service)即层次化服务质量,是华为提出的一种先进的QoS管理技术,它通过多级队列调度机制为多用户多业务提供精细化的流量管理和带宽保证。

满地找牙的博客 1301

FD.io/VPP — QoS — DPDK Hqos

目录 文章目录目录基于 DPDK QoS 套件实现的 Hqos1、CONF 配置 Hqos2、CLI 配置 Hqos 基于 DPDK QoS 套件实现的 Hqos Hqos 的处理流程如上图所示: Worker 线程从 NIC 中读取报文进行处理; 调用 DPDK 设备的发送函数时,如果配置了 Hqos,那么设置 Hqos 的相关参数,将其送入 Swq 队列(swq 队列与 Worker 线程是 1:1 的关系); Worker 线程处理结束后,Hqos 线程(根据配置决定个数)轮询从 Swq 中读取报

烟云的计算 2639

五、程序员指南:数据平面开发套件

程序员指南:数据平面开发套件 21-25章

Phoenix_zxk的博客 905

OVDK-QoS:在 DPDK OVS 上提供流量控制

OVDK-QoS 在 DPDK OVS 上提供流量控制 Intel(R) DPDK Accelerated Open vSwitch (Intel(R) DPDK vSwitch/OVDK) 是开源 Open vSwitch 多层虚拟交换机的一个分支,可在找到。 有关该项目的更多信息,请查看英特尔(R) DPDK vSwitch/OVDK 主页 01.org。 OVDK-QoS是具有QoS能力的OVDK,提供类似于linux TC模块的流量控制功能。 OVDK-QoS 提供了一个用户配置工具,即 ovdk-tc,可以配置 TC 结构对象:Qdisc 和 Class。 OVDK-QoS 提供了一个用户配置工具,即 ovs-ofctl,它可以配置流表并使用 enqueue 对网络流量进行分类。 作用:enqueue 可以为匹配流表的数据包指定目标输出端口和队列。

思科VPP介绍(包括性能数据).pdf

vpp相关介绍,可以更加全面了解VPP

HQOS

HQoS通过QoS的五级队列调度来实现多用户多业务的带宽保证。 层级和队列划分因人而异,各产品根据用户需求确定。上图只是其中的一种划分,区分上、下行五级队列调度: 上行QoS的五级队列调度顺序:流队列(FQ)->用户队列(SQ)->用户组队列(GQ)->目的板(TB)->类队列(CQ)。 下行QoS的五级队列调度顺序:流队列(FQ)->用户队列(SQ)->用户组队列(GQ)->类队列(CQ)

如是我闻 7140

电流模架构Bandgap设计与仿真

带隙基准作为集成电路中一个重要模块,被广泛应用在低压差线性稳压(LDO)、充电电池保护芯片和通信电路、射频收发器、flash存储器等多种模拟及数模混合集成电路中,并且是片上集成系统(SOC)芯片中不可或缺的部分,为整个芯片提供精确的电压参考点............

qq_50968231的博客 5万+

一文搞懂linux PM QOS

PM QOS(power management quality of service,服务质量)表示linux内核电源管理的质量。在很多产品及场景功耗和性能是一个tradeoff的艺术。Linux提供了众多的功耗管理机制用来尽可能减少不必要的功耗:cpu idle、cpu hotplug、cpu dvfs、系统休眠唤醒、runtime power management、device dvfs、clock gate等(这些机制以往文章有介绍,大家感兴趣的话,可以往前翻阅)。

生活需要深度 800

是德频谱分析仪相位噪声测量实战指南:从原理到精准操作

本文详细介绍了是德频谱分析仪在相位噪声测量中的实战操作指南,从基础概念到高级技巧全面解析。通过5G基站时钟测量等实际案例,展示如何利用是德N9030B等设备精准测量相位噪声,并分享设备预热、参数设置、环境干扰排除等关键操作要点,帮助工程师提升测量精度和效率。

jenkins8butler的博客 229

夜间灯光遥感数据介绍及下载汇总

夜间灯光遥感数据介绍及下载汇总

qq_43874102的博客 1万+
上一篇: 深入理解dpdk rte_ring无锁队列
下一篇: linux网络流控-htb算法简析
废言Pro
博客等级 码龄16年 1093粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值