Inside The Architecture of Neutron: Mark Mcclain
Inside The Architecture of Neutron: Mark Mcclain
Inside The Architecture of Neutron: Mark Mcclain
Mark McClain
Rich Topologies
Technology Agnostic
Extensible
The Basics
Compute API
KVM
Network API
ML2 Plugin
Storage API
Ceph
Abstractions
Nova
VM2
10.0.0.2
VM1
10.0.0.2
virtual server
virtual interface (VIF)
virtual port
L2 virtual network
Neutron
Net1
10.0.0.0/24
virtual subnet
Architecture
Design Goals
Unified API
Small Core
Extensible
OpenStack
Basic Deployment
L2
Agent
L2
Agent
L2
Agent
L2
Agent
L2
Agent
L2
L2 Agent
Agent
L3
Agent
L3
L3 Agent
Agent
neutron-server
Database
Message
Queue
L3
Agent
L3
Agent
DHCP
Agent
Adv Services
neutron-server
REST API
Request/Response Serialization
REST API
SERVICE
RPC SERVICE
PLUGIN
neutron-server
RPC Service
Optional
REST API
SERVICE
RPC SERVICE
PLUGIN
neutron-server
PLUGIN
Written in Python
REST API
SERVICE
RPC SERVICE
PLUGIN
The Plugin
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
ML2Plugin
The Plugin
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
NeutronPluginBaseV2
NeutronDbPluginV2
ML2Plugin
Plugin Extensions
Common Extensions
REST: /v2.0/extensions
Other Extensions
Monolithic Plugin
Two types:
Proxy
Direct control
PLUGIN
Type Driver
Mechanism Driver
PLUGIN
Mech Mgr
Type Mgr
L2 Agent
L2 Agent
Runs on hypervisor
OVS
Processing loop
Host
lo
lo
lo
private loopback
eth0
eth0
eth0
eth1
eth1
eth1
br-int
L3 Agents
L3 Agent
Uses Namespaces
Core
Network
Network
Node
Node
Hypervisor
Hypervisor
Hypervisor
Isolated IP Stacks
Forwarding Enabled
net.ipv4.ip_forward=1
Static Routing
Metadata Proxy
Host
lo
lo
lo
eth0
qr-1
qr-e
eth1
qg-2
qg-b
br-ex
Configuration Agents
dnsmasq
Routed Networks
Non-routed Networks
Tenant
X-Router-Id: 2bc7c882-d612-438c-a334-0047f2b5c2d7
X-Forwarded-For: 10.0.0.1
X-Instance-ID: aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa
VM
Meta NS Proxy
Unix Domain Socket
Metadata
Agent
Management Network
Nova
Metadata
Service
Booting a VM
nova boot
Booting a VM
nova boot
create port
Booting a VM
nova boot
create port
create device
Booting a VM
nova boot
create port
wire port
Booting a VM
nova boot
create port
wire port
boot
Service Plugin
Driver based
Agent w/Driver
LB Agent
HAProxy
VPN as a Service
Service Plugin
Driver based
Agent w/Driver
Openswan
L3 Agent
Router
Metadata Proxy
VPN Driver
Firewall as a Service
Edgewall
Service Plugin
Driver based
Agent w/Driver
L3 Agent
Router
Metadata Proxy
Firewall Driver
Experimental
Differences
L2 Agent Optional
Summary
Unified API
Small Core
Extensible
Ryu OpenFlow
Controller
More Information
http://docs.openstack.org/admin-guide-cloud/content/ch_networking.html
http://developer.openstack.org/api-ref-networking-v2.html
Questions?