主要还是参考的这篇文章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流表条件匹配是进行删除,修改的基础。需要根据匹配条件定位到相应的流表规则后才能进行后续的修改
记住,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修改流表的过程是,根据匹配到的条件,修改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!!