|
|
(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)
| |
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.