這邊簡單紀錄一下一種QoS的使用方法,實驗流程如下
Step
- Create two different QOS queue on the openvswitch with different limitation.
- Use the Restful API to add a flow entry with the action
enqueue
. - Chagne the flow action when you want to change the QoS behavoir.
Detail
- Create topology
sudo mn --mac --controller=remote
Adding two queues q0(limited 800M) and q1(limited 50M) on s1-eth1
1
2
3
4ovs-vsctl -- set port s1-eth1 [email protected] -- [email protected] create qos type=linux-htb \
[email protected],[email protected] -- [email protected] create queue other-config:min-rate=200000000 \
other-config:max-rate=800000000 -- [email protected] create queue other-config:min-rate=50000 \
other-config:max-rate=50000000Adding flow entry using q0 and forwarding packet from port2 to port1.
1
curl -d '{"switch": "00:00:00:00:00:00:00:01", "name":"flow-mod-1", "cookie":"0", "priority":"32768","ingress-port":"2","active":"true", "actions":"enqueue=1:0"}' http://127.0.0.1:8080/wm/staticflowentrypusher/json
Type “iperf h2 h1” in mininet
1
2
3mininet> iperf h2 h1
*** Iperf: testing TCP bandwidth between h2 and h1
*** Results: ['745 Mbits/sec', '746 Mbits/sec']Modify the flow entry with different queue.
1
curl -d '{"switch": "00:00:00:00:00:00:00:01", "name":"flow-mod-1", "cookie":"0", "priority":"32768","ingress-port":"2","active":"true", "actions":"enqueue=1:1"}' http://127.0.0.1:8080/wm/staticflowentrypusher/json
Type “iperf h2 h1” in mininet
1
2
3mininet> iperf h2 h1
*** Iperf: testing TCP bandwidth between h2 and h1
*** Results: ['50.2 Mbits/sec', '50.6 Mbits/sec']