Hi all,
I'm using ovs-dpdk version 2.17.1.
Now I found ovs-ofctl replace xxx will cause flow_mod even if openflow is
same.
Detail:
```
[root@localhost ~]# cat flows
in_port="p0",dl_vlan=11,ip,nw_proto=17,actions=output:vf2
[root@localhost ~]# cat flows2
in_port="p0",dl_vlan=11,ip,nw_proto=17,actions=mod_vlan_pcp(2),output:vf2
[root@localhost ~]# cat flows3
in_port="p0",dl_vlan=11,ip,nw_proto=17,actions=set_field:2->vlan_pcp,output:vf2
[root@localhost ~]# ovs-ofctl del-flows br-phy
[root@localhost ~]# ovs-ofctl -O OpenFlow13 replace-flows br-phy flows
# 1st add this openflow
[root@localhost ~]# ovs-ofctl -O OpenFlow13 replace-flows br-phy flows
# then add this openflow again
# then this command will NOT cause flow_mods
[root@localhost ~]# ovs-ofctl del-flows br-phy
[root@localhost ~]# ovs-ofctl -O OpenFlow13 replace-flows br-phy flows2
# 1st add this openflow
[root@localhost ~]# ovs-ofctl -O OpenFlow13 replace-flows br-phy flows2
# then add this openflow again
# This will cause flow_mods
# log: xxx|connmgr|INFO|br-phy<->unix#48: 1 flow_mods in the last 0 s
(1 adds)
[root@localhost ~]# ovs-ofctl del-flows br-phy
[root@localhost ~]# ovs-ofctl -O OpenFlow13 replace-flows br-phy flows3
# 1st add this openflow
[root@localhost ~]# ovs-ofctl -O OpenFlow13 replace-flows br-phy flows3
# then add this openflow again
# this will NOT cause flow_mods
[root@localhost ~]# ovs-ofctl replace-flows br-phy flows3
# This will cause flow_mods
# log: xxx|connmgr|INFO|br-phy<->unix#48: 1 flow_mods in the last 0 s
(1 adds)
```
The reason cause flow_mods is because these function, fte_version_equals
- ofpacts_equal_stringwise .
Which is different openflow version process between mod and set_field
actions.
As the flow_mods will cause ovs-vswitchd to delete megaflow and then add
same megaflow again.
So the rte_flow rule which is offload by this megaflow will delete and add.
Then the network flow will interrupt and miss upcall.
Is this a bug?
As the openflow controller is NOT controlled by us.
Which means the command is NOT controlled by us.
But the ovs-ofctl and ovs-vswitchd is code by us.
So how to deal with this?
Is a good idea to change the behavior of fte_version_equals
- ofpacts_equal_stringwise, which could process all version?
Thank you~
----
Simon Jones
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev