Difference between revisions of "Neutron/NEC OpenFlow Plugin"
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | |||
− | |||
− | |||
= Quantum NEC [[OpenFlow]] Plugin = | = Quantum NEC [[OpenFlow]] Plugin = | ||
Line 18: | Line 15: | ||
* '''Plugin''': It processes Quantum API calls and controls [[OpenFlow]] controller to handle logical networks on [[OpenFlow]] enabled network. | * '''Plugin''': It processes Quantum API calls and controls [[OpenFlow]] controller to handle logical networks on [[OpenFlow]] enabled network. | ||
− | * ''' | + | * '''Agent''': It runs on each compute node. It gathers a mapping beween a VIF and a switch port from local Open vSwitch and reports it to the plugin. |
== Requirements == | == Requirements == | ||
− | * [[OpenFlow]] Controller: Trema with Sliceable Switch (distributed under | + | * [[OpenFlow]] Controller: Trema with Sliceable Switch (distributed under GPL2), or an [[OpenFlow]] Controller that has the same functionalities and REST API available at https://github.com/trema/apps/wiki/Sliceable-Network-Management-API . |
== Design == | == Design == | ||
− | [[Media:quantum-nec-openflow-plugin-design.png|alt|Quantum NEC OpenFlow] Plugin Design| width= | + | [[Media:quantum-nec-openflow-plugin-design.png|alt|Quantum NEC OpenFlow] Plugin Design| width=600}} |
=== Communication between plugin and agent === | === Communication between plugin and agent === | ||
This plugin uses "common-rpc" in openstack-common for the agents to | This plugin uses "common-rpc" in openstack-common for the agents to | ||
− | communicate with the plugin and will conform to the convention for | + | communicate with the plugin and will conform to the convention for scalable-agent-comms. |
− | scalable-agent-comms | ||
− | |||
The topic name for RPC will be set to "quantum.plugin" as proposed in the blueprint scalable-agent-comms. | The topic name for RPC will be set to "quantum.plugin" as proposed in the blueprint scalable-agent-comms. | ||
Line 42: | Line 37: | ||
== How to run this plugin == | == How to run this plugin == | ||
− | + | === Using devstack === | |
Devstack for this plugin is available at https://github.com/nec-openstack/devstack-quantum-nec-openflow . | Devstack for this plugin is available at https://github.com/nec-openstack/devstack-quantum-nec-openflow . | ||
Line 49: | Line 44: | ||
** Controller node with [[OpenFlow]] controller : samples/nec-openflow/localrc | ** Controller node with [[OpenFlow]] controller : samples/nec-openflow/localrc | ||
** Compute node : samples/nec-openflow/localrc-hv | ** Compute node : samples/nec-openflow/localrc-hv | ||
+ | * Branches | ||
+ | ** '''folsom''' for stable/folsom release | ||
+ | ** '''develop''' for trunk (next release) | ||
+ | |||
+ | === Using Ubuntu packages === | ||
+ | |||
+ | To be written. | ||
+ | |||
+ | == How to get == | ||
+ | |||
+ | * '''Folsom or later''' : Merged into the mainline of Quantum https://github.com/openstack/quantum | ||
+ | * Previous releases (before merged into the mainline) are available at https://github.com/nec-openstack/quantum-openflow-plugin (essex and diablo) | ||
== Configuration == | == Configuration == | ||
+ | === Grizzly === | ||
+ | |||
+ | * Only difference from Folsom is 'interface_driver' in dhcp_agent.ini and l3_agent.ini. OVSVethInterfaceDriver is now merged into OVSInterfaceDriver. | ||
+ | |||
+ | <pre><nowiki> | ||
+ | interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver | ||
+ | ovs_use_veth = True | ||
+ | </nowiki></pre> | ||
+ | |||
+ | * Other configurations are same as Folsom. | ||
+ | |||
=== Folsom === | === Folsom === | ||
Line 92: | Line 110: | ||
− | === | + | === Essex === |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Essex version of Quantum NEC [[OpenFlow]] plugin is available at | Essex version of Quantum NEC [[OpenFlow]] plugin is available at | ||
https://github.com/nec-openstack/quantum-openflow-plugin . | https://github.com/nec-openstack/quantum-openflow-plugin . | ||
Line 110: | Line 116: | ||
gather a mapping beween a VIF and a switch port from local Open vSwitch. | gather a mapping beween a VIF and a switch port from local Open vSwitch. | ||
The proposed version of this plugin uses the agent for this purpose. | The proposed version of this plugin uses the agent for this purpose. | ||
+ | |||
+ | == Related websites == | ||
+ | |||
+ | * Github repositories of NEC [[OpenStack]] team : https://github.com/nec-openstack/ | ||
+ | * Trema - Full-Stack [[OpenFlow]] Framework in Ruby and C : https://github.com/trema/trema | ||
+ | * Trema Sliceable Switch : https://github.com/trema/apps/tree/master/sliceable_switch | ||
(Contact: Ryota Mibu, Akihiro Motoki, NEC) | (Contact: Ryota Mibu, Akihiro Motoki, NEC) |
Revision as of 11:52, 10 January 2013
Quantum NEC OpenFlow Plugin
<<TableOfContents()>>
Abstract
NEC OpenFlow plugin talks to OpenFlow Controller and each Quantum network would be mapped to an virtual layer-2 network slice on an OpenFlow enabled network. The interface between the Quantum plugin and OpenFlow Controller is RESTful API. This API is supported by two implementations:Tream Sliceable Switch (OSS) and NEC ProgrammableFlow Controller (NEC Commercial Product).
This plugin consists of two components: "Plugin" and "Agent".
- Plugin: It processes Quantum API calls and controls OpenFlow controller to handle logical networks on OpenFlow enabled network.
- Agent: It runs on each compute node. It gathers a mapping beween a VIF and a switch port from local Open vSwitch and reports it to the plugin.
Requirements
- OpenFlow Controller: Trema with Sliceable Switch (distributed under GPL2), or an OpenFlow Controller that has the same functionalities and REST API available at https://github.com/trema/apps/wiki/Sliceable-Network-Management-API .
Design
[[Media:quantum-nec-openflow-plugin-design.png|alt|Quantum NEC OpenFlow] Plugin Design| width=600}}
Communication between plugin and agent
This plugin uses "common-rpc" in openstack-common for the agents to communicate with the plugin and will conform to the convention for scalable-agent-comms. The topic name for RPC will be set to "quantum.plugin" as proposed in the blueprint scalable-agent-comms.
Integration with Nova
There are no need for additional features in Nova. This implemetation utilizes a current libvirt VIF driver and linux-net interface driver.
How to run this plugin
Using devstack
Devstack for this plugin is available at https://github.com/nec-openstack/devstack-quantum-nec-openflow .
- This installs Tream Sliceable Switch (OSS OpenFlow Controller) and run devstack for this plugin.
- Sample localrc files are available in samples/nec-openflow:
- Controller node with OpenFlow controller : samples/nec-openflow/localrc
- Compute node : samples/nec-openflow/localrc-hv
- Branches
- folsom for stable/folsom release
- develop for trunk (next release)
Using Ubuntu packages
To be written.
How to get
- Folsom or later : Merged into the mainline of Quantum https://github.com/openstack/quantum
- Previous releases (before merged into the mainline) are available at https://github.com/nec-openstack/quantum-openflow-plugin (essex and diablo)
Configuration
Grizzly
- Only difference from Folsom is 'interface_driver' in dhcp_agent.ini and l3_agent.ini. OVSVethInterfaceDriver is now merged into OVSInterfaceDriver.
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver ovs_use_veth = True
- Other configurations are same as Folsom.
Folsom
- quantum.conf
# Quantum plugin provider module core_plugin = quantum.plugins.nec.nec_plugin.NECPluginV2 # Path to the extensions. # It must be abosolute path (or relative path from the directory where quantum-server is invoked) api_extensions_path = /opt/stack/quantum/quantum/plugins/nec/extensions/
- Plugin specific configurations /etc/quantum/plugins/nec/nec.ini
Section "[OFC]" is particular configurations to NEC OpenFlow plugin.
[OFC] # OpenFlow Controller Host and Port to connect. host = 127.0.0.1 port = 8888 # Drivers are in quantum/plugins/nec/drivers/ . driver = trema # PacketFilter is available when it's enabled in this configuration # and supported by the driver. enable_packet_filter = true
- quantum agent configuration : needs to use OVSVethInterfaceDriver to use DHCP agent (dhcp_agent.ini), L3 agent (l3_agent.ini).
It is a derivative of OVSInterfaceDriver that use veth netdev. It will be integrated into OVSInterfaceDriver.
interface_driver = quantum.agent.linux.interface.OVSVethInterfaceDriver
- nova.conf : same as OVS plugin
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
Essex
Essex version of Quantum NEC OpenFlow plugin is available at https://github.com/nec-openstack/quantum-openflow-plugin . Note that the implemetation of Essex version uses a dedicated VIF driver to gather a mapping beween a VIF and a switch port from local Open vSwitch. The proposed version of this plugin uses the agent for this purpose.
Related websites
- Github repositories of NEC OpenStack team : https://github.com/nec-openstack/
- Trema - Full-Stack OpenFlow Framework in Ruby and C : https://github.com/trema/trema
- Trema Sliceable Switch : https://github.com/trema/apps/tree/master/sliceable_switch
(Contact: Ryota Mibu, Akihiro Motoki, NEC)