SlideShare a Scribd company logo
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?

More Related Content

What's hot (20)

PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
 
PPTX
01. Kubernetes-PPT.pptx
TamalBanerjee16
 
PDF
Kubernetes - A Comprehensive Overview
Bob Killen
 
PDF
Ansible 101
Gena Mykhailiuta
 
PPTX
Kubernetes 101 for Beginners
Oktay Esgul
 
PDF
Operator Framework Overview
Rob Szumski
 
PDF
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
Ji-Woong Choi
 
PDF
Neutron packet logging framework
Vietnam Open Infrastructure User Group
 
PPTX
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
vivekkonnect
 
PDF
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Nalee Jang
 
PDF
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Edureka!
 
PDF
Alphorm.com Formation Red Hat RH124
Alphorm
 
PDF
OpenStack networking (Neutron)
CREATE-NET
 
PPTX
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 
PDF
OpenStack Networking
Ilya Shakhat
 
PDF
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
Ian Choi
 
PPTX
Packet flow on openstack
Achhar Kalia
 
PPTX
OVN 設定サンプル | OVN config example 2015/12/27
Kentaro Ebisawa
 
PDF
Virtualized network with openvswitch
Sim Janghoon
 
PPTX
OVN - Basics and deep dive
Trinath Somanchi
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
 
01. Kubernetes-PPT.pptx
TamalBanerjee16
 
Kubernetes - A Comprehensive Overview
Bob Killen
 
Ansible 101
Gena Mykhailiuta
 
Kubernetes 101 for Beginners
Oktay Esgul
 
Operator Framework Overview
Rob Szumski
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
Ji-Woong Choi
 
Neutron packet logging framework
Vietnam Open Infrastructure User Group
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
vivekkonnect
 
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Nalee Jang
 
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Edureka!
 
Alphorm.com Formation Red Hat RH124
Alphorm
 
OpenStack networking (Neutron)
CREATE-NET
 
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 
OpenStack Networking
Ilya Shakhat
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
Ian Choi
 
Packet flow on openstack
Achhar Kalia
 
OVN 設定サンプル | OVN config example 2015/12/27
Kentaro Ebisawa
 
Virtualized network with openvswitch
Sim Janghoon
 
OVN - Basics and deep dive
Trinath Somanchi
 

Similar to Modular Layer 2 In OpenStack Neutron (20)

PDF
neutron_icehouse_update
Akihiro Motoki
 
PDF
Open Source Backends for OpenStack Neutron
mestery
 
PDF
Bridges and Tunnels: A Drive Through OpenStack Networking
markmcclain
 
PDF
Open stack networking_101_update_2014
yfauser
 
PPTX
OpenStack Networking and Automation
Adam Johnson
 
PDF
SDN & NFV Introduction - Open Source Data Center Networking
Thomas Graf
 
PDF
Network Virtualization & Software-defined Networking
Digicomp Academy AG
 
PDF
Openstack Workshop (Networking/Storage)
Affan Syed
 
PDF
OpenStack Neutron 201 1hr
David Lenwell
 
PDF
Simplify Networking for Containers
LinuxCon ContainerCon CloudOpen China
 
PDF
Modular Quantum L2 Plugin and Agent
Bob Kukura
 
PDF
Inside Architecture of Neutron
markmcclain
 
PPTX
Networking in Openstack - Neutron 101
Mochamad Taufik Romdony
 
PPTX
20151222_Interoperability with ML2: LinuxBridge, OVS and SDN
Sungman Jang
 
PPTX
How to write a Neutron Plugin - if you really need to
salv_orlando
 
PDF
Intro to OpenStack Astara (Spring '16)
markmcclain
 
PDF
Openstack Neutron and SDN
inakipascual
 
PDF
Excitingly simple multi-path OpenStack networking: LAG-less, L2-less, yet ful...
LINE Corporation
 
PPTX
Dragonflow 01 2016 TLV meetup
Eran Gampel
 
PDF
How OpenShift SDN helps to automate
Ilkka Tengvall
 
neutron_icehouse_update
Akihiro Motoki
 
Open Source Backends for OpenStack Neutron
mestery
 
Bridges and Tunnels: A Drive Through OpenStack Networking
markmcclain
 
Open stack networking_101_update_2014
yfauser
 
OpenStack Networking and Automation
Adam Johnson
 
SDN & NFV Introduction - Open Source Data Center Networking
Thomas Graf
 
Network Virtualization & Software-defined Networking
Digicomp Academy AG
 
Openstack Workshop (Networking/Storage)
Affan Syed
 
OpenStack Neutron 201 1hr
David Lenwell
 
Simplify Networking for Containers
LinuxCon ContainerCon CloudOpen China
 
Modular Quantum L2 Plugin and Agent
Bob Kukura
 
Inside Architecture of Neutron
markmcclain
 
Networking in Openstack - Neutron 101
Mochamad Taufik Romdony
 
20151222_Interoperability with ML2: LinuxBridge, OVS and SDN
Sungman Jang
 
How to write a Neutron Plugin - if you really need to
salv_orlando
 
Intro to OpenStack Astara (Spring '16)
markmcclain
 
Openstack Neutron and SDN
inakipascual
 
Excitingly simple multi-path OpenStack networking: LAG-less, L2-less, yet ful...
LINE Corporation
 
Dragonflow 01 2016 TLV meetup
Eran Gampel
 
How OpenShift SDN helps to automate
Ilkka Tengvall
 
Ad

More from mestery (15)

PDF
OVN: Scaleable Virtual Networking for Open vSwitch
mestery
 
PDF
OpenStack Tokyo Summit Keynote Slides
mestery
 
PDF
OpenStack Neutron: What's New In Kilo and a Look Toward Liberty
mestery
 
PDF
OpenStack Neutron Liberty Updates
mestery
 
PDF
OpenStack Neutron Tutorial
mestery
 
PDF
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
mestery
 
PPTX
OpenStack and OpenDaylight Workshop: ONUG Spring 2014
mestery
 
PPT
OpenDaylight Integration with OpenStack Neutron: A Tutorial
mestery
 
PPTX
Next Generation Network Developer Skills
mestery
 
PPTX
LISP and NSH in Open vSwitch
mestery
 
PPTX
vBrownBag OpenStack Networking Talk
mestery
 
PPTX
OpenStack: Why Is It Gaining So Much Traction?
mestery
 
PPTX
Triangle OpenStack Meetup
mestery
 
PPTX
OpenStack Development Using devstack
mestery
 
PPTX
Open Source Cloud, Virtualization and Deployment Technologies
mestery
 
OVN: Scaleable Virtual Networking for Open vSwitch
mestery
 
OpenStack Tokyo Summit Keynote Slides
mestery
 
OpenStack Neutron: What's New In Kilo and a Look Toward Liberty
mestery
 
OpenStack Neutron Liberty Updates
mestery
 
OpenStack Neutron Tutorial
mestery
 
Group Based Policy: Open Source Policy in OpenDaylight and OpenStack Neutron
mestery
 
OpenStack and OpenDaylight Workshop: ONUG Spring 2014
mestery
 
OpenDaylight Integration with OpenStack Neutron: A Tutorial
mestery
 
Next Generation Network Developer Skills
mestery
 
LISP and NSH in Open vSwitch
mestery
 
vBrownBag OpenStack Networking Talk
mestery
 
OpenStack: Why Is It Gaining So Much Traction?
mestery
 
Triangle OpenStack Meetup
mestery
 
OpenStack Development Using devstack
mestery
 
Open Source Cloud, Virtualization and Deployment Technologies
mestery
 
Ad

Recently uploaded (20)

PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
July Patch Tuesday
Ivanti
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
July Patch Tuesday
Ivanti
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Biography of Daniel Podor.pdf
Daniel Podor
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 

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