I have confirmed the missing flows are definitely the source of my issue. If I manually install the flows:
on rack-1-host-1
sudo ovs-ofctl --protocols=OpenFlow13 add-flow br-ex ip,priority=900,in_port="patch-provnet-2",actions=mod_dl_dst:<br-ex mac addr>,NORMAL
on rack-1-host-2:
sudo ovs-ofctl --protocols=OpenFlow13 add-flow br-ex ip,priority=900,in_port="patch-provnet-2",actions=mod_dl_dst:<br-ex mac addr>,NORMAL
Then my two vms on the same network can communicate with each other. For some reason if I stop my traffic tests then after a few minutes the flows seem to time out and get removed from the flow table. Not sure why that happens as the man page for ovs-ofctl add-flow seems to indicate that the default idle time is infinite.
I looked into the ovn-bgp-agent code and I can see where it's calling ovs-ofctl to create the flows, but isn't specifying an OpenFlow version. Based on the man page for ovs-ofcts it seems like ovn-bgp-agent should be specifying a value for --protocols. Only I'm not sure how it is working for the tests in the repro or other actual set ups you and Dan have presumably built.
One last note- in my local.conf for devstack I am specifying an OVS_BRANCH value:
# Pin OVN past bug
# https://bugs.launchpad.net/neutron/+bug/2049488
OVS_BRANCH=4102674b3ecadb0e20e512cc661cddbbc4b3d1f6
But I wouldn't think that matters since by default devstack would just build the latest each time. Plus the build of OVS is also what provides the ovs-ofctl tool. The man page for ovs-ofctl tool says that it defaults to an older version of OpenFlow, OpenFlow 1.0 so it seems like it would be required to included the --protocols flag when operating with an up to date OVS.
I have confirmed the missing flows are definitely the source of my issue. If I manually install the flows:
on rack-1-host-1 OpenFlow13 add-flow br-ex ip,priority= 900,in_ port="patch- provnet- 2",actions= mod_dl_ dst:<br- ex mac addr>,NORMAL
sudo ovs-ofctl --protocols=
on rack-1-host-2: OpenFlow13 add-flow br-ex ip,priority= 900,in_ port="patch- provnet- 2",actions= mod_dl_ dst:<br- ex mac addr>,NORMAL
sudo ovs-ofctl --protocols=
Then my two vms on the same network can communicate with each other. For some reason if I stop my traffic tests then after a few minutes the flows seem to time out and get removed from the flow table. Not sure why that happens as the man page for ovs-ofctl add-flow seems to indicate that the default idle time is infinite.
I looked into the ovn-bgp-agent code and I can see where it's calling ovs-ofctl to create the flows, but isn't specifying an OpenFlow version. Based on the man page for ovs-ofcts it seems like ovn-bgp-agent should be specifying a value for --protocols. Only I'm not sure how it is working for the tests in the repro or other actual set ups you and Dan have presumably built.
One last note- in my local.conf for devstack I am specifying an OVS_BRANCH value: /bugs.launchpad .net/neutron/ +bug/2049488 4102674b3ecadb0 e20e512cc661cdd bbc4b3d1f6
# Pin OVN past bug
# https:/
OVS_BRANCH=
But I wouldn't think that matters since by default devstack would just build the latest each time. Plus the build of OVS is also what provides the ovs-ofctl tool. The man page for ovs-ofctl tool says that it defaults to an older version of OpenFlow, OpenFlow 1.0 so it seems like it would be required to included the --protocols flag when operating with an up to date OVS.
This seems like a bug, do you agree?