[openstack-dev] [Nova][Neutron]Describing suitable binding_types from the hypervisor

Ian Wells ijw.ubuntu at cack.org.uk
Thu Jul 10 08:06:10 UTC 2014


I hadn't realised until today that the BP window for new Nova specs in Juno
had closed, and I'm hoping I might get an exception for a minor, but I
think helpful, change in the way VIF plugging works.

At the moment, Neutron's plugin returns a binding_type to Nova when
plugging takes place, describing what it's done to bind a network to a host
and how a VM or other guest instance might attach itself to a network.
This requires that Nova and Neutron are configured in a way such that the
Neutron binding_type used is one that the Nova hypervisor can use.

I would like to change this slightly, so that Nova lists acceptable binding
types, in its preference order, in the header of the binding request that
it passes to Neutron.  At the moment this would take the form of a
suggestion - without a similar change in Neutron to take advantage of it,
the binding_type Neutron returns would still be down to the plugin
configuration - but it has advantages for future changes.

It means that Neutron can use a number of binding types, depending on, for
instance, efficiency.  Where Nova supports multiple binding types, Neutron
currently chooses one without regard to whether it's a wise choice or even
whether Nova can actually use it (a misconfiguration that currently results
in an internal error).  By providing a list, we give more flexibiity to
plugins in Neutron, so that more intelligent plugins can use the binding
type that actually makes the most sense.

It also saves a bit of configuration on the Neutron side of things.  Where
you're running with multiple binding types, at the moment Neutron would
have to work out what kind of hypervisor is being used on a machine,
presumably by its configuration on that machine for whatever agent is in
use, to determine a suitable binding type.  If we told Neutron what binding
type was wanted, the agent could be more general and support a variety of
types on demand.  It would no longer be necessary to configure Neutron at
all, because the binding type would be selected by Nova and only by Nova
and Neutron would acquiesce to its will.

The change in Nova is minor, and in any case backward compatible - right
now, Neutron doesn't know any better and would still rely on configuration,
and would use whatever it had been configured to use, so the presence or
absence of the header is meaningless to present setups.  Any hypervisor
that actually implemented the change - and I was thinking of doing it for
the generic VIF driver in libvirt, initially - would provide future Neutron
plugins with more choices.

It's not remotely essential to get it in for Juno, but since the change is
a staged one requiring changes on both sides of the Nova/Neutron boundary I
was hoping to get step one done sooner rather than later, particularly
since the initial code change would be small and unlikely to break anything.

Thoughts?
-- 
Ian.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140710/32e3167d/attachment.html>


More information about the OpenStack-dev mailing list