OpenStack Neutron Reverse Engineered
-
Upload
openstackindia -
Category
Technology
-
view
604 -
download
0
Transcript of OpenStack Neutron Reverse Engineered
Openstack Neutron Reverse Engineered
Sridhar K. N. Rao
Thanks to Shreyansh Jain, Manpreet Singh and Nupur Sharma
The Flow
• Overall Architecture.• Description of Components– Internal Flows.
• System-wide Control and Data Flows– Communication between the components
• Tips for extensions.• Documentation structure.
Neutron AgentsCompute Node Agent(s)
RPC Mechanism
REST APIs Management
Plugin Neutron DBService Plugins
Mechanism Driver
WSGI
WSGI-Server
Requests
Collection,Resources,{collection_actions, Member_actions,Path_prefixRequirementsController}
RPC
L3
ML2
ML2 Plugin
Type Manager
Mechanism manager
Agents
Extension Manager
DB
Neutron Server (WSGI-Apps)
Initialization
__init__
_register_mechanisms()This method should only be called onceRegister all mechanism drivers via NamedExtensionManager!!!
initialize
_sync_vlan_allocations()
Initializeex: 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_network_types()
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.
Handling of REST calls
ML2-PluginDB
Extension Manager Mechanism Manager
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_bindingConstruct a new PortContextmechanism_manager.bind_port()
Binding:
segmentvif_typevif_detailsvnic_typehostdriverprofile
Context!
RPC Handling
Notifications
OVS Mechanism Driver
NEUTRON AGENTS DHCP
Initialization
Calls from Plugin
Enabling DHCP
NEUTRON AGENTS L3
Initialization
OVS-NEUTRON AGENT
Nova-Neutron