Jump to: navigation, search

Difference between revisions of "Neutron/NEC OpenFlow Plugin"

(Configuration: Remove Folsom and Essex configurations. They are no longer supported.)
Line 97: Line 97:
 
=== Grizzly ===
 
=== Grizzly ===
  
* Only difference from Folsom is 'interface_driver' in dhcp_agent.ini and l3_agent.ini. OVSVethInterfaceDriver is now merged into OVSInterfaceDriver.
+
In quantum.conf, `core_plugin` needs to be configured to use NEC OpenFlow plugin.
 
<pre><nowiki>
 
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
 
ovs_use_veth = True
 
</nowiki></pre>
 
 
 
* Other configurations are same as Folsom.
 
 
 
=== Folsom ===
 
 
 
* quantum.conf
 
 
 
<pre><nowiki>
 
<pre><nowiki>
 
# Quantum plugin provider module
 
# Quantum plugin provider module
Line 132: Line 120:
 
</nowiki></pre>
 
</nowiki></pre>
  
* 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.
+
* quantum agent configuration : needs to use '''OVSInterfaceDriver''' to use DHCP agent (dhcp_agent.ini), L3 agent (l3_agent.ini), and LBaaS HAproxy agent (lbaas.ini).
 
   
 
   
 
<pre><nowiki>
 
<pre><nowiki>
interface_driver = quantum.agent.linux.interface.OVSVethInterfaceDriver
+
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
 +
ovs_use_veth = True
 
</nowiki></pre>
 
</nowiki></pre>
  
 
* nova.conf : same as OVS plugin
 
* nova.conf : same as OVS plugin
+
 
 
<pre><nowiki>
 
<pre><nowiki>
 
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
 
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
 
</nowiki></pre>
 
</nowiki></pre>
 
=== 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 ==
 
== Related websites ==

Revision as of 16:31, 21 April 2014

Abstract

NEC OpenFlow plugin talks to OpenFlow Controller and each Neutron would be mapped to an virtual layer-2 network slice on an OpenFlow enabled network. The interface between the Neutron 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 Neutron 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

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 "neutron.plugin" as proposed in the blueprint scalable-agent-comms.

Integration with Nova

There are no need for additional features in Nova. This implementation utilizes a current libvirt VIF driver and linux-net interface driver.

How to run this plugin

Using devstack

Devstack support of NEC OpenFlow plugin is a part of the official devstack (http://github.com/openstack-dev/devstack) from Grizzly.

Detail instruction and sample devstack configuration examples (localrc) are available at https://github.com/nec-openstack/devstack-neutron-nec-openflow/wiki .

Before Grizzly

Devstack for this plugin is available at https://github.com/nec-openstack/devstack-neutron-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

Configuration

Havana

  • neutron.conf
# Neutron plugin provider module
core_plugin = neutron.plugins.nec.nec_plugin.NECPluginV2
  • Plugin specific configurations /etc/neutron/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 neutron/plugins/nec/drivers/ .
driver = trema
# PacketFilter is available when it's enabled in this configuration
# and supported by the driver.
enable_packet_filter = true
  • neutron plugin agent configuration : needs to use OVSInterfaceDriver to use DHCP agent (dhcp_agent.ini), L3 agent (l3_agent.ini) and other service agent (such as LBaaS HAProxy agent).
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
ovs_use_veth = True
  • nova.conf : same as ML2 plugin
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver

Grizzly

In quantum.conf, `core_plugin` needs to be configured to use NEC OpenFlow plugin.

# 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 OVSInterfaceDriver to use DHCP agent (dhcp_agent.ini), L3 agent (l3_agent.ini), and LBaaS HAproxy agent (lbaas.ini).
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
ovs_use_veth = True
  • nova.conf : same as OVS plugin
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver

Related websites

(Contact: Ryota Mibu, Akihiro Motoki, NEC)