neutron/quantum/plugins/openvswitch
Salvatore Orlando fdfa94c8ae no-commit 2011-06-24 14:05:35 +01:00
..
agent Merging pep8 and functional test related changes lp:~santhom/network-service/quantum_testing_framework branch 2011-06-21 10:27:04 -07:00
Makefile Initial cut of openvswitch plugin 2011-06-03 20:56:32 -07:00
README no-commit 2011-06-24 14:05:35 +01:00
__init__.py Initial cut of openvswitch plugin 2011-06-03 20:56:32 -07:00
ovs_db.py Santhosh/Vinkesh | Fixed all the pep8 violations. Modified the 'req' to 'request' across all the services and wsgi so that it's consistent with other projects 2011-06-08 15:51:47 +05:30
ovs_models.py Santhosh/Vinkesh | Fixed all the pep8 violations. Modified the 'req' to 'request' across all the services and wsgi so that it's consistent with other projects 2011-06-08 15:51:47 +05:30
ovs_quantum_plugin.ini Initial cut of openvswitch plugin 2011-06-03 20:56:32 -07:00
ovs_quantum_plugin.py Santhosh/Vinkesh | Fixed all the pep8 violations. Modified the 'req' to 'request' across all the services and wsgi so that it's consistent with other projects 2011-06-08 15:51:47 +05:30

README

# -- Background

The quantum openvswitch plugin is a simple plugin that allows you to manage
connectivity between VMs on hypervisors running openvswitch.

The quantum openvswitch plugin consists of two components:

1) The plugin itself:  The plugin uses a database backend (mysql for now) to
   store configuration and mappings that are used by the agent.

2) An agent which runs on the hypervisor (dom0) and communicates with
  openvswitch.  The agent gathers the configuration and mappings from the
  mysql database running on the quantum host.

The sections below describe how to configure and run the quantum service with
the openvswitch plugin.

# -- Nova configuration

- Make sure to set up nova using flat networking.  Also, make sure that the
  integration bridge (see below under agent configuration) matches the
  flat_network_bridge specified in your nova flag file.  Here are the relevant
  entries from my nova flag file.
--network_manager=nova.network.manager.FlatManager
--flat_network_bridge=xapi1

# -- Quantum configuration

Make the openvswitch plugin the current quantum plugin

- edit ../../plugins.ini and change the provider line to be:
provider = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPlugin

# -- Database config.  The OVS quantum service requires access to a mysql
# database in order to store configuration and mappings that will be used by
# the agent.  Here is how to set up the database on the host that you will be
# running the quantum service on.

MySQL should be installed on the host, and all plugins and clients must be
configured with access to the database.

To prep mysql, run:

$ mysql -u root -p -e "create database ovs_quantum"

Make sure any xenserver running the ovs quantum agent will be able to
communicate with the host running the quantum service:

//log in to mysql service
$ mysql -u root -p
// grant access to user-remote host combination.  Note: if you're going to use
// a wildcard here it should be a management network with only trusted hosts.
mysql> GRANT USAGE ON *.* to root@'yourremotehost' IDENTIFIED BY 'newpassword';
//force update of authorization changes
mysql> FLUSH PRIVILEGES;

# -- Plugin configuration.

- Edit the configuration file (ovs_quantum_plugin.ini).  Make sure it matches
  your mysql configuration.  This file must be updated with the addresses and
  credentials to access the database.  This file will be included in the agent
  distribution tarball (see below) and the agent will use the credentials here
  to access the database.

# -- Agent configuration

- Create the agent distribution tarball

$ make agent-dist
- Copy the resulting tarball to your xenserver(s) (copy to dom0, not the nova
  compute node)
- Unpack the tarball and run install.sh.  This will install all of the
  necessary pieces into /etc/xapi.d/plugins.  It will also spit out the name
  of the integration bridge that you'll need for your nova configuration.
  Make sure to specify this in your nova flagfile as --flat_network_bridge.
- Run the agent [on your hypervisor (dom0)]:
$ /etc/xapi.d/plugins/ovs_quantum_agent.py /etc/xapi.d/plugins/ovs_quantum_plugin.ini

# -- Getting quantum up and running

- Start quantum [on the quantum service host]:
~/src/quantum-  $ PYTHONPATH=.:$PYTHONPATH python bin/quantum etc/quantum.conf
- Run ovs_quantum_plugin.py via the quantum plugin framework cli [on the
  quantum service host]
~/src/quantum-framework$ PYTHONPATH=.:$PYTHONPATH python quantum/cli.py

This will show help all of the available commands.

An example session looks like this:

$ export TENANT=t1
$ PYTHONPATH=. python quantum/cli.py create_net $TENANT network1
Created a new Virtual Network with ID:e754e7c0-a8eb-40e5-861a-b182d30c3441
$ export NETWORK=e754e7c0-a8eb-40e5-861a-b182d30c3441
$ PYTHONPATH=. python quantum/cli.py create_port $TENANT $NETWORK
Created Virtual Port:5a1e121b-ccc8-471d-9445-24f15f9f854c on Virtual Network:e754e7c0-a8eb-40e5-861a-b182d30c3441
$ export PORT=5a1e121b-ccc8-471d-9445-24f15f9f854c
$ PYTHONPATH=. python quantum/cli.py plug_iface $TENANT $NETWORK $PORT ubuntu1-eth1
Plugged interface "ubuntu1-eth1" to port:5a1e121b-ccc8-471d-9445-24f15f9f854c on network:e754e7c0-a8eb-40e5-861a-b182d30c3441

(.. repeat for more ports and interface combinations..)

# -- Other items

- To get a listing of the vif names in the format that the ovs quantum service
  will expect them in, issue the following command on the hypervisor (dom0):
$ for vif in `xe vif-list params=uuid --minimal | sed s/,/" "/g`; do echo $(xe vif-list params=vm-name-label uuid=${vif} --minimal)-eth$(xe vif-list params=device uuid=${vif} --minimal); done