supporting composed sdn applications and controller ... composed sdn applications and controller...

20
Supporting composed SDN applications and controller independence with NetIDE Alec Leckey Intel Labs

Upload: dangdat

Post on 26-Jun-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Questions