When OVS restart and executed here (https://github.com/openstack/neutron/blob/80dfbb03715ff3b8ee06f698df4bfa95d285b0e5/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L2579), some flows will be missing in the br-int, as follows:
* table=60, n_packets=230017, n_bytes=25281846, priority=4,in_port="int-br-floating" actions=resubmit(,61)
* table=60, n_packets=23697, n_bytes=1230474, priority=4,in_port="patch-tun" actions=resubmit(,61)
* table=61, n_packets=2713148, n_bytes=800997718, priority=0 actions=resubmit(,62)
These flows are initialized in the function install_ingress_direct_goto_flows(), and this function is only called in the constructor of the class OVSNeutronAgent. So when ovs_status equals constants.OVS_RESTARTED and flows need to be regenerated, but this function is not called and these flows are not regenerated.
In order to solve this problem, we need to additionally restart ovs-neutron-agent to call install_ingress_direct_goto_flows() to regenerate these flows.
Patch: https:/ /review. opendev. org/c/openstack /neutron/ +/782008