Squashed commit of the following: commit 6c4995736a56349923d34353031eb301780fc6d2 Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Sat Jan 21 22:31:09 2012 -0800 Some more explanation in the README. Changing defaults in the conf file. commit 924b118468d7bd21737e9e2cf468ff83d0a20764 Author: Shweta <shpadubi@cisco.com> Date: Sat Jan 21 20:58:39 2012 -0500 Adding Unit Tests for LinuxBridge Agent commit 12115650257483172c5e2bc889634dbdf3596d27 Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Sat Jan 21 05:21:24 2012 -0800 Adding sqlite requirement Changing default mysql port number Fixing log statement commit 0ad1400e5dfc445b94e9024d92321eb3cd0588a5 Merge: 1b7ba8f9c5c2caAuthor: Sumit Naiksatam <snaiksat@cisco.com> Date: Sat Jan 21 05:12:44 2012 -0800 Merge remote branch 'upstream/master' into snaiksat/linux-bridge-plugin commit 1b7ba8f7e7b6657734b669194ddfdcfcbfc833be Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Sat Jan 21 04:04:50 2012 -0800 Fixes to get the tests to run correctly. Also incorporated changes to be able to run both sqlite and mysql DBs. commit 4cead17576c293319dfdfd363dd18e81ba196b3b Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Fri Jan 20 15:32:35 2012 -0800 Fixed inccorect calls to the DB commit c4f325729fbd06ee3f5d3520da4d23b2cd8c353b Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Fri Jan 20 12:18:18 2012 -0800 Removing the specialized db modules (which used InnoDB engine) and instead using the Quantum DB now. Incorporated changes to setup so that the Linux Bridge plugin can be installed. Other changes to README and tests. commit b9498939d723e353808cface87f4453e33e94b41 Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Mon Jan 16 20:00:14 2012 -0800 Adding unit tests commit a0ab990fdcbf67a950d08c6b5b6d20ceb850619a Merge: 60e38ccf268b5eAuthor: Sumit Naiksatam <snaiksat@cisco.com> Date: Mon Jan 16 18:02:55 2012 -0800 Merge remote branch 'upstream/master' into snaiksat/linux-bridge-plugin commit 60e38cc44886b5c8c9e47d89d8912d1dee23fbd1 Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Mon Jan 16 13:44:37 2012 -0800 This contains a fix for the earlier reported issue with the DHCP failing. The gateway IP address is now applied both to the bridge, and the gateway interface. commit ffea86a3465b8a5ed93b13f818e0afaefa6787ee Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Sun Jan 15 20:00:38 2012 -0800 Fixing an issue in the agent, sometimes the bridges for deleted networks were not getting cleaned up commit 87f76fc34f1c70cd82576b8698d704853c892422 Merge: c8b097a60d171eAuthor: Sumit Naiksatam <snaiksat@cisco.com> Date: Sun Jan 15 19:40:33 2012 -0800 Merge remote branch 'upstream/master' into snaiksat/linux-bridge-plugin commit c8b097abc2060b2eae01d84f9fed2c89851d93fd Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Sun Jan 15 19:37:08 2012 -0800 Simplified the logic for creating the bridge on the nova network host. commit 499dbacd4c5352c5320f3b6e5e8cd7f3629dbcc8 Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Fri Jan 13 16:07:53 2012 -0800 Fix for the DHCP issue, now applying Gateway IP to the bridge Also MAC address from original tap device are applied to bridge and vlan subinterface commit 6b4a2aea59702e2c12eeacc86101df9f6770d5ec Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Sat Jan 7 14:29:00 2012 -0800 Optimizations for processing in the loop commit 01aa47d3572439b193077432c63bf2b85c629edb Merge: 184f5dd 05df087 Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Sun Jan 1 19:04:17 2012 -0800 Changes to incorporate Operational Status Merge remote branch 'origin' into snaiksat/linux-bridge-plugin Conflicts: quantum/db/api.py commit 05df0870191fac0353fe12a33efff68ef7ed0784 Merge: 31d586b5b23b5eAuthor: Sumit Naiksatam <snaiksat@cisco.com> Date: Fri Dec 30 12:30:05 2011 -0800 Merge remote branch 'upstream/master' commit 184f5dd8b73bc51025509792c15203ee73cd015e Author: Sumit Naiksatam <snaiksat@cisco.com> Date: Mon Dec 12 02:09:12 2011 -0800 Initial checkin for Linux Bridge L2 plugin. Change-Id: I5b27538be6a768a6f7eb77409197f7d8b4bbc628
156 lines
5.8 KiB
Plaintext
156 lines
5.8 KiB
Plaintext
# -- Background
|
|
|
|
The Quantum Linux Bridge plugin is a plugin that allows you to manage
|
|
connectivity between VMs on hosts that are capable of running a Linux Bridge.
|
|
|
|
The Quantum Linux Bridge plugin consists of three 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. The mysql server runs on a central server (often the same
|
|
host as nova itself).
|
|
|
|
2) The quantum service host which will be running quantum. This can
|
|
be run on the server running nova.
|
|
|
|
3) An agent which runs on the host and communicates with the host operating
|
|
system. 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 Linux Bridge plugin.
|
|
|
|
# -- Python library dependencies
|
|
|
|
Make sure you have the following package(s) installedi on quantum server
|
|
host as well as any hosts which run the agent:
|
|
python-configobj
|
|
bridge-utils
|
|
python-mysqldb
|
|
sqlite3
|
|
|
|
# -- Nova configuration (controller node)
|
|
|
|
1) Make sure to set up nova using the quantum network manager in the
|
|
nova.conf on the node that will be running nova-network.
|
|
|
|
--network_manager=nova.network.quantum.manager.QuantumManager
|
|
|
|
# -- Nova configuration (compute node(s))
|
|
|
|
1) Configure the vif driver, and libvirt/vif type
|
|
|
|
--connection_type=libvirt
|
|
--libvirt_type=qemu
|
|
--libvirt_vif_type=ethernet
|
|
--libvirt_vif_driver=nova.virt.libvirt.vif_linuxbridge_quantum.QuantumLibvirtLinuxBridgeDriver
|
|
--linuxnet_interface_driver=nova.network.quantum.linux_net_linux_bridge.QuantumLibvirtLinuxBridgeDriver
|
|
|
|
The above two drivers are packaged with Quantum in the location:
|
|
quantum/plugins/linuxbridge/nova
|
|
|
|
These need to copied to the compute node in the appropriate locations.
|
|
|
|
a) Copy:
|
|
quantum/plugins/linuxbridge/nova/vif_linuxbridge_quantum.py
|
|
to:
|
|
nova/virt/libvirt/vif_linuxbridge_quantum.py
|
|
|
|
b) Copy:
|
|
quantum/plugins/linuxbridge/nova/linux_net_linux_bridge.py
|
|
to:
|
|
nova/network/quantum/linux_net_linux_bridge.py
|
|
|
|
2) If you want a DHCP server to be run for the VMs to acquire IPs,
|
|
add the following flag to your nova.conf file:
|
|
|
|
--quantum_use_dhcp
|
|
|
|
(Note: For more details on how to work with Quantum using Nova, i.e. how to create networks and such,
|
|
please refer to the top level Quantum README which points to the relevant documentation.)
|
|
|
|
# -- Quantum configuration
|
|
|
|
Make the Linux Bridge plugin the current quantum plugin
|
|
|
|
- edit etc/plugins.ini and change the provider line to be:
|
|
provider = quantum.plugins.linuxbridge.LinuxBridgePlugin.LinuxBridgePlugin
|
|
|
|
# -- Database config.
|
|
|
|
(Note: The plugin ships with a default SQLite in-memory database configuration,
|
|
and can be used to run tests without performing the suggested DB config below.)
|
|
|
|
The Linux Bridge quantum plugin 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 quantum_linux_bridge"
|
|
|
|
# log in to mysql service
|
|
$ mysql -u root -p
|
|
# The Linux Bridge Quantum agent running on each compute node must be able to
|
|
# make a mysql connection back to the main database server.
|
|
mysql> GRANT USAGE ON *.* to root@'yourremotehost' IDENTIFIED BY 'newpassword';
|
|
# force update of authorization changes
|
|
mysql> FLUSH PRIVILEGES;
|
|
|
|
(Note: If the remote connection fails to MySQL, you might need to add the IP address,
|
|
and/or fully-qualified hostname, and/or unqualified hostname in the above GRANT sql
|
|
command. Also, you might need to specify "ALL" instead of "USAGE".)
|
|
|
|
# -- Plugin configuration
|
|
|
|
- Edit the configuration file:
|
|
etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini
|
|
Make sure it matches your mysql configuration. This file must be updated
|
|
with the addresses and credentials to access the database.
|
|
|
|
Note: When running the tests, set the connection type to sqlite, and when
|
|
actually running the server set it to mysql. At any given time, only one
|
|
of these should be active in the conf file (you can comment out the other).
|
|
|
|
- Remember to change the interface configuration to indicate the correct
|
|
ethernet interface on that particular host which is being used to participate
|
|
in the Quantum networks. This configuration has to be applied on each host
|
|
on which the agent runs.
|
|
|
|
# -- Agent configuration
|
|
|
|
- Edit the configuration file:
|
|
etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini
|
|
|
|
- Copy quantum/plugins/linuxbridge/agent/linuxbridge_quantum_agent.py
|
|
and etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini
|
|
to the compute node.
|
|
|
|
$ Run the following:
|
|
sudo python linuxbridge_quantum_agent.py linuxbridge_conf.ini
|
|
(Use --verbose option to see the logs)
|
|
|
|
# -- Running Tests
|
|
|
|
(Note: The plugin ships with a default SQLite in-memory database configuration,
|
|
and can be used to run tests out of the box. Alternatively you can perform the
|
|
DB configuration for a persistent database as mentioned in the Database
|
|
Configuration section.)
|
|
|
|
- To run tests related to the Plugin and the VLAN management (run the
|
|
following from the top level Quantum directory):
|
|
PLUGIN_DIR=quantum/plugins/linuxbridge ./run_tests.sh -N
|
|
|
|
- The above will not however run the tests for the agent (which deals
|
|
with creating the bridge and interfaces). To run the agent tests, run the
|
|
following from the top level Quantum directory:
|
|
sudo PLUGIN_DIR=quantum/plugins/linuxbridge ./run_tests.sh -N tests.unit._test_linuxbridgeAgent
|
|
|
|
(Note: To run the agent tests you should have the environment setup as
|
|
indicated in the Agent Configuration, and also have the necessary dependencies
|
|
insalled.)
|