Multiple backend support for L3 routers in ML2/OVN
This spec proposes to support multiple back-ends for routers in the ML2/OVN mechanism driver Partial-Bug: #2020823 Change-Id: Ic7f84d8252ef5197b4d1851f7296e237bf581503
This commit is contained in:
parent
ec0a0fb2a2
commit
12da15f23f
|
@ -0,0 +1,118 @@
|
|||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
====================================================================
|
||||
Flavor/service provider support for routers in the ML2/OVN L3 plugin
|
||||
====================================================================
|
||||
|
||||
https://bugs.launchpad.net/neutron/+bug/2020823
|
||||
|
||||
In `Multiple L3 backends`_, functionality was added to the ML2/OVS mechanism
|
||||
driver to support L3 routers implemented by different back-end drivers.
|
||||
Recently, OpenStack deployers in the Telco / 5G industry have expressed a
|
||||
strong interest to have the same support with the ML2/OVN mechanism driver.
|
||||
This specification proposes to implement that functionality.
|
||||
|
||||
|
||||
Problem Description
|
||||
===================
|
||||
|
||||
Since early in the development of Neutron, the community has recognized the
|
||||
need to provide frameworks to enable operators and users of a cloud deployment
|
||||
to configure and select from a set of options different implementations of
|
||||
services such as VPNs, firewalls, routers, etc. This has led over the years to
|
||||
proposals and additions to Neutron such as `Neutron/Service Type Framework`_,
|
||||
`Service Flavor Framework`_ and the aforementioned `Multiple L3 backends`_.
|
||||
All this is represented in the API by `Networking Flavors Framework`_,
|
||||
`Service Providers`_ and the `L3 flavors extension`_.
|
||||
|
||||
As of the writing of this specification, operators using ML2/OVN cannot take
|
||||
advantage of all these existing framworks to offer different implementations
|
||||
(flavors from here on) of routers. As a consequence, Neutron cannot serve a use
|
||||
case where Telco operators want to provide different grades of vrouters, such
|
||||
as:
|
||||
|
||||
* OVN vrouters for their IT / back-office workloads.
|
||||
* Specialized vrouters outside OVN for their 5G mobile networks.
|
||||
* Specialized vrouters outside OVN for their 4G mobile networks.
|
||||
* Other types of specialized vrouters.
|
||||
|
||||
|
||||
Proposed Change
|
||||
===============
|
||||
The proposal is to add to the ML2/OVN L3 plugin the ability to process
|
||||
different flavors of vrouters. The default flavor will be the native OVN
|
||||
vrouter.
|
||||
|
||||
To achieve this, all the OVN specific functionality in the ML2/OVN L3 plugin
|
||||
will be refactored to a separate driver. Once this is done, the L3 plugin will
|
||||
be responsible for performing only the Neutron DB processing steps related to
|
||||
vrouters and floating IPs, while letting separate drivers to take care of all
|
||||
the backend processing. Users will configure, load and associate with flavor
|
||||
names drivers for backends different to OVN. The following diagram illustrates
|
||||
the proposed scenario:
|
||||
|
||||
::
|
||||
|
||||
+--------+ +------------+ +------------+ +------+ +------+ +----------------+
|
||||
| | | | Event | |--->| NBDB |--->| SBDB |--->| OVN Controller |
|
||||
| | | | Notifications | Driver for | +------+ +------+ +----------------+
|
||||
| | | |-------------->| flavor OVN |
|
||||
| | | | | |
|
||||
| | | | +------------+
|
||||
| | | |
|
||||
| | | | +------------+ +-----------+
|
||||
| | | | Event | |--->| Backend A |
|
||||
| ReST | Requests | L3 | Notifications | Driver for | +-----------+
|
||||
| API |--------->| plugin |-------------->| flavor A |
|
||||
| | | | | |
|
||||
| | | | +------------+
|
||||
| | | |
|
||||
| | | | +------------+ +-----------+
|
||||
| | | | Event | |--->| Backend B |
|
||||
| | | | Notifications | Driver for | +-----------+
|
||||
| | | |-------------->| flavor B |
|
||||
| | | | | |
|
||||
+--------+ +------------+ +------------+
|
||||
| |
|
||||
| +-------------+ |
|
||||
| | | |
|
||||
Updates +------>| Neutron |<------+ Reads
|
||||
| databse |
|
||||
| |
|
||||
+-------------+
|
||||
|
||||
|
||||
Based on this diagram, the following gives more details on the proposed
|
||||
implementation:
|
||||
|
||||
* Users will specify the required flavor when creating vrouters. The OVN flavor
|
||||
will be the default and will be denoted by specifying no flavor in the create
|
||||
request. The following command illustrates how to create a non-OVN flavor
|
||||
router:
|
||||
* The OVN driver will be loaded automatically by a drivers controller that will
|
||||
be implemented by the work related to this specification
|
||||
* The following commands illustrate an example cloud administrator workflow to
|
||||
to configure a router flavor:
|
||||
* Maintenace job
|
||||
* What is meant by backend
|
||||
* Drivers listen to events and they decide whether the request is for their
|
||||
flavor. The required events already exist.
|
||||
* Handling of user defined drivers backends is out of scope
|
||||
* Backend may mean DB and agents to setup the data plane
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
Provided inline in the text above.
|
||||
|
||||
.. _Multiple L3 backends: https://review.opendev.org/q/topic:bp%252Fmulti-l3-backends
|
||||
.. _Neutron/Service Type Framework: https://wiki.openstack.org/wiki/Neutron/ServiceTypeFramework
|
||||
.. _Service Flavor Framework: https://specs.openstack.org/openstack/neutron-specs/specs/liberty/neutron-flavor-framework.html
|
||||
.. _Networking Flavors Framework: https://docs.openstack.org/api-ref/network/v2/index.html#networking-flavors-framework-v2-0-current-flavor-service-profile
|
||||
.. _Service Providers: https://docs.openstack.org/api-ref/network/v2/index.html#service-providers
|
||||
.. _L3 flavors extension: https://docs.openstack.org/api-ref/network/v2/index.html#l3-flavors-extension-l3-flavors
|
Loading…
Reference in New Issue