Open vSwitch中有多個命令,分別有不同的作用,大致如下:
ovs-vsctl用於控制ovs dbovs-ofctl用於管理OpenFlow switch 的 flowovs-dpctl用於管理ovs的datapathovs-appctl用於查詢和管理ovs daemon
1 控制管理類
1)查看網橋和端口:
ovs-vsctl show
2)創建一個網橋:
ovs-vsctl add-br br0
3)添加/刪除一個端口:
ovs-vsctl add-port br0 eth1、ovs-vsctl del-port br0 eth1
4)設置/清除網橋的openflow協議版本:
ovs-vsctl set bridge br0 protocols=OpenFlow13、ovs-vsctl clear bridge br0 protocols
5)查看某網橋當前流表:
ovs-ofctl dump-flows br0、ovs-ofctl -O OpenFlow13 dump-flows br0、ovs-appctl bridge/dump-flows br0
6)設置/刪除控制器:
ovs-vsctl set-controller br0 tcp:127.0.0.1:6653、ovs-vsctl del-controller br0
7)查看接口統計:
ovs-ofctl dump-ports br0
2 流表項操作
1)添加普通流表項:
ovs-ofctl add-flow br0 in_port=1, actions=outport:2
2)按匹配項來刪除流表項:
ovs-ofctl del-flows br0 "in_port=1"
3)刪除全部流表項:
ovs-ofctl del-flows br0
3 指令動作
1)動作為從指定接口轉發出去:
ovs-ofctl add-flow br0 in_port=1,actions=output:2
2)動作為指定group(group id為已創建的group table):
ovs-ofctl add-flow br0 in_port=1,actions=group:1
3)動作為normal(轉為L2/L3處理流程):
ovs-ofctl add-flow br0 in_port=1,actions=normal
4)動作為flood(從所有物理接口轉發出去,除了入接口和已關閉flooding的接口):
ovs-ofctl add-flow br0 in_port=1,actions=flood
5)動作為all(從所有物理接口轉發出去,除了入接口):
ovs-ofctl add-flow br0 in_port=1,actions=all
6)動作為local(一般是轉發給本地網橋):
ovs-ofctl add-flow br0 in_port=1,actions=local
7)動作為in_port(從入接口轉發回去):
ovs-ofctl add-flow br0 in_port=1,actions=in_port
8)動作為controller(以packet-in消息上送給控制器):
ovs-ofctl add-flow br0 in_port=1,actions=controller
9)動作為drop(丟棄數據包操作):
ovs-ofctl add-flow br0 in_port=1,actions=drop
4 操作meter表
1)查看當前設備對meter的支持:
ovs-ofctl -O OpenFlow13 meter-features br0
2)查看meter表:
ovs-ofctl -O OpenFlow13 dump-meters br0
3)查看meter統計:
ovs-ofctl -O OpenFlow13 meter-stats br0
4)創建meter表
# 限速類型以kbps(kilobits per second)計算,超過20kb/s則丟棄
ovs-ofctl -O OpenFlow13 add-meter br0 meter=1,kbps,band=type=drop,rate=20
# 同上,增加burst size參數
ovs-ofctl -O OpenFlow13 add-meter br0 meter=2,kbps,burst,band=type=drop,rate=20,burst_size=256
# 同上,增加stats參數,對meter進行計數統計
ovs-ofctl -O OpenFlow13 add-meter br0 meter=3,kbps,burst,stats,band=type=drop,rate=20,burst_size=256
# 限速類型以pktps(packets per second)計算,超過1000pkt/s則丟棄
ovs-ofctl -O OpenFlow13 add-meter br0 meter=4,pktps,band=type=drop,rate=1000
5)刪除meter表
# 刪除全部meter表
ovs-ofctl -O OpenFlow13 del-meters br0
# 刪除meter id=1
ovs-ofctl -O OpenFlow13 del-meter br0 meter=1
6)創建流表:
ovs-ofctl -O OpenFlow13 add-flow br0 in_port=1,actions=meter:1,output:2
5 操作group表
1)查看當前設備對group的支持:ovs-ofctl -O OpenFlow13 dump-group-features br0
2)查看group表:ovs-ofctl -O OpenFlow13 dump-groups br0
3)創建group表
# 類型為all
ovs-ofctl -O OpenFlow13 add-group br0 group_id=1,type=all,bucket=output:1,bucket=output:2,bucket=output:3
# 類型為select
ovs-ofctl -O OpenFlow13 add-group br0 group_id=2,type=select,bucket=output:1,bucket=output:2,bucket=output:3
# 類型為select,指定hash方法(5元組,OpenFlow1.5+)
ovs-ofctl -O OpenFlow15 add-group br0 group_id=3,type=select,selection_method=hash,fields=ip_src,bucket=output:2,bucket=output:3
4)刪除group表:
ovs-ofctl -O OpenFlow13 del-groups br0 group_id=2
5)創建流表:
ovs-ofctl -O OpenFlow13 add-flow br0 in_port=1,actions=group:2
