![Page 1: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/1.jpg)
Supporting composed SDN applications and controller independence with NetIDE
Alec Leckey
Intel Labs
![Page 2: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/2.jpg)
SDN Application Development
Java Python C/C++ Javascript
Beacon
Floodlight
Iris Pox
Ryu
PyreticMaestro OpenDaylight
Jaxon
Nox
MuL
Trema
NodeFlow
?
Openflow OVSDB OF-Config NetConf PCEP
Cobol
?
Several IDE components are available, “automation” chain is still missing I2RS
Key network services to support integration between development and testing are missing too
ONOSProliferation of SDN frameworks: No “one solution fits all”
![Page 3: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/3.jpg)
Opportunities for current SDN landscape
Software-Defined Networks
SDN Applications
![Page 4: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/4.jpg)
Can’t easily port them:You implement for
Controller X, you can’t make same code run
on Controller Y
Can’t easily combine them:Eg, You can’t run an LB app
together with an FW appon top of the same network
Can’t easily debug them:Only few SW development
tools are available forSDN, in most cases controller-specific
SDN Apps
Challenges for current SDN landscape
![Page 5: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/5.jpg)
NetIDE aims at supporting the whole development lifecycle of SDN applications in a platform-independent fashion:
• Integrated SDN development environment
• Covering the full lifetime of SDN applications
• It brings all the elements of Software Design/Development to Networking:• Platform independence
• Code re-usability
• Developer tools (debugger, profiler, logger, etc.)
The NetIDE Framework
![Page 6: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/6.jpg)
Client/Server SDN controller paradigm of ONF:
• SDN Application’s modules are given the runtime environment they expect in the client controller
• Multi-controller support (ONOS, OpenDaylight, Ryu, Floodlight, etc)
• Backend: Captures control messages translating them to controller neutral format (ie, Intermediate Protocol)
• Core Layer: provides a controller-independent means to compose applications, resolve conflicts, provide an interface to tools
• Shim Layer: northbound plugin to pass control messages south and incoming events north
The NetIDE Architecture
![Page 7: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/7.jpg)
Migration of SDN Apps from legacy controllers to ODL easier- Client/Server model of SDN controllers- Client Controllers communicate with
switches through an interop layer
• SDN Application’s consume expected API• Backend: provide switch implementations• Core: provides a controller-independent
messaging layer• Shim: passes messages to relevant API
ClientSDN
Controller
Floodlight Ryu
Controller Plane
ServerSDN
Controller
other
OpenDaylight
backend backend backend
shim
Application Plane
SDN App SDN App SDN App
Data Plane Network Element
Network Element
Network Element
NetIDE Intermediate ProtocolNetIDE
Network Engine
NetIDE Core (AMQP)
Network Engine Implementation with ODL
![Page 8: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/8.jpg)
Intermediate ProtocolImplements:
• Transport Management Messages between Layers
• Transport Event/Action messages
• Encapsulate protocol Messages (OF, NetConf)
• NetIDE Header:• Module Identifier:
unique value that allows the Core to orchestrate individual modules of each client controller
• Type Hello, Error, Mgmt, Openflow, Netconf, HeartBeat, ModuleAnnouncement, ModuleAcknowledgement, Handshake
NetIDE Header
Request/Reply message handling
![Page 9: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/9.jpg)
Core Layer
Implements 3 main functions:
• Interface between Client Backends and Server Shim: manages lifecycle of controllers including modules
• Orchestrates execution of individual modules/complete applications spread across multiple controllers
• Manages symmetric messages (request/reply) exchanged between modules and network elements
Core Connection Manager
Conflict Resolution
Module Manager
CompositionMessage Tracker
backend 1 backend 2
shim
![Page 10: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/10.jpg)
Application Composition
• The Network Engine allows SDN Application’s modules written for different controller platforms to cooperate on controlling the same network infrastructure
• The Core Layer in the Engine implements conflict resolution and composition mechanisms that are independent from the applications
• Modules are composed into a single NetIDE SDN application at deployment time
• Composition Semantics: + >> () }• (NAT + L3) + (L2 >> Mon)
+ >>
}
![Page 11: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/11.jpg)
Composition Execution<ExecutionManifest>
<Modules><Module id=“NAT">
<Identier>eu.netide.nat</Identier></Module><Module id=“L3-fwd">
<Identier>eu.netide. l3_fwd</Identier><Filter>event=packet_in,source=10.1.0.*</Filter>
</Module><Module id=“L2-fwd">
<Identier>eu.netide.l2_fwd</Identier></Module><Module id=“Monitor">
<Identier>eu.netide.monitor</Identier></Module>
</Modules><ExecutionPolicy>
<ModuleCall id=“NAT"/><ModuleCall id=“L3-fwd" emptyResultAction="drop"/><ParallelCall mergePolicy="priority">
<ModuleCall id=“L2-fwd" priority=“2"/><ModuleCall id=“monitor" priority=“1"/>
</ ParallelCall ></ExecutionPolicy>
</ExecutionManifest>
• Module list
• Execution Semantics• Parallel composition• Sequential
• Composition Specification• Execution flow
• Conflict Resolution• Define conflict (match, action)• Scope (local, application, global)• Resolution Policy (ignore, discard, priority, auto)
![Page 12: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/12.jpg)
Message Fencing
• Application Composition is dependent on knowing when a module has completed processing an event
• May send message prematurely
• Wait indefinitely
• “Fence” – end of execution marker• SDN Controller signal processing complete, eg, IControllerCompletionListener{}
(Floodlight)
PACKET_IN PACKET_OUT FLOW_MOD FENCEPACKET_IN PACKET_OUT …
module_id=Anxid=1
module_id=Anxid=1
module_id=Bnxid=2
module_id=Anxid=1
module_id=Anxid=1
module_id=Bnxid=2
![Page 13: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/13.jpg)
13
Demo Scenario
s22
s21
s23
s11alice
bobwww
charlie
Core
odl-shim
fl-backend ryu-backend
L2 switch Firewall
Tools
![Page 14: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/14.jpg)
Develop the code andconfigure the topology
Automatically deploy the SDN applications
Test and debug the applications
Develop - Deploy - Test
![Page 15: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/15.jpg)
Code Editors Graphical Topology Editor
Tools for debugging and inspecting of the control
channel
Code Editors (PyDev, Java)
Topology editor
Interface with the Network Engine and tools
Access to the Mininet CLI
Mininet CLI
Integrated Environment
![Page 16: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/16.jpg)
Graphical editor:• create and edit network
topologies
• import underlying topology
• A topology generator outputs a configuration file for Mininet for testing
Topology Editor
![Page 17: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/17.jpg)
Management Tasks:• Start/stop the VM• Configure/start/stop the
Network Engine• Start/stop SDN applications
Runtime Management GUI
![Page 18: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/18.jpg)
Enabling the developer to systematically test, profile, and tune their SDN App
Logger: tracing capabilities to judge the performance of the deployed SDN ApplicationGarbage Collector: Cleans the switches’ memory from unused flow rulesModel Checker: systematically exercises app behaviour and flag actions that lead to violations of the desired
safety propertiesProfiler: judging the impact of network failures on the Network App behaviourDebugger: supports debug of packet processing (OFReplay, packet inspection and flow table checking)
Developer Tools
![Page 19: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/19.jpg)
Project Presence
![Page 20: Supporting composed SDN applications and controller ... composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs. SDN Application Development Java Python](https://reader030.vdocuments.us/reader030/viewer/2022020215/5b318a737f8b9a2c0b8bc1a4/html5/thumbnails/20.jpg)
Questions