Modular Layer 2 In OpenStack Neutron

M
Modular Layer 2 In
OpenStack Neutron
Robert Kukura, Red Hat
Kyle Mestery, Cisco
1. I’ve heard the Open vSwitch and Linuxbridge
Neutron Plugins are being deprecated.
2. I’ve heard ML2 does some cool stuff!
3. I don’t know what ML2 is but want to learn
about it and what it provides.
What is Modular Layer 2?
A new Neutron core plugin in Havana
Modular

•

Drivers for layer 2 network types and mechanisms interface with agents, hardware, controllers, ...
o Service plugins and their drivers for layer 3+
o

•

Works with existing L2 agents
openvswitch
o linuxbridge
o hyperv
o

•

Deprecates existing monolithic plugins
openvswitch
o linuxbridge
o
Motivations For a
Modular Layer 2 Plugin
Before Modular Layer 2 ...

Neutron Server

Neutron Server

OR
Open vSwitch Plugin

OR ...
Linuxbridge Plugin
Before Modular Layer 2 ...
I want to write
a Neutron
Plugin.
What a pain. :(

Neutron Server
But I have to
duplicate a lot of
DB,
segmentation,
etc. work.

Vendor X Plugin
ML2 Use Cases

•

Replace existing monolithic plugins
Eliminate redundant code
o Reduce development & maintenance effort
o

•

New features
Top-of-Rack switch control
o Avoid tunnel flooding via L2 population
o Many more to come...
o

•

Heterogeneous deployments
Specialized hypervisor nodes with distinct network
mechanisms
o Integrate *aaS appliances
o Roll new technologies into existing deployments
o
Modular Layer 2 Architecture
The Modular Layer 2 (ML2) Plugin is a
framework allowing OpenStack Neutron to
simultaneously utilize the variety of layer 2
networking technologies found in complex
real-world data centers.
What’s Similar?
ML2 is functionally a superset of the monolithic
openvswitch, linuxbridge, and hyperv plugins:

•
•
•
•

Based on NeutronDBPluginV2
Models networks in terms of provider attributes
RPC interface to L2 agents
Extension APIs
What’s Different?
ML2 introduces several innovations to achieve
its goals:

•

•
•
•

Cleanly separates management of network types from
the mechanisms for accessing those networks
o Makes types and mechanisms pluggable via drivers
o Allows multiple mechanism drivers to access same
network simultaneously
o Optional features packaged as mechanism drivers
Supports multi-segment networks
Flexible port binding
L3 router extension integrated as a service plugin
ML2 Architecture Diagram
Neutron Server

API Extensions
ML2 Plugin

Mechanism Manager
Type Manager

Tail-F NCS
Open
vSwitch
Linuxbridge
L2
Population
Hyper-V
Cisco Nexus
Arista
VXLAN
TypeDriver

VLAN
TypeDriver

GRE
TypeDriver
Multi-Segment Networks

VXLAN 123567
physnet1 VLAN 37

VM 1

●
●
●
●

physnet2 VLAN 413

VM 3

VM 2

Created via multi-provider API extension
Segments bridged administratively (for now)
Ports associated with network, not specific segment
Ports bound automatically to segment with connectivity
Type Driver API
class TypeDriver(object):
@abstractmethod
def get_type(self):
pass
@abstractmethod
def initialize(self):
pass
@abstractmethod
def validate_provider_segment(self, segment):
pass
@abstractmethod
def reserve_provider_segment(self, session, segment):
pass
@abstractmethod
def allocate_tenant_segment(self, session):
pass
@abstractmethod
def release_segment(self, session, segment):
pass
Mechanism Driver API
class MechanismDriver(object):
@abstractmethod
def initialize(self):
pass
def create_network_precommit(self, context):
pass
def create_network_postcommit(self, context):
pass

def update_network_precommit(self, context):
pass
def update_network_postcommit(self, context):
pass
def delete_network_precommit(self, context):
pass
def delete_network_postcommit(self, context):
pass
def create_subnet_precommit(self, context):
pass
def create_subnet_postcommit(self, context):
pass
def update_subnet_precommit(self, context):
pass
def update_subnet_postcommit(self, context):
pass
def delete_subnet_precommit(self, context):
pass
def delete_subnet_postcommit(self, context):
pass

def create_port_precommit(self, context):
pass
def create_port_postcommit(self, context):
pass
def update_port_precommit(self, context):
pass
def update_port_postcommit(self, context):
pass
def delete_port_precommit(self, context):
pass
def delete_port_postcommit(self, context):
pass
def bind_port(self, context):
pass
def validate_port_binding(self, context):
return False
def unbind_port(self, context):
pass
class NetworkContext(object):
@abstractproperty
def current(self):
pass
@abstractproperty
def original(self):
pass
@abstractproperty
def network_segments(self):
pass
Port Binding
•
•
•
•

Determines values for port’s binding:vif_type and
binding:capabilities attributes and selects
segment
Occurs when binding:host_id set on port or
existing valid binding
ML2 plugin calls bind_port() on registered
MechanismDrivers, in order listed in config, until
one succeeds or all have been tried
Driver determines if it can bind based on:
o
o

context.current[‘binding:host_id’]

o

•

context.network.network_segments
context.host_agents()

For L2 agent drivers, binding requires live L2
agent on port’s host that:
o

o

•
•

Supports the network_type of a segment
of the port’s network

Has a mapping for that segment’s
physical_network if applicable

If it can bind the port, driver calls
context.set_binding() with binding details
If no driver succeeds, port’s binding:vif_type set
to BINDING_FAILED

class PortContext(object):
@abstractproperty
def current(self):
pass
@abstractproperty
def original(self):
pass
@abstractproperty
def network(self):
pass
@abstractproperty
def bound_segment(self):
pass
@abstractmethod
def host_agents(self, agent_type):
pass
@abstractmethod
def set_binding(self, segment_id,

vif_type,
cap_port_filter):
pass
Havana Features
Type Drivers in Havana
The following are supported segmentation
types in ML2 for the Havana release:
● local
● flat
● VLAN
● GRE
● VXLAN
Mechanism Drivers in Havana
The following ML2 MechanismDrivers exist in
Havana:
●
●
●
●
●
●
●

Arista
Cisco Nexus
Hyper-V Agent
L2 Population
Linuxbridge Agent
Open vSwitch Agent
Tail-f NCS
Before
ML2 L2 Population MechanismDriver
“VM A” wants to talk to “VM G.” “VM A” sends a
broadcast packet, which is replicated to the entire
tunnel mesh.

VM A

VM B

Host 1
VM I
VM C

Host 1

Host 2

VM H

Host 4

VM G

Host 3

VM F

VM E

VM D
With
ML2 L2 Population MechanismDriver
Traffic from “VM A” to “VM G” is
encapsulated and sent to “Host 4”
according to the bridge forwarding
table entry.

The ARP request from “VM A” for “VM G” is
intercepted and answered using a pre-populated
neighbor entry.
VM A

Host 1

VM B

Proxy Arp

VM I
VM C

Host 2
Host 1

VM H

Host 4

VM G

Host 3

VM F

VM E

VM D
Modular Layer 2 Futures
ML2 Futures: Deprecation Items

•

The future of the Open vSwitch and
Linuxbridge plugins
These are planned for deprecation in Icehouse
o ML2 supports all their functionality
o ML2 works with the existing OVS and Linuxbrige
agents
o No new features being added in Icehouse to OVS
and Linuxbridge plugins
o

•

Migration Tool being developed
Plugin vs. ML2 MechanismDriver?

•

Advantages of writing an ML2 Driver instead
of a new monolithic plugin
Much less code to write (or clone) and maintain
o New neutron features supported as they are added
o Support for heterogeneous deployments
o

•

Vendors integrating new plugins should
consider an ML2 Driver instead
o

Existing plugins may want to migrate to ML2 as well
ML2 With Current Agents
●
●

Existing ML2 Plugin
works with existing
agents
Separate agents for
Linuxbridge, Open
vSwitch, and Hyper-V

Neutron Server

ML2
Plugin

API Network

Host A

Linuxbridge
Agent

Host B

Hyper-V
Agent

Host C

Open vSwitch
Agent

Host D

Open vSwitch
Agent
ML2 With Modular L2 Agent
●
●

●

Future direction is to
combine Open
Source Agents
Have a single agent
which can support
Linuxbridge and Open
vSwitch
Pluggable drivers for
additional vSwitches,
Infiniband, SR-IOV, ...

Neutron Server

ML2
Plugin

API Network

Host A

Modular
Agent

Host B

Modular
Agent

Host C

Modular
Agent

Host D

Modular
Agent
ML2 Demo
What the Demo Will Show
● ML2 running with multiple MechanismDrivers
○
○

openvswitch
cisco_nexus

● Booting multiple VMs on multiple compute
hosts
● Hosts are running Fedora

● Configuration of VLANs across both virtual
and physical infrastructure
ML2 Demo Setup
Host 1
nova api

neutron server

Host 2

VLAN is added on
the VIF for
nova compute VM1
and also on the
...
br-eth2 ports by
the ML2 OVS
neutron ovs agent
MechanismDriver.

neutron dhcp

VLAN is added on
the VIF for VM2
and also on the
br-eth2 ports by
neutron ovs OVS
the ML2
agent
MechanismDriver.

nova compute

neutron l3 agent

vm1
br-int
br-eth2
eth2

vm2

VM1 can ping
VM2 … we’ve
successfully
completed the
standard network
test.

br-int
br-eth2
eth2

The ML2 Cisco ML2 Cisco
The
Nexus
Nexus
MechanismDriver
MechanismDriver
trunks the VLAN the VLAN
trunks
on eth2/1. on eth2/2.

eth2/1

eth2/2

Cisco Nexus Switch
Modular Layer 2 In OpenStack Neutron
Questions?
1 of 31

Recommended

OVN - Basics and deep dive by
OVN - Basics and deep diveOVN - Basics and deep dive
OVN - Basics and deep diveTrinath Somanchi
5K views22 slides
macvlan and ipvlan by
macvlan and ipvlanmacvlan and ipvlan
macvlan and ipvlanSuraj Deshmukh
3.6K views12 slides
Neutron-to-Neutron: interconnecting multiple OpenStack deployments by
Neutron-to-Neutron: interconnecting multiple OpenStack deploymentsNeutron-to-Neutron: interconnecting multiple OpenStack deployments
Neutron-to-Neutron: interconnecting multiple OpenStack deploymentsThomas Morin
649 views17 slides
Service Function Chaining in Openstack Neutron by
Service Function Chaining in Openstack NeutronService Function Chaining in Openstack Neutron
Service Function Chaining in Openstack NeutronMichelle Holley
2.1K views22 slides
Meetup 23 - 02 - OVN - The future of networking in OpenStack by
Meetup 23 - 02 - OVN - The future of networking in OpenStackMeetup 23 - 02 - OVN - The future of networking in OpenStack
Meetup 23 - 02 - OVN - The future of networking in OpenStackVietnam Open Infrastructure User Group
1.8K views29 slides
Understanding Open vSwitch by
Understanding Open vSwitch Understanding Open vSwitch
Understanding Open vSwitch YongKi Kim
3.5K views27 slides

More Related Content

What's hot

NETCONF Call Home by
NETCONF Call Home NETCONF Call Home
NETCONF Call Home ADVA
6.4K views16 slides
Network Jumbo Frame Config Guide by
Network Jumbo Frame Config GuideNetwork Jumbo Frame Config Guide
Network Jumbo Frame Config GuideWoo Hyung Choi
3.4K views17 slides
OpenvSwitch Deep Dive by
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Diverajdeep
63.9K views41 slides
MP BGP-EVPN 실전기술-1편(개념잡기) by
MP BGP-EVPN 실전기술-1편(개념잡기)MP BGP-EVPN 실전기술-1편(개념잡기)
MP BGP-EVPN 실전기술-1편(개념잡기)JuHwan Lee
13.2K views30 slides
Zabbix by
ZabbixZabbix
Zabbixpundir5
8K views31 slides
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기 by
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기Ian Choi
15.7K views257 slides

What's hot(20)

NETCONF Call Home by ADVA
NETCONF Call Home NETCONF Call Home
NETCONF Call Home
ADVA6.4K views
Network Jumbo Frame Config Guide by Woo Hyung Choi
Network Jumbo Frame Config GuideNetwork Jumbo Frame Config Guide
Network Jumbo Frame Config Guide
Woo Hyung Choi3.4K views
OpenvSwitch Deep Dive by rajdeep
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Dive
rajdeep63.9K views
MP BGP-EVPN 실전기술-1편(개념잡기) by JuHwan Lee
MP BGP-EVPN 실전기술-1편(개념잡기)MP BGP-EVPN 실전기술-1편(개념잡기)
MP BGP-EVPN 실전기술-1편(개념잡기)
JuHwan Lee13.2K views
Zabbix by pundir5
ZabbixZabbix
Zabbix
pundir58K views
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기 by Ian Choi
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
Ian Choi15.7K views
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN by OpenStack Korea Community
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
WAS vs JBoss, WebLogic, Tomcat (year 2015) by Roman Kharkovski
WAS vs JBoss, WebLogic, Tomcat (year 2015)WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)
Roman Kharkovski61.9K views
오픈스택 기반 클라우드 서비스 구축 방안 및 사례 by SONG INSEOB
오픈스택 기반 클라우드 서비스 구축 방안 및 사례오픈스택 기반 클라우드 서비스 구축 방안 및 사례
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
SONG INSEOB7.7K views
Openv switchの使い方とか by kotto_hihihi
Openv switchの使い方とかOpenv switchの使い方とか
Openv switchの使い方とか
kotto_hihihi31.2K views
ONIC-Japan-2019-OVN public by Manabu Ori
ONIC-Japan-2019-OVN publicONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN public
Manabu Ori363 views
Introduction to OFI by seanhefty
Introduction to OFIIntroduction to OFI
Introduction to OFI
seanhefty22.4K views
debugging openstack neutron /w openvswitch by 어형 이
debugging openstack neutron /w openvswitchdebugging openstack neutron /w openvswitch
debugging openstack neutron /w openvswitch
어형 이5.6K views
Using NGINX as an Effective and Highly Available Content Cache by Kevin Jones
Using NGINX as an Effective and Highly Available Content CacheUsing NGINX as an Effective and Highly Available Content Cache
Using NGINX as an Effective and Highly Available Content Cache
Kevin Jones1.6K views
Mininet introduction by Vipin Gupta
Mininet introductionMininet introduction
Mininet introduction
Vipin Gupta586 views
Cisco nexus series by Anwesh Dixit
Cisco nexus seriesCisco nexus series
Cisco nexus series
Anwesh Dixit9.8K views
TRex Realistic Traffic Generator - Stateless support by Hanoch Haim
TRex  Realistic Traffic Generator  - Stateless support TRex  Realistic Traffic Generator  - Stateless support
TRex Realistic Traffic Generator - Stateless support
Hanoch Haim12.9K views
20150511 jun lee_openstack neutron 분석 (최종) by rootfs32
20150511 jun lee_openstack neutron 분석 (최종)20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)
rootfs326.5K views

Similar to Modular Layer 2 In OpenStack Neutron

neutron_icehouse_update by
neutron_icehouse_updateneutron_icehouse_update
neutron_icehouse_updateAkihiro Motoki
5.2K views35 slides
Open Source Backends for OpenStack Neutron by
Open Source Backends for OpenStack NeutronOpen Source Backends for OpenStack Neutron
Open Source Backends for OpenStack Neutronmestery
6.1K views26 slides
Bridges and Tunnels: A Drive Through OpenStack Networking by
Bridges and Tunnels: A Drive Through OpenStack NetworkingBridges and Tunnels: A Drive Through OpenStack Networking
Bridges and Tunnels: A Drive Through OpenStack Networkingmarkmcclain
2.8K views37 slides
Open stack networking_101_update_2014 by
Open stack networking_101_update_2014Open stack networking_101_update_2014
Open stack networking_101_update_2014yfauser
5.2K views22 slides
OpenStack Networking and Automation by
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and AutomationAdam Johnson
2.9K views29 slides
SDN & NFV Introduction - Open Source Data Center Networking by
SDN & NFV Introduction - Open Source Data Center NetworkingSDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center NetworkingThomas Graf
8K views72 slides

Similar to Modular Layer 2 In OpenStack Neutron(20)

Open Source Backends for OpenStack Neutron by mestery
Open Source Backends for OpenStack NeutronOpen Source Backends for OpenStack Neutron
Open Source Backends for OpenStack Neutron
mestery6.1K views
Bridges and Tunnels: A Drive Through OpenStack Networking by markmcclain
Bridges and Tunnels: A Drive Through OpenStack NetworkingBridges and Tunnels: A Drive Through OpenStack Networking
Bridges and Tunnels: A Drive Through OpenStack Networking
markmcclain2.8K views
Open stack networking_101_update_2014 by yfauser
Open stack networking_101_update_2014Open stack networking_101_update_2014
Open stack networking_101_update_2014
yfauser5.2K views
OpenStack Networking and Automation by Adam Johnson
OpenStack Networking and AutomationOpenStack Networking and Automation
OpenStack Networking and Automation
Adam Johnson2.9K views
SDN & NFV Introduction - Open Source Data Center Networking by Thomas Graf
SDN & NFV Introduction - Open Source Data Center NetworkingSDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center Networking
Thomas Graf8K views
Network Virtualization & Software-defined Networking by Digicomp Academy AG
Network Virtualization & Software-defined NetworkingNetwork Virtualization & Software-defined Networking
Network Virtualization & Software-defined Networking
Digicomp Academy AG3.6K views
Openstack Workshop (Networking/Storage) by Affan Syed
Openstack Workshop (Networking/Storage)Openstack Workshop (Networking/Storage)
Openstack Workshop (Networking/Storage)
Affan Syed586 views
OpenStack networking (Neutron) by CREATE-NET
OpenStack networking (Neutron) OpenStack networking (Neutron)
OpenStack networking (Neutron)
CREATE-NET2.3K views
OpenStack Neutron 201 1hr by David Lenwell
OpenStack Neutron 201 1hr OpenStack Neutron 201 1hr
OpenStack Neutron 201 1hr
David Lenwell1.1K views
Modular Quantum L2 Plugin and Agent by Bob Kukura
Modular Quantum L2 Plugin and AgentModular Quantum L2 Plugin and Agent
Modular Quantum L2 Plugin and Agent
Bob Kukura2.5K views
Inside Architecture of Neutron by markmcclain
Inside Architecture of NeutronInside Architecture of Neutron
Inside Architecture of Neutron
markmcclain27K views
20151222_Interoperability with ML2: LinuxBridge, OVS and SDN by Sungman Jang
20151222_Interoperability with ML2: LinuxBridge, OVS and SDN20151222_Interoperability with ML2: LinuxBridge, OVS and SDN
20151222_Interoperability with ML2: LinuxBridge, OVS and SDN
Sungman Jang444 views
How to write a Neutron Plugin - if you really need to by salv_orlando
How to write a Neutron Plugin - if you really need toHow to write a Neutron Plugin - if you really need to
How to write a Neutron Plugin - if you really need to
salv_orlando32.1K views
Intro to OpenStack Astara (Spring '16) by markmcclain
Intro to OpenStack Astara (Spring '16)Intro to OpenStack Astara (Spring '16)
Intro to OpenStack Astara (Spring '16)
markmcclain526 views
Openstack Neutron and SDN by inakipascual
Openstack Neutron and SDNOpenstack Neutron and SDN
Openstack Neutron and SDN
inakipascual13.8K views
Excitingly simple multi-path OpenStack networking: LAG-less, L2-less, yet ful... by LINE Corporation
Excitingly simple multi-path OpenStack networking: LAG-less, L2-less, yet ful...Excitingly simple multi-path OpenStack networking: LAG-less, L2-less, yet ful...
Excitingly simple multi-path OpenStack networking: LAG-less, L2-less, yet ful...
LINE Corporation12.9K views
Dragonflow 01 2016 TLV meetup by Eran Gampel
Dragonflow 01 2016 TLV meetup  Dragonflow 01 2016 TLV meetup
Dragonflow 01 2016 TLV meetup
Eran Gampel1.3K views

More from mestery

OVN: Scaleable Virtual Networking for Open vSwitch by
OVN: Scaleable Virtual Networking for Open vSwitchOVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitchmestery
1.9K views37 slides
OpenStack Tokyo Summit Keynote Slides by
OpenStack Tokyo Summit Keynote SlidesOpenStack Tokyo Summit Keynote Slides
OpenStack Tokyo Summit Keynote Slidesmestery
350 views17 slides
OpenStack Neutron: What's New In Kilo and a Look Toward Liberty by
OpenStack Neutron: What's New In Kilo and a Look Toward LibertyOpenStack Neutron: What's New In Kilo and a Look Toward Liberty
OpenStack Neutron: What's New In Kilo and a Look Toward Libertymestery
3.8K views38 slides
OpenStack Neutron Liberty Updates by
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updatesmestery
2.9K views19 slides
OpenStack Neutron Tutorial by
OpenStack Neutron TutorialOpenStack Neutron Tutorial
OpenStack Neutron Tutorialmestery
19K views76 slides
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron by
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack NeutronGroup Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutronmestery
4K views34 slides

More from mestery(15)

OVN: Scaleable Virtual Networking for Open vSwitch by mestery
OVN: Scaleable Virtual Networking for Open vSwitchOVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitch
mestery1.9K views
OpenStack Tokyo Summit Keynote Slides by mestery
OpenStack Tokyo Summit Keynote SlidesOpenStack Tokyo Summit Keynote Slides
OpenStack Tokyo Summit Keynote Slides
mestery350 views
OpenStack Neutron: What's New In Kilo and a Look Toward Liberty by mestery
OpenStack Neutron: What's New In Kilo and a Look Toward LibertyOpenStack Neutron: What's New In Kilo and a Look Toward Liberty
OpenStack Neutron: What's New In Kilo and a Look Toward Liberty
mestery3.8K views
OpenStack Neutron Liberty Updates by mestery
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
mestery2.9K views
OpenStack Neutron Tutorial by mestery
OpenStack Neutron TutorialOpenStack Neutron Tutorial
OpenStack Neutron Tutorial
mestery19K views
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron by mestery
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack NeutronGroup Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
mestery4K views
OpenStack and OpenDaylight Workshop: ONUG Spring 2014 by mestery
OpenStack and OpenDaylight Workshop: ONUG Spring 2014OpenStack and OpenDaylight Workshop: ONUG Spring 2014
OpenStack and OpenDaylight Workshop: ONUG Spring 2014
mestery13.6K views
OpenDaylight Integration with OpenStack Neutron: A Tutorial by mestery
OpenDaylight Integration with OpenStack Neutron: A TutorialOpenDaylight Integration with OpenStack Neutron: A Tutorial
OpenDaylight Integration with OpenStack Neutron: A Tutorial
mestery20.5K views
Next Generation Network Developer Skills by mestery
Next Generation Network Developer SkillsNext Generation Network Developer Skills
Next Generation Network Developer Skills
mestery11K views
LISP and NSH in Open vSwitch by mestery
LISP and NSH in Open vSwitchLISP and NSH in Open vSwitch
LISP and NSH in Open vSwitch
mestery6.8K views
vBrownBag OpenStack Networking Talk by mestery
vBrownBag OpenStack Networking TalkvBrownBag OpenStack Networking Talk
vBrownBag OpenStack Networking Talk
mestery2K views
OpenStack: Why Is It Gaining So Much Traction? by mestery
OpenStack: Why Is It Gaining So Much Traction?OpenStack: Why Is It Gaining So Much Traction?
OpenStack: Why Is It Gaining So Much Traction?
mestery8.6K views
Triangle OpenStack Meetup by mestery
Triangle OpenStack MeetupTriangle OpenStack Meetup
Triangle OpenStack Meetup
mestery1K views
OpenStack Development Using devstack by mestery
OpenStack Development Using devstackOpenStack Development Using devstack
OpenStack Development Using devstack
mestery13.1K views
Open Source Cloud, Virtualization and Deployment Technologies by mestery
Open Source Cloud, Virtualization and Deployment TechnologiesOpen Source Cloud, Virtualization and Deployment Technologies
Open Source Cloud, Virtualization and Deployment Technologies
mestery2.1K views

Recently uploaded

From chaos to control: Managing migrations and Microsoft 365 with ShareGate! by
From chaos to control: Managing migrations and Microsoft 365 with ShareGate!From chaos to control: Managing migrations and Microsoft 365 with ShareGate!
From chaos to control: Managing migrations and Microsoft 365 with ShareGate!sammart93
9 views39 slides
Transcript: The Details of Description Techniques tips and tangents on altern... by
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...BookNet Canada
135 views15 slides
handbook for web 3 adoption.pdf by
handbook for web 3 adoption.pdfhandbook for web 3 adoption.pdf
handbook for web 3 adoption.pdfLiveplex
22 views16 slides
HTTP headers that make your website go faster - devs.gent November 2023 by
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023Thijs Feryn
21 views151 slides
Case Study Copenhagen Energy and Business Central.pdf by
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdfAitana
16 views3 slides
STPI OctaNE CoE Brochure.pdf by
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdfmadhurjyapb
13 views1 slide

Recently uploaded(20)

From chaos to control: Managing migrations and Microsoft 365 with ShareGate! by sammart93
From chaos to control: Managing migrations and Microsoft 365 with ShareGate!From chaos to control: Managing migrations and Microsoft 365 with ShareGate!
From chaos to control: Managing migrations and Microsoft 365 with ShareGate!
sammart939 views
Transcript: The Details of Description Techniques tips and tangents on altern... by BookNet Canada
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...
BookNet Canada135 views
handbook for web 3 adoption.pdf by Liveplex
handbook for web 3 adoption.pdfhandbook for web 3 adoption.pdf
handbook for web 3 adoption.pdf
Liveplex22 views
HTTP headers that make your website go faster - devs.gent November 2023 by Thijs Feryn
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
Thijs Feryn21 views
Case Study Copenhagen Energy and Business Central.pdf by Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana16 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb13 views
Attacking IoT Devices from a Web Perspective - Linux Day by Simone Onofri
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
Simone Onofri15 views
Spesifikasi Lengkap ASUS Vivobook Go 14 by Dot Semarang
Spesifikasi Lengkap ASUS Vivobook Go 14Spesifikasi Lengkap ASUS Vivobook Go 14
Spesifikasi Lengkap ASUS Vivobook Go 14
Dot Semarang37 views
AMAZON PRODUCT RESEARCH.pdf by JerikkLaureta
AMAZON PRODUCT RESEARCH.pdfAMAZON PRODUCT RESEARCH.pdf
AMAZON PRODUCT RESEARCH.pdf
JerikkLaureta19 views
Black and White Modern Science Presentation.pptx by maryamkhalid2916
Black and White Modern Science Presentation.pptxBlack and White Modern Science Presentation.pptx
Black and White Modern Science Presentation.pptx
maryamkhalid291616 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi126 views
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 by IttrainingIttraining
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
Data-centric AI and the convergence of data and model engineering: opportunit... by Paolo Missier
Data-centric AI and the convergence of data and model engineering:opportunit...Data-centric AI and the convergence of data and model engineering:opportunit...
Data-centric AI and the convergence of data and model engineering: opportunit...
Paolo Missier39 views
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson66 views
6g - REPORT.pdf by Liveplex
6g - REPORT.pdf6g - REPORT.pdf
6g - REPORT.pdf
Liveplex10 views

Modular Layer 2 In OpenStack Neutron

  • 1. Modular Layer 2 In OpenStack Neutron Robert Kukura, Red Hat Kyle Mestery, Cisco
  • 2. 1. I’ve heard the Open vSwitch and Linuxbridge Neutron Plugins are being deprecated. 2. I’ve heard ML2 does some cool stuff! 3. I don’t know what ML2 is but want to learn about it and what it provides.
  • 3. What is Modular Layer 2? A new Neutron core plugin in Havana Modular • Drivers for layer 2 network types and mechanisms interface with agents, hardware, controllers, ... o Service plugins and their drivers for layer 3+ o • Works with existing L2 agents openvswitch o linuxbridge o hyperv o • Deprecates existing monolithic plugins openvswitch o linuxbridge o
  • 4. Motivations For a Modular Layer 2 Plugin
  • 5. Before Modular Layer 2 ... Neutron Server Neutron Server OR Open vSwitch Plugin OR ... Linuxbridge Plugin
  • 6. Before Modular Layer 2 ... I want to write a Neutron Plugin. What a pain. :( Neutron Server But I have to duplicate a lot of DB, segmentation, etc. work. Vendor X Plugin
  • 7. ML2 Use Cases • Replace existing monolithic plugins Eliminate redundant code o Reduce development & maintenance effort o • New features Top-of-Rack switch control o Avoid tunnel flooding via L2 population o Many more to come... o • Heterogeneous deployments Specialized hypervisor nodes with distinct network mechanisms o Integrate *aaS appliances o Roll new technologies into existing deployments o
  • 8. Modular Layer 2 Architecture
  • 9. The Modular Layer 2 (ML2) Plugin is a framework allowing OpenStack Neutron to simultaneously utilize the variety of layer 2 networking technologies found in complex real-world data centers.
  • 10. What’s Similar? ML2 is functionally a superset of the monolithic openvswitch, linuxbridge, and hyperv plugins: • • • • Based on NeutronDBPluginV2 Models networks in terms of provider attributes RPC interface to L2 agents Extension APIs
  • 11. What’s Different? ML2 introduces several innovations to achieve its goals: • • • • Cleanly separates management of network types from the mechanisms for accessing those networks o Makes types and mechanisms pluggable via drivers o Allows multiple mechanism drivers to access same network simultaneously o Optional features packaged as mechanism drivers Supports multi-segment networks Flexible port binding L3 router extension integrated as a service plugin
  • 12. ML2 Architecture Diagram Neutron Server API Extensions ML2 Plugin Mechanism Manager Type Manager Tail-F NCS Open vSwitch Linuxbridge L2 Population Hyper-V Cisco Nexus Arista VXLAN TypeDriver VLAN TypeDriver GRE TypeDriver
  • 13. Multi-Segment Networks VXLAN 123567 physnet1 VLAN 37 VM 1 ● ● ● ● physnet2 VLAN 413 VM 3 VM 2 Created via multi-provider API extension Segments bridged administratively (for now) Ports associated with network, not specific segment Ports bound automatically to segment with connectivity
  • 14. Type Driver API class TypeDriver(object): @abstractmethod def get_type(self): pass @abstractmethod def initialize(self): pass @abstractmethod def validate_provider_segment(self, segment): pass @abstractmethod def reserve_provider_segment(self, session, segment): pass @abstractmethod def allocate_tenant_segment(self, session): pass @abstractmethod def release_segment(self, session, segment): pass
  • 15. Mechanism Driver API class MechanismDriver(object): @abstractmethod def initialize(self): pass def create_network_precommit(self, context): pass def create_network_postcommit(self, context): pass def update_network_precommit(self, context): pass def update_network_postcommit(self, context): pass def delete_network_precommit(self, context): pass def delete_network_postcommit(self, context): pass def create_subnet_precommit(self, context): pass def create_subnet_postcommit(self, context): pass def update_subnet_precommit(self, context): pass def update_subnet_postcommit(self, context): pass def delete_subnet_precommit(self, context): pass def delete_subnet_postcommit(self, context): pass def create_port_precommit(self, context): pass def create_port_postcommit(self, context): pass def update_port_precommit(self, context): pass def update_port_postcommit(self, context): pass def delete_port_precommit(self, context): pass def delete_port_postcommit(self, context): pass def bind_port(self, context): pass def validate_port_binding(self, context): return False def unbind_port(self, context): pass class NetworkContext(object): @abstractproperty def current(self): pass @abstractproperty def original(self): pass @abstractproperty def network_segments(self): pass
  • 16. Port Binding • • • • Determines values for port’s binding:vif_type and binding:capabilities attributes and selects segment Occurs when binding:host_id set on port or existing valid binding ML2 plugin calls bind_port() on registered MechanismDrivers, in order listed in config, until one succeeds or all have been tried Driver determines if it can bind based on: o o context.current[‘binding:host_id’] o • context.network.network_segments context.host_agents() For L2 agent drivers, binding requires live L2 agent on port’s host that: o o • • Supports the network_type of a segment of the port’s network Has a mapping for that segment’s physical_network if applicable If it can bind the port, driver calls context.set_binding() with binding details If no driver succeeds, port’s binding:vif_type set to BINDING_FAILED class PortContext(object): @abstractproperty def current(self): pass @abstractproperty def original(self): pass @abstractproperty def network(self): pass @abstractproperty def bound_segment(self): pass @abstractmethod def host_agents(self, agent_type): pass @abstractmethod def set_binding(self, segment_id, vif_type, cap_port_filter): pass
  • 18. Type Drivers in Havana The following are supported segmentation types in ML2 for the Havana release: ● local ● flat ● VLAN ● GRE ● VXLAN
  • 19. Mechanism Drivers in Havana The following ML2 MechanismDrivers exist in Havana: ● ● ● ● ● ● ● Arista Cisco Nexus Hyper-V Agent L2 Population Linuxbridge Agent Open vSwitch Agent Tail-f NCS
  • 20. Before ML2 L2 Population MechanismDriver “VM A” wants to talk to “VM G.” “VM A” sends a broadcast packet, which is replicated to the entire tunnel mesh. VM A VM B Host 1 VM I VM C Host 1 Host 2 VM H Host 4 VM G Host 3 VM F VM E VM D
  • 21. With ML2 L2 Population MechanismDriver Traffic from “VM A” to “VM G” is encapsulated and sent to “Host 4” according to the bridge forwarding table entry. The ARP request from “VM A” for “VM G” is intercepted and answered using a pre-populated neighbor entry. VM A Host 1 VM B Proxy Arp VM I VM C Host 2 Host 1 VM H Host 4 VM G Host 3 VM F VM E VM D
  • 22. Modular Layer 2 Futures
  • 23. ML2 Futures: Deprecation Items • The future of the Open vSwitch and Linuxbridge plugins These are planned for deprecation in Icehouse o ML2 supports all their functionality o ML2 works with the existing OVS and Linuxbrige agents o No new features being added in Icehouse to OVS and Linuxbridge plugins o • Migration Tool being developed
  • 24. Plugin vs. ML2 MechanismDriver? • Advantages of writing an ML2 Driver instead of a new monolithic plugin Much less code to write (or clone) and maintain o New neutron features supported as they are added o Support for heterogeneous deployments o • Vendors integrating new plugins should consider an ML2 Driver instead o Existing plugins may want to migrate to ML2 as well
  • 25. ML2 With Current Agents ● ● Existing ML2 Plugin works with existing agents Separate agents for Linuxbridge, Open vSwitch, and Hyper-V Neutron Server ML2 Plugin API Network Host A Linuxbridge Agent Host B Hyper-V Agent Host C Open vSwitch Agent Host D Open vSwitch Agent
  • 26. ML2 With Modular L2 Agent ● ● ● Future direction is to combine Open Source Agents Have a single agent which can support Linuxbridge and Open vSwitch Pluggable drivers for additional vSwitches, Infiniband, SR-IOV, ... Neutron Server ML2 Plugin API Network Host A Modular Agent Host B Modular Agent Host C Modular Agent Host D Modular Agent
  • 28. What the Demo Will Show ● ML2 running with multiple MechanismDrivers ○ ○ openvswitch cisco_nexus ● Booting multiple VMs on multiple compute hosts ● Hosts are running Fedora ● Configuration of VLANs across both virtual and physical infrastructure
  • 29. ML2 Demo Setup Host 1 nova api neutron server Host 2 VLAN is added on the VIF for nova compute VM1 and also on the ... br-eth2 ports by the ML2 OVS neutron ovs agent MechanismDriver. neutron dhcp VLAN is added on the VIF for VM2 and also on the br-eth2 ports by neutron ovs OVS the ML2 agent MechanismDriver. nova compute neutron l3 agent vm1 br-int br-eth2 eth2 vm2 VM1 can ping VM2 … we’ve successfully completed the standard network test. br-int br-eth2 eth2 The ML2 Cisco ML2 Cisco The Nexus Nexus MechanismDriver MechanismDriver trunks the VLAN the VLAN trunks on eth2/1. on eth2/2. eth2/1 eth2/2 Cisco Nexus Switch