[openstack-dev] [neutron][ovn] New cycle started. What are you up to, folks?
rbryant at redhat.com
Fri Oct 2 15:35:57 UTC 2015
On 10/02/2015 11:32 AM, Russell Bryant wrote:
> On 10/01/2015 03:26 PM, Russell Bryant wrote:
>> On 10/01/2015 09:45 AM, Ihar Hrachyshka wrote:
>>> Hi all,
>>> I talked recently with several contributors about what each of us
>>> plans for the next cycle, and found it’s quite useful to share
>>> thoughts with others, because you have immediate yay/nay feedback,
>>> and maybe find companions for next adventures, and what not. So
>>> I’ve decided to ask everyone what you see the team and you
>>> personally doing the next cycle, for fun or profit.
>>> That’s like a PTL nomination letter, but open to everyone! :) No
>>> commitments, no deadlines, just list random ideas you have in mind
>>> or in your todo lists, and we’ll all appreciate the huge pile of
>>> awesomeness no one will ever have time to implement even if
>>> scheduled for Xixao release.
>>> To start the fun, I will share my silly ideas in the next email.
>> Nice thread!
>> Here's a rough cut of what I have in mind. My Neutron related
>> development time covers a few areas: Neutron, OVN itself, and the
>> networking-ovn plugin for Neutron.
>> For Neutron:
>> - general code reviews. I'm especially interested in reviewing the
>> design and implementation of any new APIs people are adding. Feel
>> free to add me to reviews you think I could help with and I'll take
>> a look.
>> - plugin infrastructure. Ihar mentioned in one of his items that
>> there are features implemented as ML2 specific. That has started
>> to be a pain for networking-ovn. For example, the provider networks
>> extension is only implemented for ML2, and the data is only stored
>> in an ML2 specific db table. The db table and related code should
>> be reusable by other plugins. I'd like to help start to clean that
>> up for the sake of other plugins.
>> For OVN and networking-ovn:
>> First, for anyone not already familiar with OVN, it is an effort
>> within the Open vSwitch project to build a virtual networking control
>> plane for OVS. There are several projects that have implemented
>> something in this space (including Neutron). OVN is intended to be a
>> new, common implementation of this functionality that can be reused in
>> many contexts, including by Neutron. It includes a focus on
>> implementation of features taking advantage of the newest features of
>> OVS, including some still being added as we go. There was a
>> presentation about this in Vancouver  and we'll be doing another
>> one covering current status in Tokyo .
>> This plugin is developed in parallel with OVN itself. My time on each
>> changes week to week, depending on what I'm working on. The dev items
>> I expect in the near future (this release cycle at least) include:
>> - security groups. This is being implemented using conntrack suport
>> in OVS. There's actually WIP code for this including kernel
>> changes, ovs userspace changes, OVN, and networking-ovn. This is a
>> complex stack of dependencies, but it's starting to fall into place.
>> Most of the kernel changes have been accepted, thought there's
>> another change being reviewed now. The OVS userspace changes have
>> been under review in the last few weeks and are close to being
>> merged. Once that's done, we can finish up testing the OVN and
>> networking-ovn patches. We expect this to be done by Tokyo.
>> - provider networks. There's a lot of demand in OpenStack for
>> supporting direct connectivity to existing networks as a simpler
>> deployment model without any overlays. I've done most of the work
>> for both OVN and networking-ovn for this now and expect to have it
>> wrapped up in the next week or so.
>> - L3. So far we've been using Neutron's L3 agent with networking-ovn.
>> OVN will have native L3 support (will no longer use the L3 agent)
>> and development on that has now started. We aim to at least have
>> initial distributed L3 support by Tokyo. Some of it will certainly
>> extend past that, though. For example, NAT will be implemented with
>> an OVS native solution, and that will likely not be ready by Tokyo.
>> We may be able to deliver an intermediary NAT solution quicker.
>> - SFC. There's a ton of interest in SFC. I've been casually following
>> the networking-sfc project and the Neutron API they are proposing.
>> I've also been thinking about how to implement it in OVN. I think
>> OVN's logical flows abstraction is going to make it surprisingly easy
>> to implement. I think I have a good idea of what needs to be done,
>> but I'm not sure of when it will bubble up on my todo list. I hope
>> to work on it for this dev cycle though. I'd first be implementing
>> it in OVN, and then later doing the support for the networking-sfc
>> - l2gw. OVN already includes support for VTEP gateways. We also just
>> merged a patch to support them through the Neutron API using a
>> networking-ovn specific binding:profile. This is just a first step,
>> though. We'd like to support this with a proper Neutron abstraction.
>> The networking-l2gw project is working on that abstraction so I'd
>> like to help out there, expand it as necessary, and get an OVN
>> backend for that API.
>> - containers. OVN has had a focus on supporting container networking
>> from the start. One way is that OVN can be used directly to build
>> overlay networks independent of whatever infrastructure the container
>> app is running on. This is conceptually similar to other things like
>> Flannel. A major downside of overlay based container networking is
>> the performance hit you get when you end up with an "overlays on
>> overlays", where you can't take advantage of NIC offload support
>> for overlay encapsulation.
>> To address the performance issue, OVN includes abstractions to
>> provide networking for a hybrid environment of bare metal, VMs,
>> and containers. In the OpenStack case, containers running on
>> bare metal or containers running inside of OpenStack VMs should
>> all be able to talk to the Neutron API of the underlying OpenStack
>> to provide the desired network topology. networking-ovn supports
>> this already, but with a networking-ovn specific binding-profile:
>> I'd like to help ensure that the "VLAN aware VMs" spec gets reviewed
>> and merged this cycle, as that API provides the proper Neutron
>> abstraction for what's needed here.
>> Once *that* is done, I'd really like to see some native Kubernetes
>> integration to be able to talk to the Neutron API and set up the
>> networking needed for container apps running in OpenStack VMs, but
>> it seems unlikely that I'll get to that this cycle myself.
>> - testing. We have a tempest job for networking-ovn that's passing.
>> It skips a few tests for things we haven't finished implementing .
>> I'd like to get down to where we're not skipping anything. Since
>> it's passing, I'd like to get to where we can run the job against
>> Neutron patches, as well. I'd propose it as a non-voting job, but
>> it would be running in OpenStack's infrastructure. Running against
>> Neutron would get the job running much more frequently to help us
>> shake out bugs and would also help us catch issues between Neutron
>> and networking-ovn quicker. Finally, I'd also like to build a
>> multi-node test job.
>> - native DHCP support. Right now networking-ovn uses the existing
>> Neutron DHCP agent. We plan to add native distributed DHCP support
>> to OVN. Once someone gets around to it, the DHCP agent will no
>> longer be used.
>> I'm sure I've forgotten something, but this seems like a pretty good
>> overview of what I expect to see this cycle. I'd love to hear any
>> comments or questions you may have.
>> We're also interested in any new contributors! Feel free to reach out
>> to me for help getting started.
> One other reference ... if you're interested in looking more closely at
> how OVN works outside of testing it with OpenStack, I wrote up a
> tutorial for testing OVN in a simulated environment here:
> I plan to extend it for exploring new features as they get merged.
except that was supposed to be the link to the file in the actual ovs
git repo, oops.
More information about the OpenStack-dev