Jump to: navigation, search

Difference between revisions of "Neutron/NEC OpenFlow Plugin"

Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
* '''Created''': Jun 21, 2012
 
* '''Blueprint''': https://blueprints.launchpad.net/quantum/+spec/quantum-nec-openflow-plugin
 
 
 
= 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.
+
* '''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 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 .
+
* [[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=800}}
+
[[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 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.
 
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:
  
  
=== Grizzly ===
+
=== Essex ===
 
 
* 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.
 
 
 
== References ==
 
 
 
 
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

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

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

(Contact: Ryota Mibu, Akihiro Motoki, NEC)