Architecture of Quantum Folsom Release Yong Sheng Gong (龚永生) gongysh@cn.ibm.com gongysh #openstack-dev Quantum Core developer © 2012 IBM Corporation Agenda ■ OpenStack and Quantum ■ Quantum Architecture ■ Quantum models ■ communications among quantum components © 2012 IBM Corporation Agenda ■ OpenStack and Quantum ■ Quantum Architecture ■ Quantum models ■ communications among quantum components © 2012 IBM Corporation OpenStack: six core projects that form a complete IaaS solution Compute (Nova) Provision and manage virtual machines Provides UI for Dashboard (Horizon) Self-service portal Image (Glance) Catalog and manage server images Identity (Keystone) Unified authentication, integrates with existing systems Network(Quantum) provide "network connectivity as a service" Rest API Network (Quantum) Authentication with Object Storage (Swift) petabytes of secure, reliable object storage adapted from: http://ken.pepple.info/openstack/2012/02/21/revisit-openstack-architecture-diablo/ 4 © 2012 IBM Corporation Quantum-NaaS *-as-a-Service Capability Compute OpenStack Service Nova Swift (Objects) Storage Cinder (Block) Glance (Images) identity Keystone Network Quantum © 2012 IBM Corporation Openstack architecture OpenStack Network API OpenStack Network API quantum-server REST l3-agent Queue plugin-agent quantum database dhcp-agent OpenStack Identity API © 2012 IBM Corporation Flow of booting a virtual server © 2012 IBM Corporation Quantum uses network virtualization 1.Hypervisor 2.nova-scheduler 3.nova-computes 1.quantum-server 2.plugin 3.agents 8 © 2012 IBM Corporation Agenda ■ OpenStack and Quantum ■ Quantum Architecture ■ Quantum models ■ communications among quantum components © 2012 IBM Corporation Components of quantum ■ Quantum server Implement Qauntum API and its extensions Enforce network model • Network, subnet, and port IP addressing to each port ■ Plugin agent Run on each compute node Connect instances to network port ■ DHCP agent In multi-host mode, run on each compute node (deferred) Start/stop dhcp server Maintain dhcp configuration l3-agent Quantum server & plugin Plugin agent DHCPagent DB Queue L3-agent ■ Note: we can share DB service and Queue with other OpenStack stack services 10 ■ To implement floating Ips and other L3 features, such as NAT One per network Queue Enhance communication between each components of quantum DB – persistent network model © 2012 IBM Corporation Layers in Quantum server Quantum API and extensions vendor can add extensions to provide more features Common service (Validation, Authn, Authz) Quantum Core Plugin API Plugin DB 11 vendor specific plugin or open source plugin: 1. linux bridge plugin 2. openvswitch plugin 3. nicira 4. … device © 2012 IBM Corporation Agenda ■ OpenStack and Quantum ■ Quantum Architecture ■ Quantum models ■ communications among quantum components © 2012 IBM Corporation Quantum models © 2012 IBM Corporation Network and physical bindings network Virtual network Model in quantum Physical network Identified by name Network binding Tenant network GRE and local bindings have no physical network provider network VLAN Flat GRE local Local binding are for devstack single box playing Linux bridge plugin has no GRE support Difference between provider network and tenant network? © 2012 IBM Corporation Other ways to view networks internal Only fixed Ips are allocated from there. Private internal networks Shared internal networks external we can create floating ips and router gateway on it, They should be able to access public network Private external networks private Only owner tenant can create ports on it. shared external networks shared Other tenants besides the owner tenant can create ports on it. © 2012 IBM Corporation A networks sample for fixed ips Host A network A local Vlan ID 1 network C local Vlan ID 3 int-br-eth1-1 br-int patch-tun patch-port veth int-br-eth1-2 network B local Vlan ID 2 phy-br-eth1-1 patch-int phy-br-eth1-2 Physnet1 vSwitch br-eth1-1 Physnet2 vSwith br-eth1-2 br-tun GRE Physical net1 vlan ID 1000 physical net2 Flat host B host C local vlan id <-> tunnel id done by br-tun flow local vlan id <-> physical net vlan id done by physical net and br-int vSwitch host C © 2012 IBM Corporation Floatingip and Router Vm 10.0.1.5/24 gw: 10.0.1.1/24 Floatingip port Floating ip fixed port on fixed ip network Router interface 10.0.1.1/24 gw_port 7.0.1.2/24 Floating ip: 7.0.1.4/24 External network router In general, The port acting as router interface should has gateway address of subnet internal nework external network vswitch br-ex eth0 l3_agent Router is used for VM to access outside Floating IP is used for outside to access VM © 2012 IBM Corporation Agenda ■ OpenStack and Quantum ■ Quantum Architecture ■ Quantum models ■ communications among quantum components © 2012 IBM Corporation AMQP communication among quantum components 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: 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 © 2012 IBM Corporation Data flow of booting a virtual server among quantum components © 2012 IBM Corporation Enjoy hacking OpenStack? © 2012 IBM Corporation