1. Deep dive into Quantum
2012/11/10 COSUG Meet up
Luo, Zhongyue
1
2. TODO
Intro
Overview
File Structure
Components
REST APIs
Under the hood
– Configuration: Open vSwitch plugin
– How does the plugin get loaded?
– Why is there a agent for the Open vSwitch plugin?
Resources
2
3. Intro
What is Quantum?
Network-Connectivity-as-a-Service for OpenStack
Goal
• Provides an API to dynamically request and configure
virtual networks
• Support API and API extensions to provide advanced
network capabilities
• Integrate virtual networks with other OpenStack services
3
4. Intro
VM VM VM VM
A1 A2 B1 B2
Tenant View
Network A Network B
Phy Srv 1 Phy Srv 2 Phy Srv 3
VM VM VM VM
A1 B1 A2 B2
Hypervisor Hypervisor Hypervisor
Provider View
Data Centre Network
4
5. Intro
VM1 VM2 virtual server
Nova 10.0.0.2 10.0.0.3
virtual interface
3 (VIF)
2 virtual port
Quantum Net1
L2 virtual
10.0.0.0/24
network
1 Subnet
5
6. Intro
TenantA-VM1 TenantA-VM2 TenantA-VM3
10.0.0.2 10.0.0.3 9.0.0.3 10.0.1.2
TenantA-VM4 Tenant-A Net1 Tenant-A Net2
172.16.0.30 10.0.0.0/24 10.0.1.0/24
Tenant-A Net3
172.16.0.0/24
Not
VPN necessarily a
VM!
Tenant-A On
Premise Net Public Net
172.16.0.0/24 88.0.0.0/18
6
9. Components
Plugins
• Cloud Operators weigh trade-offs, choose a plugin
• Hide backend technology
Server
• A generic tenant API to create and configure “virtual
networks”
Agent
• Daemon to perform the actual network configuration on
each physical host
9
10. Components
API Extentions
• QoS, SLA, L3 forwarding, Security, Metering, etc.
• Enables innovation in virtual networking.
• Extensions implemented by many plugins can become
“core”.
10
13. Rest APIs
Networks
• Represents an L2 network segment
• Can associate with a set of subnets and ports
http://docs.openstack.org/api/openstack-network/1.0/content/Networks.html
quantum/api/v2/attributes.py
13
14. Rest APIs
Subnets
• Represents a range of IP addresses
• Allocated to devices
• API request specifications
o quantum/api/v2/attributes.py
14
15. Rest APIs
Ports
• A connection point of a device to attach to a L2 Quantum
network
• Allocated to devices
http://docs.openstack.org/api/openstack-network/1.0/content/Ports.html
• API request specifications
o quantum/api/v2/attributes.py
15
17. Configuration: Open vSwitch plugin
Install KVM, Open vSwitch and configure your environment
http://blog.scottlowe.org/2012/08/17/installing-kvm-and-open-vswitch-on-ubuntu/
Edit etc/quantum/plugins.ini
core_plugin = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPlugin
Edit etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini
mysql://root:nova@127.0.0.1:3306/ovs_quantum .
NOTE: The database IP address in the file should be reachable by all compute nodes.
17
18. Configuration: Open vSwitch plugin
Edit nova.conf on nova-network and nova-manage hosts
network_manager=nova.network.quantum.manager.QuantumManager
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
linuxnet_ovs_integration_bridge=br-int
Edit nova.conf on nova-compute hosts
libvirt_ovs_bridge=br-int
libvirt_vif_type=ethernet
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtOpenVswitchDriver
Start the agent
$ python ovs_quantum_agent.py ovs_quantum_plugin.ini
18
26. Why is there a agent for the Open vSwitch
plugin?
The OVS agent
• Checks the configuration and mappings consistency of the
local Open vSwitch environment and the central mysql
database
• Polls directly to the local Open vSwitch instance
• Configures flows to implement the logical data model.
26
27. Why is there a agent for the Open vSwitch
plugin?
27
28. Why is there a agent for the Open vSwitch
plugin?
28
29. Why is there a agent for the Open vSwitch
plugin?
OVS cli wrappers
29