EXPOSING OVS STATISTICS FOR Q UANTUM USERS Tomer Shani Advanced Topics in Storage Systems Spring 2013
Project goals In order to develop QoS for the cloud environment it is necessary to collect network statistics from the different network element. This project aims to expose network statistics from the “open virtual switch” so that further functionality can be added to the open stack environment.
Theoretical Overview OpenStack Quantum Quantum Plugin Architecture Open Virtual Switch Proposed Solution
Quantum Introduced as part of OpenStack Folsom release (sept 2012) Provides Network as a Service between interface devices managed by other OpenStack services (most likely Nova). Allows users to create their own networks / network services and then attach interfaces to them. Quantum has a pluggable architecture to support many popular networking vendors and technologies.
Quantum – the big picture
Quantum – the details
Quantum server – implements the RESTful API and routes requests to the correct plugin-in API abstractions: – Network: layer 2 network object, attributes: admin state, name & subnets. – Subnet: layer 3 network object, attributes: admin state, name, ip addr, subnet mask, dhcp, dns … – Port: NIC object, attributes: network, device (virtual server), mac addr … Quantum plugin architecture
Plugin will typically update the quantum database Plugin agent runs on each compute node, the agent gathers the configuration from the database and communicates directly with the local OVS instance. Quantum also provides an “extensibility” mechanism that enables extension of the Core API (resource/attribute/action) Quantum client - a command line API for accessing quantum functionality
Open virtual switch OVS components ( – Kernel module implementing the data path – User space daemon “ovs-vswitchd” implementing the flow logic layer – User space daemon “ovsdb-server” which holds switch configuration – User space utilities, ovs-ofctl is the OpenFlow switch management utility which also provides port statistics
Open virtual switch Available counters – Rx packets – Rx bytes – Rx drop – Rx errors – Rx crc errors – Rx frame – Rx overruns – Tx packets – Tx bytes – Tx drop – Tx errors – Tx collisions
Design Quantum OVS plugin API DB Compute node OVS instance CLI client OVS Plugin agent
Design options - discussion Pros Data is retrieved as needed, no constant access to database (saves network bandwidth) Data is (close to) “real- time” which may be critical for some applications Cons Plugin has longer access time when compared to local database access. If multiple applications require the statistics, traffic is duplicate. No “natural” path for providing real-time data on request Should plugin-agent be polled or push data Pros & Cons of “polling solution”
Hands on overview Setting up a work environment Installing OpenStack Configuring OpenStack Creating a Cloud
Setting up a work environment First attempt: Dual 3 Ghz cores, 2 GB RAM, Ubuntu Desktop, SLOW….. Second attempt: switched to server installation (no GUI), still sluggish.. Third attempt: 8 * 3.4 Ghz cores, 4 GB RAM, much better Installed SMB to provide remote access to file system (coding). Enabled SSH to provide shell access.
Installing OpenStack Installed by utilizing Devstack, a shell script to build complete OpenStack development environments. – git clone dev/devstack.git (have to install git first) dev/devstack.git – cd devstack &&./stack.sh Horizon is now available at Keystone is serving at Examples on using novaclient command line is in exercise.sh The default users are: admin and demo The password:
Configuring OpenStack Now that we have access to the web server, we can start configuring a virtual network But that would be too easy… Default devstack installation configures nova networking (pre-quantum days) Modify localrc to enable quantum and run devstack again cat /opt/stack/devstack/localrc disable_service n-net ….. enable_service quantum
And finally
Creating a network
Add a virtual host
Add a virtual host - cont.
And we have a network
Network objects
Quantum client
Generating traffic
It works !
Resources Openstack Devstack Openstack dcumentation Open vSwitch
Q UESTIONS ?