OVS常用命令整理
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
本文来自博客园,作者:Jcpeng_std,转载请注明原文链接:https://www.cnblogs.com/JCpeng/p/15153902.html