用于监控和管理 OpenFlow 交换机。
查看交换机信息:
ovs-ofctl show s1
查看交换机流表:
ovs-ofctl dump-tables s1
查看端口信息:
ovs-ofctl dump-ports s1
ovs-ofctl dump-ports s1 1
第一个查看所有端口,第二个只查看端口号为 1 的端口;
查看流表项:
ovs-ofctl dump-flows s1
ovs-ofctl dump-flows s1 table=0
第一个查看所有,第二个查看指定流表项;
添加流表项:
ovs-ofctl [--bundle] add-flow switch flow
ovs-ofctl [--bundle] add-flow switch - < file
ovs-ofctl [--bundle] add-flows switch file
--bundle:以原子形式执行命令;
--strict:取消对通配符的支持;
可以将流表项写入一个文件,然后从文件中读取执行;文件的每一行表示一条流表项,每行可以以关键字 add, modify, delete, modify_strict, delete_strict 开头,表示执行何种操作;
# ovs-ofctl add-flow s1 "priority=3,in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:101,normal"
add priority=3,in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:101,normal
delete in_port=1,dl_vlan=0xffff
修改流表项:
ovs-ofctl [--bundle] [--strict] mod-flows switch flow
ovs-ofctl [--bundle] [--strict] mod-flows switch - < file
# cat flows.txt
priority=3,in_port=1,dl_vlan=0xffff,actions=mod_vlan_vid:102,normal
删除流表项:
ovs-ofctl [--bundle] del-flows switch
ovs-ofctl [--bundle] [--strict] del-flows switch [flow]
ovs-ofctl [--bundle] [--strict] del-flows switch - < file
ovs-ofctl del-flows s1 "in_port=1,dl_vlan=0xffff"
替换流表项:
ovs-ofctl [--bundle] [--readd] replace-flows switch file
使用 file 文件中的流表项替换现有的流表项;
比较流表项:
ovs-ofclt diff-flows source1 source2
source1 和 source2 可以是交换机,也可以是文件;
ovs-ofctl diff-flows s1 flows.txt
查看组表项:
ovs-ofctl dump-groups s1 -O OpenFlow13
查看组表项的统计信息:
ovs-ofctl dump-group-stats s1 -O OpenFlow13
ovs-ofctl dump-group-stats s1 group_id=1 -O OpenFlow13
第一个查看所有组表,第二个查看指定的组表;
添加组表项:
ovs-ofctl [--bundle] add-group switch group
ovs-ofctl [--bundle] add-group switch - < file
ovs-ofctl [--bundle] add-groups switch file
可以将组表项写入一个文件,然后从文件中读取执行;文件的每一行表示一条组表项,每行可以以关键字 add, modify, add_or_mod, delete, insert_bucket, remove_bucket 开头,表示执行何种操作;
# 类型为all
ovs-ofctl -O OpenFlow13 add-group s1 group_id=1,type=all,bucket=output:1,bucket=output:2
ovs-ofctl -O OpenFlow13 add-group s1 group_id=2,type=select,bucket=output:1,bucket=output:2
ovs-ofctl -O OpenFlow15 add-group s1 group_id=3,type=select,selection_method=hash,fields=ip_src,bucket=output:2,bucket=output:3
修改组表项:
ovs-ofctl [--bundle] [--may-create] mod-group switch group
ovs-ofctl [--bundle] [--may-create] mod-group switch - < file
ovs-ofctl mod-group s1 group_id=1,type=all,bucket=output:1,bucket=output:2,bucket=output:3 -O OpenFlow13
删除组表项:
ovs-ofctl [--bundle] del-groups switch
ovs-ofctl [--bundle] del-groups switch [group]
ovs-ofctl [--bundle] del-groups switch - < file
ovs-ofctl del-groups s1 group_id=1 -O OpenFlow13
删除桶:
ovs-ofctl [--bundle] remove-buckets switch group
ovs-ofctl [--bundle] remove-buckets switch - < file
ovs-ofctl remove-buckets s1 group_id=3,command_bucket_id=1
删除 id 为 1 的桶;
要正常使用的话,需要注意的是datapath类型要指定为 netdev.
ovs-vsctl set bridge s1 datapath_type=netdev
查看计量表:
ovs-ofctl dump-meters s1 -O OpenFlow13
查看计量表统计信息:
ovs-ofctl meter-stats s1 -O OpenFlow13
添加计量表项:
ovs-ofctl add-meter s1 meter=1,kbps,bands=type=drop,rate=5000 -O OpenFlow13
修改计量表项:
ovs-ofctl mod-meter s1 meter=1,kbps,band=type=drop,rate=2000 -O OpenFlow13
删除计量表项:
ovs-ofctl del-meters s1 meter=1 -O OpenFlow13
table=table
指定要应用与哪个表;table可以是数字(0~255),也可以时表名。
actions=[action][,action…]
指定流项要应用的动作。
cookie=value
cookie=value/mask
设置cookie。
priority=value
指定优先级(0~65535);值越大,优先级越高;默认为32768.
idle_timeout=seconds
如果流项处于非活跃状态的时间超过指定的值,则应该过期;0表示不过期。
hard_timeout=seconds
指定多长时间后过期;0表示不过期。
importance=value
指定重要性(0~65535),默认为0.
send_flow_rem
当流项过期或被移除时,向感兴趣的控制器发送一条消息。
reset_counts
当添加一条已存在的流项时,将packet和byte计数器置为0.
no_packet_counts
no_byte_counts
告知交换机控制器不需要packet或byte计数器。
out_port=port
指定一个匹配的流应将数据包从port转发出去。
out_group=group
指定一个匹配的流应包含group action;group需为组号。
duration=secs
表项已在表中多长时间。
n_packets=n
已有多少个数据包匹配该项。
n_bytes=n
已匹配该项的数据包的总字节数。
hard_age=secs
自流项添加进流表或被修改起过了多长时间。
idle_age=secs
已有多长时间没有匹配过数据包。
group_id=id
指定组ID;all表示所有组。
type=type
指定组类型;可选值有:
all
select
indirect
ff或fast_failover
command_bucket_id=id
指定要操作的bucket;可以为一个整数,也可以为如下值:
all: 所有bucket;
first: 第一个bucket;
last: 最后一个bucket;
selection_method=method
针对于select类型的组,指定选择bucket的方法;可选值有:
dp_hash: 基于数据路径计算哈希值;通过selection_method_param参数指定哈希算法,可选值有
0 (corresponding to hash computation over the IP 5-tuple)
1 (corresponding to a symmetric hash computation over the IP 5-tuple);
hash: 基于fields选项指定的字段计算哈希值;也可不指定fields选项,此时会使用默认值进行计算;
bucket=bucket_parameters
需出现在所有字段之后;
bucket_id=id 指定bucket的组ID;
actions=[action][,action…] 指定要应用的动作;
weight=value 指定bucket的相对权重;
watch_port=port 用于决定组存活性的端口;
watch_group=group_id 用于绝对组存活性的组ID;
meter=id
指定计量ID;除了支持整数外,还支持如下值:
all: 所有meter
controller:此meter会应用到所有发送到控制器的数据包;
slowpath:此meter会应用到所有发送到用户空间的数据包;
kbps
pktps
指定速率单位、burst_size单位;kbps:KB/s,pktps:packets/s;
burst
支持波动;
stats
收集meter和band的统计信息;
bands=band_parameters
type=type 指定band类型,支持的值有:drop(丢弃数据包);
rate=value 指定速率限制;
burst_size=size 指定最大的波动范围;
https://www.openvswitch.org/support/dist-docs/ovs-ofctl.8.txt
http://www.openvswitch.org/support/dist-docs/ovs-fields.7.txt
https://www.openvswitch.org/support/dist-docs/ovs-actions.7.txt
https://blog.csdn.net/rocson001/article/details/73163041
https://www.cnblogs.com/wpqwpq/p/7832650.html
table=table
手机扫一扫
移动阅读更方便
你可能感兴趣的文章