Deep Dive Into Quantum
-
Upload
open-source-software-competence-center-huawei-technologies -
Category
Documents
-
view
1.700 -
download
4
description
Transcript of Deep Dive Into Quantum
1
Deep dive into Quantum
2012/11/10 COSUG Meet up
Luo, Zhongyue
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
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
4
Intro
Network A Network B
VMA1
VMA2
VMB1
VMB2
Tenant View
Provider View
Phy Srv 1
VMA1
VMB1
Hypervisor
Phy Srv 2
VMA2
Hypervisor
Phy Srv 3
VMB2
Hypervisor
Data Centre Network
5
Intro
Net1 10.0.0.0/24
VM1 10.0.0.2 Nova
Quantum L2 virtual network
VM2 10.0.0.3
virtual port
virtual server
virtual interface (VIF)
Subnet 1
2
3
6
Intro
TenantA-VM1 10.0.0.2
TenantA-VM3 10.0.1.2
TenantA-VM2 10.0.0.3 9.0.0.3
Public Net 88.0.0.0/18
Tenant-A Net1 10.0.0.0/24
Tenant-A Net2 10.0.1.0/24
Tenant-A Net3 172.16.0.0/24
Tenant-A On Premise Net
172.16.0.0/24
VPN
TenantA-VM4 172.16.0.30
Not necessarily a VM!
7
File Structure
start
choose one
extensions
8
File Structure
extension implementations
agent implementations
api-pate.ini
handler setup
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
10
Components
API Extentions
• QoS, SLA, L3 forwarding, Security, Metering, etc.
• Enables innovation in virtual networking.
• Extensions implemented by many plugins can become “core”.
11
Overview
RPC
12
Overview
Quantum topic
q-plugin
Exchange:
Queue: notifications.info
quantum-server Dhcp agent
q-agent-notifier- network-delete_fanout
fanout
q-agent-notifier- tunnel-update_fanout
fanout
q-agent-notifier- port-update_fanout
fanout
q-agent-notifier- network-delete_fanout
_{uuid4}
q-agent-notifier- tunnel-update_fanout
_{uuid4}
q-agent-notifier- port-update_fanout
_{uuid4}
Plugin agent Comsumer:
get_device_details update_device_down tunnel_sync
Quantum rest api (resource CUD)
tunnel_update network_delete port_update
get_active_networks get_network_info get_dhcp_port release_dhcp_port release_port_fixed_ip update_lease_expiration
Plugin agent
Dhcp agent
quantum-server
http://wiki.openstack.org/Quantum?action=AttachFile&do=get&target=quantum-technical-archicture.ppt
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
14
Rest APIs
Subnets
• Represents a range of IP addresses
• Allocated to devices
• API request specifications
o quantum/api/v2/attributes.py
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
Under the Hood
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:[email protected]:3306/ovs_quantum .
NOTE: The database IP address in the file should be reachable by all compute nodes.
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
19
How does the plugin get loaded?
20
How does the plugin get loaded?
21
How does the plugin get loaded?
22
How does the plugin get loaded?
23
How does the plugin get loaded?
24
How does the plugin get loaded?
25
How does the plugin get loaded?
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.
27
Why is there a agent for the Open vSwitch plugin?
28
Why is there a agent for the Open vSwitch plugin?
29
Why is there a agent for the Open vSwitch plugin?
OVS cli wrappers
30
Resources
http://github.com/openstack/quantum
http://wiki.openstack.org/Quantum
http://docs.openstack.org/api/openstack-network/1.0/content/
http://docs.openstack.org/trunk/openstack-network/admin/content/index.html
http://openvswitch.org/openstack/documentation/