Difference between revisions of "Neutron/NEC OpenFlow Plugin"
m (Amotoki moved page Neutron/NECOpenFlowPlugin to Neutron/NEC OpenFlow Plugin) |
(→Configuration: Remove Folsom and Essex configurations. They are no longer supported.) |
||
Line 97: | Line 97: | ||
=== Grizzly === | === Grizzly === | ||
− | + | In quantum.conf, `core_plugin` needs to be configured to use NEC OpenFlow plugin. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<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 ''' | + | * 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. | + | 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> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Related websites == | == Related websites == |
Revision as of 16:31, 21 April 2014
Contents
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
- 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
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
- Folsom or later : Merged into the mainline of Neutron https://github.com/openstack/neutron
- Previous releases (before merged into the mainline) are available at https://github.com/nec-openstack/quantum-openflow-plugin (essex and diablo)
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
- 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)