yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #85640
[Bug 1865889] Re: [RFE] Routed provider networks support in OVN
Doc is also merged, updating status on this one
** Changed in: neutron
Status: In Progress => Fix Released
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1865889
Title:
[RFE] Routed provider networks support in OVN
Status in neutron:
Fix Released
Bug description:
The routed provider networks feature doesn't work properly with OVN
backend. While API doesn't return any errors, all the ports are
allocated to the same OVN Logical Switch and besides providing no
Layer2 isolation whatsoever, it won't work when multiple segments
using different physnets are added to such network.
The reason for the latter is that, currently, in core OVN, only one
localnet port is supported per Logical Switch so only one physical net
can be associated to it. I can think of two different approaches:
1) Change the OVN mech driver to logically separate Neutron segments:
a) Create an OVN Logical Switch *per Neutron segment*. This has some
challenges from a consistency point of view as right now there's a 1:1
mapping between a Neutron Network and an OVN Logical Switch. Revision
numbers, maintenance task, OVN DB Sync script, etcetera.
b) Each of those Logical Switches will have a localnet port associated
to the physnet of the Neutron segment.
c) The port still belongs to the parent network so all the CRUD operations over a port will require to figure out which underlying OVN LS applies (depending on which segment the port lives in).
The same goes for other objects (e.g. OVN Load Balancers, gw ports -if attaching a multisegment network to a Neutron router as a gateway is a valid use case at all-).
e) Deferred allocation. A port can be created in a multisegment
Neutron network but the IP allocation is deferred to the time where a
compute node is assigned to an instance. In this case the OVN mech
driver might need to move around the Logical Switch Port from the
Logical Switch of the parent to that of the segment where it falls
(can be prone to race conditions :?).
2) Core OVN changes:
The current limitation is that right now only one localnet port is
allowed per Logical Switch so we can't map different physnets to it.
If we add support for multiple localnet ports in core OVN, we can have
all the segments living in the same OVN Logical Switch.
My idea here would be:
a) Per each Neutron segment, we create a localnet port in the single
OVN Logical Switch with its physnet and vlan id (if any). Eg.
name : provnet-f7038db6-7376-4b83-b57b-3f456bea2b80
options : {network_name=segment1}
parent_name : []
port_security : []
tag : 2016
tag_request : []
type : localnet
name : provnet-84487aa7-5ac7-4f07-877e-1840d325e3de
options : {network_name=segment2}
parent_name : []
port_security : []
tag : 2017
tag_request : []
type : localnet
And both ports would belong to the LS corresponding to the
multisegment Neutron network.
b) In this case, when ovn-controller sees that a port in that network
has been bound to it, all it needs to create is the patch port to the
provider bridge that the bridge mappings configuration dictates.
E.g
compute1: bridge-mappings = segment1:br-provider1
compute2: bridge-mappings = segment2:br-provider2
When a port in the multisegment network gets bound to compute1, ovn-
controller will create a patch-port between br-int and br-provider1.
The restriction here is that on a given hypervisor, only ports
belonging to the same segment will be present. ie. we can't mix VMs on
different segments on the same hypervisor.
c) Minor changes are required in the Neutron side (just creating the localnet port upon segment creation).
We need to discuss if the restriction mentioned earlier makes sense. If not, perhaps we need to drop this approach completely or look for core OVN alternatives.
I'd lean on approach number 2 as it seems the less invasive in terms of code changes but there's the catch described that may make it a no-go or explore another ways to eliminate that restriction somehow in core OVN.
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1865889/+subscriptions
References