You are on page 1of 31

Deep dive into Quantum

2012/11/10 COSUG Meet up


Luo, Zhongyue

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

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

Intro
VM
A1

Tenant View

VM
A2

VM
B1

Network A

Phy Srv 1
VM
A1
Hypervisor

VM
B2

Network B

Phy Srv 3

Phy Srv 2

VM
B1
Hypervisor

Provider View
Data Centre Network

VM
B2

VM
A2
Hypervisor

Intro

Nova

VM1
10.0.0.2

virtual server

VM2
10.0.0.3

virtual interface
(VIF)

3
2
Quantum

Net1
10.0.0.0/24

virtual port
L2 virtual
network
Subnet

Intro

TenantA-VM1
10.0.0.2

TenantA-VM4
172.16.0.30

TenantA-VM2
10.0.0.3 9.0.0.3

Tenant-A Net1
10.0.0.0/24

Tenant-A Net3
172.16.0.0/24

Tenant-A Net2
10.0.1.0/24

Not
necessarily a
VM!

VPN
Tenant-A On
Premise Net
172.16.0.0/24

TenantA-VM3
10.0.1.2

Public Net
88.0.0.0/18

File Structure
extensions

choose
one

start

File Structure

agent
implementations

handler
setup
api-pate.ini

extension
implementations

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

Components
API Extentions
QoS, SLA, L3 forwarding, Security, Metering, etc.

Enables innovation in virtual networking.


Extensions implemented by many plugins can become
core.

10

Overview

RPC
11

Overview

http://wiki.openstack.org/Quantum?action=AttachFil
e&do=get&target=quantum-technical-archicture.ppt

Dhcp agent
quantum-server
get_active_networks
get_network_info
get_dhcp_port
release_dhcp_port
release_port_fixed_ip
update_lease_expiration

Plugin agent

Quantum rest api


(resource CUD)
get_device_details
update_device_down
tunnel_sync

Quantum
topic

Exchange:

Queue:

Comsumer:

12

network_delete

q-plugin

quantum-server

notifications.info

Dhcp agent

tunnel_update

port_update

q-agent-notifiernetwork-delete_fanout
fanout

q-agent-notifiertunnel-update_fanout
fanout

q-agent-notifierport-update_fanout
fanout

q-agent-notifiernetwork-delete_fanout
_{uuid4}

q-agent-notifiertunnel-update_fanout
_{uuid4}

q-agent-notifierport-update_fanout
_{uuid4}

Plugin agent

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

Rest APIs
Subnets
Represents a range of IP addresses

Allocated to devices
API request specifications
o quantum/api/v2/attributes.py

14

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

Under the Hood

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

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

How does the plugin get loaded?

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

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

Why is there a agent for the Open vSwitch


plugin?

27

Why is there a agent for the Open vSwitch


plugin?

28

Why is there a agent for the Open vSwitch


plugin?

OVS cli wrappers

29

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/

30

You might also like