DPDK- flow Metering

DPDK- flow Metering

flow MeteringDPDK 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 no
	Pkts G: 1030792
	Bytes G: 61847520
	Pkts Y: 0
	Bytes Y: 0
	Pkts R: 15555474066
	Bytes R: 933328443960
	Pkts DROPPED: 15555474066
	Bytes 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值