Floodlight Overview

31
Software-Defined Networking and the Floodlight controller Mike Cohen Big Switch Networks [email protected] Alex Reimers Big Switch Networks Alex.reimers@ bigswitch.com

description

This is an overview of the Floodlight OpenFlow Controller presented by the Floodlight team members.

Transcript of Floodlight Overview

Page 1: Floodlight Overview

Software-Defined Networking and the Floodlight controller

Mike CohenBig Switch [email protected]

Alex ReimersBig Switch [email protected]

Page 2: Floodlight Overview

Overview

Architecture

Applications

Demo

Agenda

©2012 – Big Switch Networks Inc.

Page 3: Floodlight Overview

Overview

Big Switch Networks is a market leader in Software-Defined Networking and a strong proponent of OpenFlow technology

Open Source Projects include: Floodlight Indigo OFTest More to come…

Yes, we’re hiring! Contact me or [email protected]

3

Big Switch Networks

©2012 – Big Switch Networks Inc.

People @ Big Switch

Guido AppenzellerCEO, Big Switch NetworksFormer Consulting Assistant Professor at Stanford University, led the team that developed OpenFlow 1.0

Rob SherwoodMTS, Big Switch NetworksAuthor of FlowVisor and key architect of OpenFlow 1.0

Dan TalaycoMTS, Big Switch NetworksFormer member of the Stanford OpenFlow Team. Led development of the Indigo reference implementation

Others include:Isabelle Guis, Omar Baldonado, Howie Xu, Mansour Karam, Nick Bastin, Saurav Das, and many others…

Page 4: Floodlight Overview

Floodlight Overview

©2012 – Big Switch Networks Inc.

Page 5: Floodlight Overview

Developer friendly Apache license

Easy to use, extensible Java development environment

Enterprise grade - Core engine used and supported by Big Switch Networks (running in production today)

Supports a broad range of physical and virtual OpenFlow switches

OF 1.0 compliant today – future OF versions on the way

5

An Apache licensed OpenFlow ControllerFloodlight Overview

©2012 – Big Switch Networks Inc.

Page 6: Floodlight Overview

Floodlight Users and Contributors

©2012 – Big Switch Networks Inc. 6

Floodlight Adopters: • University research • Networking vendors• Users• Developers / startups

Page 7: Floodlight Overview

7

A snapshot from Interop Floodlight Switch Compatibility

©2012 – Big Switch Networks Inc.

Page 8: Floodlight Overview

Downloads of Floodlight since January launchFloodlight Growth

8

16-Ja

n

30-Ja

n

13-F

eb

27-F

eb

12-M

ar

26-M

ar

9-Ap

r

23-A

pr

7-May

21-M

ay4-

Jun

18-Ju

n0

1000

2000

3000

4000

5000

6000

7000• Over 200 mailing list posts / month• Run rate of 1200+ downloads / month

Mailing list posts per month

©2012 – Big Switch Networks Inc.

Page 9: Floodlight Overview

Fast…and easy…Building Floodlight

9

$ git clone git://github.com/floodlight/floodlight.git

$ sudo apt-get install build-essential default-jdk ant python-dev

$ cd floodlight; ant

$ java –jar target/floodlight.jar

Download from Github

$ wget http://floodlight.openflowhub.org/files/floodlight-vm.zip

(login as “floodlight” user, no password)

Get the VM (including mininet)

©2012 – Big Switch Networks Inc.

Page 10: Floodlight Overview

Recently launched:

Module system

Ubuntu PPA’s

Quantum / OpenStack

Web UI

Performance improvements

Roadmap:

OpenFlow 1.x support

Command line interface

Persistent storage

Python / Jython support

Firewall, Load balancer apps

Web UI 2.0

Stable northbound APIs

Better Documentation

10

Floodlight Roadmap

©2012 – Big Switch Networks Inc.

Page 11: Floodlight Overview

Programming Floodlight

©2012 – Big Switch Networks Inc.

Page 12: Floodlight Overview

12

Floodlight ArchitectureOverview

Floodlight is a collection of modules

Some modules (not all) export services

All modules in Java

Rich, extensible REST API

©2012 – Big Switch Networks Inc.

DeviceManager(IDeviceService)

FloodlightProvider(IFloodlightProviderService)

TopologyManager(ITopologyManagerService)

RestServer(IRestApiService)

StorageSource(IStorageSourceService)

Forwarding

StaticFlowPusher(IStaticFlowPusherService)

LinkDiscovery(ILinkDiscoveryService)

VirtualNetworkFilter(IVirtualNetworkFilterService)

Page 13: Floodlight Overview

13

Floodlight ArchitectureModule descriptions

DeviceManager(IDeviceService)

FloodlightProvider(IFloodlightProviderService)

TopologyManager(ITopologyManagerService)

RestServer(IRestApiService)

StorageSource(IStorageSourceService)

Forwarding

StaticFlowPusher(IStaticFlowPusherService)

LinkDiscovery(ILinkDiscoveryService)

VirtualNetworkFilter(IVirtualNetworkFilterService)

©2012 – Big Switch Networks Inc.

DB style storage (queries, etc) Modules can access all data and subscribe to changes

13

Computes shortest path using Dijsktra Keeps switch to cluster mappings

Installs flow mods for end-to-end routing Handles island routing

Tracks hosts on the network MAC -> switch,port, MAC->IP, IP->MAC

Implements via Restlets (restlet.org) Modules export RestletRoutable

Supports the insertion and removal of static flows REST-based API

Maintains state of links in network Sends out LLDPs

Create layer 2 domain defined by MAC address Used for OpenStack / Quantum

Translates OF messages to Floodlight events Managing connections to switches via Netty

Page 14: Floodlight Overview

Floodlight Programming ModelNorthbound APIs

Switch

Switch

vSwitch

Switch

IFloodlight-Module

External Application

REST

IFloodlightModule

Java module that runs as part of Floodlight

Consumes services and events exported by other modules OpenFlow (ie. Packet-in) Switch add / remove Device add /remove / move Link discovery

External Application

Communicates with Floodlight via REST Quantum / Virtual networks Normalized network state Static flows

©2012 – Big Switch Networks Inc.

Floodlight Controller

14

Page 15: Floodlight Overview

Network State

List Hosts

List Links

List Switches

GetStats (DPID)

GetCounters (OFType…)

15

A moving target…but…REST API Reference

©2012 – Big Switch Networks Inc.

Static Flows

Add Flow

Delete Flow

List Flows

RemoveAll Flows

Virtual Network

Create Network

Delete Network

Add Host

Remove Host

User Extensions

Floodlight Controller

Switch

Switch

vSwitchSwitch

Page 16: Floodlight Overview

Fine-grained ability to push flows over REST

Access to normalized topology and device state

Extensible access to add new APIs

16

Using the REST APIProgramming Floodlight (1)

©2012 – Big Switch Networks Inc.

Page 17: Floodlight Overview

Handle OpenFlow messages directly (ie. PacketIn)

Expose services to other modules

Add new REST APIs

17

Creating a moduleProgramming Floodlight (2)

©2012 – Big Switch Networks Inc.

Page 18: Floodlight Overview

Cool Floodlight Applications

©2012 – Big Switch Networks Inc.

18

Page 19: Floodlight Overview

A simple programmable patch panel built from: Floodlight Pronto 3290 switch running Indigo

Uses Static Flow Pusher API to redirect traffic between two ports

Runs remotely on the iPhone!

Available: http://virtualnow.net/2012/05/03/using-an-openflow-switch-as-a-programmable-patch-panel/

A Floodlight iPhone applicationProgrammable Patch Panel

©2012 – Big Switch Networks Inc. 19

Page 20: Floodlight Overview

Founded by security veterans from NetScreen

Security device integrated with the Floodlight controller

Showcased the first SDN-capable deep packet inspection working with Floodlight at the Open Networking Summit

Contact: http://www.varmour.com/

20

vArmour: Security for OpenFlow

©2012 – Big Switch Networks Inc.

Switch

Switch

Switch

Switch

Floodlight Controller

App

licatio

n

App

licatio

n

App

licatio

n

Page 21: Floodlight Overview

Built be Saurabh Sabnis, Georgia Tech

Interface to view switches, hosts, network topology, and statistics

Access to Static Flow Pusher API

Available: Coming soon

21

MobiFlow: Floodlight iPad Interface

©2012 – Big Switch Networks Inc.

Page 22: Floodlight Overview

OpenStack and Quantum

©2012 – Big Switch Networks Inc.

22

Page 23: Floodlight Overview

Components:

RestProxy plugin runs inside Quantum module in OpenStack

VirtualNetworkFilter implements layer 2 isolation based on MAC

Highlights:

Supports physical and virtual switches in OpenFlow networks

Caveats: No multicast and broadcast

isolation All DHCP traffic allowed

Virtual Networking SupportFloodlight OpenStack Integration

©2012 – Big Switch Networks Inc.

VirtualNetwork Filter

vSwitchSwitch

Switch

vSwitch

RestProxy Plugin

Quantum

Floodlight Controller

Page 24: Floodlight Overview

1. Create two quantum networks

2. Launch 2 hosts in one network: [10.5.5.2, 10.5.5.3]

3. Launch 1 host in the other [10.6.6.2]

4. Test pings:

1. 10.5.5.2 -> 10.5.5.3 [OK]

2. 10.6.6.2 -> 10.5.5.2 [NO]

Each network is in an isolated layer 2 domain enforced by Floodlight’s VirtualNetworkFilter.

24

OpenStack-in-a-VMOpenStack / Floodlight Demo

©2012 – Big Switch Networks Inc.

Open vSwitch

VirtualNetwork Filter

Floodlight Controller

RestProxy Plugin

Quantum

10.5.5.0/24 10.6.6.0/24

Host52 Host53 Host62

Core Processes

OpenStack / Quantum Network

Page 25: Floodlight Overview

OpenFlowHub and Other Open Source Projects

©2012 – Big Switch Networks Inc.

Page 26: Floodlight Overview

©2012 – Big Switch Networks Inc. – Proprietary and Confidential 26

Join the community!Get Involved with OpenFlowHub

Submit a project

Write a blog post

http://www.openflowhub.org

Contact: [email protected]

1. A community of open source OpenFlow developers

2. An OpenFlow Blog (available for guest authors)

3. Free hosting, tools, and promotion for open source projects

Wiki, forums, bug tracking tools, logos, etc.

What it is: Get involved:

Projects:

Page 27: Floodlight Overview

A python-based framework and set of tests for OpenFlow switches

Includes over 60 tests exercising various aspects of OpenFlow

Useful for testing new OpenFlow implementations and assessing standards compliance

Available: http://oftest.openflowhub.org/

27

OFTest: Validating OpenFlow Switches

OFTest connects to both the data plane and control plane of the switch to simulate and monitor OpenFlow messages

©2012 – Big Switch Networks Inc.

Page 28: Floodlight Overview

Challenge: The OF specification lives in openflow.h Tight coupling of wire format and datastructures New version of OpenFlow 1.x == LOTS of code

change Few non 1.0 switches and controllers have

emerged

28

Logical OpenFlow eXtensible InterfaceLOXI

openflow.hV1.0

openflow.hV1.3

openflow.hV1.1

openflow.hV1.2

LOXIFront-end

CBack-end

JavaBack-end

PythonBack-end

libLOXI.aLOXI.jarLOXI.py

InputP

arserC

ode Gen

Output

Solution: LOXI, an interface that hides OpenFlow wire format differences

Write once, run across any OF version Support for multiple languages Example: match MPLS tag XX

OF 1.0 – unsupportedOF 1.1 – fixed length matchOF 1.2+ - OXM-style match

Available: Coming soon…©2012 – Big Switch Networks Inc.

Page 29: Floodlight Overview

29

An OpenFlow switch reference implementationIndigo

Version 1: Designed for hardware switches and

released under OpenFlow license in 2009 Support for 1G and 10G Broadcom chips

Version 2.0 (coming soon): Based on LOXI – OF 1.x support for free Apache 2.0 license Support for multiple datapaths, both

hardware and software Config abstraction layer for easily

integrating UI’s

Available (1.0): http://indigo.openflowhub.org

©2012 – Big Switch Networks Inc.

Page 30: Floodlight Overview

Interested in Learning More?

Check out the websitehttp://floodlight.openflowhub.org

Join the mailing list:http://groups.google.com/a/openflowhub.org/group/floo

dlight-dev/topicsOr just email [email protected]

Get the code:http://floodlight.openflowhub.org/download

©2012 – Big Switch Networks Inc. 30

Page 31: Floodlight Overview

Thanks!Mike Cohen

[email protected] Switch Networks

Alex [email protected]

Big Switch Networks

Floodlight mailing list:[email protected]

©2012 – Big Switch Networks Inc.