Purpose:
建立環境
Format: --parameters value
參數 | 值 | 解釋 |
---|---|---|
--mac | None | 自動幫host設定mac address |
--switch | ovsk | 使用 Open vSwitch |
--controller | remote | external one(Ryu/Pox/Onos) |
-x | None | Start xterm (s1,h1,h2) |
Step 1: Mininet Topo
sudo mn --mac --switch ovsk --controller remote -x
預設拓樸為
Step 2: OVS 以及 程式碼 微修改 最後啟動 Ryu App x3 還有 Queue QoS Setting
s1
ovs-vsctl set Bridge s1 protocols=OpenFlow13
ovs-vsctl set-manager ptcp:6632
c0
sed '/OFPFlowMod(/,/)/s/)/, table_id=1)/' ryu/ryu/app/simple_switch_13.py > ryu/ryu/app/qos_simple_switch_13.py
cd ryu/; python ./setup.py install
c0
start ryu.app.rest_qos ryu.app.qos_simple_switch_13 ryu.app.rest_conf_switch
ryu-manager ryu.app.rest_qos ryu.app.qos_simple_switch_13 ryu.app.rest_conf_switch
c0
curl -X PUT -d '"tcp:127.0.0.1:6632"' http://localhost:8080/v1.0/conf/switches/0000000000000001/ovsdb_addr
curl -X POST -d '{"port_name": "s1-eth1", "type": "linux-htb", "max_rate": "1000000", "queues": [{"max_rate": "500000"}, {"min_rate": "800000"}]}' http://localhost:8080/qos/queue/0000000000000001
curl -X POST -d '{"match": {"nw_dst": "10.0.0.1", "nw_proto": "UDP", "tp_dst": "5002"}, "actions":{"queue": "1"}}' http://localhost:8080/qos/rules/0000000000000001
curl -X GET http://localhost:8080/qos/rules/0000000000000001
Step 3: iperf 測試 不同 Port 的最大最小 bandwidth
兩個 h1: h1(1) h1(2),兩個 h2: h2(1) h2(2)
h1(1)
iperf -s -u -i 1 -p 5001
h1(2)
iperf -s -u -i 1 -p 5002
h2(1)
iperf -c 10.0.0.1 -p 5001 -u -b 1M
h2(2)
iperf -c 10.0.0.1 -p 5002 -u -b 1M
實驗結果:
port 5001: 理論上 不超過 500Kbps
但是 第一個 輸出是 506 Kbps <-- Why ?
port 5002: 至少會有 800Kbps
實驗操作 Tip:
xterm Copy/Paste
Reference:
RYU SDN Framework