<div dir="ltr"><div dir="ltr"><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div></div></div></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 23, 2020 at 3:32 AM Slawek Kaplonski <<a href="mailto:skaplons@redhat.com">skaplons@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
The Neutron team wants to propose a switch of the default Neutron backend in<br>
Devstack from OVS (neutron-ovs-agent, neutron-dhcp-agent, neutron-l3-agent) to<br>
OVN with its own ovn-metadata-agent and ovn-controller.<br>
We discussed that change during the virtual PTG - see [1].<br>
In this document we want to explain reasons why we want to do that change.<br>
<br>
<br>
OVN in 75 Words<br>
---------------<br>
<br>
Open Virtual Network is managed under the OVS project, and was created by the<br>
original authors of OVS. It is an attempt to re-do the ML2/OVS control plane,<br>
using lessons learned throughout the years. It is intended to be used in<br>
projects such as OpenStack and Kubernetes. OVN has a different architecture,<br>
moving us away from Python agents communicating with the Neutron API service<br>
via RabbitMQ to C daemons communicating via OpenFlow and OVSDB.<br>
<br>
Here’s a heap of information about OpenStack’s integration of OVN:<br>
* OpenStack Boston Summit talk on OVN [2]<br>
* Upstream OpenStack networking-ovn documentation [3] and [4]<br>
* OSP 13 OVN documentation, including how to install it using Director [5]<br>
<br>
Neutron OVN driver was developed as a Neutron stadium project,<br>
"networking-ovn". In the Ussuri cycle, networking-ovn was merged into the main<br>
Neutron repository.<br>
<br>
<br>
Why?<br>
----<br>
<br>
In the Neutron team we believe that OVN and the Neutron OVN driver are built<br>
with a modern architecture that offers better foundations for a simpler and<br>
more performant solution. We see increased participation in kubernetes-ovn,<br>
resulting in a larger core OVN community, and we would like OpenStack to<br>
benefit from this Kubernetes driven OVN investment.<br>
Neutron OVN driver currently has got some feature parity gaps comparing to<br>
ML2/OVS (see [6] for details) but our team is working hard to close those gaps<br>
and we believe that this driver is the future for Neutron and that’s why we<br>
want to make it the default Neutron ML2 backend in the Devstack configuration.<br>
<br>
<br>
What Does it Mean?<br>
------------------<br>
<br>
Since most Openstack projects use Neutron in their CI and gate jobs, this<br>
change has the potential for a large impact.<br>
But this backend is already tested with various jobs in the Neutron CI and it<br>
works fine. Recently (See [7]) we also proposed to add an OVN based job to the<br>
Devstack’s check queue.<br>
Similarly the default Neutron backend in TripleO was changed in the Stein cycle<br>
and there were no any significant issues related strictly to this change. It<br>
worked well for other projects.<br>
Of course in the Neutron project we will be still gating other drivers, like<br>
ML2/Linuxbridge and ML2/OVS - nothing will change here, except for the names of<br>
some of the jobs.<br>
The Neutron team is *NOT* going to deprecate any of the other existing ML2<br>
drivers. We will be still maintaining Linuxbridge, OVS and other in-tree<br>
drivers in the same way as it is now.<br>
<br>
<br>
Action Plan<br>
-----------<br>
<br>
We want to make this change before the Victoria-2 milestone to not make such<br>
changes too late in the release cycle. Our action plan is as below:<br>
<br>
1. Share the plan and get feedback from the upstream community (this thread)<br>
2. Move OVN related Devstack code from a plugin defined in the Neutron repo to<br>
   Devstack repo - we don’t want to force everyone else to add “enable_plugin<br>
   neutron” in their local.conf file to use default Neutron backend,<br>
3. Switch default Neutron backend in Devstack to be OVN,<br>
   a. Switch definition of base devstack CI jobs that it will run Neutron with<br>
      OVN backend,<br>
4. Propose DNM patches depend on patch from point 3 and 3a to main OpenStack<br>
   projects to check if it will not break anything in the gate of those projects.<br></blockquote><div><br></div><div>+1 This plan looks great. We test Neutron integration quite a bit in OpenStack Manila devstack jobs and in third party CI associated with the project. We've tested OVN in the past and noticed it made share server provisioning faster and more reliable. So I don't think we would be affected negatively should you change the default mechanism and driver. However, please keep us in mind, and perhaps alert me when you post patches so we can test everything is okay.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
5. If all will be running fine, merge patches proposed in points 3 and 3a.<br>
<br>
[1] <a href="https://etherpad.opendev.org/p/neutron-victoria-ptg" rel="noreferrer" target="_blank">https://etherpad.opendev.org/p/neutron-victoria-ptg</a> - Lines 185 - 193<br>
[2] <a href="https://www.youtube.com/watch?v=sgc7myiX6ts" rel="noreferrer" target="_blank">https://www.youtube.com/watch?v=sgc7myiX6ts</a><br>
[3] <a href="https://docs.openstack.org/neutron/latest/admin/ovn/index.html" rel="noreferrer" target="_blank">https://docs.openstack.org/neutron/latest/admin/ovn/index.html</a><br>
[4] <a href="https://docs.openstack.org/neutron/latest/ovn/index.html" rel="noreferrer" target="_blank">https://docs.openstack.org/neutron/latest/ovn/index.html</a><br>
[5] <a href="https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/13/html/networking_with_open_virtual_network/" rel="noreferrer" target="_blank">https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/13/html/networking_with_open_virtual_network/</a><br>
[6] <a href="https://docs.openstack.org/neutron/latest/ovn/gaps.html" rel="noreferrer" target="_blank">https://docs.openstack.org/neutron/latest/ovn/gaps.html</a><br>
[7] <a href="https://review.opendev.org/#/c/736021/" rel="noreferrer" target="_blank">https://review.opendev.org/#/c/736021/</a><br>
<br>
-- <br>
Slawek Kaplonski<br>
Senior software engineer<br>
Red Hat<br>
<br>
<br>
</blockquote></div></div>