<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ophir+Maor</id>
		<title>OpenStack - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.openstack.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ophir+Maor"/>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/wiki/Special:Contributions/Ophir_Maor"/>
		<updated>2026-07-11T21:40:43Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Kilo&amp;diff=86570</id>
		<title>Mellanox-Neutron-ML2-Kilo</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Kilo&amp;diff=86570"/>
				<updated>2015-07-22T22:13:30Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) vnic type. For vnic type configuration API details, please refer to configuration reference guide (click here). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics. &lt;br /&gt;
* Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
* Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For '''Kilo''' release Information refer to the relevant OS as follows:&lt;br /&gt;
&lt;br /&gt;
Infiniband&lt;br /&gt;
* [[Mellanox-Neutron-Kilo-Redhat-InfiniBand | Redhat7]]&lt;br /&gt;
* [[Mellanox-Neutron-Kilo-Ubuntu-InfiniBand | Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
Ethernet(SR-IOV)&lt;br /&gt;
* [[Mellanox-Neutron-Kilo-Redhat-Ethernet |Redhat7/Ubuntu ]]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=69183</id>
		<title>Mellanox-Neutron-Icehouse-Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=69183"/>
				<updated>2014-11-30T07:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Replaced content with &amp;quot;This page was redirected to [https://wiki.openstack.org/wiki/Mellanox-Neutron-ML2 here]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page was redirected to [https://wiki.openstack.org/wiki/Mellanox-Neutron-ML2 here]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=69182</id>
		<title>Mellanox-Neutron-Icehouse-Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=69182"/>
				<updated>2014-11-30T07:19:06Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page was redirected to [https://wiki.openstack.org/wiki/Mellanox-Neutron-ML2 here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
&lt;br /&gt;
This wiki page describes how to tune Mellanox OpenStack on Ubuntu 12.04 servers&lt;br /&gt;
&lt;br /&gt;
= Prerequisites =&lt;br /&gt;
&lt;br /&gt;
You need at least 3 nodes:&lt;br /&gt;
* Controller node running the neutron-server service.&lt;br /&gt;
* Compute node running the eswitchd, nova-compute &amp;amp; neutron-plugin-mlnx-agent services.&lt;br /&gt;
* Network node running the neutron-plugin-linuxbridge-agent, neutron-dhcp-agent and neutron-l3-agent services.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network = &lt;br /&gt;
&lt;br /&gt;
== Controller Node == &lt;br /&gt;
&lt;br /&gt;
In /etc/nova/nova.conf ensure you have the following line: &lt;br /&gt;
   security_group_api=nova&lt;br /&gt;
&lt;br /&gt;
If you change, restart the nova services&lt;br /&gt;
   # for i in $(initctl list | grep '^nova' | awk '{print $1}'); do service $i restart; done&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
=== Installation === &lt;br /&gt;
&lt;br /&gt;
1. Neutron server uses MySQL database. Make sure you have running MySQL database for neutron. &lt;br /&gt;
&lt;br /&gt;
If Neutron server is already running, you should stop it. &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/neutron-server stop&lt;br /&gt;
&lt;br /&gt;
If you want to use a database that was created you have to drop it and create another one. For example: &lt;br /&gt;
&lt;br /&gt;
  mysql -u root -ppassword &amp;lt;&amp;lt;EOF&lt;br /&gt;
  drop database if exists neutron;&lt;br /&gt;
  create database neutron;&lt;br /&gt;
  EOF&lt;br /&gt;
&lt;br /&gt;
If you want to create a new one: &lt;br /&gt;
&lt;br /&gt;
  mysql -u root -ppassword &amp;lt;&amp;lt;EOF&lt;br /&gt;
  drop database if exists neutron;&lt;br /&gt;
  create database neutron;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password';&lt;br /&gt;
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron' IDENTIFIED BY 'password';&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
  EOF&lt;br /&gt;
&lt;br /&gt;
2. Install the required Deb for the Mellanox Neutron plugin: &lt;br /&gt;
&lt;br /&gt;
   apt-get install -y neutron-plugin-mlnx-agent&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
4. Change /etc/default/neutron-server :&lt;br /&gt;
&lt;br /&gt;
   NEUTRON_PLUGIN_CONFIG=&amp;quot;/etc/neutron/plugins/mlnx/mlnx_conf.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Make the Mellanox plugin the current Neutron plugin by editing neutron.conf and changing core_plugin. &lt;br /&gt;
&lt;br /&gt;
  core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Plugin configuration: Edit the configuration file: /etc/neutron/plugins/mlnx/mlnx_conf.ini &lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   tenant_network_type - must be set on of supported tenant network types.  &lt;br /&gt;
                        Possible values: 'vlan' for Ethernet or 'ib' for Infiniband.'vlan' is the default.&lt;br /&gt;
   network_vlan_ranges - must be configured to specify the names of the  physical    &lt;br /&gt;
 &lt;br /&gt;
   networks managed by the mellanox plugin, &lt;br /&gt;
   along with the ranges of VLAN IDs available on each physical network for allocation to virtual networks.   &lt;br /&gt;
   Possible range is vlan range is 1-4093. &lt;br /&gt;
   The default  is &amp;quot;default:1:100&amp;quot; &lt;br /&gt;
   &amp;lt;fabric name &amp;gt;:&amp;lt;vlan range start&amp;gt;:&amp;lt;vlan end range&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   [agent]&lt;br /&gt;
   rpc_support_old_agents = True&lt;br /&gt;
   Note: rpc_support_old_agents should be set to 'True' (non default).&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
&lt;br /&gt;
Start (or restart) the Neutron server &lt;br /&gt;
   #/etc/init.d/neutron-server start&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
1. If you didn't download Mellanox OpenStack debian files download it : &lt;br /&gt;
&lt;br /&gt;
http://www.mellanox.com/downloads/solutions/openstack/&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd debian files: &lt;br /&gt;
   dpkg -i eswitchd_0.8-1_amd64.deb&lt;br /&gt;
   dpkg -i python-mlnxvif_0.6-1_all.deb&lt;br /&gt;
   apt-get install -f # fix dependencies&lt;br /&gt;
   apt-get install -y neutron-plugin-mlnx-agent&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed &lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click [http://community.mellanox.com/docs/DOC-1126 here]) &lt;br /&gt;
&lt;br /&gt;
2. Modify /etc/nova/nova.conf &lt;br /&gt;
&lt;br /&gt;
   compute_driver=nova.virt.libvirt.driver.LibvirtDriver&lt;br /&gt;
   libvirt_vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
   security_group_api=nova&lt;br /&gt;
   connection_type=libvirt&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized ,mode: change the following: &lt;br /&gt;
&lt;br /&gt;
   libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
  [AGENT]&lt;br /&gt;
  rpc_support_old_agents = True&lt;br /&gt;
  [ESWITCH]&lt;br /&gt;
   physical_interface_mapping -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only releavant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   vnic_type - type of VM network interface: 'mlnx_direct' or 'hostdev'  according to libvirt terminology.&lt;br /&gt;
        hostdev: this is the traditional method of assigning any generic PCI device to a guest (SR-IOV).&lt;br /&gt;
        mlnx_direct: this is a method to provide macvtap device on top of the PCI device (default).&lt;br /&gt;
        bridge:  - When using Linux Bridge Plugin on top of eIPoIB device&lt;br /&gt;
   daemon_endpoint - 'tcp://127.0.0.1:60001'&lt;br /&gt;
&lt;br /&gt;
For a plugin configuration file example (Havana), please refer to Mellanox config *ini file (click [https://github.com/openstack/neutron/blob/stable/havana/etc/neutron/plugins/mlnx/mlnx_conf.ini here])&lt;br /&gt;
&lt;br /&gt;
4. (Optional) Modify /etc/init/neutron-plugin-mlnx-agent.conf as described in LP bug #[https://bugs.launchpad.net/ubuntu/+source/neutron/+bug/1257732 1257732]&lt;br /&gt;
&lt;br /&gt;
5. Check that ebrctl is listed somewhere in /etc/nova/rootwrap.d/*, otherwise add this to /etc/nova/rootwrap.d/compute.filters file in the [Filters] section.&lt;br /&gt;
  ebrctl: CommandFilter, ebrctl, root&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova. &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/neutron-plugin-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install the Neutron Linux bridge plugin, the Neutron DHCP agent and the Neutron L3 agent:&lt;br /&gt;
&lt;br /&gt;
  # apt-get install neutron-plugin-linuxbridge-agent neutron-dhcp-agent neutron-l3-agent&lt;br /&gt;
&lt;br /&gt;
2. Copy /etc/neutron/neutron.conf from the Compute node.&lt;br /&gt;
&lt;br /&gt;
3. Change the following configuration of the ini file (/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/mlnx/mlnx_conf.ini . &lt;br /&gt;
   [linux_bridge]  &lt;br /&gt;
   physical_interface_mappings = default:eth2 &lt;br /&gt;
&lt;br /&gt;
4. Configure the DHCP agent according to the following guidelines &lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   [DEFAULT] &lt;br /&gt;
  interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#section_adv_cfg_dhcp_agent OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
5. Configure the L3 agent according to the following guidelines &lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/l3_agent.ini with:&lt;br /&gt;
   [DEFAULT] &lt;br /&gt;
  interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#section_adv_cfg_l3_agent OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
6. Configure the Metadata agent according to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#nova_config_metadata OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
7. Start the Neutron Linux Bridge, DHCP and L3 agents &lt;br /&gt;
  # restart neutron-plugin-linuxbridge-agent&lt;br /&gt;
  # restart neutron-dhcp-agent&lt;br /&gt;
  # restart neutron-l3-agent&lt;br /&gt;
  # restart neutron-metadata-agent&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
* If you're seeing request timeout errors in the plugin's logs, make sure that the eswitchd service is started and try to increase the request_timeout value in the plugin configuration file.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67988</id>
		<title>Mellanox-Neutron-ML2-Icehouse1</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67988"/>
				<updated>2014-11-17T11:57:05Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics. &lt;br /&gt;
&lt;br /&gt;
* Mellanox Openstack Neutron Agent (L2 Agent) runs on each compute node.&lt;br /&gt;
* Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For '''Icehouse''' release Information refer to the relevant OS as follows:&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu|Ubuntu]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat|RedHat]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat-Ethernet|Redhat Ethernet]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu-Ethernet|Ubuntu Ethernet]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat-InfiniBand|Redhat InfiniBand]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu-InfiniBand|Ubuntu InfiniBand]]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67987</id>
		<title>Mellanox-Neutron-ML2-Icehouse1</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67987"/>
				<updated>2014-11-17T11:56:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics. &lt;br /&gt;
&lt;br /&gt;
* Mellanox Openstack Neutron Agent (L2 Agent) runs on each compute node.&lt;br /&gt;
* Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For '''Icehouse''' release Information refer to the relevant OS as follows:&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu|Ubuntu]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat|RedHat]]&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat-Ethernet|Redhat Ethernet]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu-Ethernet|Ubuntu Ethernet]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat-InfiniBand|Redhat InfiniBand]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu-InfiniBand|Ubuntu InfiniBand]]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu-InfiniBand&amp;diff=67986</id>
		<title>Mellanox-Neutron-Icehouse-Ubuntu-InfiniBand</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu-InfiniBand&amp;diff=67986"/>
				<updated>2014-11-17T11:56:35Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Created page with &amp;quot;test&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-InfiniBand&amp;diff=67985</id>
		<title>Mellanox-Neutron-Icehouse-Redhat-InfiniBand</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-InfiniBand&amp;diff=67985"/>
				<updated>2014-11-17T11:55:53Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Created page with &amp;quot;test&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67984</id>
		<title>Mellanox-Neutron-ML2-Icehouse1</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67984"/>
				<updated>2014-11-17T11:55:39Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics. &lt;br /&gt;
&lt;br /&gt;
* Mellanox Openstack Neutron Agent (L2 Agent) runs on each compute node.&lt;br /&gt;
* Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For '''Icehouse''' release Information refer to the relevant OS as follows:&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu|Ubuntu]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat|RedHat]]&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat-Ethernet|Redhat Ethernet]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu-Ethernet|Ubuntu Ethernet]]&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat-InfiniBand|Redhat InfiniBand]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu-InfiniBand|Ubuntu InfiniBand]]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu-Ethernet&amp;diff=67983</id>
		<title>Mellanox-Neutron-Icehouse-Ubuntu-Ethernet</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu-Ethernet&amp;diff=67983"/>
				<updated>2014-11-17T11:54:00Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Created page with &amp;quot;test&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Talk:Mellanox&amp;diff=67982</id>
		<title>Talk:Mellanox</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Talk:Mellanox&amp;diff=67982"/>
				<updated>2014-11-17T11:52:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Created page with &amp;quot;test&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack&amp;diff=67981</id>
		<title>Mellanox-OpenStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack&amp;diff=67981"/>
				<updated>2014-11-17T11:45:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Mellanox Neutron Plugin  =&lt;br /&gt;
Mellanox supports the OpenStack Neutron releases with open source networking components through Neutron. It delivers higher compute and storage performance and additional functionality, such as NIC based switching to provide better security and isolation for virtual cloud environments.&lt;br /&gt;
&lt;br /&gt;
For additional information about Mellanox NeutronPlugin refer to [https://wiki.openstack.org/wiki/Mellanox-Neutron Mellanox Neutron] wiki page.&lt;br /&gt;
&lt;br /&gt;
= Mellanox Cinder Plugin =&lt;br /&gt;
Mellanox provides an OpenStack Storage plugin that enables running storage volume traffic over native RDMA transport, providing 5X faster throughput over standard TCP/IP, while significantly increasing infrastructure efficiency by using less CPU resources.&lt;br /&gt;
&lt;br /&gt;
For additional information about Mellanox Cinder refer to [https://wiki.openstack.org/wiki/Mellanox-Cinder Mellanox Cinder] wiki page.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ OpenStack solution page at Mellanox site]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED web page]&lt;br /&gt;
&lt;br /&gt;
4. [http://community.mellanox.com/community/solutions Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. [https://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking SR-IOV Passthrough for Networking]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox&amp;diff=67980</id>
		<title>Mellanox</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox&amp;diff=67980"/>
				<updated>2014-11-17T11:45:00Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been redirected to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox&amp;diff=67979</id>
		<title>Mellanox</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox&amp;diff=67979"/>
				<updated>2014-11-17T11:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been redirected to [https://wiki.openstack.org/wiki/Mellanox-OpenStack | Mellanox-OpenStack]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox&amp;diff=67978</id>
		<title>Mellanox</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox&amp;diff=67978"/>
				<updated>2014-11-17T11:44:15Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been redirected to [https://wiki.openstack.org/wiki/Mellanox-OpenStack]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67977</id>
		<title>Mellanox-Neutron-Icehouse-Redhat-Ethernet</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67977"/>
				<updated>2014-11-17T11:41:53Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;br /&gt;
&lt;br /&gt;
 # command&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67976</id>
		<title>Mellanox-Neutron-Icehouse-Redhat-Ethernet</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67976"/>
				<updated>2014-11-17T11:41:24Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;br /&gt;
&lt;br /&gt;
                 ddd&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67975</id>
		<title>Mellanox-Neutron-Icehouse-Redhat-Ethernet</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67975"/>
				<updated>2014-11-17T11:40:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;br /&gt;
&lt;br /&gt;
 ddd&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67974</id>
		<title>Mellanox-Neutron-ML2-Icehouse1</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-ML2-Icehouse1&amp;diff=67974"/>
				<updated>2014-11-17T11:39:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics. &lt;br /&gt;
&lt;br /&gt;
* Mellanox Openstack Neutron Agent (L2 Agent) runs on each compute node.&lt;br /&gt;
* Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For '''Icehouse''' release Information refer to the relevant OS as follows:&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Ubuntu|Ubuntu]]&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat|RedHat]]&lt;br /&gt;
&lt;br /&gt;
* [[Mellanox-Neutron-Icehouse-Redhat-Ethernet|Redhat Ethernet]]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67973</id>
		<title>Mellanox-Neutron-Icehouse-Redhat-Ethernet</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat-Ethernet&amp;diff=67973"/>
				<updated>2014-11-17T11:38:25Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Created page with &amp;quot;test&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Cinder&amp;diff=67967</id>
		<title>Mellanox-Cinder</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Cinder&amp;diff=67967"/>
				<updated>2014-11-17T09:28:10Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Grizzly Release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
iSER (iSCSI over RDMA) Mellanox OpenStack support to Cinder.&amp;lt;br /&amp;gt;&lt;br /&gt;
This can allow 5x faster bandwidth compared to using iSCSI TCP. &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
For example, over RAM device LUN I got ~1.3GBps Vs. ~5.5GBps (TCP Vs. iSER), and much lower CPU overhead.&lt;br /&gt;
&lt;br /&gt;
= Havana Release =&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The Mellanox Cinder pacakge is embeded within the OpenStack Cinder, no patches or plugins are needed. &lt;br /&gt;
Just follow the formal OpenStack Cinder installation&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
In order to enable iSER, need to adjust these values at '''/etc/cinder/cinder.conf''':&lt;br /&gt;
&lt;br /&gt;
 iser_ip_address = &amp;lt;ipoib/roce_address&amp;gt;&lt;br /&gt;
 volume_driver = cinder.volume.drivers.lvm.LVMISERDriver&lt;br /&gt;
&lt;br /&gt;
'''iser_ip_address''' is required to do a &amp;quot;discovery&amp;quot; over the IB/RoCE interface from the initiator side.&lt;br /&gt;
&lt;br /&gt;
'''volume_driver''' points cinder to use the ISERDriver, instead the LVMISCSIDriver.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On nova-compute side change the following in '''/etc/nova/nova.conf''':&lt;br /&gt;
&lt;br /&gt;
 libvirt_volume_drivers = iser=nova.virt.libvirt.volume.LibvirtISERVolumeDriver&lt;br /&gt;
&lt;br /&gt;
Restart Cinder and Nova compute services&lt;br /&gt;
&lt;br /&gt;
 #/etc/init.d/openstack-cinder-volume restart&lt;br /&gt;
 #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
For troubleshooting issues refer to section [https://wiki.openstack.org/wiki/Mellanox-Cinder#Known_Issues Known Issues]&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
&lt;br /&gt;
(1)  “scsi-target-utils” package &lt;br /&gt;
&lt;br /&gt;
Note: for RH6.4 or below: “scsi-target-utils” package needs to be 1.0.38 and up, if you use RDO installation you should check the version.&lt;br /&gt;
The RPM can be found in http://www.mellanox.com/downloads/solutions/rpms/&lt;br /&gt;
 &lt;br /&gt;
 #wget http://www.mellanox.com/downloads/solutions/rpms/scsi-target-utils-1.0.39-v1.0.39.c1135a.x86_64.rpm&lt;br /&gt;
 #rpm -Uvh scsi-target-utils-1.0.39-v1.0.39.c1135a.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
In addition, RH6.5 has “scsi-target-utils” package with version 1.0.24-10, which is good enough, no further action is needed for RHEL6.5&lt;br /&gt;
&lt;br /&gt;
(2) Boot Instance from volume fails when iSER is enabled&lt;br /&gt;
&lt;br /&gt;
Steps to reproduce the bug:&lt;br /&gt;
&lt;br /&gt;
- Create new volume with image source.&lt;br /&gt;
&lt;br /&gt;
- Launch a new instance boot from the above volume using iSER transport.&lt;br /&gt;
&lt;br /&gt;
The bug is defined here:&lt;br /&gt;
[https://bugs.launchpad.net/nova/+bug/1253578]&lt;br /&gt;
&lt;br /&gt;
A patch can be found in here: [http://www.mellanox.com/downloads/solutions/openstack/havana/patches/volume.patch]&lt;br /&gt;
&lt;br /&gt;
To apply the patch run the following commands on '''all nova-compute nodes''':&lt;br /&gt;
 # wget http://www.mellanox.com/downloads/solutions/openstack/havana/patches/volume.patch &lt;br /&gt;
 # patch -p1 &amp;lt; volume.patch&lt;br /&gt;
 # service nova-compute restart &lt;br /&gt;
&lt;br /&gt;
(3) Flow control&lt;br /&gt;
&lt;br /&gt;
In case the network is Ethernet, Make sure that flow control is enabled on the switches on the relevant ports across the network.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ OpenStack solution page at Mellanox site]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED web page]&lt;br /&gt;
&lt;br /&gt;
4. [http://docs.openstack.org/havana/install-guide/install/yum/content/cinder-controller.html Cinder-controller]&lt;br /&gt;
&lt;br /&gt;
5. [http://docs.openstack.org/havana/install-guide/install/yum/content/cinder-node.html Cinder-node]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;br /&gt;
&lt;br /&gt;
For more details, please refer any inquiries to  [mailto:openstack@mellanox.com openstack@mellanox.com].&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=66186</id>
		<title>Mellanox-Neutron-Icehouse-Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=66186"/>
				<updated>2014-10-20T06:55:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Page is under construction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
&lt;br /&gt;
This wiki page describes how to tune Mellanox OpenStack on Ubuntu 12.04 servers&lt;br /&gt;
&lt;br /&gt;
= Prerequisites =&lt;br /&gt;
&lt;br /&gt;
You need at least 3 nodes:&lt;br /&gt;
* Controller node running the neutron-server service.&lt;br /&gt;
* Compute node running the eswitchd, nova-compute &amp;amp; neutron-plugin-mlnx-agent services.&lt;br /&gt;
* Network node running the neutron-plugin-linuxbridge-agent, neutron-dhcp-agent and neutron-l3-agent services.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network = &lt;br /&gt;
&lt;br /&gt;
== Controller Node == &lt;br /&gt;
&lt;br /&gt;
In /etc/nova/nova.conf ensure you have the following line: &lt;br /&gt;
   security_group_api=nova&lt;br /&gt;
&lt;br /&gt;
If you change, restart the nova services&lt;br /&gt;
   # for i in $(initctl list | grep '^nova' | awk '{print $1}'); do service $i restart; done&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
=== Installation === &lt;br /&gt;
&lt;br /&gt;
1. Neutron server uses MySQL database. Make sure you have running MySQL database for neutron. &lt;br /&gt;
&lt;br /&gt;
If Neutron server is already running, you should stop it. &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/neutron-server stop&lt;br /&gt;
&lt;br /&gt;
If you want to use a database that was created you have to drop it and create another one. For example: &lt;br /&gt;
&lt;br /&gt;
  mysql -u root -ppassword &amp;lt;&amp;lt;EOF&lt;br /&gt;
  drop database if exists neutron;&lt;br /&gt;
  create database neutron;&lt;br /&gt;
  EOF&lt;br /&gt;
&lt;br /&gt;
If you want to create a new one: &lt;br /&gt;
&lt;br /&gt;
  mysql -u root -ppassword &amp;lt;&amp;lt;EOF&lt;br /&gt;
  drop database if exists neutron;&lt;br /&gt;
  create database neutron;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password';&lt;br /&gt;
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron' IDENTIFIED BY 'password';&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
  EOF&lt;br /&gt;
&lt;br /&gt;
2. Install the required Deb for the Mellanox Neutron plugin: &lt;br /&gt;
&lt;br /&gt;
   apt-get install -y neutron-plugin-mlnx-agent&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
4. Change /etc/default/neutron-server :&lt;br /&gt;
&lt;br /&gt;
   NEUTRON_PLUGIN_CONFIG=&amp;quot;/etc/neutron/plugins/mlnx/mlnx_conf.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Make the Mellanox plugin the current Neutron plugin by editing neutron.conf and changing core_plugin. &lt;br /&gt;
&lt;br /&gt;
  core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Plugin configuration: Edit the configuration file: /etc/neutron/plugins/mlnx/mlnx_conf.ini &lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   tenant_network_type - must be set on of supported tenant network types.  &lt;br /&gt;
                        Possible values: 'vlan' for Ethernet or 'ib' for Infiniband.'vlan' is the default.&lt;br /&gt;
   network_vlan_ranges - must be configured to specify the names of the  physical    &lt;br /&gt;
 &lt;br /&gt;
   networks managed by the mellanox plugin, &lt;br /&gt;
   along with the ranges of VLAN IDs available on each physical network for allocation to virtual networks.   &lt;br /&gt;
   Possible range is vlan range is 1-4093. &lt;br /&gt;
   The default  is &amp;quot;default:1:100&amp;quot; &lt;br /&gt;
   &amp;lt;fabric name &amp;gt;:&amp;lt;vlan range start&amp;gt;:&amp;lt;vlan end range&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   [agent]&lt;br /&gt;
   rpc_support_old_agents = True&lt;br /&gt;
   Note: rpc_support_old_agents should be set to 'True' (non default).&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
&lt;br /&gt;
Start (or restart) the Neutron server &lt;br /&gt;
   #/etc/init.d/neutron-server start&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
1. If you didn't download Mellanox OpenStack debian files download it : &lt;br /&gt;
&lt;br /&gt;
http://www.mellanox.com/downloads/solutions/openstack/&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd debian files: &lt;br /&gt;
   dpkg -i eswitchd_0.8-1_amd64.deb&lt;br /&gt;
   dpkg -i python-mlnxvif_0.6-1_all.deb&lt;br /&gt;
   apt-get install -f # fix dependencies&lt;br /&gt;
   apt-get install -y neutron-plugin-mlnx-agent&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed &lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click [http://community.mellanox.com/docs/DOC-1126 here]) &lt;br /&gt;
&lt;br /&gt;
2. Modify /etc/nova/nova.conf &lt;br /&gt;
&lt;br /&gt;
   compute_driver=nova.virt.libvirt.driver.LibvirtDriver&lt;br /&gt;
   libvirt_vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
   security_group_api=nova&lt;br /&gt;
   connection_type=libvirt&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized ,mode: change the following: &lt;br /&gt;
&lt;br /&gt;
   libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
  [AGENT]&lt;br /&gt;
  rpc_support_old_agents = True&lt;br /&gt;
  [ESWITCH]&lt;br /&gt;
   physical_interface_mapping -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only releavant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   vnic_type - type of VM network interface: 'mlnx_direct' or 'hostdev'  according to libvirt terminology.&lt;br /&gt;
        hostdev: this is the traditional method of assigning any generic PCI device to a guest (SR-IOV).&lt;br /&gt;
        mlnx_direct: this is a method to provide macvtap device on top of the PCI device (default).&lt;br /&gt;
        bridge:  - When using Linux Bridge Plugin on top of eIPoIB device&lt;br /&gt;
   daemon_endpoint - 'tcp://127.0.0.1:60001'&lt;br /&gt;
&lt;br /&gt;
For a plugin configuration file example (Havana), please refer to Mellanox config *ini file (click [https://github.com/openstack/neutron/blob/stable/havana/etc/neutron/plugins/mlnx/mlnx_conf.ini here])&lt;br /&gt;
&lt;br /&gt;
4. (Optional) Modify /etc/init/neutron-plugin-mlnx-agent.conf as described in LP bug #[https://bugs.launchpad.net/ubuntu/+source/neutron/+bug/1257732 1257732]&lt;br /&gt;
&lt;br /&gt;
5. Check that ebrctl is listed somewhere in /etc/nova/rootwrap.d/*, otherwise add this to /etc/nova/rootwrap.d/compute.filters file in the [Filters] section.&lt;br /&gt;
  ebrctl: CommandFilter, ebrctl, root&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova. &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/neutron-plugin-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install the Neutron Linux bridge plugin, the Neutron DHCP agent and the Neutron L3 agent:&lt;br /&gt;
&lt;br /&gt;
  # apt-get install neutron-plugin-linuxbridge-agent neutron-dhcp-agent neutron-l3-agent&lt;br /&gt;
&lt;br /&gt;
2. Copy /etc/neutron/neutron.conf from the Compute node.&lt;br /&gt;
&lt;br /&gt;
3. Change the following configuration of the ini file (/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/mlnx/mlnx_conf.ini . &lt;br /&gt;
   [linux_bridge]  &lt;br /&gt;
   physical_interface_mappings = default:eth2 &lt;br /&gt;
&lt;br /&gt;
4. Configure the DHCP agent according to the following guidelines &lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   [DEFAULT] &lt;br /&gt;
  interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#section_adv_cfg_dhcp_agent OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
5. Configure the L3 agent according to the following guidelines &lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/l3_agent.ini with:&lt;br /&gt;
   [DEFAULT] &lt;br /&gt;
  interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#section_adv_cfg_l3_agent OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
6. Configure the Metadata agent according to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#nova_config_metadata OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
7. Start the Neutron Linux Bridge, DHCP and L3 agents &lt;br /&gt;
  # restart neutron-plugin-linuxbridge-agent&lt;br /&gt;
  # restart neutron-dhcp-agent&lt;br /&gt;
  # restart neutron-l3-agent&lt;br /&gt;
  # restart neutron-metadata-agent&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
* If you're seeing request timeout errors in the plugin's logs, make sure that the eswitchd service is started and try to increase the request_timeout value in the plugin configuration file.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=66185</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=66185"/>
				<updated>2014-10-20T06:54:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Page is under construction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum localinstall mlnx-dnsmasq-2014.1.1-1.noarch.rpm &lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   #wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
   #yum localinstall dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   # service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=64313</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=64313"/>
				<updated>2014-10-06T07:59:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* OpenSM configuration - Without UFM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum localinstall mlnx-dnsmasq-2014.1.1-1.noarch.rpm &lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   #wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
   #yum localinstall dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   # service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-CloudX&amp;diff=62931</id>
		<title>Obsolete:Mellanox-CloudX</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-CloudX&amp;diff=62931"/>
				<updated>2014-09-17T18:25:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Ophir Maor moved page Mellanox-CloudX to Obsolete:Mellanox-CloudX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-CloudX&amp;diff=62932</id>
		<title>Mellanox-CloudX</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-CloudX&amp;diff=62932"/>
				<updated>2014-09-17T18:25:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Ophir Maor moved page Mellanox-CloudX to Obsolete:Mellanox-CloudX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Obsolete:Mellanox-CloudX]]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-OpenStack-CloudX&amp;diff=62928</id>
		<title>Obsolete:Mellanox-OpenStack-CloudX</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-OpenStack-CloudX&amp;diff=62928"/>
				<updated>2014-09-17T18:24:28Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Ophir Maor moved page Mellanox-OpenStack-CloudX to Obsolete:Mellanox-OpenStack-CloudX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack-CloudX&amp;diff=62929</id>
		<title>Mellanox-OpenStack-CloudX</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack-CloudX&amp;diff=62929"/>
				<updated>2014-09-17T18:24:28Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Ophir Maor moved page Mellanox-OpenStack-CloudX to Obsolete:Mellanox-OpenStack-CloudX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Obsolete:Mellanox-OpenStack-CloudX]]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-OpenStack-CloudX&amp;diff=62926</id>
		<title>Obsolete:Mellanox-OpenStack-CloudX</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-OpenStack-CloudX&amp;diff=62926"/>
				<updated>2014-09-17T18:23:54Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-CloudX&amp;diff=62925</id>
		<title>Obsolete:Mellanox-CloudX</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Obsolete:Mellanox-CloudX&amp;diff=62925"/>
				<updated>2014-09-17T18:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62682</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62682"/>
				<updated>2014-09-16T08:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Network Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum localinstall mlnx-dnsmasq-2014.1.1-1.noarch.rpm &lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   #wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
   #yum localinstall dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   # service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62681</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62681"/>
				<updated>2014-09-16T08:34:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Compute Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum localinstall mlnx-dnsmasq-2014.1.1-1.noarch.rpm &lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   #wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
   #yum localinstall dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   # service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62680</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62680"/>
				<updated>2014-09-16T08:29:53Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* DHCP Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum localinstall mlnx-dnsmasq-2014.1.1-1.noarch.rpm &lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   #wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
   #yum localinstall dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   # service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62679</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62679"/>
				<updated>2014-09-16T08:27:48Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* DHCP Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum localinstall mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   # service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62678</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62678"/>
				<updated>2014-09-16T08:26:41Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* DHCP Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62677</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62677"/>
				<updated>2014-09-16T08:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* DHCP Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-dnsmasq-2014.1.1-1.noarch.rpm&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62676</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62676"/>
				<updated>2014-09-16T08:24:38Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* DHCP Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
In addition, dnsmasq must be upgraded to version 2.66 or higher.&lt;br /&gt;
   ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/kalyaka/CentOS_CentOS-6/x86_64/dnsmasq-2.66-3.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62675</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=62675"/>
				<updated>2014-09-16T08:22:26Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Network Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
You can do it by using packstack:&lt;br /&gt;
&lt;br /&gt;
1.Create an answer file &lt;br /&gt;
    #packstack --gen-answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
2. Change the following in  GEN_ANSWER_FILE&lt;br /&gt;
    CONFIG_NEUTRON_L2_PLUGIN=ml2&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan&lt;br /&gt;
    CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch&lt;br /&gt;
    CONFIG_NEUTRON_ML2_VLAN_RANGES=default:2:10&lt;br /&gt;
    CONFIG_NEUTRON_L2_AGENT=openvswitch&lt;br /&gt;
&lt;br /&gt;
3. Run packstack&lt;br /&gt;
    #packstack --answer-file=GEN_ANSWER_FILE&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. In /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
Check that the compute driver is libvirt:&lt;br /&gt;
    [DEFAULT]&lt;br /&gt;
    compute_driver=libvirt.LibvirtDriver&lt;br /&gt;
&lt;br /&gt;
Change the VIF driver:&lt;br /&gt;
    [libvirt]&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized mode make sure vif driver is as follows:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc_support_old_agents'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #service eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #service neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/ml2/ml2_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #service neutron-openvswitch-agent start&lt;br /&gt;
   #service neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #service neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #service opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
We are using the linuxbridge mechanism driver so we can use the DHCP Server with the Linux Bridge interface driver.&lt;br /&gt;
&lt;br /&gt;
Edit  /etc/neutron/plugins/ml2/ml2_conf.ini  as follows (The VLAN range is an example)&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = linuxbridge,mlnx&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges=default:2:10&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 enable_security_group = True&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #service openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #service eswitchd restart&lt;br /&gt;
   #service neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
  [libvirt]&lt;br /&gt;
  vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #service openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
And restart openibd:&lt;br /&gt;
&lt;br /&gt;
 #service openibd restart&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example: Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
  driver: eth_ipoib&lt;br /&gt;
  version: 1.0.0&lt;br /&gt;
  firmware-version: 1 &lt;br /&gt;
  bus-info: ib0&lt;br /&gt;
  supports-statistics: yes&lt;br /&gt;
  supports-test: no&lt;br /&gt;
  supports-eeprom-access: no&lt;br /&gt;
  supports-register-dump: no&lt;br /&gt;
  supports-priv-flags: no&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
  [linux_bridge] &lt;br /&gt;
  physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Restart neutron-linuxbridge-agent and neutron-dhcp-agent&lt;br /&gt;
   &lt;br /&gt;
  #service neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #service neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=62673</id>
		<title>Mellanox-Neutron-Icehouse-Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Ubuntu&amp;diff=62673"/>
				<updated>2014-09-16T08:15:54Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet.&lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
&lt;br /&gt;
This wiki page describes how to tune Mellanox OpenStack on Ubuntu 12.04 servers&lt;br /&gt;
&lt;br /&gt;
= Prerequisites =&lt;br /&gt;
&lt;br /&gt;
You need at least 3 nodes:&lt;br /&gt;
* Controller node running the neutron-server service.&lt;br /&gt;
* Compute node running the eswitchd, nova-compute &amp;amp; neutron-plugin-mlnx-agent services.&lt;br /&gt;
* Network node running the neutron-plugin-linuxbridge-agent, neutron-dhcp-agent and neutron-l3-agent services.&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network = &lt;br /&gt;
&lt;br /&gt;
== Controller Node == &lt;br /&gt;
&lt;br /&gt;
In /etc/nova/nova.conf ensure you have the following line: &lt;br /&gt;
   security_group_api=nova&lt;br /&gt;
&lt;br /&gt;
If you change, restart the nova services&lt;br /&gt;
   # for i in $(initctl list | grep '^nova' | awk '{print $1}'); do service $i restart; done&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
=== Installation === &lt;br /&gt;
&lt;br /&gt;
1. Neutron server uses MySQL database. Make sure you have running MySQL database for neutron. &lt;br /&gt;
&lt;br /&gt;
If Neutron server is already running, you should stop it. &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/neutron-server stop&lt;br /&gt;
&lt;br /&gt;
If you want to use a database that was created you have to drop it and create another one. For example: &lt;br /&gt;
&lt;br /&gt;
  mysql -u root -ppassword &amp;lt;&amp;lt;EOF&lt;br /&gt;
  drop database if exists neutron;&lt;br /&gt;
  create database neutron;&lt;br /&gt;
  EOF&lt;br /&gt;
&lt;br /&gt;
If you want to create a new one: &lt;br /&gt;
&lt;br /&gt;
  mysql -u root -ppassword &amp;lt;&amp;lt;EOF&lt;br /&gt;
  drop database if exists neutron;&lt;br /&gt;
  create database neutron;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password';&lt;br /&gt;
  GRANT ALL PRIVILEGES ON neutron.* TO 'neutron' IDENTIFIED BY 'password';&lt;br /&gt;
  FLUSH PRIVILEGES;&lt;br /&gt;
  EOF&lt;br /&gt;
&lt;br /&gt;
2. Install the required Deb for the Mellanox Neutron plugin: &lt;br /&gt;
&lt;br /&gt;
   apt-get install -y neutron-plugin-mlnx-agent&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
4. Change /etc/default/neutron-server :&lt;br /&gt;
&lt;br /&gt;
   NEUTRON_PLUGIN_CONFIG=&amp;quot;/etc/neutron/plugins/mlnx/mlnx_conf.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Make the Mellanox plugin the current Neutron plugin by editing neutron.conf and changing core_plugin. &lt;br /&gt;
&lt;br /&gt;
  core_plugin = neutron.plugins.mlnx.mlnx_plugin.MellanoxEswitchPlugin&lt;br /&gt;
&lt;br /&gt;
2. Plugin configuration: Edit the configuration file: /etc/neutron/plugins/mlnx/mlnx_conf.ini &lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   tenant_network_type - must be set on of supported tenant network types.  &lt;br /&gt;
                        Possible values: 'vlan' for Ethernet or 'ib' for Infiniband.'vlan' is the default.&lt;br /&gt;
   network_vlan_ranges - must be configured to specify the names of the  physical    &lt;br /&gt;
 &lt;br /&gt;
   networks managed by the mellanox plugin, &lt;br /&gt;
   along with the ranges of VLAN IDs available on each physical network for allocation to virtual networks.   &lt;br /&gt;
   Possible range is vlan range is 1-4093. &lt;br /&gt;
   The default  is &amp;quot;default:1:100&amp;quot; &lt;br /&gt;
   &amp;lt;fabric name &amp;gt;:&amp;lt;vlan range start&amp;gt;:&amp;lt;vlan end range&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   [agent]&lt;br /&gt;
   rpc_support_old_agents = True&lt;br /&gt;
   Note: rpc_support_old_agents should be set to 'True' (non default).&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
&lt;br /&gt;
Start (or restart) the Neutron server &lt;br /&gt;
   #/etc/init.d/neutron-server start&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
1. If you didn't download Mellanox OpenStack debian files download it : &lt;br /&gt;
&lt;br /&gt;
http://www.mellanox.com/downloads/solutions/openstack/&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd debian files: &lt;br /&gt;
   dpkg -i eswitchd_0.8-1_amd64.deb&lt;br /&gt;
   dpkg -i python-mlnxvif_0.6-1_all.deb&lt;br /&gt;
   apt-get install -f # fix dependencies&lt;br /&gt;
   apt-get install -y neutron-plugin-mlnx-agent&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
&lt;br /&gt;
=== Configuration === &lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed &lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click [http://community.mellanox.com/docs/DOC-1126 here]) &lt;br /&gt;
&lt;br /&gt;
2. Modify /etc/nova/nova.conf &lt;br /&gt;
&lt;br /&gt;
   compute_driver=nova.virt.libvirt.driver.LibvirtDriver&lt;br /&gt;
   libvirt_vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
   security_group_api=nova&lt;br /&gt;
   connection_type=libvirt&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized ,mode: change the following: &lt;br /&gt;
&lt;br /&gt;
   libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
  [AGENT]&lt;br /&gt;
  rpc_support_old_agents = True&lt;br /&gt;
  [ESWITCH]&lt;br /&gt;
   physical_interface_mapping -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only releavant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   vnic_type - type of VM network interface: 'mlnx_direct' or 'hostdev'  according to libvirt terminology.&lt;br /&gt;
        hostdev: this is the traditional method of assigning any generic PCI device to a guest (SR-IOV).&lt;br /&gt;
        mlnx_direct: this is a method to provide macvtap device on top of the PCI device (default).&lt;br /&gt;
        bridge:  - When using Linux Bridge Plugin on top of eIPoIB device&lt;br /&gt;
   daemon_endpoint - 'tcp://127.0.0.1:60001'&lt;br /&gt;
&lt;br /&gt;
For a plugin configuration file example (Havana), please refer to Mellanox config *ini file (click [https://github.com/openstack/neutron/blob/stable/havana/etc/neutron/plugins/mlnx/mlnx_conf.ini here])&lt;br /&gt;
&lt;br /&gt;
4. (Optional) Modify /etc/init/neutron-plugin-mlnx-agent.conf as described in LP bug #[https://bugs.launchpad.net/ubuntu/+source/neutron/+bug/1257732 1257732]&lt;br /&gt;
&lt;br /&gt;
5. (Optional) Check that ebrctl is listed somewhere in /etc/nova/rootwrap.d/*, otherwise add this to /etc/nova/rootwrap.d/compute.filters file in the [Filters] section.&lt;br /&gt;
  ebrctl: CommandFilter, ebrctl, root&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova. &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent &lt;br /&gt;
&lt;br /&gt;
  #/etc/init.d/neutron-plugin-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install the Neutron Linux bridge plugin, the Neutron DHCP agent and the Neutron L3 agent:&lt;br /&gt;
&lt;br /&gt;
  # apt-get install neutron-plugin-linuxbridge-agent neutron-dhcp-agent neutron-l3-agent&lt;br /&gt;
&lt;br /&gt;
2. Copy /etc/neutron/neutron.conf from the Compute node.&lt;br /&gt;
&lt;br /&gt;
3. Change the following configuration of the ini file (/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/mlnx/mlnx_conf.ini . &lt;br /&gt;
   [linux_bridge]  &lt;br /&gt;
   physical_interface_mappings = default:eth2 &lt;br /&gt;
&lt;br /&gt;
4. Configure the DHCP agent according to the following guidelines &lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   [DEFAULT] &lt;br /&gt;
  interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#section_adv_cfg_dhcp_agent OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
5. Configure the L3 agent according to the following guidelines &lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/l3_agent.ini with:&lt;br /&gt;
   [DEFAULT] &lt;br /&gt;
  interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#section_adv_cfg_l3_agent OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
6. Configure the Metadata agent according to the [http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html#nova_config_metadata OpenStack documentation]&lt;br /&gt;
&lt;br /&gt;
7. Start the Neutron Linux Bridge, DHCP and L3 agents &lt;br /&gt;
  # restart neutron-plugin-linuxbridge-agent&lt;br /&gt;
  # restart neutron-dhcp-agent&lt;br /&gt;
  # restart neutron-l3-agent&lt;br /&gt;
  # restart neutron-metadata-agent&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
* If you're seeing request timeout errors in the plugin's logs, make sure that the eswitchd service is started and try to increase the request_timeout value in the plugin configuration file.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack&amp;diff=62573</id>
		<title>Mellanox-OpenStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack&amp;diff=62573"/>
				<updated>2014-09-15T13:14:20Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Mellanox Neutron Plugin  =&lt;br /&gt;
Mellanox supports the OpenStack Neutron releases with open source networking components through Neutron. It delivers higher compute and storage performance and additional functionality, such as NIC based switching to provide better security and isolation for virtual cloud environments.&lt;br /&gt;
&lt;br /&gt;
For additional information about Mellanox NeutronPlugin refer to [https://wiki.openstack.org/wiki/Mellanox-Neutron Mellanox Neutron] wiki page.&lt;br /&gt;
&lt;br /&gt;
= Mellanox Cinder Plugin =&lt;br /&gt;
Mellanox provides an OpenStack Storage plugin that enables running storage volume traffic over native RDMA transport, providing 5X faster throughput over standard TCP/IP, while significantly increasing infrastructure efficiency by using less CPU resources.&lt;br /&gt;
&lt;br /&gt;
For additional information about Mellanox Cinder refer to [https://wiki.openstack.org/wiki/Mellanox-Cinder Mellanox Cinder] wiki page.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ OpenStack solution page at Mellanox site]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED web page]&lt;br /&gt;
&lt;br /&gt;
4. [http://community.mellanox.com/community/support/solutions Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. [https://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking SR-IOV Passthrough for Networking]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=62572</id>
		<title>Juno-SR-IOV</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=62572"/>
				<updated>2014-09-15T13:14:01Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Replaced content with &amp;quot;Refer to this page: https://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Refer to this page: https://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=SR-IOV-Passthrough-For-Networking&amp;diff=62571</id>
		<title>SR-IOV-Passthrough-For-Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=SR-IOV-Passthrough-For-Networking&amp;diff=62571"/>
				<updated>2014-09-15T13:12:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Created page with &amp;quot;=SR-IOV Networking in OpenStack Juno=  OpenStack Juno adds inbox support to request VM access to virtual network via SR-IOV NIC. With the introduction of SR-IOV based NIC, the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=SR-IOV Networking in OpenStack Juno= &lt;br /&gt;
OpenStack Juno adds inbox support to request VM access to virtual network via SR-IOV NIC. With the introduction of SR-IOV based NIC, the traditional virtual bridge is no longer required.  Each SR-IOV port is associated with a virtual function (VF). SR-IOV ports may be provided by Hardware-based Virtual Eithernet Bridging (HW VEB); or they may be extended to an upstream physical switch (IEEE 802.1br).  &lt;br /&gt;
There are two ways that SR-IOV port may be connected:&lt;br /&gt;
* directly connected to its VF&lt;br /&gt;
* connected with a macvtap device that resides on the host, which is then connected to the corresponding VF.  &lt;br /&gt;
&lt;br /&gt;
==Nova==&lt;br /&gt;
Nova support for SR-IOV enables to schedule an instance with SR-IOV ports based on their network connectivity. The neutron ports' associated physical networks have to be used in making the scheduling decision.&lt;br /&gt;
PCI Whitelist was enchanced to allow tags to be associated with PCI devices. PCI devices available for SR-IOV networking should be tagged with physical_network label.&lt;br /&gt;
&lt;br /&gt;
For SR-IOV networking, a pre-defined tag &amp;quot;physical_network&amp;quot; is used to define the physical network that the devices are attached to. A whitelist entry is defined as:&lt;br /&gt;
    [&amp;quot;device_id&amp;quot;: &amp;quot;&amp;lt;id&amp;gt;&amp;quot;,] [&amp;quot;product_id&amp;quot;: &amp;quot;&amp;lt;id&amp;gt;&amp;quot;,]&lt;br /&gt;
    [&amp;quot;address&amp;quot;: &amp;quot;[[[[&amp;lt;domain&amp;gt;]:]&amp;lt;bus&amp;gt;]:][&amp;lt;slot&amp;gt;][.[&amp;lt;function&amp;gt;]]&amp;quot; |&lt;br /&gt;
     &amp;quot;devname&amp;quot;: &amp;quot;Ethernet Interface Name&amp;quot;,]  &lt;br /&gt;
    &amp;quot;physical_network&amp;quot;:&amp;quot;name string of the physical network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;id&amp;gt; can be a '*' or a valid device/product id as displayed by the linux utility lspci. The address uses the same syntax as it's in lspci.  The devname can be a valid PCI device name. The only device names that are supportedare those that are displayed by the linux utility ifconfig -a and correspond to either a PF or a VF on a vNIC.&lt;br /&gt;
&lt;br /&gt;
If the device defined by the address or devname corresponds to a SR-IOV PF, all the VFs under the PF will match the entry.&lt;br /&gt;
&lt;br /&gt;
Multiple whitelist entries per host are supported.&lt;br /&gt;
&lt;br /&gt;
==Neutron== &lt;br /&gt;
Neutron support for SR-IOV requires ML2 Plugin with SR-IOV supporting Mechanism Driver.&lt;br /&gt;
Currently there is ML2 Mechanism Driver for SR-IOV capable NIC based switching (HW VEB).&lt;br /&gt;
There are Network Adapters from different vendors that may differ by supporting various functionality.&lt;br /&gt;
If VF link state update is supported by vendor Network Adapter, the  SR-IOV NIC L2 Agent should be deployed to leverage this functionality .&lt;br /&gt;
&lt;br /&gt;
==VM creation flow with SR-IOV vNIC== &lt;br /&gt;
* Create one or more neutron ports&lt;br /&gt;
   neutron port-create &amp;lt;net-id&amp;gt; --binding:vnic-type direct&lt;br /&gt;
&lt;br /&gt;
* Boot VM with one or more neutron ports&lt;br /&gt;
   nova boot --flavor m1.large --image &amp;lt;image&amp;gt;&lt;br /&gt;
          --nic port-id=&amp;lt;port1&amp;gt; --nic port-id=&amp;lt;port2&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Note that in the nova boot API, users can specify either a port-id or a net-id. If it's the latter case, it's assumed that the user is requesting a normal virtual port (which is not a SR-IOV port).&lt;br /&gt;
&lt;br /&gt;
=SR-IOV Configuration=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Neutron Server===&lt;br /&gt;
Using ML2 Neutron plugin modify /etc/neutron/plugins/ml2/ml2_conf.ini:&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 type_drivers = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,sriovnicswitch&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
&lt;br /&gt;
Make sure  /etc/neutron/plugins/ml2/ml2_conf_sriov.ini has the following section:&lt;br /&gt;
&lt;br /&gt;
 [ml2_sriov]&lt;br /&gt;
 agent_required = True&lt;br /&gt;
&lt;br /&gt;
Neutron server should be run with the two configuration files /etc/neutron/plugins/ml2/ml2_conf.in and /etc/neutron/plugins/ml2/ml2_conf_sriov.ini &lt;br /&gt;
 neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini&lt;br /&gt;
&lt;br /&gt;
==Compute==&lt;br /&gt;
===Nova===&lt;br /&gt;
On each compute you have to associate the Virtual Functions available to each Physical Network.&lt;br /&gt;
You do it by configuring  pci_passthrough_whitelist in /etc/nova/noca.conf&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 pci_passthrough_whitelist = {&amp;quot;address&amp;quot;:&amp;quot;*:0a:00.*&amp;quot;,&amp;quot;physical_network&amp;quot;:&amp;quot;physnet1&amp;quot;}&lt;br /&gt;
This will associate any VF with address that includes ':0a:00.' in it's address to the Physical network physnet1&lt;br /&gt;
&lt;br /&gt;
After configuring the white list you have to restart nova-compute service.&lt;br /&gt;
&lt;br /&gt;
===Neutron===&lt;br /&gt;
If the hardware supports and and you want to enable changing the port admin_state you have to run the Neutron SR-IOV agent.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:'''If you configured agent_required=True on the Neutron server you must run the Agent on each compute node.&lt;br /&gt;
&lt;br /&gt;
In /etc/neutron/plugins/ml2/ml2_conf.ini make sure you have the following:&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 firewall_driver = neutron.agent.firewall.NoopFirewallDriver&lt;br /&gt;
&lt;br /&gt;
Modify  /etc/neutron/plugins/ml2/ml2_conf_sriov.ini as follows&lt;br /&gt;
&lt;br /&gt;
 [sriov_nic]&lt;br /&gt;
 physical_device_mappings = physnet1:eth1&lt;br /&gt;
 exclude_devices =&lt;br /&gt;
&lt;br /&gt;
physnet1 is the physical network&lt;br /&gt;
eth1 if the Physical Function (PF)&lt;br /&gt;
exclude_devices is empty so All the VFs associated with eth1 are allowed to be configured by the agent.&lt;br /&gt;
&lt;br /&gt;
After modifying the configuration file start the Neutron SR-IOV agent:&lt;br /&gt;
 neutron-sriov-nic-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini&lt;br /&gt;
&lt;br /&gt;
====Exclude VFs====&lt;br /&gt;
If you want to exclude some of the VFs so the agent won't configure them you need to list them in the sriov_nic section:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' exclude_devices = eth1:0000:07:00.2; 0000:07:00.3, eth2:0000:05:00.1; 0000:05:00.2&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[http://community.mellanox.com/docs/DOC-1484 Openstack ML2 SR-IOV driver support]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=62485</id>
		<title>Juno-SR-IOV</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=62485"/>
				<updated>2014-09-12T02:32:23Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=This Page is under construction=&lt;br /&gt;
Once it will be ready, the content might move to another location.&lt;br /&gt;
=SR-IOV in OpenStack Juno= &lt;br /&gt;
OpenStack Juno adds inbox support for SR-IOV ....&lt;br /&gt;
==Nova==&lt;br /&gt;
Nova support for SR-IOV is ....&lt;br /&gt;
&lt;br /&gt;
==Neutron== &lt;br /&gt;
Neutron support for SR-IOV is ...&lt;br /&gt;
embedded NIC is ...&lt;br /&gt;
&lt;br /&gt;
=SR-IOV Configuration=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Neutron Server===&lt;br /&gt;
Using ML2 Neutron plugin modify /etc/neutron/plugins/ml2/ml2_conf.ini:&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 type_drivers = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,sriovnicswitch&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
&lt;br /&gt;
Make sure  /etc/neutron/plugins/ml2/ml2_conf_sriov.ini has the following section:&lt;br /&gt;
&lt;br /&gt;
 [ml2_sriov]&lt;br /&gt;
 agent_required = True&lt;br /&gt;
&lt;br /&gt;
Neutron server should be run with the two configuration files /etc/neutron/plugins/ml2/ml2_conf.in and /etc/neutron/plugins/ml2/ml2_conf_sriov.ini &lt;br /&gt;
 neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini&lt;br /&gt;
&lt;br /&gt;
==Compute==&lt;br /&gt;
===Nova===&lt;br /&gt;
On each compute you have to associate the Virtual Functions available to each Physical Network.&lt;br /&gt;
You do it by configuring  pci_passthrough_whitelist in /etc/nova/noca.conf&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 pci_passthrough_whitelist = {&amp;quot;address&amp;quot;:&amp;quot;*:0a:00.*&amp;quot;,&amp;quot;physical_network&amp;quot;:&amp;quot;physnet1&amp;quot;}&lt;br /&gt;
This will associate any VF with address that includes ':0a:00.' in it's address to the Physical network physnet1&lt;br /&gt;
&lt;br /&gt;
After configuring the white list you have to restart nova-compute service.&lt;br /&gt;
&lt;br /&gt;
===Neutron===&lt;br /&gt;
If the hardware supports and and you want to enable changing the port admin_state you have to run the Neutron SR-IOV agent.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:'''If you configured agent_required=True on the Neutron server you must run the Agent on each compute node.&lt;br /&gt;
&lt;br /&gt;
In /etc/neutron/plugins/ml2/ml2_conf.ini make sure you have the following:&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 firewall_driver = neutron.agent.firewall.NoopFirewallDriver&lt;br /&gt;
&lt;br /&gt;
Modify  /etc/neutron/plugins/ml2/ml2_conf_sriov.ini as follows&lt;br /&gt;
&lt;br /&gt;
 [sriov_nic]&lt;br /&gt;
 physical_device_mappings = physnet1:eth1&lt;br /&gt;
 exclude_devices =&lt;br /&gt;
&lt;br /&gt;
physnet1 is the physical network&lt;br /&gt;
eth1 if the Physical Function (PF)&lt;br /&gt;
exclude_devices is empty so All the VFs associated with eth1 are allowed to be configured by the agent.&lt;br /&gt;
&lt;br /&gt;
After modifying the configuration file start the Neutron SR-IOV agent:&lt;br /&gt;
 neutron-sriov-nic-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini&lt;br /&gt;
&lt;br /&gt;
====Exclude VFs====&lt;br /&gt;
If you want to exclude some of the VFs so the agent won't configure them you need to list them in the sriov_nic section:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' exclude_devices = eth1:0000:07:00.2; 0000:07:00.3, eth2:0000:05:00.1; 0000:05:00.2&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[http://community.mellanox.com/docs/DOC-1484 Openstack ML2 SR-IOV driver support]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=62484</id>
		<title>Juno-SR-IOV</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=62484"/>
				<updated>2014-09-12T02:31:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Exclude VFs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=This Page is under construction=&lt;br /&gt;
Once it will be ready, the content might move to another location.&lt;br /&gt;
=SR-IOV in OpenStack Juno= &lt;br /&gt;
OpenStack Juno adds inbox support for SR-IOV ....&lt;br /&gt;
==Nova==&lt;br /&gt;
Nova support for SR-IOV is ....&lt;br /&gt;
&lt;br /&gt;
==Neutron== &lt;br /&gt;
Neutron support for SR-IOV is ...&lt;br /&gt;
embedded NIC is ...&lt;br /&gt;
&lt;br /&gt;
=SR-IOV Configuration=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Neutron Server===&lt;br /&gt;
Using ML2 Neutron plugin modify /etc/neutron/plugins/ml2/ml2_conf.ini:&lt;br /&gt;
&lt;br /&gt;
 [ml2]&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 type_drivers = vlan&lt;br /&gt;
 mechanism_drivers = openvswitch,sriovnicswitch&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
&lt;br /&gt;
Make sure  /etc/neutron/plugins/ml2/ml2_conf_sriov.ini has the following section:&lt;br /&gt;
&lt;br /&gt;
 [ml2_sriov]&lt;br /&gt;
 agent_required = True&lt;br /&gt;
&lt;br /&gt;
Neutron server should be run with the two configuration files /etc/neutron/plugins/ml2/ml2_conf.in and /etc/neutron/plugins/ml2/ml2_conf_sriov.ini &lt;br /&gt;
 neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini&lt;br /&gt;
&lt;br /&gt;
==Compute==&lt;br /&gt;
===Nova===&lt;br /&gt;
On each compute you have to associate the Virtual Functions available to each Physical Network.&lt;br /&gt;
You do it by configuring  pci_passthrough_whitelist in /etc/nova/noca.conf&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 pci_passthrough_whitelist = {&amp;quot;address&amp;quot;:&amp;quot;*:0a:00.*&amp;quot;,&amp;quot;physical_network&amp;quot;:&amp;quot;physnet1&amp;quot;}&lt;br /&gt;
This will associate any VF with address that includes ':0a:00.' in it's address to the Physical network physnet1&lt;br /&gt;
&lt;br /&gt;
After configuring the white list you have to restart nova-compute service.&lt;br /&gt;
&lt;br /&gt;
===Neutron===&lt;br /&gt;
If the hardware supports and and you want to enable changing the port admin_state you have to run the Neutron SR-IOV agent.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:'''If you configured agent_required=True on the Neutron server you must run the Agent on each compute node.&lt;br /&gt;
&lt;br /&gt;
In /etc/neutron/plugins/ml2/ml2_conf.ini make sure you have the following:&lt;br /&gt;
 [securitygroup]&lt;br /&gt;
 firewall_driver = neutron.agent.firewall.NoopFirewallDriver&lt;br /&gt;
&lt;br /&gt;
Modify  /etc/neutron/plugins/ml2/ml2_conf_sriov.ini as follows&lt;br /&gt;
&lt;br /&gt;
 [sriov_nic]&lt;br /&gt;
 physical_device_mappings = physnet1:eth1&lt;br /&gt;
 exclude_devices =&lt;br /&gt;
&lt;br /&gt;
physnet1 is the physical network&lt;br /&gt;
eth1 if the Physical Function (PF)&lt;br /&gt;
exclude_devices is empty so All the VFs associated with eth1 are allowed to be configured by the agent.&lt;br /&gt;
&lt;br /&gt;
After modifying the configuration file start the Neutron SR-IOV agent:&lt;br /&gt;
 neutron-sriov-nic-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini&lt;br /&gt;
&lt;br /&gt;
====Exclude VFs====&lt;br /&gt;
If you want to exclude some of the VFs so the agent won't configure them you need to list them in the sriov_nic section:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' exclude_devices = eth1:0000:07:00.2; 0000:07:00.3, eth2:0000:05:00.1; 0000:05:00.2&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[http://community.mellanox.com/docs/DOC-1484]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack&amp;diff=61924</id>
		<title>Mellanox-OpenStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-OpenStack&amp;diff=61924"/>
				<updated>2014-09-03T07:41:50Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Mellanox Neutron Plugin  =&lt;br /&gt;
Mellanox supports the OpenStack Neutron releases with open source networking components through Neutron. It delivers higher compute and storage performance and additional functionality, such as NIC based switching to provide better security and isolation for virtual cloud environments.&lt;br /&gt;
&lt;br /&gt;
For additional information about Mellanox NeutronPlugin refer to [https://wiki.openstack.org/wiki/Mellanox-Neutron Mellanox Neutron] wiki page.&lt;br /&gt;
&lt;br /&gt;
= Mellanox Cinder Plugin =&lt;br /&gt;
Mellanox provides an OpenStack Storage plugin that enables running storage volume traffic over native RDMA transport, providing 5X faster throughput over standard TCP/IP, while significantly increasing infrastructure efficiency by using less CPU resources.&lt;br /&gt;
&lt;br /&gt;
For additional information about Mellanox Cinder refer to [https://wiki.openstack.org/wiki/Mellanox-Cinder Mellanox Cinder] wiki page.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ OpenStack solution page at Mellanox site]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED web page]&lt;br /&gt;
&lt;br /&gt;
4. [http://community.mellanox.com/community/support/solutions Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. [https://wiki.openstack.org/wiki/Juno-SR-IOV SR-IOV for Juno]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=61923</id>
		<title>Juno-SR-IOV</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=61923"/>
				<updated>2014-09-03T07:41:07Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=This Page is under construction=&lt;br /&gt;
Once it will be ready, the content might move to another location.&lt;br /&gt;
=SR-IOV in OpenStack Juno= &lt;br /&gt;
OpenStack Juno adds inbox support for SR-IOV ....&lt;br /&gt;
==Nova==&lt;br /&gt;
Nova support for SR-IOV is ....&lt;br /&gt;
&lt;br /&gt;
==Neutron== &lt;br /&gt;
Neutron support for SR-IOV is ...&lt;br /&gt;
embedded NIC is ...&lt;br /&gt;
&lt;br /&gt;
=SR-IOV Configuration=&lt;br /&gt;
General configuration&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=61922</id>
		<title>Juno-SR-IOV</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Juno-SR-IOV&amp;diff=61922"/>
				<updated>2014-09-03T07:40:05Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: Created page with &amp;quot;=SR-IOV in OpenStack Juno=  OpenStack Juno adds inbox support for SR-IOV .... ==Nova== Nova support for SR-IOV is ....  ==Neutron==  Neutron support for SR-IOV is ... embedded...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=SR-IOV in OpenStack Juno= &lt;br /&gt;
OpenStack Juno adds inbox support for SR-IOV ....&lt;br /&gt;
==Nova==&lt;br /&gt;
Nova support for SR-IOV is ....&lt;br /&gt;
&lt;br /&gt;
==Neutron== &lt;br /&gt;
Neutron support for SR-IOV is ...&lt;br /&gt;
embedded NIC is ...&lt;br /&gt;
&lt;br /&gt;
=SR-IOV Configuration=&lt;br /&gt;
General configuration&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55206</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55206"/>
				<updated>2014-06-08T11:23:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Usage Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = mlnx,openvswitch&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. Modify /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
    compute_driver=nova.virt.libvirt.driver.LibvirtDriver&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
    connection_type=libvirt&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized ,mode: change the following:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #/etc/init.d/eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/mlnx/mlnx_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #/etc/init.d/neutron-openvswitch-agent start&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #/etc/init.d/neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #/etc/init.d/opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Change the following in  the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = hostdev&lt;br /&gt;
   network_vlan_ranges = default:1:10 &lt;br /&gt;
   (sql_connection and reconnect_interval  can be configured as described above)&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
&lt;br /&gt;
On the controller, configure the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = bridge&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Perform the following changes:&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #/etc/init.d/eswitchd restart&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
   libvirt_vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
&lt;br /&gt;
And restart openibd:&lt;br /&gt;
 #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example:&lt;br /&gt;
Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
   #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
   '''driver: eth_ipoib'''&lt;br /&gt;
   version: 1.0.0&lt;br /&gt;
   firmware-version: 1 &lt;br /&gt;
   bus-info: ib0&lt;br /&gt;
   supports-statistics: yes&lt;br /&gt;
   supports-test: no&lt;br /&gt;
   supports-eeprom-access: no&lt;br /&gt;
   supports-register-dump: no&lt;br /&gt;
   supports-priv-flags: no&lt;br /&gt;
&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [linux_bridge] &lt;br /&gt;
   physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Configure the Linux Bridge VIF Driver in /etc/nova/nova.conf&lt;br /&gt;
   #libvirt_vif_driver=nova.virt.libvirt.vif.NeutronLinuxBridgeVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
After confiuration Linux Bridge agent should be restarted.&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Configure the Linux bridge plugin as described in InfiniBand Para-Virtualized section (above).&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
In case you use MLNX-OFED older than 2.1,  Copy ipoibd  and override /sbin/ipoibd&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/ipoibd&lt;br /&gt;
   #cp ipoibd /sbin/ipoibd&lt;br /&gt;
&lt;br /&gt;
Download and apply a patch for Linux Bridge Agent:&lt;br /&gt;
&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/patches/linuxbridge_neutron_agent.py.patch&lt;br /&gt;
   #cd /usr/lib/python2.6/site-packages/neutron/plugins/linuxbridge/agent&lt;br /&gt;
   #patch -p1 &amp;lt; linux_bridge_agent.py.patch &lt;br /&gt;
&lt;br /&gt;
Restart openibd&lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Start linux bridge agent&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55205</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55205"/>
				<updated>2014-06-08T11:23:10Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = mlnx,openvswitch&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. Modify /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
    compute_driver=nova.virt.libvirt.driver.LibvirtDriver&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
    connection_type=libvirt&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized ,mode: change the following:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #/etc/init.d/eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/mlnx/mlnx_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #/etc/init.d/neutron-openvswitch-agent start&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #/etc/init.d/neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #/etc/init.d/opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Change the following in  the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = hostdev&lt;br /&gt;
   network_vlan_ranges = default:1:10 &lt;br /&gt;
   (sql_connection and reconnect_interval  can be configured as described above)&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
&lt;br /&gt;
On the controller, configure the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = bridge&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Perform the following changes:&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #/etc/init.d/eswitchd restart&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
   libvirt_vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
&lt;br /&gt;
And restart openibd:&lt;br /&gt;
 #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example:&lt;br /&gt;
Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
   #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
   '''driver: eth_ipoib'''&lt;br /&gt;
   version: 1.0.0&lt;br /&gt;
   firmware-version: 1 &lt;br /&gt;
   bus-info: ib0&lt;br /&gt;
   supports-statistics: yes&lt;br /&gt;
   supports-test: no&lt;br /&gt;
   supports-eeprom-access: no&lt;br /&gt;
   supports-register-dump: no&lt;br /&gt;
   supports-priv-flags: no&lt;br /&gt;
&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [linux_bridge] &lt;br /&gt;
   physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Configure the Linux Bridge VIF Driver in /etc/nova/nova.conf&lt;br /&gt;
   #libvirt_vif_driver=nova.virt.libvirt.vif.NeutronLinuxBridgeVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
After confiuration Linux Bridge agent should be restarted.&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Configure the Linux bridge plugin as described in InfiniBand Para-Virtualized section (above).&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
In case you use MLNX-OFED older than 2.1,  Copy ipoibd  and override /sbin/ipoibd&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/ipoibd&lt;br /&gt;
   #cp ipoibd /sbin/ipoibd&lt;br /&gt;
&lt;br /&gt;
Download and apply a patch for Linux Bridge Agent:&lt;br /&gt;
&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/patches/linuxbridge_neutron_agent.py.patch&lt;br /&gt;
   #cd /usr/lib/python2.6/site-packages/neutron/plugins/linuxbridge/agent&lt;br /&gt;
   #patch -p1 &amp;lt; linux_bridge_agent.py.patch &lt;br /&gt;
&lt;br /&gt;
Restart openibd&lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Start linux bridge agent&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/openstack/pdf/mellanox-openstack-solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55204</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55204"/>
				<updated>2014-06-08T11:20:41Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Network Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = mlnx,openvswitch&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. Modify /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
    compute_driver=nova.virt.libvirt.driver.LibvirtDriver&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
    connection_type=libvirt&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized ,mode: change the following:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #/etc/init.d/eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/mlnx/mlnx_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #/etc/init.d/neutron-openvswitch-agent start&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5. Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6. Start the l3 Agent:&lt;br /&gt;
 #/etc/init.d/neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #/etc/init.d/opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Change the following in  the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = hostdev&lt;br /&gt;
   network_vlan_ranges = default:1:10 &lt;br /&gt;
   (sql_connection and reconnect_interval  can be configured as described above)&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
&lt;br /&gt;
On the controller, configure the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = bridge&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Perform the following changes:&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #/etc/init.d/eswitchd restart&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
   libvirt_vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
&lt;br /&gt;
And restart openibd:&lt;br /&gt;
 #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example:&lt;br /&gt;
Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
   #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
   '''driver: eth_ipoib'''&lt;br /&gt;
   version: 1.0.0&lt;br /&gt;
   firmware-version: 1 &lt;br /&gt;
   bus-info: ib0&lt;br /&gt;
   supports-statistics: yes&lt;br /&gt;
   supports-test: no&lt;br /&gt;
   supports-eeprom-access: no&lt;br /&gt;
   supports-register-dump: no&lt;br /&gt;
   supports-priv-flags: no&lt;br /&gt;
&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [linux_bridge] &lt;br /&gt;
   physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Configure the Linux Bridge VIF Driver in /etc/nova/nova.conf&lt;br /&gt;
   #libvirt_vif_driver=nova.virt.libvirt.vif.NeutronLinuxBridgeVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
After confiuration Linux Bridge agent should be restarted.&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Configure the Linux bridge plugin as described in InfiniBand Para-Virtualized section (above).&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
In case you use MLNX-OFED older than 2.1,  Copy ipoibd  and override /sbin/ipoibd&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/ipoibd&lt;br /&gt;
   #cp ipoibd /sbin/ipoibd&lt;br /&gt;
&lt;br /&gt;
Download and apply a patch for Linux Bridge Agent:&lt;br /&gt;
&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/patches/linuxbridge_neutron_agent.py.patch&lt;br /&gt;
   #cd /usr/lib/python2.6/site-packages/neutron/plugins/linuxbridge/agent&lt;br /&gt;
   #patch -p1 &amp;lt; linux_bridge_agent.py.patch &lt;br /&gt;
&lt;br /&gt;
Restart openibd&lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Start linux bridge agent&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	<entry>
		<id>https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55203</id>
		<title>Mellanox-Neutron-Icehouse-Redhat</title>
		<link rel="alternate" type="text/html" href="https://wiki.openstack.org/w/index.php?title=Mellanox-Neutron-Icehouse-Redhat&amp;diff=55203"/>
				<updated>2014-06-08T11:15:10Z</updated>
		
		<summary type="html">&lt;p&gt;Ophir Maor: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  &lt;br /&gt;
= Page is under construction =&lt;br /&gt;
&lt;br /&gt;
Note: The page is not ready yet. &lt;br /&gt;
&lt;br /&gt;
Once it will be ready, the note will be removed.&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
== Mellanox Neutron ML2 Driver ==&lt;br /&gt;
Mellanox ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. &lt;br /&gt;
&lt;br /&gt;
This driver supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox ML2 Mechanism Driver provides functional parity with Mellanox Neutron plugin. &lt;br /&gt;
&lt;br /&gt;
Mellanox ML2 Mechanism Driver supports DIRECT (pci passthrough) and MACVTAP (virtual interface with a tap-like software interface) vnic types. For vnic type configuration API details, please refer to configuration reference guide (click [http://docs.openstack.org/api/openstack-network/2.0/content/binding_ext_ports.html here]). Hardware vNICs mapped to the guest VMs allow higher performance and advanced features such as RDMA (remote direct memory access). &lt;br /&gt;
&lt;br /&gt;
The driver supports VLAN network type to facilitate virtual networks either on Ethernet or InfiniBand fabrics.&lt;br /&gt;
 &lt;br /&gt;
• Mellanox OpenStack Neutron Agent (L2 Agent) runs on each compute node. &lt;br /&gt;
&lt;br /&gt;
• Agent should apply VIF connectivity based on mapping between a VIF (VM vNIC) and Embedded Switch port.&lt;br /&gt;
&lt;br /&gt;
== Mellanox Neutron Plugin ==&lt;br /&gt;
Please note,&lt;br /&gt;
Mellanox Plug-in is deprecated in the Icehouse release and won't be supported in the Juno release.&lt;br /&gt;
The features in the plug-in are now part of the ML2 plug-in in the form of Mellanox mechanism driver.&lt;br /&gt;
&lt;br /&gt;
For details regarding Mellanox Neutron plugin, please refer to https://wiki.openstack.org/wiki/Mellanox-Neutron-Havana-Redhat.&lt;br /&gt;
&lt;br /&gt;
==  Mellanox Nova VIF Driver ==&lt;br /&gt;
The Mellanox Nova VIF driver should be used when running Mellanox Mechnism Driver. The VIF driver supports the VIF plugin by binding vNIC of type DIRECT  to the embedded switch port.&lt;br /&gt;
VIF Driver for MACVTAP type is included in Nova libvirt generic vif driver. For SR-IOV pass-through (vnic type DIRECT) one needs to use VIF driver from Mellanox git repository or RPM.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Installation with Red Hat Enterprise Linux OpenStack Platform'''&lt;br /&gt;
&lt;br /&gt;
Make sure you follow Red Hat prerequisites as required by Red Hat Enterprise Linux OpenStack Platform. Please refer to https://access.redhat.com/products/Cloud/OpenStack/ for additional information regarding this product.&lt;br /&gt;
&lt;br /&gt;
It is assumed that OpenStack is installed with ML2 plugin.&lt;br /&gt;
&lt;br /&gt;
Other Red Hat references:&lt;br /&gt;
&lt;br /&gt;
1. [http://www.redhat.com/resourcelibrary/reference-architectures/deploying-and-using-red-hat-openstack-rhos-2-dot-1 RHOS reference document]&lt;br /&gt;
&lt;br /&gt;
2. [http://openstack.redhat.com/Quickstart RDO QuickStart]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Neutron server'''&lt;br /&gt;
&lt;br /&gt;
No special prerequisites needed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Compute Nodes'''&lt;br /&gt;
&lt;br /&gt;
1. python-pip (use &amp;quot;yum install python-pip&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
2. Compute nodes should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
3. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
4. Enable SR-IOV on ConnectX-3 card. Refer to [http://community.mellanox.com/docs/DOC-1317 Mellanox Community]&lt;br /&gt;
&lt;br /&gt;
5. The software package iproute2 - ([https://www.kernel.org/pub/linux/utils/net/iproute2/ Code] [http://www.policyrouting.org/iproute2.doc.html Documentation]) must be installed. Required only to be installed on compute nodes&lt;br /&gt;
&lt;br /&gt;
6. oslo.config (use &amp;quot;pip-python install oslo.config&amp;quot;). Reuired only to be installed on compute nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Network Node'''&lt;br /&gt;
&lt;br /&gt;
1. Network node should be equipped with Mellanox ConnectX®-3 Network Adapter ([http://www.mellanox.com/page/infiniband_cards_overview link])&lt;br /&gt;
&lt;br /&gt;
2. Mellanox OFED 2.2 or greater is installed. Refer to Mellanox website for the latest OFED ([http://www.mellanox.com/page/products_dyn?product_family=26&amp;amp;mtag=linux_sw_drivers])&lt;br /&gt;
&lt;br /&gt;
= Ethernet Network =&lt;br /&gt;
== Neutron Server Node ==&lt;br /&gt;
&lt;br /&gt;
=== Installation   ===&lt;br /&gt;
1. Make sure ML2 plugin is the current Neutron plugin by checking core_plugin option in /etc/neutron/neutron.conf:&lt;br /&gt;
   core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin&lt;br /&gt;
&lt;br /&gt;
2. Make sure /etc/neutron/plugin.ini is pointing at (symbolic link) /etc/neutron/plugins/ml2/ml2_conf.ini&lt;br /&gt;
&lt;br /&gt;
3. Modify /etc/neutron/plugins/ml2/ml2_conf.ini and include the following: &lt;br /&gt;
 [ml2]&lt;br /&gt;
 type_drivers = vlan,flat&lt;br /&gt;
 tenant_network_types = vlan&lt;br /&gt;
 mechanism_drivers = mlnx,openvswitch&lt;br /&gt;
 [ml2_type_vlan]&lt;br /&gt;
 network_vlan_ranges = default:2:100&lt;br /&gt;
 [eswitch]&lt;br /&gt;
 vnic_type = hostdev&lt;br /&gt;
 apply_profile_patch = True&lt;br /&gt;
&lt;br /&gt;
Click [http://docs.openstack.org/trunk/config-reference/content/networking-options-plugins-ml2.html here] for ML2 configuration options.&lt;br /&gt;
&lt;br /&gt;
=== Start Services ===&lt;br /&gt;
Start (or restart) the Neutron server&lt;br /&gt;
   #service neutron-server restart&lt;br /&gt;
&lt;br /&gt;
==  Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
1. Download Mellanox OpenStack repo file download it :&lt;br /&gt;
 #wget -O /etc/yum.repos.d/mlnx-icehouse.repo  http://www.mellanox.com/downloads/solutions/openstack/icehouse/repo/mlnx-icehouse/mlnx-icehouse.repo&lt;br /&gt;
&lt;br /&gt;
2. Install the eswitchd RPM:&lt;br /&gt;
 #yum install eswitchd&lt;br /&gt;
&lt;br /&gt;
3. In case you would like to use Ethernet in para-virtualized mode the VIF driver is already included in Nova package. Otherwise, Install Mellanox VIF driver (Make sure nova is installed on your server)&lt;br /&gt;
 #yum install mlnxvif&lt;br /&gt;
&lt;br /&gt;
4. Install the required RPM for the Neutron agent:&lt;br /&gt;
 #yum install openstack-neutron-mellanox&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
1. Configure /etc/eswitchd/eswitchd.conf if needed&lt;br /&gt;
&lt;br /&gt;
Please Refer to Mellanox Community for the eSwitchd installation notes ( click  [http://community.mellanox.com/docs/DOC-1126 here])&lt;br /&gt;
&lt;br /&gt;
2. Modify /etc/nova/nova.conf&lt;br /&gt;
&lt;br /&gt;
    compute_driver=nova.virt.libvirt.driver.LibvirtDriver&lt;br /&gt;
    vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
    connection_type=libvirt&lt;br /&gt;
&lt;br /&gt;
In case you didn't install the Mellanox VIF driver, and you plan to use Ethernet only in paravirtualized ,mode: change the following:&lt;br /&gt;
    vif_driver=nova.virt.libvirt.vif.LibvirtGenericVIFDriver&lt;br /&gt;
&lt;br /&gt;
3. Modify the /etc/neutron/plugins/mlnx/mlnx_conf.ini file to reflect your environment. &lt;br /&gt;
&lt;br /&gt;
   [AGENT]&lt;br /&gt;
   '''polling_interval''' - Polling interval (in seconds) for existing vNICs. The default is 2 seconds.&lt;br /&gt;
   '''rpc'''  - must be set to 'True'&lt;br /&gt;
&lt;br /&gt;
   [ESWITCH]&lt;br /&gt;
   '''physical_interface_mapping''' -  the network_interface_mappings maps each physical network name to the physical interface (on top of Mellanox Adapter) connecting the node to that physical network. The format of this paramter is:     &amp;lt;fabric name&amp;gt;:&amp;lt; PF name&amp;gt; (Only relevant on Compute node). PF Name can either be the PF (Physical Function) Name or 'autoeth' for automatic Ethernet configuration,'autoib' for automatic Infiniband configuration.The default is  &amp;quot;default:autoeth&amp;quot;.  &lt;br /&gt;
   '''daemon_endpoint''' - eswitch daemon end point connection (URL) (default value='tcp://127.0.0.1:60001')&lt;br /&gt;
   '''request_timeout''' - the number of milliseconds the agent will wait for response on request to daemon. (default=3000 msec)&lt;br /&gt;
							  &lt;br /&gt;
For a plugin configuration file example (Icehouse), please refer to [https://github.com/openstack/neutron/blob/stable/icehouse/etc/neutron/plugins/mlnx/mlnx_conf.ini Mellanox config ini file].&lt;br /&gt;
&lt;br /&gt;
=== Start Services  ===&lt;br /&gt;
&lt;br /&gt;
1. Restart Nova.&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
2. Start eswitch Daemon &lt;br /&gt;
    #/etc/init.d/eswitchd start&lt;br /&gt;
&lt;br /&gt;
3. Start the Neutron agent&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent start&lt;br /&gt;
&lt;br /&gt;
Note: eswitch Daemon should be running before the Neutron Agent is started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
1. Install Neutron Open vSwitch Agent, Neutron dhcp Agent and l3 Agent:&lt;br /&gt;
&lt;br /&gt;
   #yum install openstack-neutron-openvswitch&lt;br /&gt;
&lt;br /&gt;
2. Change the following configuration of the ini file (/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini). The &amp;quot;default&amp;quot; in the example is the name of the physical network as configured in /etc/neutron/plugins/mlnx/mlnx_conf.ini  . &lt;br /&gt;
&lt;br /&gt;
   bridge_mappings = default:br-eth3,public:br-ex &lt;br /&gt;
(Here public is the physical external network)&lt;br /&gt;
&lt;br /&gt;
3. Configure the DHCP server according to the following guidelines&lt;br /&gt;
&lt;br /&gt;
Update the following file: /etc/neutron/dhcp_agent.ini with:&lt;br /&gt;
   interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver &lt;br /&gt;
&lt;br /&gt;
For additional information refer to:&lt;br /&gt;
http://docs.openstack.org/trunk/openstack-network/admin/content/adv_cfg_dhcp_agent.html&lt;br /&gt;
&lt;br /&gt;
4. Start the DHCP server&lt;br /&gt;
   #/etc/init.d/neutron-openvswitch-agent start&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent start&lt;br /&gt;
&lt;br /&gt;
5.Configure the l3 agent configuration file /etc/neutron/l3_agent.ini&lt;br /&gt;
&lt;br /&gt;
    gateway_external_network_id = d4fdfebb-e027-4acd-bed4-1d96e896f336&lt;br /&gt;
    router_id = 41bf1aa0-3daf-4f51-9d23-0a4b15020c36&lt;br /&gt;
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver&lt;br /&gt;
    external_network_bridge = br-ex&lt;br /&gt;
&lt;br /&gt;
The above is an example for configuring one router for tenants. Your values for gateway_external_network_id,router_id  and external_network_bridge  may differ.&lt;br /&gt;
&lt;br /&gt;
6.Start the l3 Agent:&lt;br /&gt;
 #/etc/init.d/neutron-l3-agent restart&lt;br /&gt;
&lt;br /&gt;
= InfiniBand Network = &lt;br /&gt;
The Mellanox Neutron Plugin use InfiniBand Partitions (PKeys) to separate Networks.&lt;br /&gt;
&lt;br /&gt;
== SM Configuration  ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - Without UFM===&lt;br /&gt;
&lt;br /&gt;
All the PKeys should be predefined in the partitions.conf file (/etc/opensm/partitions.conf)&lt;br /&gt;
(Automatic cofiguration is planned in future phase)&lt;br /&gt;
&lt;br /&gt;
Add/Change the following in the partitions.conf file&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
For every network you want to configure in Neutron you have to configure the pkey associated with the VLAN of this network (defined in Neutron). &lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If we have 10 VLANs defined in configuration in /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [MLNX]&lt;br /&gt;
   network_vlan_ranges = default:1:10&lt;br /&gt;
&lt;br /&gt;
We'll have the following configuration of the the partitions.conf file:&lt;br /&gt;
 &lt;br /&gt;
   management=0x7fff,ipoib, sl=0, defmember=full : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL;&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/opensm/opensm.conf:&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Restart the openSM &lt;br /&gt;
   #/etc/init.d/opensmd restart&lt;br /&gt;
&lt;br /&gt;
=== OpenSM configuration - With UFM===&lt;br /&gt;
&lt;br /&gt;
1. Make sure UFM is installed and connected to your fabric.&lt;br /&gt;
&lt;br /&gt;
2. Edit /opt/ufm/conf/opensm/opensm.conf and change the following values:&lt;br /&gt;
&lt;br /&gt;
a) set allow_both_pkeys to TRUE (by default allow_both_pkeys are FALSE):&lt;br /&gt;
&lt;br /&gt;
   #Allow both full and limited membership on the same partition&lt;br /&gt;
   allow_both_pkeys TRUE&lt;br /&gt;
&lt;br /&gt;
b) set sm_assign_guid_func to uniq_count (by default sm_assign_guid_func is base_port)&lt;br /&gt;
&lt;br /&gt;
   #SM assigned Alias GUIDs algorithm&lt;br /&gt;
   sm_assign_guid_func uniq_count&lt;br /&gt;
&lt;br /&gt;
3. Edit UFM user extension partitions.conf for overriding default partitioning configuration.&lt;br /&gt;
&lt;br /&gt;
a) Edit file: /opt/ufm/conf/partitions.conf.user_ext (it should be empty after UFM fresh installation)&lt;br /&gt;
&lt;br /&gt;
b) add the following line to file which enable both full and limited management pkey:&lt;br /&gt;
&lt;br /&gt;
   management=0xffff,ipoib, sl=0, defmember=both : ALL, ALL_SWITCHES=full,SELF=full;&lt;br /&gt;
&lt;br /&gt;
c) Add the additional pkeys definitions which are relevant to the specific setup - for example:&lt;br /&gt;
&lt;br /&gt;
   vlan1=0x1, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan2=0x2, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan3=0x3, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan4=0x4, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan5=0x5, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan6=0x6, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan7=0x7, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan8=0x8, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan9=0x9, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xa, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xb, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xc, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xd, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xe, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0xf, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x10, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x11, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
   vlan10=0x12, ipoib, sl=0, defmember=full : ALL_CAS;&lt;br /&gt;
&lt;br /&gt;
4. Restart UFM&lt;br /&gt;
 &lt;br /&gt;
Stand-alone&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmd restart&lt;br /&gt;
&lt;br /&gt;
High-availability&lt;br /&gt;
&lt;br /&gt;
   #/etc/init.d/ufmha restart&lt;br /&gt;
&lt;br /&gt;
== Neutron Server Node==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Change the following in  the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = hostdev&lt;br /&gt;
   network_vlan_ranges = default:1:10 &lt;br /&gt;
   (sql_connection and reconnect_interval  can be configured as described above)&lt;br /&gt;
&lt;br /&gt;
The mapping between VLAN and PKEY is as follows: VLAN X = PKEY 0x8000 + X. For example: vlan 2 is pkey 0x8002&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
&lt;br /&gt;
On the controller, configure the file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
   tenant_network_type = ib&lt;br /&gt;
   vnic_type = bridge&lt;br /&gt;
&lt;br /&gt;
== Compute Nodes ==&lt;br /&gt;
&lt;br /&gt;
=== SR-IOV ===&lt;br /&gt;
SR-IOV is a passthrough mode.&lt;br /&gt;
Perform the following changes:&lt;br /&gt;
&lt;br /&gt;
Create the file /etc/modprobe.d/mlx4_ib.conf and put:&lt;br /&gt;
    options mlx4_ib sm_guid_assign=0&lt;br /&gt;
&lt;br /&gt;
In  The file /etc/neutron/plugins/mlnx/mlnx_conf.ini&lt;br /&gt;
    physical_interface_mapping = default:autoib&lt;br /&gt;
&lt;br /&gt;
Tenant_network_type , vnic_type and network_vlan_ranges parameters should be configured as the controller.&lt;br /&gt;
&lt;br /&gt;
autoib can be replaced by the name of the PF.   &lt;br /&gt;
&lt;br /&gt;
Change the file /etc/eswitchd/eswitchd.conf&lt;br /&gt;
   fabrics  = default:autoib (or default:ib0)&lt;br /&gt;
&lt;br /&gt;
The driver should be restarted &lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
eswitchd should be started and then Neutron agent should be started&lt;br /&gt;
   #/etc/init.d/eswitchd restart&lt;br /&gt;
   #/etc/init.d/neutron-mlnx-agent restart&lt;br /&gt;
&lt;br /&gt;
Verify Mellanox VIF driver is configured in /etc/nova/nova.conf &lt;br /&gt;
   libvirt_vif_driver=mlnxvif.vif.MlxEthVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
=== Para-Virtualized ===&lt;br /&gt;
Here we use the Linux Bridge plugin.&lt;br /&gt;
&lt;br /&gt;
eIPoIB module should be up and configured.In /etc/infiniband/openib.conf:&lt;br /&gt;
 E_IPOIB_LOAD=yes&lt;br /&gt;
&lt;br /&gt;
And restart openibd:&lt;br /&gt;
 #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Please refer to eIPoIB configuration in Mellanox OFED User Manual&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once we have the eIPoIB interface, we use it in the linux bridge agent configuration:&lt;br /&gt;
&lt;br /&gt;
For Example:&lt;br /&gt;
Assuming eth1 is the eIPoIB interface:&lt;br /&gt;
&lt;br /&gt;
To check that the interface type is eIPoIB run the command (verify that the driver is &amp;quot;eth_ipoib&amp;quot;)&lt;br /&gt;
   #ethtool -i &amp;lt;interface&amp;gt; &lt;br /&gt;
   '''driver: eth_ipoib'''&lt;br /&gt;
   version: 1.0.0&lt;br /&gt;
   firmware-version: 1 &lt;br /&gt;
   bus-info: ib0&lt;br /&gt;
   supports-statistics: yes&lt;br /&gt;
   supports-test: no&lt;br /&gt;
   supports-eeprom-access: no&lt;br /&gt;
   supports-register-dump: no&lt;br /&gt;
   supports-priv-flags: no&lt;br /&gt;
&lt;br /&gt;
Change the file /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini&lt;br /&gt;
&lt;br /&gt;
   [linux_bridge] &lt;br /&gt;
   physical_interface_mappings =  default:eth1   &lt;br /&gt;
&lt;br /&gt;
Configure the Linux Bridge VIF Driver in /etc/nova/nova.conf&lt;br /&gt;
   #libvirt_vif_driver=nova.virt.libvirt.vif.NeutronLinuxBridgeVIFDriver&lt;br /&gt;
&lt;br /&gt;
Restart nova&lt;br /&gt;
   #/etc/init.d/openstack-nova-compute restart&lt;br /&gt;
&lt;br /&gt;
After confiuration Linux Bridge agent should be restarted.&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
== Network Node ==&lt;br /&gt;
&lt;br /&gt;
Configure the Linux bridge plugin as described in InfiniBand Para-Virtualized section (above).&lt;br /&gt;
&lt;br /&gt;
=== DHCP Server ===&lt;br /&gt;
&lt;br /&gt;
For DHCP support – The Network node should  use the Mellanox Dnsmasq driver as the DHCP driver.&lt;br /&gt;
   # yum install mlnx-dnsmasq&lt;br /&gt;
&lt;br /&gt;
Change the following in /etc/neutron/dhcp_agent.ini&lt;br /&gt;
   dhcp_driver = mlnx_dhcp.MlnxDnsmasq&lt;br /&gt;
&lt;br /&gt;
In case you use MLNX-OFED older than 2.1,  Copy ipoibd  and override /sbin/ipoibd&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/ipoibd&lt;br /&gt;
   #cp ipoibd /sbin/ipoibd&lt;br /&gt;
&lt;br /&gt;
Download and apply a patch for Linux Bridge Agent:&lt;br /&gt;
&lt;br /&gt;
   #wget http://www.mellanox.com/downloads/solutions/openstack/havana/patches/linuxbridge_neutron_agent.py.patch&lt;br /&gt;
   #cd /usr/lib/python2.6/site-packages/neutron/plugins/linuxbridge/agent&lt;br /&gt;
   #patch -p1 &amp;lt; linux_bridge_agent.py.patch &lt;br /&gt;
&lt;br /&gt;
Restart openibd&lt;br /&gt;
   #/etc/init.d/openibd restart&lt;br /&gt;
&lt;br /&gt;
Start linux bridge agent&lt;br /&gt;
   #/etc/init.d/neutron-linuxbridge-agent restart&lt;br /&gt;
&lt;br /&gt;
Start dhcp server&lt;br /&gt;
   #/etc/init.d/neutron-dhcp-agent restart&lt;br /&gt;
&lt;br /&gt;
= Usage Examples =&lt;br /&gt;
* In order to create SR-IOV interface refer to [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack solution document &amp;quot;Creating an SR-IOV Instance&amp;quot; chapter] &lt;br /&gt;
* In order to create Para-Virtualized interface refer to [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack solution document &amp;quot;Creating a Para-Virtualized vNIC Instance&amp;quot; chapter]&lt;br /&gt;
&lt;br /&gt;
= Known issues and Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
For known issues and troubleshooting options refer to  [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting].&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
1. [http://www.mellanox.com/openstack/ http://www.mellanox.com/openstack/]&lt;br /&gt;
&lt;br /&gt;
2. [https://github.com/mellanox-openstack Source repository]&lt;br /&gt;
&lt;br /&gt;
3. [http://www.mellanox.com/page/products_dyn?product_family=26 Mellanox OFED]&lt;br /&gt;
&lt;br /&gt;
4. [http://www.mellanox.com/sdn/stage/pdf/Mellanox-OpenStack-OpenFlow-Solution.pdf Mellanox OpenStack Solution Reference Architecture]&lt;br /&gt;
&lt;br /&gt;
5. [http://community.mellanox.com/docs/DOC-1127 Mellanox OpenStack Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
For more details, please refer your question to  [mailto:openstack@mellanox.com openstack@mellanox.com]&lt;br /&gt;
&lt;br /&gt;
Return to [https://wiki.openstack.org/wiki/Mellanox-OpenStack  Mellanox-OpenStack] wiki page.&lt;/div&gt;</summary>
		<author><name>Ophir Maor</name></author>	</entry>

	</feed>