簡單梳理找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