SlideShare a Scribd company logo
1 of 22
Download to read offline
© 1999-2012 Erlang Solutions Ltd.
Krzysztof Rutka
@rptkr
The OpenFlow Soft Switch
© 1999-2012 Erlang Solutions Ltd. 2
http://www.openflow.org/documents/openflow-wp-latest.pdf
• Run experimental protocols in the campus
networks,
• Exploit a common set of flow-table functions
that run in many switches and routers,
• Provide an open protocol to control different
switches and routers in a unified way,
• OpenFlow: Enabling Innovation in Campus
Networks whitepaper.
History of OpenFlow
Stanford University
© 1999-2012 Erlang Solutions Ltd.
OpenFlow is the leading standard for
Software Defined Networking.
What is OpenFlow?
3
Traditional networks OpenFlow/SDN
Lots of protocols;
STP, RIP, OSPF, BGP...
All computation and logic
handled by software;
OpenFlow Controller
Vendor specific interfaces
Common API;
OpenFlow Protocol
Switches for L2 switching;
Routers for L3 routing
One device; OpenFlow Switch;
Flow Forwarding; L2 - L4
© 1999-2012 Erlang Solutions Ltd.
Open Network Foundation
4
© 1999-2012 Erlang Solutions Ltd.
How it works?
5
OpenFlow Switch
© 1999-2012 Erlang Solutions Ltd.
How it works?
6
OpenFlow pipeline
• Actions
• Instructions
© 1999-2012 Erlang Solutions Ltd.
OpenFlow specifications
7
OpenFlow 1.3 TBA
OpenFlow 1.2 December 2011
https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.2.pdf
OpenFlow 1.1 February 2011
https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.1.0.pdf
OpenFlow 1.0 December 2009
https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.0.0.pdf
© 1999-2012 Erlang Solutions Ltd.
• OpenVSwitch
• of12softswitch (TrafficLab)
• Hardware switches from HP, NEC...
Switches:
OpenFlow ecosystem
8
• Floodlight
• FlowER
• Beacon, Maestro, NOX/POX, Trema...
Controllers (Frameworks):
• OFTest
Others:
https://github.com/CPqD/of12softswitch
http://openvswitch.org/
http://floodlight.openflowhub.org/
https://github.com/travelping/flower
http://oftest.openflowhub.org/
.01
OpenFlow
© 1999-2012 Erlang Solutions Ltd.
LINC - pure OpenFlow soft switch
9
Easily extensible
Pure Erlang implementation
Forwarding backend API
Full-featured
Full support for all OpenFlow 1.2 features
Reference implementation
http://www.infoblox.com
© 1999-2012 Erlang Solutions Ltd.
• Excellent development speed,
• Easy to read, modify and extend,
• Great for implementing binary protocols like
the OpenFlow Protocol,
• Behaviours and callbacks as a way to make
things modular.
Why Erlang? ;)
10
© 1999-2012 Erlang Solutions Ltd.
• Erlang representation of OpenFlow Protocol
structures and enumerations,
• Encoding/decoding of OpenFlow Protocol
messages,
• OpenFlow Protocol parser,
• Support for older versions of the protocol.
OpenFlow Protocol 1.2 Library
11
© 1999-2012 Erlang Solutions Ltd.
-record(ofp_message, {
experimental = false :: boolean(),
version = 3 :: integer(),
xid :: integer(),
body :: ofp_message_body()
}).
-record(ofp_hello, {}).
-record(ofp_echo_request, {
data = <<>> :: binary()
}).
-record(ofp_flow_mod, {
cookie = <<0:64>> :: binary(),
cookie_mask = <<0:64>> :: binary(),
table_id = all :: ofp_table_id(),
command :: ofp_flow_mod_command(),
idle_timeout = 0 :: integer(),
...
OpenFlow Protocol 1.2 Library
12
© 1999-2012 Erlang Solutions Ltd.
• Message enumeration,
• Flat ofp_match structure,
• One field for tcp/udp,
• No instructions,
• Lots of other small incompatibilities.
OpenFlow Protocol 1.2 is not compatible with 1.0.
OpenFlow Protocol 1.2 Library
13
© 1999-2012 Erlang Solutions Ltd.
• Erlang behaviour,
• Simple encode/1, decode/1 callbacks,
• Convert structures from all versions to one
common representation,
• OpenFlow Protocol 1.2 as a base.
OpenFlow Protocol 1.2 Library
14
gen_protocol
© 1999-2012 Erlang Solutions Ltd.
-module(gen_protocol).
%% Encode OpenFlow Protocol message
%% from Erlang representation to binary.
-callback encode(Message :: ofp_message()) ->
{ok, Binary :: binary()} |
{error, Reason :: any()}.
%% Decode OpenFlow Protocol message
%% from binary to Erlang representation.
-callback decode(Binary :: binary()) ->
{ok, Message :: ofp_message()} |
{error, Reason :: any()}.
OpenFlow Protocol 1.2 Library
15
© 1999-2012 Erlang Solutions Ltd.
Erlang implementation
16
OpenFlow Switch Application
Receiver
Supervisor
Port
Supervisor
Receiver Port
Switch Logic
Backend
Application Supervisor
Supervision tree
© 1999-2012 Erlang Solutions Ltd.
• Communication with the OpenFlow Controllers,
• Managing controller roles,
• Managing the switch configuration,
• Handling simple messages independent of the
actual forwarding logic.
Common switch logic
17
© 1999-2012 Erlang Solutions Ltd.
• Erlang behaviour,
• Separates common switch logic from the actual
forwarding engine,
• Implements flow tables, group table, packet
matching engine, port abstraction, etc.
• Callbacks to handle OpenFlow Protocol
messages,
• Userspace, kernel, hardware...
Forwarding backend API
18
gen_switch
© 1999-2012 Erlang Solutions Ltd.
• Implements gen_switch behaviour,
• Pure userspace Erlang implementation.
Userspace implementation
19
ofs_userspace
Ease of use
Extensibility
Performance
>
© 1999-2012 Erlang Solutions Ltd.
• different switch configurations,
• different port configurations,
• random flows,
• random ethernet frames,
• OF Protocol messages with random content.
Simulate a real-life use cases, by generating:
How to test a switch?
20
Quviq’s QuickCheck
© 1999-2012 Erlang Solutions Ltd.
• implemented OF Protocol Library with support
for versions 1.2 and 1.0,
• implemented OF Logical Switch in pure Erlang:
• matching engine for all fields from 1.2,
• support for (almost) all instructions, actions,
reserved ports, groups, etc.
Where we are at the moment:
Current status
21
Where we are going:
• implemented support for OpenFlow 1.1,
• work on different forwarding backends.
© 1999-2012 Erlang Solutions Ltd.
• Read the OpenFlow White Paper,
• Look at the OpenFlow Specification,
• Get involved.
Where to go next?
22
https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.2.pdf
http://www.openflow.org/documents/openflow-wp-latest.pdf
FlowForwarding.org community and
LINC will launch around June 11th!

More Related Content

What's hot

Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Kentaro Ebisawa
 
ONOS Open Network Operating System
ONOS Open Network Operating SystemONOS Open Network Operating System
ONOS Open Network Operating SystemON.Lab
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchTe-Yen Liu
 
Using OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsUsing OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsOpenDaylight
 
XOS in open CORD project
XOS in open CORD projectXOS in open CORD project
XOS in open CORD projectsangyun han
 
ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...
ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...
ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...ON.LAB
 
Bharath Ram Chandrasekar_Tele 6603_SDN &NFV
Bharath Ram Chandrasekar_Tele 6603_SDN &NFVBharath Ram Chandrasekar_Tele 6603_SDN &NFV
Bharath Ram Chandrasekar_Tele 6603_SDN &NFVBharath Ram Chandrasekar
 
Open Network OS Overview as of 2015/10/16
Open Network OS Overview as of 2015/10/16Open Network OS Overview as of 2015/10/16
Open Network OS Overview as of 2015/10/16Kentaro Ebisawa
 
OSHI - Open Source Hybrid IP/SDN networking @EWSDN14
OSHI - Open Source Hybrid IP/SDN networking @EWSDN14OSHI - Open Source Hybrid IP/SDN networking @EWSDN14
OSHI - Open Source Hybrid IP/SDN networking @EWSDN14Stefano Salsano
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorialopenflow
 
ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발
ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발
ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발sangyun han
 
Opendaylight SDN Controller
Opendaylight SDN ControllerOpendaylight SDN Controller
Opendaylight SDN ControllerSumit Arora
 
Active Networking On A Programmable Networking Platform
Active Networking On A Programmable Networking PlatformActive Networking On A Programmable Networking Platform
Active Networking On A Programmable Networking PlatformTal Lavian Ph.D.
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylightGunjan Patel
 
ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments Eueung Mulyana
 
Software Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architectureSoftware Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architecturePritesh Ranjan
 
Network Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudyNetwork Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudyHiroshi Ota
 

What's hot (20)

Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
 
ONOS Open Network Operating System
ONOS Open Network Operating SystemONOS Open Network Operating System
ONOS Open Network Operating System
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitch
 
Using OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound pluginsUsing OVSDB and OpenFlow southbound plugins
Using OVSDB and OpenFlow southbound plugins
 
XOS in open CORD project
XOS in open CORD projectXOS in open CORD project
XOS in open CORD project
 
ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...
ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...
ONOS: Open Network Operating System. An Open-Source Distributed SDN Operating...
 
Bharath Ram Chandrasekar_Tele 6603_SDN &NFV
Bharath Ram Chandrasekar_Tele 6603_SDN &NFVBharath Ram Chandrasekar_Tele 6603_SDN &NFV
Bharath Ram Chandrasekar_Tele 6603_SDN &NFV
 
SDN – Hybrid architecture
SDN – Hybrid architectureSDN – Hybrid architecture
SDN – Hybrid architecture
 
Open Network OS Overview as of 2015/10/16
Open Network OS Overview as of 2015/10/16Open Network OS Overview as of 2015/10/16
Open Network OS Overview as of 2015/10/16
 
OSHI - Open Source Hybrid IP/SDN networking @EWSDN14
OSHI - Open Source Hybrid IP/SDN networking @EWSDN14OSHI - Open Source Hybrid IP/SDN networking @EWSDN14
OSHI - Open Source Hybrid IP/SDN networking @EWSDN14
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorial
 
ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발
ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발
ONOS와 Raspberry Pi 기반 가상물리 SDN 실증 환경 구축과 응용 개발
 
Opendaylight SDN Controller
Opendaylight SDN ControllerOpendaylight SDN Controller
Opendaylight SDN Controller
 
SDN Project PPT
SDN Project PPTSDN Project PPT
SDN Project PPT
 
Active Networking On A Programmable Networking Platform
Active Networking On A Programmable Networking PlatformActive Networking On A Programmable Networking Platform
Active Networking On A Programmable Networking Platform
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylight
 
Sdn command line controller lab
Sdn command line controller labSdn command line controller lab
Sdn command line controller lab
 
ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments
 
Software Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architectureSoftware Load Balancer for OpenFlow Complaint SDN architecture
Software Load Balancer for OpenFlow Complaint SDN architecture
 
Network Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudyNetwork Test Automation 2015-04-23 #npstudy
Network Test Automation 2015-04-23 #npstudy
 

Viewers also liked

Implementing SDN Testbed(ONOS & OpenVirteX)
Implementing SDN Testbed(ONOS & OpenVirteX)Implementing SDN Testbed(ONOS & OpenVirteX)
Implementing SDN Testbed(ONOS & OpenVirteX)sangyun han
 
Evaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GLEvaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GLToshiki Tsuboi
 
OpenVirtex (OVX) Tutorial
OpenVirtex (OVX) TutorialOpenVirtex (OVX) Tutorial
OpenVirtex (OVX) Tutorial동호 손
 
OpenFlow in Raspberry Pi
OpenFlow in Raspberry PiOpenFlow in Raspberry Pi
OpenFlow in Raspberry PiToshiki Tsuboi
 
Chris Swan at Container.Camp: Docker networking
Chris Swan at Container.Camp: Docker networkingChris Swan at Container.Camp: Docker networking
Chris Swan at Container.Camp: Docker networkingCohesive Networks
 
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...Jim St. Leger
 
OpenFlow 1.5.1
OpenFlow 1.5.1OpenFlow 1.5.1
OpenFlow 1.5.1jungbh
 
Software-Defined Networking SDN - A Brief Introduction
Software-Defined Networking SDN - A Brief IntroductionSoftware-Defined Networking SDN - A Brief Introduction
Software-Defined Networking SDN - A Brief IntroductionJason TC HOU (侯宗成)
 

Viewers also liked (10)

Implementing SDN Testbed(ONOS & OpenVirteX)
Implementing SDN Testbed(ONOS & OpenVirteX)Implementing SDN Testbed(ONOS & OpenVirteX)
Implementing SDN Testbed(ONOS & OpenVirteX)
 
Otot
OtotOtot
Otot
 
Evaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GLEvaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GL
 
OpenVirtex (OVX) Tutorial
OpenVirtex (OVX) TutorialOpenVirtex (OVX) Tutorial
OpenVirtex (OVX) Tutorial
 
OpenFlow in Raspberry Pi
OpenFlow in Raspberry PiOpenFlow in Raspberry Pi
OpenFlow in Raspberry Pi
 
Chris Swan at Container.Camp: Docker networking
Chris Swan at Container.Camp: Docker networkingChris Swan at Container.Camp: Docker networking
Chris Swan at Container.Camp: Docker networking
 
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
DPDK Summit - 08 Sept 2014 - Futurewei - Jun Xu - Revisit the IP Stack in Lin...
 
OpenFlow 1.5.1
OpenFlow 1.5.1OpenFlow 1.5.1
OpenFlow 1.5.1
 
Software-Defined Networking SDN - A Brief Introduction
Software-Defined Networking SDN - A Brief IntroductionSoftware-Defined Networking SDN - A Brief Introduction
Software-Defined Networking SDN - A Brief Introduction
 
Sdn ppt
Sdn pptSdn ppt
Sdn ppt
 

Similar to The Openflow Soft Switch

PLNOG 8: Piotr Gierz - Protokół OpenFlow
PLNOG 8: Piotr Gierz - Protokół OpenFlow PLNOG 8: Piotr Gierz - Protokół OpenFlow
PLNOG 8: Piotr Gierz - Protokół OpenFlow PROIDEA
 
Openflow overview
Openflow overviewOpenflow overview
Openflow overviewopenflowhub
 
Open switches story mohamed hassan v4
Open switches story   mohamed hassan v4Open switches story   mohamed hassan v4
Open switches story mohamed hassan v4Mohamed Hassan
 
software defined network, openflow protocol and its controllers
software defined network, openflow protocol and its controllerssoftware defined network, openflow protocol and its controllers
software defined network, openflow protocol and its controllersIsaku Yamahata
 
Spirent TestCenter OpenFlow Controller Emulation
Spirent TestCenter OpenFlow Controller EmulationSpirent TestCenter OpenFlow Controller Emulation
Spirent TestCenter OpenFlow Controller EmulationMalathi Malla
 
Open flow wp
Open flow wpOpen flow wp
Open flow wpyouyou166
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用Feng Yu
 
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchDPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchJim St. Leger
 
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...Linaro
 
Developing SDN apps in Ryu
Developing SDN apps in RyuDeveloping SDN apps in Ryu
Developing SDN apps in RyuChe Wei Lin
 
Tools and Platforms for OpenFlow/SDN
Tools and Platforms for OpenFlow/SDNTools and Platforms for OpenFlow/SDN
Tools and Platforms for OpenFlow/SDNUmesh Krishnaswamy
 
ORTE - OCERA Real Time ethernet
ORTE - OCERA Real Time ethernetORTE - OCERA Real Time ethernet
ORTE - OCERA Real Time ethernetAlexandre Chatiron
 
LCA14: LCA14-209: ODP Project Update
LCA14: LCA14-209: ODP Project UpdateLCA14: LCA14-209: ODP Project Update
LCA14: LCA14-209: ODP Project UpdateLinaro
 
Openlab.2014 02-13.major.vi sion
Openlab.2014 02-13.major.vi sionOpenlab.2014 02-13.major.vi sion
Openlab.2014 02-13.major.vi sionCcie Light
 
Open stack with_openflowsdn-torii
Open stack with_openflowsdn-toriiOpen stack with_openflowsdn-torii
Open stack with_openflowsdn-toriiHui Cheng
 
FlowER Erlang Openflow Controller
FlowER Erlang Openflow ControllerFlowER Erlang Openflow Controller
FlowER Erlang Openflow ControllerHolger Winkelmann
 
OpenDaylight Integration with OpenStack Neutron: A Tutorial
OpenDaylight Integration with OpenStack Neutron: A TutorialOpenDaylight Integration with OpenStack Neutron: A Tutorial
OpenDaylight Integration with OpenStack Neutron: A Tutorialmestery
 
Runos OpenFlow Controller (eng)
Runos OpenFlow Controller (eng)Runos OpenFlow Controller (eng)
Runos OpenFlow Controller (eng)Alexander Shalimov
 

Similar to The Openflow Soft Switch (20)

PLNOG 8: Piotr Gierz - Protokół OpenFlow
PLNOG 8: Piotr Gierz - Protokół OpenFlow PLNOG 8: Piotr Gierz - Protokół OpenFlow
PLNOG 8: Piotr Gierz - Protokół OpenFlow
 
Openflow overview
Openflow overviewOpenflow overview
Openflow overview
 
Open switches story mohamed hassan v4
Open switches story   mohamed hassan v4Open switches story   mohamed hassan v4
Open switches story mohamed hassan v4
 
software defined network, openflow protocol and its controllers
software defined network, openflow protocol and its controllerssoftware defined network, openflow protocol and its controllers
software defined network, openflow protocol and its controllers
 
Spirent TestCenter OpenFlow Controller Emulation
Spirent TestCenter OpenFlow Controller EmulationSpirent TestCenter OpenFlow Controller Emulation
Spirent TestCenter OpenFlow Controller Emulation
 
Open flow wp
Open flow wpOpen flow wp
Open flow wp
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用
 
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchDPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
 
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
 
Developing SDN apps in Ryu
Developing SDN apps in RyuDeveloping SDN apps in Ryu
Developing SDN apps in Ryu
 
Tools and Platforms for OpenFlow/SDN
Tools and Platforms for OpenFlow/SDNTools and Platforms for OpenFlow/SDN
Tools and Platforms for OpenFlow/SDN
 
ORTE - OCERA Real Time ethernet
ORTE - OCERA Real Time ethernetORTE - OCERA Real Time ethernet
ORTE - OCERA Real Time ethernet
 
LCA14: LCA14-209: ODP Project Update
LCA14: LCA14-209: ODP Project UpdateLCA14: LCA14-209: ODP Project Update
LCA14: LCA14-209: ODP Project Update
 
Openlab.2014 02-13.major.vi sion
Openlab.2014 02-13.major.vi sionOpenlab.2014 02-13.major.vi sion
Openlab.2014 02-13.major.vi sion
 
Sgnog openflow demo-v1.0
Sgnog openflow demo-v1.0Sgnog openflow demo-v1.0
Sgnog openflow demo-v1.0
 
Open stack with_openflowsdn-torii
Open stack with_openflowsdn-toriiOpen stack with_openflowsdn-torii
Open stack with_openflowsdn-torii
 
OpenFlow Tutorial
OpenFlow TutorialOpenFlow Tutorial
OpenFlow Tutorial
 
FlowER Erlang Openflow Controller
FlowER Erlang Openflow ControllerFlowER Erlang Openflow Controller
FlowER Erlang Openflow Controller
 
OpenDaylight Integration with OpenStack Neutron: A Tutorial
OpenDaylight Integration with OpenStack Neutron: A TutorialOpenDaylight Integration with OpenStack Neutron: A Tutorial
OpenDaylight Integration with OpenStack Neutron: A Tutorial
 
Runos OpenFlow Controller (eng)
Runos OpenFlow Controller (eng)Runos OpenFlow Controller (eng)
Runos OpenFlow Controller (eng)
 

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

The Openflow Soft Switch

  • 1. © 1999-2012 Erlang Solutions Ltd. Krzysztof Rutka @rptkr The OpenFlow Soft Switch
  • 2. © 1999-2012 Erlang Solutions Ltd. 2 http://www.openflow.org/documents/openflow-wp-latest.pdf • Run experimental protocols in the campus networks, • Exploit a common set of flow-table functions that run in many switches and routers, • Provide an open protocol to control different switches and routers in a unified way, • OpenFlow: Enabling Innovation in Campus Networks whitepaper. History of OpenFlow Stanford University
  • 3. © 1999-2012 Erlang Solutions Ltd. OpenFlow is the leading standard for Software Defined Networking. What is OpenFlow? 3 Traditional networks OpenFlow/SDN Lots of protocols; STP, RIP, OSPF, BGP... All computation and logic handled by software; OpenFlow Controller Vendor specific interfaces Common API; OpenFlow Protocol Switches for L2 switching; Routers for L3 routing One device; OpenFlow Switch; Flow Forwarding; L2 - L4
  • 4. © 1999-2012 Erlang Solutions Ltd. Open Network Foundation 4
  • 5. © 1999-2012 Erlang Solutions Ltd. How it works? 5 OpenFlow Switch
  • 6. © 1999-2012 Erlang Solutions Ltd. How it works? 6 OpenFlow pipeline • Actions • Instructions
  • 7. © 1999-2012 Erlang Solutions Ltd. OpenFlow specifications 7 OpenFlow 1.3 TBA OpenFlow 1.2 December 2011 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.2.pdf OpenFlow 1.1 February 2011 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.1.0.pdf OpenFlow 1.0 December 2009 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.0.0.pdf
  • 8. © 1999-2012 Erlang Solutions Ltd. • OpenVSwitch • of12softswitch (TrafficLab) • Hardware switches from HP, NEC... Switches: OpenFlow ecosystem 8 • Floodlight • FlowER • Beacon, Maestro, NOX/POX, Trema... Controllers (Frameworks): • OFTest Others: https://github.com/CPqD/of12softswitch http://openvswitch.org/ http://floodlight.openflowhub.org/ https://github.com/travelping/flower http://oftest.openflowhub.org/ .01 OpenFlow
  • 9. © 1999-2012 Erlang Solutions Ltd. LINC - pure OpenFlow soft switch 9 Easily extensible Pure Erlang implementation Forwarding backend API Full-featured Full support for all OpenFlow 1.2 features Reference implementation http://www.infoblox.com
  • 10. © 1999-2012 Erlang Solutions Ltd. • Excellent development speed, • Easy to read, modify and extend, • Great for implementing binary protocols like the OpenFlow Protocol, • Behaviours and callbacks as a way to make things modular. Why Erlang? ;) 10
  • 11. © 1999-2012 Erlang Solutions Ltd. • Erlang representation of OpenFlow Protocol structures and enumerations, • Encoding/decoding of OpenFlow Protocol messages, • OpenFlow Protocol parser, • Support for older versions of the protocol. OpenFlow Protocol 1.2 Library 11
  • 12. © 1999-2012 Erlang Solutions Ltd. -record(ofp_message, { experimental = false :: boolean(), version = 3 :: integer(), xid :: integer(), body :: ofp_message_body() }). -record(ofp_hello, {}). -record(ofp_echo_request, { data = <<>> :: binary() }). -record(ofp_flow_mod, { cookie = <<0:64>> :: binary(), cookie_mask = <<0:64>> :: binary(), table_id = all :: ofp_table_id(), command :: ofp_flow_mod_command(), idle_timeout = 0 :: integer(), ... OpenFlow Protocol 1.2 Library 12
  • 13. © 1999-2012 Erlang Solutions Ltd. • Message enumeration, • Flat ofp_match structure, • One field for tcp/udp, • No instructions, • Lots of other small incompatibilities. OpenFlow Protocol 1.2 is not compatible with 1.0. OpenFlow Protocol 1.2 Library 13
  • 14. © 1999-2012 Erlang Solutions Ltd. • Erlang behaviour, • Simple encode/1, decode/1 callbacks, • Convert structures from all versions to one common representation, • OpenFlow Protocol 1.2 as a base. OpenFlow Protocol 1.2 Library 14 gen_protocol
  • 15. © 1999-2012 Erlang Solutions Ltd. -module(gen_protocol). %% Encode OpenFlow Protocol message %% from Erlang representation to binary. -callback encode(Message :: ofp_message()) -> {ok, Binary :: binary()} | {error, Reason :: any()}. %% Decode OpenFlow Protocol message %% from binary to Erlang representation. -callback decode(Binary :: binary()) -> {ok, Message :: ofp_message()} | {error, Reason :: any()}. OpenFlow Protocol 1.2 Library 15
  • 16. © 1999-2012 Erlang Solutions Ltd. Erlang implementation 16 OpenFlow Switch Application Receiver Supervisor Port Supervisor Receiver Port Switch Logic Backend Application Supervisor Supervision tree
  • 17. © 1999-2012 Erlang Solutions Ltd. • Communication with the OpenFlow Controllers, • Managing controller roles, • Managing the switch configuration, • Handling simple messages independent of the actual forwarding logic. Common switch logic 17
  • 18. © 1999-2012 Erlang Solutions Ltd. • Erlang behaviour, • Separates common switch logic from the actual forwarding engine, • Implements flow tables, group table, packet matching engine, port abstraction, etc. • Callbacks to handle OpenFlow Protocol messages, • Userspace, kernel, hardware... Forwarding backend API 18 gen_switch
  • 19. © 1999-2012 Erlang Solutions Ltd. • Implements gen_switch behaviour, • Pure userspace Erlang implementation. Userspace implementation 19 ofs_userspace Ease of use Extensibility Performance >
  • 20. © 1999-2012 Erlang Solutions Ltd. • different switch configurations, • different port configurations, • random flows, • random ethernet frames, • OF Protocol messages with random content. Simulate a real-life use cases, by generating: How to test a switch? 20 Quviq’s QuickCheck
  • 21. © 1999-2012 Erlang Solutions Ltd. • implemented OF Protocol Library with support for versions 1.2 and 1.0, • implemented OF Logical Switch in pure Erlang: • matching engine for all fields from 1.2, • support for (almost) all instructions, actions, reserved ports, groups, etc. Where we are at the moment: Current status 21 Where we are going: • implemented support for OpenFlow 1.1, • work on different forwarding backends.
  • 22. © 1999-2012 Erlang Solutions Ltd. • Read the OpenFlow White Paper, • Look at the OpenFlow Specification, • Get involved. Where to go next? 22 https://www.opennetworking.org/images/stories/downloads/openflow/openflow-spec-v1.2.pdf http://www.openflow.org/documents/openflow-wp-latest.pdf FlowForwarding.org community and LINC will launch around June 11th!