Installation runbook for Arista Networks ML2 VLAN driver, L3 plugin integration Partner Name: Product Name: Product Version: Arista Networks Arista EOS EOS-4.14.5 or above MOS Version: Mirantis OpenStack 6.1 MOX Version ( if applicable ): OpenStack version: Product Type: Not Applicable Juno Network switch
Contents Document History Introduction 1.1 Objective 1.2 Target Audience Product Overview Joint reference architecture Networking Physical network topology Installation and Configuration 5.1 Overview of MOS installation steps 5.2 MOS Installation in details 5.3 Creation of OpenStack environment 5.4 MOS Deployment 5.5 Arista driver Installation steps Testing 6.1 Test tools 6.2 Test cases 6.2.2 Deployment modes and configuration options 6.2.3 Functional testing 6.2.4 Performance testing 6.2.5 Negative testing 6.3 Test results (if FUEL HealthCheck is used)
Document History Version Revision Date Description 0.1 31-08-2015 Initial Version
1. Introduction This document serves as a runbook for deploying the Arista Networks ML2 (VLAN) driver and the Arista Networks L3 plugin within a Mirantis OpenStack deployment. Integrating the Arista driver into an OpenStack deployment allows auto-provisioning VLANs on physical networking infrastructure procured from Arista Networks. While this document does provide all the steps required to deploy the Arista driver with Mirantis OpenStack, this document should be used in conjunction with the Arista Networks Configuration Guide and Arista Networks OpenStack Deployment Guide which provide a lot more detail on the steps required to configure Arista EOS and troubleshooting. It is assumed that the reader of this guide is familiar with Mirantis OpenStack, deploying using Fuel and Arista Network product offerings. 1.1 Objective The objective of Mirantis OpenStack certification is to provide Mirantis program partners with an consistent and unified approach for acceptance of their solution into the Mirantis Technology Partner Program. Validation is designed within the context of Mirantis OpenStack infrastructure, including Mirantis Fuel deployment tool and supported cloud reference architectures. 1.2 Target Audience OpenStack administrators, Network administrators who are familiar with Mirantis OpenStack, Fuel and Arista Networks product offerings. 2. Product Overview The Arista ML2 mechanism driver enables Neutron to automate VLAN provisioning on Arista switches. This driver communicates with an Arista switch network through Arista CVX. As VM instances are created on compute nodes, CVX will automatically configure the appropriate Top of Rack (ToR) switch and Ethernet trunk port to allow the required VLAN. This works in parallel with the virtual switch driver (such as OVS) that configures the virtual switch on the hypervisor host, and provides tight integration between network and compute provisioning.
In addition, the Arista Layer 3 plugin serves as a replacement for the existing Neutron layer 3 service plugin and will create switched virtual interfaces (SVIs) on ToR switches when a virtual router is created in Neutron. Once configured, the hardware switch becomes the default gateway for the VMs, and all routing can be done in hardware on the switch, instead of at the Neutron network node. In a multi-link aggregation (MLAG) environment the switches can be configured to use Virtual ARP (VARP) for redundancy. 3. Joint reference architecture In the above image, all dotted lines denote either L2 or L3 connectivity between components while a solid line indicates a physical connection between hardware components. A quick summary of each of the components shown above: Arista Spine/TOR physical network switches in the data center Arista CVX an EOS instance, running in a VM that s reachable from the switches via either management or another IP network
Controller nodes servers running OpenStack controller elements Compute nodes servers running OpenStack compute elements Fuel master node infra running OpenStack deployment and management tool 4. Networking 4.1. Physical network topology In our reference deployment, we have 3 NICs on each of the compute nodes, with the Admin (PXE) network connected to one, the Public network connected to another and the remaining ( Storage, Management and Private ) connected to the third. However, this is not mandatory and you can configure the network in other ways as well (for example: Admin (PXE) connected to one NIC and all others connected to another NIC card). What is mandatory is that the Private network (which shall carry the range of VLANs you choose to allocate neutron networks from) is carried over a NIC that is connected to the Arista TOR. In the event that you do configure Fuel to provision other networks over the same NIC, ensure the switch configuration allows the VLANs necessary for those networks (other than the range of VLANs provided to neutron). Additionally, please take a look at the Mirantis OpenStack deployment guide for additional information on minimum hardware requirements and network requirements for deployment. 5. Installation and Configuration 5.1 Overview of MOS installation steps Please follow the Mirantis OpenStack deployment guide for getting the Fuel master node up and the controller, compute nodes discovered. 5.2 Installation details Here s a list of steps that shall be covered in the next few sections that needs to be completed in order for the solution to work: 1) Install and configure Arista Networks infrastructure (CVX, switches) 2) Install and configure Fuel and discover Nodes 3) Configures roles for each node and NICs to use per node
4) Deploy OpenStack from Fuel 5) Install and run LLDP on controller, compute nodes 6) Modify neutron configuration to use Arista ML2 driver and L3 plugin 7) Restart neutron 1) Install and configure Arista Networks infrastructure (CVX, switches) Please follow the Arista Networks Configuration Guide, OpenStack Deployment guide for the steps to install. https://www.arista.com/docs/manuals/configguide.pdf The following needs to be accomplished before moving on to subsequent steps: a) Install EOS in a VM, configure an IP address that s reachable on the network the OpenStack controller shall be on b) Enable CVX c) Enable the OpenStack Agent on CVX d) Enable EAPI on the CVX instance (and all the TOR instances that shall be used for creating SVIs and routing between neutron networks). e) Configure switches to communicate with the CVX instance (and verify communication is ok on both CVX and switches) f) Enable LLDP on all switches 5.3 Creation of OpenStack environment Create the OpenStack environment using the Fuel UI (as shown in screenshots below). Note that we use the defaults provided unless explicitly specified.
Select the network option of Neutron with VLAN segmentation
5.4 MOS Deployment 2) Install and configure Fuel and discover nodes Please follow Mirantis documentation on bringing up a fuel node and discovering nodes on which OpenStack controller/ compute services shall run. Below are screenshots of the Fuel configuration ( Networks tab in the Fuel UI) for our Demo environment (internal IP ranges blocked out).
3) Configures roles for each node and NICs to use per node In this deployment, we have a single controller node and two compute nodes. As mentioned above, each node has 3 NICs and we have one dedicated NIC for the Admin (PXE) network, another for the Public network and the third for all remaining networks.
As seen in screenshot (1) of section 5.2, the Storage and Management networks use VLANs 101, 102 respectively and so the corresponding switch port connected to the NIC has the following configuration: switchport mode trunk switchport trunk allowed vlan 101 102 Note that the Private VLAN range of 1000-1030 (seen in screenshot (2) of section 5.2) which is assigned for neutron to allocate to tenant networks, is not provisioned manually (and shall be provisioned dynamically as the networks are created). 4) Deploy OpenStack from Fuel Click on the Deploy Changes button once the above has been configured. 5.5 Arista driver Installation steps 5) Install and run LLDP on controller, compute nodes In this environment, we have Ubuntu 14.04.1 installed on the compute, controller nodes. So, to install LLDP there: sudo apt get install lldp 6) Modify neutron configuration to use Arista driver(s) (on all controllers) A. Again, on Ubuntu (other platforms may vary), edit the /etc/init/neutron server.conf file to include the Arista configuration file in the arguments passed to neutron. The new line added is indicated in bold below. script
[ r /etc/default/neutron server ] &&. /etc/default/neutron server [ r "$NEUTRON_PLUGIN_CONFIG" ] && CONF_ARG=" config file $NEUTRON_PLUGIN_CONFIG" exec start stop daemon start chuid neutron exec /usr/bin/neutron server \ config file /etc/neutron/neutron.conf \ config file /etc/neutron/plugins/ml2/ml2_conf_arista.ini \ log file /var/log/neutron/server.log $CONF_ARG end script B. Ensure the file mentioned at /etc/neutron/plugins/ml2/ml2_conf_arista.ini exists and has the following parameters defined: [ml2_arista] eapi_host = <CVX instance DNS resolvable name or IP address> eapi_username = <username> eapi_password = <password> C. Modify the file /etc/neutron/neutron.conf and in the config entry for service_plugins, service_plugins = neutron.services.l3_router.l3_router_plugin.l3routerplugin,n eutron.services.loadbalancer.plugin.loadbalancerplugin,neutr on.services.vpn.plugin.vpndriverplugin replace the L3RouterPlugin with the AristaL3ServicePlugin: (such as): service_plugins = neutron.services.l3_router.l3_arista.aristal3serviceplugin,n eutron.services.loadbalancer.plugin.loadbalancerplugin,neutr on.services.vpn.plugin.vpndriverplugin D. Modify /etc/neutron/plugins/ml2/ml2_conf_arista.ini again and add: [l3_arista] primary_l3_host = <DNS resolvable name or IP address of TOR> primary_l3_username = <username> primary_l3_password = <password> Additional, parameters are described in detail in the Arista Networks OpenStack deployment guide. 7) Restart neutron Again, on Ubuntu, run the command restart neutron server to restart the service. 6. Testing 6.1 Test tools
The Arista product test suite performs a number of tests with different deployment options such as a single TOR or MLAG deployment, TOR configuration etc. Tests include: Verifying creation/ deletion/ modification of networks/ ports/ instances (under different tenants) Verifying traffic flows as expected between instances after provisioning the physical infrastructure using the Arista driver (this includes auto-provisioning the network node for DHCP etc.) Verifying that individual component (such as TORs, CVX) restarts work fine Verifying network disconnection and re-connection between Neutron and Arista infra is handled fine Verifying physical connectivity changes for compute nodes is handled Scale tests - a number of combinations are run here varying the number of tenants, networks/ tenant, instances per tenant, ports per network. Equipment Fuel health check scripts Arista Networks product test suite Purpose Functional/acceptance testing Functional testing 6.2 Test cases 6.2.1 Target Use case(s) Use the Arista driver to provision/ configure the Arista network equipment to carry the VLANs used by neutron networks automatically on network ports connected to compute or controller nodes that have neutron ports attached to the network. 6.2.2 Deployment modes and configuration options OS Mode HV Network Storage VLAN Ceph Tested with Ubuntu; works with other operating systems supported by OpenStack Standalone and HA KVM x
6.2.3 Functional testing In addition to functional tests that are a part of the Fuel Health Check: a. PASS: Verify instances connected to a tenant network, launched on 2 separate compute nodes can communicate via the TOR switch the compute nodes are connected to (with the driver auto provisioning the VLAN neutron assigned to the tenant network). 6.2.4 Performance testing a. Traffic passing through the switch passes at line rate 6.2.5 Negative testing a. Testing inputs from driver are range tested, boundary tested for invalid values b. Restart tests (for all components) 6.3 Test results (if FUEL HealthCheck is used)