Jump to: navigation, search

Difference between revisions of "Neutron/NEC OpenFlow Plugin"

(Configuration)
m
 
(29 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Abstract ==
+
'''[Deprecation Warning]''' The current plugin, NEC OpenFlow plugin, is deprecated in OpenStack Liberty release (2015.2).
 +
A new driver for NEC NWA (Network Automation) product is coming.
 +
Note that the production support will be continued based on the production support policy.
  
NEC [[OpenFlow]] plugin talks to [[OpenFlow]] Controller and each Quantum network would be mapped to an virtual layer-2
+
'''[Note]''' In Kilo development cycle, Neutron community decides to move
network slice on an [[OpenFlow]] enabled network.
+
vendor specific codes into separate repositories.
The interface between the Quantum plugin and [[OpenFlow]] Controller is RESTful
+
NEC OpenFlow plugin is now available at https://git.openstack.org/openstack/networking-nec.
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".
+
== Project Links ==
  
* '''Plugin''': It processes Quantum API calls and controls [[OpenFlow]] controller to handle logical networks on [[OpenFlow]] enabled network.
+
* Git: https://github.com/openstack/networking-nec
* '''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.
+
* Documentation: http://pythonhosted.org/networking-nec/
 +
* Launchpad: https://launchpad.net/networking-nec
 +
* PyPI: https://pypi.python.org/pypi/networking-nec
  
== Requirements ==
+
== Introduction ==
  
* [[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 .
+
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:
 +
[http://www.necam.com/SDN/ NEC ProgrammableFlow Networking Controller] and
 +
[https://github.com/trema/apps/tree/master/sliceable_switch Trema Sliceable Switch].
 +
More detail is available in [https://github.com/openstack/networking-nec/blob/master/doc/source/readme.rst networking-nec repository].
  
== Design ==
+
== Using NEC OpenFlow plugin ==
  
[[File:quantum-nec-openflow-plugin-design.png|alt|Quantum NEC OpenFlow] Plugin Design| width=600]]
+
* [http://pythonhosted.org/networking-nec/devstack.html] (with Kilo or later)
 +
* [http://pythonhosted.org/networking-nec/installation.html#manual-installation Manual installation]
 +
* [http://pythonhosted.org/networking-nec/settings.html Configuration Guide]
  
=== Communication between plugin and agent ===
+
----
  
This plugin uses "common-rpc" in openstack-common for the agents to
+
Note for Juno DevStack users:
communicate with the plugin and will conform to the convention for scalable-agent-comms.  
+
* Devstack support of NEC OpenFlow plugin is a part of the official devstack (http://github.com/openstack-dev/devstack) from Grizzly.
The topic name for RPC will be set to "quantum.plugin" as proposed in the blueprint scalable-agent-comms.
+
* Detail instruction and sample devstack configuration examples (localrc) are available at https://github.com/nec-openstack/devstack-neutron-nec-openflow/wiki .
  
=== Integration with Nova ===
+
[[Category: Neutron]]
 
 
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 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 ==
 
=== Havana ===
 
Quantum is renamed to Neutron.
 
 
 
* neutron.conf
 
 
<pre><nowiki>
 
# Neutron plugin provider module
 
core_plugin = neutron.plugins.nec.nec_plugin.NECPluginV2
 
</nowiki></pre>
 
 
 
* Plugin specific configurations /etc/neutron/plugins/nec/nec.ini . Section "[OFC]" is particular configurations to NEC [[OpenFlow]] plugin.
 
 
<pre><nowiki>
 
[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
 
</nowiki></pre>
 
 
 
* 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).
 
 
<pre><nowiki>
 
interface_driver = quantum.agent.linux.interface.OVSInterfaceDriver
 
ovs_use_veth = True
 
</nowiki></pre>
 
 
 
* nova.conf : same as ML2 plugin
 
 
<pre><nowiki>
 
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
 
</nowiki></pre>
 
 
 
=== 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 ===
 
 
 
* quantum.conf
 
 
<pre><nowiki>
 
# 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/
 
</nowiki></pre>
 
 
 
* Plugin specific configurations /etc/quantum/plugins/nec/nec.ini . Section "[OFC]" is particular configurations to 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 : 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.
 
 
<pre><nowiki>
 
interface_driver = quantum.agent.linux.interface.OVSVethInterfaceDriver
 
</nowiki></pre>
 
 
 
* nova.conf : same as OVS plugin
 
 
<pre><nowiki>
 
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
 
</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 ==
 
 
 
* 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)
 

Latest revision as of 11:29, 26 December 2015

[Deprecation Warning] The current plugin, NEC OpenFlow plugin, is deprecated in OpenStack Liberty release (2015.2). A new driver for NEC NWA (Network Automation) product is coming. Note that the production support will be continued based on the production support policy.

[Note] In Kilo development cycle, Neutron community decides to move vendor specific codes into separate repositories. NEC OpenFlow plugin is now available at https://git.openstack.org/openstack/networking-nec.

Project Links

Introduction

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: NEC ProgrammableFlow Networking Controller and Trema Sliceable Switch. More detail is available in networking-nec repository.

Using NEC OpenFlow plugin


Note for Juno DevStack users: