[openstack-dev] [neutron] moving openvswitch ports between namespaces considered harmful

Ihar Hrachyshka ihrachys at redhat.com
Fri Feb 13 12:57:46 UTC 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 02/13/2015 01:47 PM, Miguel Ángel Ajo wrote:
> Sorry, I forgot about
> 
> 5)  If we put all our OVS/OF bridge logic in just one bridge
> (instead of N: br-tun, br-int, br-ex, br-xxx), the performance
> should be yet higher, since, as far as I understood, flow rule
> lookup could be more optimized into the kernel megaflows without
> forwarding and re-starting evaluation due to patch ports. (Please
> correct me here where I’m wrong, I just have very high level view
> of this).

Indeed, that was also mentioned by Jiri in our private talks. That
said, I'm as unaware of details here as you probably are (or more).

> 
> Best, Miguel Ángel Ajo
> 
> On Friday, 13 de February de 2015 at 13:42, Miguel Ángel Ajo
> wrote:
> 
>> Hi, Ihar & Jiri, thank you for pointing this out.
>> 
>> I’m working on the following items:
>> 
>> 1) Doing Openflow traffic filtering (stateful firewall) based on 
>> OVS+CT[1] patch, which may eventually merge. Here I want to build
>> a good amount of benchmarks to be able to compare the current
>> network iptables+LB solution to just openflow.
>> 
>> Openflow filtering should be fast, as it’s quite smart at using 
>> hashes to match OF rules in the kernel megaflows (thanks Jiri &
>> T.Graf for explaining me this)
>> 
>> The only bad part is that we would have to dynamically change 
>> more rules based on security group changes (now we do that via ip
>> sets without reloading all the rules).
>> 
>> To do this properly, we may want to make the OVS plugin a real OF
>> controller to be able to push OF rules to the bridge without the
>> need of calling ovs-ofctl on the command line all the time.
>> 
>> 2) Using OVS+OF to do QoS
>> 
>> other interesting stuff to look at:
>> 
>> 3) Doing routing in OF too, thanks to the NAT capabilities of
>> having OVS+CT
>> 
>> 4) The namespace problem, what kinds of statistics get broken by 
>> moving ports into namespaces now?, the short-term fix could be
>> using vets, but “namespaceable” OVS ports would be perfect, yet I
>> understand the change is a big feature.
>> 
>> If we had 1 & 3, may be 4 wouldn’t be a problem anymore.
>> 
>> [1] https://github.com/justinpettit/ovs/tree/conntrack
>> 
>> Miguel Ángel Ajo
>> 
>> On Friday, 13 de February de 2015 at 13:14, Ihar Hrachyshka
>> wrote:
>> 
> Hi neutroners,
> 
> we** had several conversations recently with our Red Hat fellows
> who work on openvswitch (Jiri Benc and Jiri Pirko) regarding the
> way neutron utilizes their software. Those were beneficial to both
> sides to understand what we do right and wrong. I was asked to
> share some of the points from those discussions with broader
> community.
> 
> ===
> 
> One of the issues that came up during discussions is the way
> neutron connects ovs ports to namespaces. The short story is that
> openvswitch is not designed with namespaces in mind, and the fact
> that moving its ports into a different namespace works for neutron
> is mere coincidence, and is actually considered as a bug by
> openvswitch guys.
> 
> It's not just broken in theory from software design standpoint,
> but also in practice. Specifically,
> 
> 1. ovsdb dump does not work properly for namespaces: -
> https://bugzilla.redhat.com/show_bug.cgi?id=1160340
> 
> This results in wrong statistics and other data collected for
> these ports;
> 
> 2. We suspect that the following kernel crash is triggered because
> of our usage of the feature that is actually a bug: -
> https://bugs.launchpad.net/neutron/+bug/1418097
> 
> Quoting Jiri Benc,
> 
> "The problem is openvswitch does not support its ports to be moved
> to a different name space. The fact that it's possible to do that
> is a bug - such operation should have been denied. Unfortunately,
> due to a missing check, it's not been denied. Such setup does not
> work reliably, though, and leads to various issues from incorrect
> resource accounting to kernel crashes.
> 
> We're aware of the bug but we don't have any easy way to fix it.
> The most obvious option, disabling moving of ovs ports to different
> name spaces, would be easy to do but it would break Neutron. The
> other option, making ovs to work across net name spaces, is hard
> and will require addition of different kernel APIs and large
> changes in ovs user space daemons. This constitutes tremendous
> amount of work."
> 
> The tracker bug on openvswitch side is: -
> https://bugzilla.redhat.com/show_bug.cgi?id=1160340
> 
> So in the best case, we may expect openvswitch to properly support
> the feature in long term, but short term it won't work, especially
> while neutron expects other features implemented in openvswitch for
> it (like NAT, or connection tracking, or ipv6 tunnel endpoints, to
> name a few).
> 
> We could try to handle the issue neutron side. We can fix it by 
> utilizing veth pairs to get into namespaces, but it may mean worse 
> performance, and will definitely require proper benchmarking to
> see whether we can live with performance drop.
> 
> ===
> 
> There were other suggestions on how we can enhance our way of usage
> of openvswitch. Among those, getting rid of linux bridge used for 
> security groups, with special attention on getting rid of ebtables 
> (sic!) for they are a lot slower than iptables; getting rid of
> veth pair for instance ports.
> 
> ===
> 
> I really encourage everyone to check the following video from 
> devconf.cz <http://devconf.cz> 2015 on all that and more at:
> 
> - https://www.youtube.com/watch?v=BlLD-qh9EBQ
> 
> Among other things, you will find presentation of plotnetcfg tool
> to create nice graphs of openstack state.
> 
> If you're lazy enough and want to switch directly to the analysis
> of neutron problems, skip to ~18:00.
> 
> I also encourage to check our the video around 30:00 on the way out
> of openvswitch for neutron (tc/eBPF). As crazy as encouraging.
> 
> ===
> 
> While at it, I encourage everyone interested in controlling
> switches the open source way to check out presentation of the new
> kernel subsystem for that (I guess vaporware atm):
> 
> - https://www.youtube.com/watch?v=awekaJ7xWuw
> 
> ===
> 
> So, that's what I have for you now. I really want to hear from 
> everyone what is our plan to solve the problem neutron side.
> 
> Comments?
> 
> /Ihar
> 
> **Jakub Libosvar and me
>>> 
>>> __________________________________________________________________________
>>>
>>> 
OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe: 
>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe 
>>> <mailto:OpenStack-dev-request at lists.openstack.org?subject:unsubscribe>
>>>
>>> 
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>> 
> 
> 
> 
> __________________________________________________________________________
>
> 
OpenStack Development Mailing List (not for usage questions)
> Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe 
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJU3fTKAAoJEC5aWaUY1u57ZUIIAMLtl8r+baX1tutnWZ2aH8v1
WZZ60I8zlPFWUCax9NQbtWpXhQ6VqK+6BEKsDYZitFLno/suLyRJFQY7wldkdn73
QOzmZ24Xn2mxwTw4LHKNGkshCc42suZ1HD+NHqNup8JdYLts5gx2DJrZNlr7uj7B
OaTUqXzcinEgzwSdv2yLeIdYXjjHzsozP221AcqyFEWeiBJUm5/7hVwXOPmHJun+
7eTKJQp/mJlBrKQhD/FiOXuYpPGg9PisbKs0tODAV/VsUywqdXvQD10GmhMkcNhb
/j3w1DdBagXMExHYM4jqd5jgtX9iwujPiulbuxZoRjiyIW/2c6vWlmFh+LY+wp4=
=a17+
-----END PGP SIGNATURE-----



More information about the OpenStack-dev mailing list