DPDK- flow Metering
DPDK- flow Metering
flow Metering
是 DPDK 19.11
及后续版本添加的新特性. 主要针对 Mellanox ConnectX-5/ConnectX-6/ConnectX-6Dx
系列网卡硬件Metering
特性. 其支持的限速算法是 rfc2697 单色双桶
限速机制, 支持对 ingress
流量 metering
.
环境准备
DPDK 19.11
OFED 4.7-3
ConnectX-5
启用 CX5 DevX
:
mlxconfig -d d8:00.0 set UCTX_EN=1
mlxconfig -d d8:00.0 CQE_COMPRESSION=1
reset
网卡:
mlxfwreset -d d8:00.0 --level 3 --yes r
/etc/init.d/openibd restart
或者直接reboot
系统.
运行testpmd
:
./dpdk-testpmd-19.11.8 -l 26-51 --socket-mem=4096,4096 -w d8:00.0,dv_flow_en=1,mprq_en=1,rxqs_min_mprq=1,rx_vec_en=1 -- -i --rxq=16 --txq=16 --nb-cores=16 --f
orward-mode=icmpecho --numa --enable-rx-cksum -a...
testpmd> show port meter cap 0**** Port Meter Object Capabilities ****cap.n_max 4096
cap.n_shared_max 4096
cap.identical 1
cap.shared_identical 1
cap.shared_n_flows_per_mtr_max 4194304
cap.chaining_n_mtrs_per_flow_max 1
cap.chaining_use_prev_mtr_color_supported 0
cap.chaining_use_prev_mtr_color_enforced 0
cap.meter_srtcm_rfc2697_n_max 4096
cap.meter_trtcm_rfc2698_n_max 0
cap.meter_trtcm_rfc4115_n_max 0
cap.meter_rate_max 1099511627776
cap.color_aware_srtcm_rfc2697_supported 0
cap.color_aware_trtcm_rfc2698_supported 0
cap.color_aware_trtcm_rfc4115_supported 0
cap.policer_action_recolor_supported 0
cap.policer_action_drop_supported 1
cap.stats_mask 88
testpmd>
Meter
配置 Meter
, 这里配置的是cir
平均速率 128000bytes * 8 = 1024000bps
, 突发速率 64000 * 8 = 512000bps
. 发包工具使用 IXIA IxNetwork
构建 64字节小包:
testpmd> add port meter profile srtcm_rfc2697 0 24 128000 64000 0
testpmd> create port meter 0 0 24 yes G Y D 0xffff 1 0
testpmd> flow create 0 ingress pattern eth / ipv4 dst is 10.245.111.173 / end actions jump group 1 / end
testpmd> flow create 0 group 1 ingress pattern eth / end actions count / meter mtr_id 0 / queue index 7 / end
testpmd> show port xstats all
testpmd> show port meter stats 0 0 no
检查限速结果:
testpmd> show port xstats all
###### NIC extended statistics for port 0
rx_good_packets: 1109034
tx_good_packets: 0
rx_good_bytes: 66542040
tx_good_bytes: 0
rx_missed_errors: 182
rx_errors: 0
tx_errors: 0
rx_mbuf_allocation_errors: 0
rx_q0packets: 0
rx_q0bytes: 0
rx_q0errors: 0
rx_q1packets: 1109009
rx_q1bytes: 66540540
rx_q1errors: 0
rx_q2packets: 0
rx_q2bytes: 0
rx_q2errors: 0
rx_q3packets: 0
rx_q3bytes: 0
....
testpmd> show port meter stats 0 0 noPkts G: 1030792Bytes G: 61847520Pkts Y: 0Bytes Y: 0Pkts R: 15555474066Bytes R: 933328443960Pkts DROPPED: 15555474066Bytes DROPPED: 933328443960
testpmd>
注意:
启用Metering 限速后, 线速小包转发场景下会导致正常报文延迟增大 & 丢包.
感觉这是Mellanox CX5/CX6 卡的硬件瓶颈, 只要添加多条 flow 测试线速小包性能会急剧下降, 暂时已提交给官方, 等待后续进展.
令牌桶技术
以下对 令牌桶技术
与 rfc2697 单色双桶
原理做一个简单介绍:
关于令牌桶处理报文的方式,RFC中定义了以下标记算法:
•单速率三色标记(single rate three color marker,srTCM,或称为单速双桶算法)算法,主要关注报文尺寸的突发。
•双速率三色标记(two rate three color marker,trTCM,或称为双速双桶算法)算法,主要关注报文速率的突发。
令牌桶算法的评估结果都是为报文打上红、黄、绿三种颜色的标记,所以称为“三色标记”。QoS会根据报文的颜色做相应的处理,两种算法都可以工作于色盲模式和色敏模式下。以下以色盲模式为例对标记算法进行详细介绍。
srTCM
cir:承诺平均速率
cbs:承诺突发尺寸
ebs:最大突发尺寸
pir:峰值速率
要求:
cir<=pir,cbs<=ebs
MLX5 ebs=0, 不支持 pir
建议:
将 cbs、ebs 设成 cir 的 100~150倍
单速双桶
单速双桶采用RFC2697定义的单速三色标记器srTCM(Single Rate Three Color Marker)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。
为方便描述将两个令牌桶称为C桶和E桶,用Tc和Te表示桶中的令牌数量。单速双桶有3个参数:
•CIR(Committed Information Rate):承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
•CBS(Committed Burst Size):承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量;
•EBS(Excess Burst Size):超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。
系统按照CIR速率向桶中投放令牌:•若Tc<CBS,Tc增加;
•若Tc=CBS,Te<EBS,Te增加;
•若Tc=CBS,Te=EBS,则都不增加。
对于到达的报文,用B表示报文的大小:•若B≤Tc,报文被标记为绿色,且Tc减少B;
•若Tc<B≤Te,报文被标记为黄色,且Te减少B;
•若Te<B,报文被标记为红色,且Tc和Te都不减少。
单速双桶模式允许流量突发,当用户的流量速率小于配置的CIR时,报文被标记为绿色;当用户的突发流量大于配置的CBS而小于EBS时,报文被标记为黄色;当用户的突发流量大于配置的EBS时,报文被标记为红色。
单速单桶
单速双桶算法中的EBS则设置为0,此时E桶的令牌数始终为0,相当于只使用了一个令牌桶,这种情况称为单速单桶。
为方便描述将此令牌桶称为C桶,用Tc表示桶中的令牌数量。单速单桶有2个参数:
•CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
•CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。
系统按照CIR速率向C桶中投放令牌,当Tc<CBS时,令牌数增加,否则不增加。
对于到达的报文,用B表示报文的大小:•若B≤Tc,报文被标记为绿色,且Tc减少B;
•若B>Tc,报文被标记为红色,Tc不减少。
单速单桶模式不允许流量突发,当用户的流量速率小于配置的CIR时,报文被标记为绿色;当用户的流量大于CIR时直接被标记为红色。
参考
MLX5 poll mode driver
testpmd - Traffic Metering and Policing
DPDK- flow Metering相关推荐
- 网卡多队列:RPS、RFS、RSS、Flow Director(DPDK支持)
Table of Contents 多队列简介 RPS介绍(Receive Packet Steering) RFS介绍(Receive flow steering) RSS介绍(receive si ...
- 基于Web SCADA平台构建气体计量系统及SCADA监控系统
如各位对Web SCADA平台及技术感兴趣,欢迎转发或私信我,大家共同学习,相互交流共同进步: Ecava IGX Validates for Fairview Gas Metering Syste ...
- 2022年全球与中国科里奥利质量流量计行业发展趋势及投资战略分析报告
本报告研究全球与中国市场科里奥利质量流量计的发展现状及未来发展趋势,分别从生产和消费的角度分析科里奥利质量流量计的主要生产地区.主要消费地区以及主要的生产商.重点分析全球与中国市场的主要厂商产品特点. ...
- 《深入浅出DPDK》读书笔记(六):报文转发(run to completion、pipeline、精确匹配算法、最长前缀匹配LPM)
本文内容为读书笔记,摘自<深入浅出DPDK> 65.网络报文的处理和转发主要分为硬件处理部分与软件处理部分,由以下模块构成: ❑Packet input:报文输入. ❑Pre-proces ...
- 关于 DPDK 的 一些零散的杂言杂语的念头/看法
回顾了之前 DPDK 的一些学习.有一些零散的杂言杂语的念头/看法,原本分散在各处,之前没有记录下来.这里简单记录补充一下. ===================================== ...
- DPDK Release 17.11
DPDK Release 17.11 DPDK Release 17.11 主要功能如下: - IOVA awareness - PCI and VDEV buses moved to drivers ...
- DPDK — TestPMD
目录 文章目录 目录 前文列表 TestPMD TestPMD 的转发模式 TestPMD 使用示例 使用多核 切换模式 帮助手册 前文列表 <DPDK - 安装部署> TestPMD T ...
- DPDK — 架构解析
目录 文章目录 目录 前文列表 DPDK 架构 内核态模块 IGB_UIO KNI PMD DPDK Lib(核心部件库) 组件代码 平台相关模块 Classify 库 QoS 库 前文列表 < ...
- DPDK(Data Plane Development Kit)快速处理数据包 开发平台及接口 简介
一.网络IO的处境和趋势 从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10GE/25GE/40GE/100GE的演变,从中可以得出单机的网络IO能力必须跟上时代的发展. 1 ...
- DPDK vhost-user研究(九)
消息机制 当使用vhost-user时,需要在系统中创建一个unix domain socket server,用来处理qemu发送给host的消息. 如果有新的socket连接,说明guest创建了 ...
最新文章
- telnet 如何退出
- python 如何放心干净的卸载模块
- 张小二:做一个幸福的胖子
- php自己创建函数,php自定义函数之内部函数
- 多线程面试题c Linux,【多线程Linux面试题】面试问题:小伙用C语言熬… - 看准网...
- IO口复用时钟的配置
- cesium 风向数据_风向标; 针对“实时”生产数据SQL Server开发/测试数据库克隆
- [LeetCode] Plus One 加一运算
- libs/spandsp/src/floating_fudge.h:40:20: error: implicit declaration of function ‘sin’ [-Werror=impl
- linux局域网聊天软件,自制局域网内聊天与图片传输小软件
- SQL DELETE FROM的用法
- java怎么输出无损高清音乐_MP3转换器如何将无损FLAC音频转换成MP3音乐
- Authentication(认证方式)与 Authorization(授权)
- 定点数一位乘法之Booth(布斯)算法
- 云计算基础及解决方案
- 电信3g在小米信号显示无服务器,关于小米手机电信3G信号问题的分析
- Python爬虫模拟登录京东获取个人信息
- 易拉罐被证实能增强WiFi信号 笔记本手机适用
- 多张图片合成一份PDF(不使用其他软件)
- 主数据建设的挑战与发展
热门文章
- android camera 竖直拍照 获取竖直方向照片 做缩放处理
- [JNI] 开发基础(3)指针操作
- BZOJ3038 上帝造题的七分钟2
- vue学习笔记-11-自定义指令
- 弹性盒怎么实现左边图片右边文字_【粉丝问题】如何用ps修改照片中的文字数字?...
- linux最新的发布版本号,求问Linux最新内核版本以及发布日期。
- python opencv轮廓检测_OpenCV-Python实现轮廓检测实例分析
- c++如何让字符串重复输出_Python基础三(数据类型之数字和字符串)
- html不支持js,解决Firefox不支持Js的InnerHtml问题
- 小区物业管理代码实现_全区58个老旧小区有了新“管家”