Jump to: navigation, search

NeutronDevelopment

Revision as of 21:22, 31 October 2011 by DanWendlandt (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

If you are trying to enable the use of OpenStack with a new network switching technology, then you probably want to develop a Quantum plugin.

= What is a Quantum Plugin?

Quantum exposes a logical API to define network connectivity between devices from other OpenStack services (e.g., vNICs from Nova VMs). The logical connectivity described using the API must be translated into actually configuration on virtual and/or physical switches. This is where a Quantum plugin comes in. The Quantum plugin is able to talk to one or more types of switches and dynamically reconfigures the switches based on API calls.

What Code Do I Need to Write

The Quantum code-base has a python API that corresponds to the set of API calls you must implement to be a Quantum plugin. The code-base helps out by providing some useful sqlalchemy bindings to store logical API entities (networks, ports) if you choose to build your plugin around a SQL database.

A plugin usually consists of code to:

  • Store information about the current logical network configuration (e.g., a SQL database)
  • Determine and store information about the "mapping" of the logical model to the physical network (e.g., picking a VLAN to represent a logical network).
  • Communicate with one or more types of switches to configure them according to implement that mapping. This may be in the form of an agent running on the hypervisor, or code that remotely logs into a switch and reconfigures it.

Also, if your switching technology requires nova-compute to create vNICs in a special way, you may need to create a special "vif-plugging" module to be used with your switch. See below for examples.

There should not be a need to modify the QuantumManager code in nova/network/quantum, as this code uses only the logical Quantum API.

Useful Next Steps