[ovs-dev] OVN/OVS Split amended proposal

Mark Michelson mmichels at redhat.com
Fri Nov 2 19:13:35 UTC 2018


A few weeks ago, I sent a detailed document[1] with a tasklist of what 
would need to be done to separate OVN from OVS. To summarize, the work 
was divided into four phases:

1) Physical separation.
2) Compile time compatibilty.
3) Runtime compatibility.
4) Separation of OVN and OVS packages.

Initially, the idea was to perform all four of these phases by the time 
that OVS 2.11 was released. However, there are a few problems.

In addition to this major project, there is also another major project 
involving rewrites of OVN components to use DDLog. Trying to separate 
the OVN code out could step on the toes of the efforts to convert to 
DDLog. The conversion to DDLog is going to require a lot of testing and 
verification, and the separation of the code will require even more 
testing and verification on top of it. While we like to think we'd do it 
100% correctly, there's a decent chance that we are going to introduce 
regressions.

Red Hat developers had planned to head the development effort to get the 
separation completed. Realistically, we have too many other tasks on our 
plate to guarantee the successful completion of the full separation by 
the 2.11 release.

In addition to the technical aspects of the separation, administrative 
aspects still would need to be implemented. This involves deciding the 
pace of versioning of OVN, creation of web sites and new mailing lists, 
etc. It may be possible for us to complete all this in time for the 2.11 
release, but I believe we'd feel more comfortable if we had a longer 
lead time for this.

With this in mind, we'd like to propose an amended plan.

The short version: rather than completing all four phases by the 2.11 
release, instead we will implement phases 3 and 4 for 2.11, and then 
complete phases 1 and 2 for 2.12.

What this means is that we will change the packaging so OVN is no longer 
a sub-package of OVS. Rather, OVN will be an independent package, 
allowing it to be updated without having to also update OVS.  By 
attacking the problem this way, we scratch an itch somewhat by allowing 
for projects to move forward with newer OVN builds while remaining on 
their current version of OVS. What we won't get is the ability for OVN 
to be developed and versioned at a separate pace.

In order to facilitate this, OVS will need to be outfitted with ways for 
OVN to probe for the existence of features at runtime. The most obvious 
use of this would be ovn-controller querying ovs-vswitchd about the 
existence of certain OpenFlow match fields and actions.

We believe this is a more realistically achievable goal, is less likely 
to conflict with other development projects, and is less likely to 
result in bugs being introduced. Since this plan directly implements 
phases that are necessary for the full separation, it acts as a stepping 
stone rather than a band-aid or stop-gap.

What are your thoughts on this?

Mark Michelson

[1] 
https://mail.openvswitch.org/pipermail/ovs-dev/2018-September/352414.html


More information about the dev mailing list