Neutron/ML2/MechCiscoNexus
Contents
Neutron ML2 Driver For Cisco Nexus Devices
Overview
The Cisco Nexus ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. This driver manages multiple types of Cisco Nexus switches.
Note: The initial version of this driver supports only the VLAN network type on a single physical network.
Prerequisites
The following NX-OS version and packages to enable Nexus switch support:
- NX-OS 5.2.1 (Delhi) Build 69 or above.
- paramiko library - SSHv2 protocol library for python
- ncclient v0.3.1 - Python library for NETCONF clients
- You need a version of ncclient modified by Cisco Systems. To get it, from your shell prompt do:
git clone git@github.com:CiscoSystems/ncclient.git sudo python ./setup.py install
- For more information of ncclient, see: http://schmizz.net/ncclient/
- OS supported:
- RHEL 6.1 or above
- Ubuntu 11.10 or above
- Package: python-configobj-4.6.0-3.el6.noarch (or newer)
- Package: python-routes-1.12.3-2.el6.noarch (or newer)
- Package: pip install mysql-python
Directory Structure
The Cisco Nexus mechanism driver code can be found here:
/opt/stack/neutron/neutron/plugins/ml2/drivers/cisco/nexus
The Cisco Nexus mechanism configuration file code is located at:
/opt/stack/neutron/etc/neutron/plugins/ml2/ml2_conf_cisco.ini
Configuration
Using the syntax template found here, etc/neutron/plugins/ml2/ml2_conf_cisco.ini, add the Nexus switch information to a configuration file included on the command line when the neutron-server is started. The format should include the IP address of the switch, a host that's connected to the switch and the port on the switch that host is connected to. Also, add the Nexus switch credential username and password. You can configure multiple switches as well as multiple hosts per switch as shown in the example below:
# Use section header 'ml2_mech_cisco_nexus:' followed by the IP address of the Nexus switch. [ml2_mech_cisco_nexus:1.1.1.1] # Hostname and port used on the switch for this compute host. compute-1=1/2 # Port number where the SSH will be running at the Nexus Switch, e.g.: 22 (Default) ssh_port=22 # Provide the Nexus log in information username=admin password=mySecretPasswordForNexus
Configuring Devstack for the Cisco Nexus Mechanism Driver
See the ML2 main page for general Devstack configuration - https://wiki.openstack.org/wiki/Neutron/ML2#ML2_Configuration
As described in the ML2 main page the devstack localrc variable Q_ML2_PLUGIN_MECHANISM_DRIVERS must be set to the mechanism drivers (MD) required. For the Cisco Nexus MD the required drivers are:
Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch,cisco_nexus
In addition to the Cisco Nexus Mechanism Driver configuration the nexus switch configuration must also be accessible by adding the following to the devstack localrc file.
# Where CONF_PATH can be any valid directory path on the devstack system. Q_PLUGIN_EXTRA_CONF_PATH=(/home/openstack) Q_PLUGIN_EXTRA_CONF_FILES=(ml2_conf_cisco.ini)
Then create the file /home/openstack/ml2_conf_cisco.ini and add the nexus switch information. Syntax is described in the "Configuration" section above.