简单梳理找ovs上配置限速的3中方法,各有优劣,可以根据实际情况选择限速方法
1. ovs端口支持qos限速.
原理就是将包含发送到网卡的不同队列, 利用tc进行限速
1) 配置限速队列, 创建一个限速队列1, 限速100mbps
ovs-vsctl set port veth1 qos=@newqos -- \
--id=@newqos create qos type=linux-htb queues=1=@q1 -- \
--id=@q1 create queue other-config:max-rate=100000000
2)设置流表匹配流量送到限速队列1,
ovs-ofctl add-flow br-v6 ip,nw_dst=192.168.0.11,action=set_queue:1,normal
3)查询限速
ovs-vsctl list port veth1 |grep qos
ovs-vsctl list qos QOSID
ovs-vsctl list queue QID
4) 删除qos
ovs-vsctl clear port veth qos
ovs-vsctl -- destroy qos QOSID
ovs-vsctl -- destroy queue QID
5) 不是所有端口都支持qos限速的, 本质是tc限速, 有些端口比如vlxan段不是网卡设备, 不能使用qos限速
通过ovs-appctl qos/show-types PORT_NAME 可以查看是否支持
2. 利用ovs自带的端口限速, 只支持端口粒度的限速
比如配置端口vtep1 收包限速10Mbps可以如下配置(虚拟机在物理机侧网卡收包对应是虚拟机发包)
$ ovs-vsctl set interface vif1.0 ingress_policing_rate=10000
$ ovs-vsctl set interface vif1.0 ingress_policing_burst=8000
3. ovs meter限速
meter限速是ovs内实现的流表粒度的限速功能, 支持带宽和pps限速
配置方法
1)创建200m的带宽
ovs-ofctl -O OpenFlow15 add-meter br-test tmeter=100,kbps,burst,stats,band=type=drop,rate=200000,burst_size=200001
2)创建10000bps的pps限速
ovs-ofctl -O OpenFlow15 add-meter br-test meter=101,pktps,band=type=drop,rate=10000
3)对veth1 口 发包流量进行带宽限速, 对目的ip 192.168.1.1, 端口8080进行pps限速
ovs-ofctl add-flow br-test ip,action=meter:100, veth1 -O openflow15
ovs-ofctl add-flow br-test ip,nw_dst=192.168.1.1/32,tp_port=8080,action=meter:101, veth1 -O openflow15