OpenvSwitch命令总结

主要还是参考的这篇文章https://blog.csdn.net/rocson001/article/details/73163041

但是有些流表操作是网上查了没有给出,比如更新流表,只能-h查看ovs命令行帮助界面。我在此做一个总结

流规则管理

基本字段包括: 已经生效的时间: duration_sec 
所属表项:table_id

优先级:priority

处理的数据包数:n_packets

hard_timeout: 硬定时器,从插入表格中开始算起

idle_timeout:软定时器,表示从最后一次匹配成功后,超过此时间后,流规则将被自动删除(设为0的时候表示该流规则将被永不过期 )

条件字段包括:

输入端口号:in_port

源/目的mac地址:dl_src/dl_dst

源/目的ip地址:nw_src/nw_dst

数据包类型:dl_type

网络层协议类型:nw_proto

需要注意的是,底层的字段未给出确定值时,上层的字段不允许给定确定值。底层为确定值时,上层可以使用通配符

动作字段包括正常转发normal,定向到某交换机端口output:port,丢弃drop,更改源/目的mac地址mod_dl_src/mod_dl_dst,

一条流规则可以有多个动作,按照先后顺序依次完成

ovs条件匹配

ovs流表条件匹配是进行删除,修改的基础。需要根据匹配条件定位到相应的流表规则后才能进行后续的修改

记住,priority不能作为一个匹配选项!!!

一般来说,匹配条件有下面这些

匹配vlan tag,范围为0-4095

ovs-ofctl add-flow br0 priority=25,in_port=1,dl_vlan=233,actions=mod_vlan_vid:100,output:2

匹配源/目的MAC

ovs-ofctl add-flow br0 in_port=1,dl_src=00:00:00:00:00:01/00:00:00:00:00:01,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 in_port=1,dl_dst=00:00:00:00:00:01/00:00:00:00:00:01,actions=mod_vlan_vid:100,output:2

匹配以太网类型,范围为0-65535

ovs-ofctl add-flow br0 in_port=1,dl_type=0x0806,actions=mod_vlan_vid:100,output:2

匹配源/目的IP 
条件:指定dl_type=0x0800,或者ip/tcp

ovs-ofctl add-flow br0 ip,in_port=1,nw_src=10.10.0.0/16,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 ip,in_port=1,nw_dst=10.20.0.0/16,actions=mod_vlan_vid:100,output:2

匹配协议号,范围为0-255 

ovs-ofctl add-flow br0 ip,in_port=1,nw_proto=1,actions=mod_vlan_vid:100,output:2

匹配tcp/udp,源/目的端口,范围为0-65535

ovs-ofctl add-flow br0 tcp,tcp_src=179/0xfff0,actions=mod_vlan_vid:100,output:2

匹配tcp flags 
tcp flags=fin,syn,rst,psh,ack,urg,ece,cwr,ns

ovs-ofctl add-flow br0 tcp,tcp_flags=ack,actions=mod_vlan_vid:100,output:2

匹配icmp code,范围为0-255 

ovs-ofctl add-flow br0 icmp,icmp_code=2,actions=mod_vlan_vid:100,output:2

匹配vlan TCI 
TCI低12位为vlan id,高3位为priority,例如tci=0xf123则vlan_id为0x123和vlan_pcp=7

ovs-ofctl add-flow br0 in_port=1,vlan_tci=0xf123,actions=mod_vlan_vid:100,output:2

匹配tunnel id,源/目的IP

ovs-ofctl add-flow br0 in_port=1,tun_id=0x7/0xf,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 in_port=1,tun_src=192.168.1.0/255.255.255.0,actions=mod_vlan_vid:100,output:2
ovs-ofctl add-flow br0 in_port=1,tun_dst=192.168.1.0/255.255.255.0,actions=mod_vlan_vid:100,output:2

ovs修改流表

ovs修改流表的过程是,根据匹配到的条件,修改actions字段的内容

ovs-ofctl add-flow br0 priority=25,in_port=1,dl_vlan=233,actions=mod_vlan_vid:100,output:2

将上面这条流表的actions修改为"drop"的指令为

ovs-ofctl mod-flows  br0 "in_port=1,dl_vlan=233,actions=drop"

记住,匹配条件不要带priority!!

你可能感兴趣的:(OpenStack,云计算,OpenvSwitch)