Difference between revisions of "Neutron/NEC OpenFlow Plugin"
Line 9: | Line 9: | ||
== Abstract == | == Abstract == | ||
− | + | NEC [[OpenFlow]] plugin talks to [[OpenFlow]] Controller and each Quantum network would be mapped to an virtual layer-2 | |
− | Controller | ||
network slice on an [[OpenFlow]] enabled network. | network slice on an [[OpenFlow]] enabled network. | ||
The interface between the Quantum plugin and [[OpenFlow]] Controller is RESTful | The interface between the Quantum plugin and [[OpenFlow]] Controller is RESTful | ||
Line 47: | Line 46: | ||
[[QuickStart]] Installer is available at https://github.com/nec-openstack/quantum-openflow-plugin/tree/folsom/quickstart . This installs Tream Sliceable Switch | [[QuickStart]] Installer is available at https://github.com/nec-openstack/quantum-openflow-plugin/tree/folsom/quickstart . This installs Tream Sliceable Switch | ||
(OSS [[OpenFlow]] Controller) and run devstack for this plugin. | (OSS [[OpenFlow]] Controller) and run devstack for this plugin. | ||
+ | |||
+ | == Configuration == | ||
+ | |||
+ | * quantum.conf | ||
+ | |||
+ | <pre><nowiki> | ||
+ | core_plugin = quantum.plugins.nec.nec_plugin.NECPluginV2 | ||
+ | </nowiki></pre> | ||
+ | |||
+ | * Plugin specific configurations /etc/quantum/plugins/nec/nec.ini | ||
+ | Section "[OFC]" is special configuration for NEC [[OpenFlow]] plugin. | ||
+ | |||
+ | <pre><nowiki> | ||
+ | [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 | ||
+ | </nowiki></pre> | ||
+ | |||
+ | * quantum agent configuration : DHCP agent (dhcp_agent.ini), L3 agent (l3_agent.init) | ||
+ | same as OVS plugin | ||
+ | |||
+ | <pre><nowiki> | ||
+ | interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver | ||
+ | </nowiki></pre> | ||
+ | |||
+ | * nova.conf : same as OVS plugin | ||
+ | |||
+ | <pre><nowiki> | ||
+ | NOVA_VIF_DRIVER="nova.virt.libvirt.vif.LibvirtOpenVswitchDriver" | ||
+ | LINUXNET_VIF_DRIVER="nova.network.linux_net.LinuxOVSInterfaceDriver" | ||
+ | </nowiki></pre> | ||
+ | |||
== References == | == References == |
Revision as of 13:43, 15 August 2012
- Created: Jun 21, 2012
- Blueprint: https://blueprints.launchpad.net/quantum/+spec/quantum-nec-openflow-plugin
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 Apache License version 2.0), 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=800}}
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 current implemetation of the plugin supports Essex and is available at https://github.com/nec-openstack/quantum-openflow-plugin . 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
Devstack for this plugin is available at https://github.com/r-mibu/devstack/tree/quantum-nec-plugin . QuickStart Installer is available at https://github.com/nec-openstack/quantum-openflow-plugin/tree/folsom/quickstart . This installs Tream Sliceable Switch (OSS OpenFlow Controller) and run devstack for this plugin.
Configuration
- quantum.conf
core_plugin = quantum.plugins.nec.nec_plugin.NECPluginV2
- Plugin specific configurations /etc/quantum/plugins/nec/nec.ini
Section "[OFC]" is special configuration for 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 : DHCP agent (dhcp_agent.ini), L3 agent (l3_agent.init)
same as OVS plugin
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
- nova.conf : same as OVS plugin
NOVA_VIF_DRIVER="nova.virt.libvirt.vif.LibvirtOpenVswitchDriver" LINUXNET_VIF_DRIVER="nova.network.linux_net.LinuxOVSInterfaceDriver"
References
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.
(Contact: Ryota Mibu, Akihiro Motoki, NEC)