SlideShare a Scribd company logo
1 of 20
How to write a Neutron Plugin
(if you really need to)
Salvatore Orlando
Armando Migliaccio
Who are these guys talking to us?
• Salvatore (the fat one)
– Core Openstack Neutron developer
– Breaking Openstack since Cactus
– Known by @taturiello on twitter and salv-orlando on IRC

• Armando (the fit one)
–
–
–
–

Core Openstack Neutron developer
Contributing code since Bexar
Fixes Salvatore’s code
Know by @armandomi2001 on twitter and armax on IRC

• They are both employed by VMware and happily (w)hack
neutron code on a daily basis
Summary
• Part I:

What is a Neutron plugin?
Do you really need a new one?

• Part II: Design choices when writing a
Neutron plugin
• Part III: Writing your first Neutron plugin
With code samples!!!
Part I
The world of Neutron plugins
A Neutron plugin in a Nutshell
• Implements one or more “plugin interfaces”
• Receives requests from the API layer
API

API
request

AuthN
AuthZ
Validation
Dispatch

Plugin

Agents,
physical/virtual
appliances,
controllers, etc.

• Should NOT deal with authN/authZ
Core and service plugins
– Core: Implements the “core” Neutron API
(L2 networking + IPAM)
– Service: plugin provides additional network
services (Eg.: load balancing, firewall, VPN)
• network services can also be provided by core plugin by
implementing the relevant extensions
API

Plugins

Core

L3

Core Plugin

FW

Core

L3

Core Plugin

FW

Core

L3

FW

FW

Core
plugin

L3

FW

plugin

plugin

plugin
Plugins with drivers
• Can execute a given request on different
backends; actual execution is delegated to a
driver
– ML2
• Openvswitch, linuxbridge, hyper-V, tail-F NCS, Arista, …

– Load Balancing reference plugin
– Firewall reference plugin
– (soon) VPN reference plugin

• Implementing a driver is much easier than
implementing a whole plugin!
Making the right decision
• Implementing a driver vs.
a new plugin
• Adding a new service as an
extension vs. a service plugin
Tradeoff:
– Flexibility and interoperability vs simplicity
Available options
• Integrate some kind of network
device into Neutron
– Driver (for ML2, LB, FW, etc.)

• Add a feature that applies to
existing API resources
– API extension and plugin support

• Provide a new network service,
“orthogonal feature”
– New service plugin

• New integrated solution or new
paradigm
– New core plugin
Part II
Considerations for writing
a new Neutron plugin
Planning for a new neutron plugin
• Which extensions support
– At least L3 and security
groups for Nova integration

• Reusing Neutron’s
open source components
– DHCP agent, L3 agent, etc.
Developing a new Neutron plugin
• Backend synchronization
(pull vs push)
• Scalability
• High Availability
• Fault tolerance
• Unit and functional tests
• Extensions
– API and DB extensions
Contributing a new Neutron plugin
• Meet certain standards
– Provide thorough unit test
coverage
– Provide documentation
• And then more
documentation

– Think Devstack
– Tempest
– Think Smokestack

Add your own
funny image here

https://wiki.openstack.org/wiki/NeutronDevelopment#Developing_a_Neutron_Plugin
Part III
Implementing a new
Neutron plugin
Introducing the HDN plugin
• HDN: Human Defined Networking
• Rediscover the human face of IT
– REST API requests are transformed into emails
sent to the networking guy in your IT department
– Asynchronous, eventually consistent, request
processing
– Karma-based request prioritization; the nicer you
are to the IT guy, the sooner your requests will be
processed
The HDN plugin - architecture

Message bus (email)
#TODO: Phone, Fax
API
request

Neutron REST Interface

Human-powered plugin engine
Implementing the plugin
• Core API
– Support for networks, ports, and subnet

• Supported extensions
– L3: Support for routers and floating IPs
– Admin extension for notifying request completion

• Other neutron extensions
– Outside scope… at the end of the day you can
always pick up the phone and call your IT guy!
Getting our hands dirty
• Sources for the HDN plugin are available on
github
– https://github.com/salv-orlando/hdn
– tested with gmail, should work with all SMTP
servers
Summary
• Consider all your alternatives before making a
choice on whether developing a plugin, an
extension or a driver
• When developing a new plugin check if and how
it should integrate with the various neutron
agents
• Make your plugin verifiable through unit and
integration testing
• Open source all the things, but document them
as well
• Who needs SDN when you have HDN???

More Related Content

What's hot

모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)Eunwoo Cho
 
IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018Robert Parker
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubeletChanyeol yoon
 
Turning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirtTurning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirtSuman Chakraborty
 
Tìm hiểu về OpenStack
Tìm hiểu về OpenStackTìm hiểu về OpenStack
Tìm hiểu về OpenStacklanhuonga3
 
Vss vs.vpc
Vss vs.vpcVss vs.vpc
Vss vs.vpcIT Tech
 
OpenvSwitch Deep Dive
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Diverajdeep
 
OpenStack Networking
OpenStack NetworkingOpenStack Networking
OpenStack NetworkingIlya Shakhat
 
Kubernetes networking
Kubernetes networkingKubernetes networking
Kubernetes networkingSim Janghoon
 
Storing metrics at scale with Gnocchi
Storing metrics at scale with GnocchiStoring metrics at scale with Gnocchi
Storing metrics at scale with GnocchiGordon Chung
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutronvivekkonnect
 
KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)Stephen Gordon
 
Container Orchestration using Kubernetes
Container Orchestration using KubernetesContainer Orchestration using Kubernetes
Container Orchestration using KubernetesHesham Amin
 
Modular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack NeutronModular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack Neutronmestery
 
AKS - Azure Kubernetes Services - kubernetes meetup may 2018
AKS - Azure Kubernetes Services  - kubernetes meetup may 2018AKS - Azure Kubernetes Services  - kubernetes meetup may 2018
AKS - Azure Kubernetes Services - kubernetes meetup may 2018Jorge Arteiro
 
Kubernetes
KubernetesKubernetes
Kuberneteserialc_w
 

What's hot (20)

모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)
 
IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018
 
01. Kubernetes-PPT.pptx
01. Kubernetes-PPT.pptx01. Kubernetes-PPT.pptx
01. Kubernetes-PPT.pptx
 
Openstack zun,virtual kubelet
Openstack zun,virtual kubeletOpenstack zun,virtual kubelet
Openstack zun,virtual kubelet
 
Turning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirtTurning Virtual Machines Cloud-Native using KubeVirt
Turning Virtual Machines Cloud-Native using KubeVirt
 
Tìm hiểu về OpenStack
Tìm hiểu về OpenStackTìm hiểu về OpenStack
Tìm hiểu về OpenStack
 
Vss vs.vpc
Vss vs.vpcVss vs.vpc
Vss vs.vpc
 
OpenvSwitch Deep Dive
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Dive
 
OpenStack Networking
OpenStack NetworkingOpenStack Networking
OpenStack Networking
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Kubernetes networking
Kubernetes networkingKubernetes networking
Kubernetes networking
 
Introduction to vxlan
Introduction to vxlanIntroduction to vxlan
Introduction to vxlan
 
Storing metrics at scale with Gnocchi
Storing metrics at scale with GnocchiStoring metrics at scale with Gnocchi
Storing metrics at scale with Gnocchi
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
 
KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)KubeVirt (Kubernetes and Cloud Native Toronto)
KubeVirt (Kubernetes and Cloud Native Toronto)
 
Container Orchestration using Kubernetes
Container Orchestration using KubernetesContainer Orchestration using Kubernetes
Container Orchestration using Kubernetes
 
OpenStack Neutron behind the Scenes
OpenStack Neutron behind the ScenesOpenStack Neutron behind the Scenes
OpenStack Neutron behind the Scenes
 
Modular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack NeutronModular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack Neutron
 
AKS - Azure Kubernetes Services - kubernetes meetup may 2018
AKS - Azure Kubernetes Services  - kubernetes meetup may 2018AKS - Azure Kubernetes Services  - kubernetes meetup may 2018
AKS - Azure Kubernetes Services - kubernetes meetup may 2018
 
Kubernetes
KubernetesKubernetes
Kubernetes
 

Similar to How to write a Neutron Plugin - if you really need to

How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)Salvatore Orlando
 
How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)salv_orlando
 
neutron_icehouse_update
neutron_icehouse_updateneutron_icehouse_update
neutron_icehouse_updateAkihiro Motoki
 
Under the Trenchcoat: Neutron Agent Extensions
Under the Trenchcoat: Neutron Agent ExtensionsUnder the Trenchcoat: Neutron Agent Extensions
Under the Trenchcoat: Neutron Agent ExtensionsMargaret Frances
 
Open stack networking_101_update_2014
Open stack networking_101_update_2014Open stack networking_101_update_2014
Open stack networking_101_update_2014yfauser
 
OpenStack Neutron 201 1hr
OpenStack Neutron 201 1hr OpenStack Neutron 201 1hr
OpenStack Neutron 201 1hr David Lenwell
 
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)ITCamp
 
Panther Sniffer for DQMH®.pptx
Panther Sniffer for DQMH®.pptxPanther Sniffer for DQMH®.pptx
Panther Sniffer for DQMH®.pptxEnriqueNo2
 
Introduction to TensorFlow Lite
Introduction to TensorFlow Lite Introduction to TensorFlow Lite
Introduction to TensorFlow Lite Koan-Sin Tan
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp
 
Openstack Overview
Openstack OverviewOpenstack Overview
Openstack Overviewrajdeep
 
IoT Node-Red Presentation
IoT  Node-Red PresentationIoT  Node-Red Presentation
IoT Node-Red PresentationThe IOT Academy
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Brent Doncaster
 
Moving to microservices – a technology and organisation transformational journey
Moving to microservices – a technology and organisation transformational journeyMoving to microservices – a technology and organisation transformational journey
Moving to microservices – a technology and organisation transformational journeyBoyan Dimitrov
 
SDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center NetworkingSDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center NetworkingThomas Graf
 
Network Virtualization & Software-defined Networking
Network Virtualization & Software-defined NetworkingNetwork Virtualization & Software-defined Networking
Network Virtualization & Software-defined NetworkingDigicomp Academy AG
 
Developing Blockchain Applications
Developing Blockchain Applications Developing Blockchain Applications
Developing Blockchain Applications malikmayank
 
OpenStack at NTT Resonant: Lessons Learned in Web Infrastructure
OpenStack at NTT Resonant: Lessons Learned in Web InfrastructureOpenStack at NTT Resonant: Lessons Learned in Web Infrastructure
OpenStack at NTT Resonant: Lessons Learned in Web InfrastructureTomoya Hashimoto
 

Similar to How to write a Neutron Plugin - if you really need to (20)

How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)
 
How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)How to write a Neutron plugin (stadium edition)
How to write a Neutron plugin (stadium edition)
 
neutron_icehouse_update
neutron_icehouse_updateneutron_icehouse_update
neutron_icehouse_update
 
Under the Trenchcoat: Neutron Agent Extensions
Under the Trenchcoat: Neutron Agent ExtensionsUnder the Trenchcoat: Neutron Agent Extensions
Under the Trenchcoat: Neutron Agent Extensions
 
Open stack networking_101_update_2014
Open stack networking_101_update_2014Open stack networking_101_update_2014
Open stack networking_101_update_2014
 
OpenStack Neutron 201 1hr
OpenStack Neutron 201 1hr OpenStack Neutron 201 1hr
OpenStack Neutron 201 1hr
 
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
 
Panther Sniffer for DQMH®.pptx
Panther Sniffer for DQMH®.pptxPanther Sniffer for DQMH®.pptx
Panther Sniffer for DQMH®.pptx
 
Introduction to TensorFlow Lite
Introduction to TensorFlow Lite Introduction to TensorFlow Lite
Introduction to TensorFlow Lite
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
 
Openstack Overview
Openstack OverviewOpenstack Overview
Openstack Overview
 
IoT Node-Red Presentation
IoT  Node-Red PresentationIoT  Node-Red Presentation
IoT Node-Red Presentation
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21
 
Moving to microservices – a technology and organisation transformational journey
Moving to microservices – a technology and organisation transformational journeyMoving to microservices – a technology and organisation transformational journey
Moving to microservices – a technology and organisation transformational journey
 
SDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center NetworkingSDN & NFV Introduction - Open Source Data Center Networking
SDN & NFV Introduction - Open Source Data Center Networking
 
Network Virtualization & Software-defined Networking
Network Virtualization & Software-defined NetworkingNetwork Virtualization & Software-defined Networking
Network Virtualization & Software-defined Networking
 
Developing Blockchain Applications
Developing Blockchain Applications Developing Blockchain Applications
Developing Blockchain Applications
 
OpenStack at NTT Resonant: Lessons Learned in Web Infrastructure
OpenStack at NTT Resonant: Lessons Learned in Web InfrastructureOpenStack at NTT Resonant: Lessons Learned in Web Infrastructure
OpenStack at NTT Resonant: Lessons Learned in Web Infrastructure
 
Monkey Server
Monkey ServerMonkey Server
Monkey Server
 

More from salv_orlando

Can you trust Neutron?
Can you trust Neutron?Can you trust Neutron?
Can you trust Neutron?salv_orlando
 
Introduction to Openstack Network
Introduction to Openstack NetworkIntroduction to Openstack Network
Introduction to Openstack Networksalv_orlando
 
Quantum Grizzly Upgrade Paths
Quantum Grizzly Upgrade PathsQuantum Grizzly Upgrade Paths
Quantum Grizzly Upgrade Pathssalv_orlando
 
Grizzly summit: Quantum API
Grizzly summit: Quantum APIGrizzly summit: Quantum API
Grizzly summit: Quantum APIsalv_orlando
 
Advanced network services insertions framework
Advanced network services insertions frameworkAdvanced network services insertions framework
Advanced network services insertions frameworksalv_orlando
 
Quantum - Virtual networks for Openstack
Quantum - Virtual networks for OpenstackQuantum - Virtual networks for Openstack
Quantum - Virtual networks for Openstacksalv_orlando
 

More from salv_orlando (6)

Can you trust Neutron?
Can you trust Neutron?Can you trust Neutron?
Can you trust Neutron?
 
Introduction to Openstack Network
Introduction to Openstack NetworkIntroduction to Openstack Network
Introduction to Openstack Network
 
Quantum Grizzly Upgrade Paths
Quantum Grizzly Upgrade PathsQuantum Grizzly Upgrade Paths
Quantum Grizzly Upgrade Paths
 
Grizzly summit: Quantum API
Grizzly summit: Quantum APIGrizzly summit: Quantum API
Grizzly summit: Quantum API
 
Advanced network services insertions framework
Advanced network services insertions frameworkAdvanced network services insertions framework
Advanced network services insertions framework
 
Quantum - Virtual networks for Openstack
Quantum - Virtual networks for OpenstackQuantum - Virtual networks for Openstack
Quantum - Virtual networks for Openstack
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 

Recently uploaded (20)

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 

How to write a Neutron Plugin - if you really need to

  • 1. How to write a Neutron Plugin (if you really need to) Salvatore Orlando Armando Migliaccio
  • 2. Who are these guys talking to us? • Salvatore (the fat one) – Core Openstack Neutron developer – Breaking Openstack since Cactus – Known by @taturiello on twitter and salv-orlando on IRC • Armando (the fit one) – – – – Core Openstack Neutron developer Contributing code since Bexar Fixes Salvatore’s code Know by @armandomi2001 on twitter and armax on IRC • They are both employed by VMware and happily (w)hack neutron code on a daily basis
  • 3. Summary • Part I: What is a Neutron plugin? Do you really need a new one? • Part II: Design choices when writing a Neutron plugin • Part III: Writing your first Neutron plugin With code samples!!!
  • 4. Part I The world of Neutron plugins
  • 5. A Neutron plugin in a Nutshell • Implements one or more “plugin interfaces” • Receives requests from the API layer API API request AuthN AuthZ Validation Dispatch Plugin Agents, physical/virtual appliances, controllers, etc. • Should NOT deal with authN/authZ
  • 6. Core and service plugins – Core: Implements the “core” Neutron API (L2 networking + IPAM) – Service: plugin provides additional network services (Eg.: load balancing, firewall, VPN) • network services can also be provided by core plugin by implementing the relevant extensions API Plugins Core L3 Core Plugin FW Core L3 Core Plugin FW Core L3 FW FW Core plugin L3 FW plugin plugin plugin
  • 7. Plugins with drivers • Can execute a given request on different backends; actual execution is delegated to a driver – ML2 • Openvswitch, linuxbridge, hyper-V, tail-F NCS, Arista, … – Load Balancing reference plugin – Firewall reference plugin – (soon) VPN reference plugin • Implementing a driver is much easier than implementing a whole plugin!
  • 8. Making the right decision • Implementing a driver vs. a new plugin • Adding a new service as an extension vs. a service plugin Tradeoff: – Flexibility and interoperability vs simplicity
  • 9. Available options • Integrate some kind of network device into Neutron – Driver (for ML2, LB, FW, etc.) • Add a feature that applies to existing API resources – API extension and plugin support • Provide a new network service, “orthogonal feature” – New service plugin • New integrated solution or new paradigm – New core plugin
  • 10. Part II Considerations for writing a new Neutron plugin
  • 11. Planning for a new neutron plugin • Which extensions support – At least L3 and security groups for Nova integration • Reusing Neutron’s open source components – DHCP agent, L3 agent, etc.
  • 12. Developing a new Neutron plugin • Backend synchronization (pull vs push) • Scalability • High Availability • Fault tolerance • Unit and functional tests • Extensions – API and DB extensions
  • 13. Contributing a new Neutron plugin • Meet certain standards – Provide thorough unit test coverage – Provide documentation • And then more documentation – Think Devstack – Tempest – Think Smokestack Add your own funny image here https://wiki.openstack.org/wiki/NeutronDevelopment#Developing_a_Neutron_Plugin
  • 14. Part III Implementing a new Neutron plugin
  • 15. Introducing the HDN plugin • HDN: Human Defined Networking • Rediscover the human face of IT – REST API requests are transformed into emails sent to the networking guy in your IT department – Asynchronous, eventually consistent, request processing – Karma-based request prioritization; the nicer you are to the IT guy, the sooner your requests will be processed
  • 16. The HDN plugin - architecture Message bus (email) #TODO: Phone, Fax API request Neutron REST Interface Human-powered plugin engine
  • 17. Implementing the plugin • Core API – Support for networks, ports, and subnet • Supported extensions – L3: Support for routers and floating IPs – Admin extension for notifying request completion • Other neutron extensions – Outside scope… at the end of the day you can always pick up the phone and call your IT guy!
  • 18. Getting our hands dirty • Sources for the HDN plugin are available on github – https://github.com/salv-orlando/hdn – tested with gmail, should work with all SMTP servers
  • 20. • Consider all your alternatives before making a choice on whether developing a plugin, an extension or a driver • When developing a new plugin check if and how it should integrate with the various neutron agents • Make your plugin verifiable through unit and integration testing • Open source all the things, but document them as well • Who needs SDN when you have HDN???

Editor's Notes

  1. Explain also the three examples:Left – a single plugin implementing also extensions for L3 and Firewall services – refer to nicira plugin as an example of this kindCenter – A single plugin implementing core + L3 service, and distinct plugins for other services – this is what currently happens in deployments based on open source componentsRight – A distinct plugin for each extension; a schema that would be feasible from Havana as the L3 services can now be implemented in their own plugin
  2. Bullet 1 – cite examples as ML2 driver or radwareLBaaS driverBullet 2 – cite examples as security groups or allowed address pairs or whatever extension you likeBullet 3 – Cite load balancing firewall and all this stuff. Remember that lines with bullet 2 are somewhat blurred because one could decide to go for a monolithic plugin approach and develop new services as extensions too.Bullet 4 – Cite ML2 as example