Do not block connection between br-int and br-phys on startup

Block traffic between br-int and br-physical is over kill
and will at least

1. interrupt vlan flow during startup, and is particularly
so if dvr enabled
2. if let's rabbitmq is not stable, it is possible data plane
will be affected and vlan will never work.

Using openstack on k8s particularly amplifies the problem
because pod could be killed pretty easily by liveness
probes.

Conflicts:
    neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py

Change-Id: I51050c600ba7090fea71213687d94340bac0674a
Closes-Bug: #1869808
(cherry picked from commit 90212b12cd)
This commit is contained in:
shenjiatong 2020-06-18 15:33:13 +08:00 committed by Slawek Kaplonski
parent 774b3ff89e
commit 131bbc9a53
1 changed files with 10 additions and 3 deletions

View File

@ -1274,9 +1274,16 @@ class OVSNeutronAgent(l2population_rpc.L2populationRpcCallBackTunnelMixin,
self.int_ofports[physical_network] = int_ofport self.int_ofports[physical_network] = int_ofport
self.phys_ofports[physical_network] = phys_ofport self.phys_ofports[physical_network] = phys_ofport
# block all untranslated traffic between bridges # following drop operations are not necessary for
self.int_br.drop_port(in_port=int_ofport) # dvr agent setup_dvr_flows. So skip it if dvr enabled
br.drop_port(in_port=phys_ofport) # the reason is for br_int it is duplicate
# for br_physical drop_port is dangerous because when dvr
# enabled the highest flow on table=0 is 2 which means
# basically everything will be dropped until setup_dvr_flows
# got executed.
if not self.enable_distributed_routing:
self.int_br.drop_port(in_port=int_ofport)
br.drop_port(in_port=phys_ofport)
if self.use_veth_interconnection: if self.use_veth_interconnection:
# enable veth to pass traffic # enable veth to pass traffic