DPDK Qos之报文处理流水线
原创翻译,转载请注明出处。
下面是一个支持Qos的复杂报文处理流水线的图;
流水线是通过DPDP可重用的软件库构建出来的。在流水线里实现QoS主要是如下模块:policer,dropper,shceduler。下面是这些模块的功能性描述。
# | 模块 | 功能描述 |
1 | Packet I/O Rx&Tx | 从网卡端口接收/发送报文,Intel 1/10GbE轮询模式(PMD) |
2 | Packet parser | 确定报文的协议栈,检查报文头的完整性 |
3 | Flow classification | 映射输入报文到一个已知的流,使用hash函数(jhash,CRC等)精确匹配表查找和用桶处理冲突。 |
4 | Policer | 报文统计,使用srTCM(RFC2697)或者trTCM(RFC2698) |
5 | LoadBalancer | 分发报文给每个工作者,并使得每个工作者负载均衡。保持对每个工作者的传输流的亲和性与报文在流的顺序。 |
6 | Worker threads | 特定上层应用程序工作量的代称(比如IP协议栈) |
7 | Dropper | 使用随机丢弃或者带权随机丢弃算法来拥塞管理。丢包是基于当前调度器队列负载级别和报文优先级,如果拥塞,首先丢弃低优先级报文 |
8 | Hierarchical Scheduler | 5级分层调度(级别是:出端口,子端口,流水线,流分类和队列),有成千上万(典型是64K)的叶子节点(队列)。在子端口和流水线实现了流量整形,在流分类实现严格优先级,在每个流水线的流分类的队列里实现WRR(加权循环)。 |
下面列出的基础模块始终在整个报文处理流水线中使用
# | 模块 | 功能描述 |
1 | Buffer manager | 支持全局缓冲区池和每个线程的私有的缓存 |
2 | Queue manager | 支持在流水线之间传递消息 |
3 | Power saving | 支持在低利用率期间节能 |
在每个特定应用程序需要的性能级别上,流水线块到CPU核的映射是可配置的,并且这些特性对每一个流水线块都是开启的。当其他的块可能映射到同一个CPU核时,有些流水线块可能会消耗多个CPU核(即每个CPU核运行不同的块实例来处理不同的收包)。
DPDK Qos之报文处理流水线的更多相关文章
- DPDK QoS之分层调度器
原创翻译,转载请注明出处. 分层调度器的时机主要体现在TX侧,正好在传递报文之前.它的主要目的是在每个网络节点按照服务级别协议来对不同的流量分类和对不同的用户的报文区分优先级并排序. 一.概述分层调度 ...
- DPDK编程指南 2.概述
本章节给出了DPDK架构的一个全局概述. DPDK的主要目的就是为数据面快速报文处理应用程序提供一个简洁完整的框架.用户可以通过代码来理解其中使用的一些技术,构建自己的应用程序或添加自己的协议栈.Al ...
- DPDK QoS_meter 源码阅读
main.c /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2010-2016 Intel Corporation */ #inclu ...
- TAP/TUN浅析(一)
参考链接:https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/ TAP 设备与 VETH 设备 TUN/T ...
- DPDK2.1开发者手册4-7
Mempool Labrary 一个内存池(memory pool)就是固定大小对象的分配器.在dpdk中,它是通过名字来标示唯一性的,且使用环形队列来保存没有使用的空闲对象.它提供了一些可选项服务例 ...
- 超文本传送协议HTTP
1. HTTP的操作过程: HTTP是面向事务的应用层协议.HTTP协议本身是无连接的,为了保证数据的可靠传输,HTTP使用了面向连接的TCP作为运输层协议.所以,在发送HTTP报文之前都需要先建立T ...
- 5.3 存储器、I/O和配置读写请求TLP
本节讲述PCIe总线定义的各类TLP,并详细介绍这些TLP的格式.在这些TLP中,有些格式对于初学者来说较难理解.读者需要建立PCIe总线中与TLP相关的一些基本概念,特别是存储器读写相关的报文格式. ...
- Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
前言 诞生及优势 MQTT由Andy Stanford-Clark(IBM)和Arlen Nipper(Eurotech,现为Cirrus Link)于1999年开发,用于监测穿越沙漠的石油管道.目标 ...
- BCM芯片FP原理及相关SDK数据结构介绍
BCM芯片有几个大的模块: VLAN.L2.L3和FP等几个,其中FP的使用也最为灵活,能解析匹配数据包文的前128字节比特级的内容,动作包括转发.丢弃.结合qos修改相应字段.分配vid.流镜像.流 ...
随机推荐
- rank() over,dense_rank() over,row_number() over的区别
rank() over,dense_rank() over,row_number() over的区别 1.rank() over:查出指定条件后的进行排名.特点是,加入是对学生排名,使用这个函数,成绩 ...
- SQL中 decode() 函数介绍
decode() 函数的语法: Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) From talbename Where … 其中:c ...
- css3响应式布局设计——回顾
响应式设计是在不同设备下分辨率不同显示的样式就不同. media 属性用于为不同的媒体类型规定不同的样式.根绝浏览器的宽度和高度重新渲染页面. 语法: @media mediatype and | n ...
- 如何在match中使用正则表达式
这是在实现搜索功能的时候遇到的一个问题,在搜索的场景中,会根据搜索框中输入的内容,匹配出包含搜索内容的部分.简单模拟还原使用场景: 首先定义一个遍历 value 用来接收输入的内容 var value ...
- chrome浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- oracle-sql优化-通过分组和缓存减少不必要的读
环境:aix 7.1,oracle12.1.0.2 cdb 优化前SQL select * from (select row_.*, rownum rownum_ from (select '弱覆盖' ...
- 利用python和opencv批量去掉图片黑边
import os import cv2 import numpy as np from scipy.stats import mode import time import concurrent.f ...
- hibernate中配置单向多对一关联,和双向一对多,双向多对多
什么是一对多,多对一? 一对多,比如你去找一个父亲的所有孩子,孩子可能有两个,三个甚至四个孩子. 这就是一对多 父亲是1 孩子是多 多对一,比如你到了两个孩子,它们都是有一个共同的父亲. 此时孩子就是 ...
- Spark-源码-TaskScheduler初始化过程, ClientActor向Master发送注册任务信息过程
Spark版本 1.3 Spark源码 Spark.createTaskScheduler TaskScheduler初始化过程 1.// SparkContext中 /** * Create a t ...
- 51定时器控制4各led,使用回调函数机制
程序转载自51hei,经过自己的实际验证,多了一种编程的思路技能,回调函数的基本思想也是基于事件机制的,哪个事件来了, 就执行哪个事件. 程序中,最多四个子定时器,说明51的处理速度是不够的,在中断中 ...