Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OpenStack Neutron Reverse Engineered

741 views

Published on

q

Published in: Technology
  • Be the first to comment

OpenStack Neutron Reverse Engineered

  1. 1. Openstack Neutron Reverse Engineered Sridhar K. N. Rao Thanks to Shreyansh Jain, Manpreet Singh and Nupur Sharma
  2. 2. The Flow • Overall Architecture. • Description of Components – Internal Flows. • System-wide Control and Data Flows – Communication between the components • Tips for extensions. • Documentation structure.
  3. 3. Neutron AgentsCompute Node Agent(s) RPC Mechanism REST APIs Management Plugin Neutron DB Service Plugins Mechanism Driver
  4. 4. WSGI
  5. 5. WSGI-Server Requests
  6. 6. Collection, Resources, {collection_actions, Member_actions, Path_prefix Requirements Controller}
  7. 7. RPC
  8. 8. L3
  9. 9. ML2
  10. 10. ML2 Plugin Type Manager Mechanism manager Agents Extension Manager DB Neutron Server (WSGI- Apps)
  11. 11. Initialization __init__ _register_mechanisms() This method should only be called once Register all mechanism drivers via NamedExtensionManager!!! initialize _sync_vlan_allocations() Initialize ex: VLAN __init__ initialize() for driver in self.ordered_ext_drivers: driver.obj.initialize() initialize each driver __init__(self): _register_drivers() Register all extension drivers initialize(self): driver.obj.initialize() __init__ _register_types() _check_tenant_ne twork_types()
  12. 12. Handling of REST calls Ordered List of Mechanism Drivers ML2-Plugin [Create/Update/Delete_Network/Subnet/Port_Pre/PostCommit] Mechanism-Manager [Create/Update/Delete_Network/Subnet/Port_Pre/PostCommit] Mechanism- Driver-1 Mechanism- Driver-2 Mechanism- Driver-N For each driver in the ordered_list_of_mechanism_Drivers: Call appropriate function in each driver.
  13. 13. Handling of REST calls ML2-Plugin DB Extension Manager Mechanism Manager
  14. 14. Handling Rest Calls – Create Port _notify_l3_agent_new_port notify_security_groups_member_updated _bind_port_if_needed*** binding.vif_type != VIF_TYPE_UNBOUND or ! binding.host _notify_port_updated() if allow_notify and need_notify: return context _bind_port(context) count > MAX_BIND_TRIES _commit_port_binding() _update_port_dict_binding Construct a new PortContext mechanism_manager.bind_port() Binding: segment vif_type vif_details vnic_type host driver profile
  15. 15. Context!
  16. 16. RPC Handling
  17. 17. Notifications
  18. 18. OVS Mechanism Driver
  19. 19. NEUTRON AGENTS DHCP
  20. 20. Initialization
  21. 21. Calls from Plugin
  22. 22. Enabling DHCP
  23. 23. NEUTRON AGENTS L3
  24. 24. Initialization
  25. 25. OVS-NEUTRON AGENT
  26. 26. Nova-Neutron

×