openstack neutron reverse engineered

Post on 15-Apr-2017

604 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related