Deep dive into Quantum


           2012/11/10 COSUG Meet up
           Luo, Zhongyue




1
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
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
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
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
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
File Structure

                extensions




                      choose
                      one
              start




7
File Structure



              agent              extension
              implementations    implementations




                   handler
                   setup

                  api-pate.ini




8
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
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                              network_delete      tunnel_update       port_update
                    tunnel_sync

                                                               q-agent-notifier-       q-agent-notifier-     q-agent-notifier-
     Exchange:                      Quantum                 network-delete_fanout    tunnel-update_fanout   port-update_fanout
                                     topic                          fanout                  fanout                fanout




      Queue:                                                   q-agent-notifier-       q-agent-notifier-     q-agent-notifier-
                       q-plugin        notifications.info   network-delete_fanout    tunnel-update_fanout   port-update_fanout
                                                                  _{uuid4}                 _{uuid4}              _{uuid4}




     Comsumer:   quantum-server               Dhcp agent                             Plugin agent



12
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
Deep Dive Into Quantum

Deep Dive Into Quantum

  • 1.
    Deep dive intoQuantum 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
  • 7.
    File Structure extensions choose one start 7
  • 8.
    File Structure agent extension implementations implementations handler setup api-pate.ini 8
  • 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
  • 11.
    Overview RPC 11
  • 12.
    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 network_delete tunnel_update port_update tunnel_sync q-agent-notifier- q-agent-notifier- q-agent-notifier- Exchange: Quantum network-delete_fanout tunnel-update_fanout port-update_fanout topic fanout fanout fanout Queue: q-agent-notifier- q-agent-notifier- q-agent-notifier- q-plugin notifications.info network-delete_fanout tunnel-update_fanout port-update_fanout _{uuid4} _{uuid4} _{uuid4} Comsumer: quantum-server Dhcp agent Plugin agent 12
  • 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
  • 16.
  • 17.
    Configuration: Open vSwitchplugin 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 vSwitchplugin 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
  • 19.
    How does theplugin get loaded? 19
  • 20.
    How does theplugin get loaded? 20
  • 21.
    How does theplugin get loaded? 21
  • 22.
    How does theplugin get loaded? 22
  • 23.
    How does theplugin get loaded? 23
  • 24.
    How does theplugin get loaded? 24
  • 25.
    How does theplugin get loaded? 25
  • 26.
    Why is therea 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 therea agent for the Open vSwitch plugin? 27
  • 28.
    Why is therea agent for the Open vSwitch plugin? 28
  • 29.
    Why is therea agent for the Open vSwitch plugin? OVS cli wrappers 29
  • 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/ 30