[openstack-dev] [neutron][QoS] service-plugin or not discussion

Salvatore Orlando sorlando at nicira.com
Thu Apr 23 07:30:46 UTC 2015

On 23 April 2015 at 01:30, Armando M. <armamig at gmail.com> wrote:

> On 22 April 2015 at 06:02, Miguel Angel Ajo Pelayo <mangelajo at redhat.com>
> wrote:
>> Hi everybody,
>>    In the latest QoS meeting, one of the topics was a discussion about
>> how to implement
>> QoS [1] either as in core, or as a service plugin, in, or out-tree.
It is really promising that after only two meetings the team is already
split! I cannot wait for the API discussion to start ;)

> My apologies if I was unable to join, the meeting clashed with another one
> I was supposed to attend.
>>    It’s my feeling, and Mathieu’s that it looks more like a core feature,
>> as we’re talking of
>> port properties that we define at high level, and most plugins (QoS
>> capable) may want
>> to implement at dataplane/controlplane level, and also that it’s
>> something requiring a good
>> amount of review.
"Core" is a term which is recently being abused in Neutron... However, I
think you mean that it is a feature fairly entangled with the L2 mechanisms
that deserves being integrated in what is today the "core" plugin and in
the OVS/LB agents. To this aim I think it's good to make a distinction
between the management plane and the control plane implementation.

At the management plane you have a few choices:
- yet another mixin, so that any plugin can add it and quickly support the
API extension at the mgmt layer. I believe we're fairly certain everybody
understands mixins are not sustainable anymore and I'm hopeful you are not
considering this route.
- a service plugin - as suggested by some proposers. The service plugin is
fairly easy to implement, and now Armando has provided you with a mechanism
to register for callbacks for events in other plugins. This should make the
implementation fairly straightforward. This also enables other plugins to
implement QoS support.
- a ML2 mechanism driver + a ML2 extension driver. From an architectural
perspective this would be the preferred solution for a ML2 implementation,
but at the same time will not provide management level support for non-ML2

>>    In the other hand Irena and Sean were more concerned about having a
>> good separation
>> of concerns (I agree actually with that part), and being able to do
>> quicker iterations on a
>> separate stackforge repo.
> Perhaps we're trying to address the issue at the wrong time. Once a
> reasonable agreement has been reached on the data model, and the API,
> whether we're going with a service plugin or core etc should be an
> implementation detail. I think the crux of the matter is the data plane
> integration. From a management and control standpoint it should be fairly
> trivial to expose/implement the API and business logic via a service plugin
> and, and some of you suggested, integrate with the core via callbacks.
> However, I am pretty sure there will be preliminary work necessary to
> integrate the server with the agent fabric (when there is one) so that is
> no longer a pain. Extending what the agent can do the way we did so far
> (e.g. by adding extra payloads/messages, mixin etc) is not sustainable, and
> incredibly brittle.

In my opinion the interesting part for an architectural decision here is
the control plane support for the reference implementation.
Adding more stuff to the OVS/LB agents might lead to an increase in
technical debt. On the other hand, adding a new QoS agent might lead to
further complexity - another loose bit to keep in sync with the rest, and
operators usually are not happy about having to manage the lifecycle of
another independent component. And as Armando say, you also need to
consider what changes you need to the RPC interface.

Without that information it is hard to make a call, and therefore I agree
with Armando that there are not yet enough elements to make a decision -
let's wait at least for a high level view of system architecture.

>>    Since we didn’t seem to find an agreement, and I’m probably missing
>> some details,
>> I’d like to loop in our core developers and PTL to provide an opinion on
>> this.
Core developers and the PTL do not necessarily have a better opinion...
instead in many cases they have a worse one!
By the way, if you go the stackforge route, then you can apply for becoming
an openstack project and one of you can become PTL! Isn't that wonderful?
Who doesn't want to be PTL these days?

>> [1]
>> http://eavesdrop.openstack.org/meetings/neutron_qos/2015/neutron_qos.2015-04-21-14.03.log.html#l-192
>> Thanks for your patience,
>> Miguel Angel Ajo
>> __________________________________________________________________________
>> 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
> __________________________________________________________________________
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150423/4dff426d/attachment.html>

More information about the OpenStack-dev mailing list