Floodlight and the OpenSDN Stack



Similar documents
PROPOSAL: OCP COMMON LINUX SWITCH DISTRIBUTION. Rob Sherwood and Mansour Karam OCP November 2013

Open Network Linux. A Path to an Open Source Network OS. Rob Sherwood Big Switch Networks CTO

OPEN NETWORK LINUX UPDATES. Rob Sherwood CTO, Big Switch Networks Open Compute Engineering Workshop: May, 2014

BARE METAL SOFTWARE DEFINED NETWORKS, AND OPEN SOURCE. Rob Sherwood Big Switch Networks, CTO BANV, May 2014

Open Network Linux A Network Operating System (NOS) for OCP

TUTORIAL: WHITE BOX/BARE METAL SWITCHES. Rob Sherwood CTO, Big Switch Networks Open Network User s Group: May, 2014

SDN AND BARE METAL SWITCHES ARE LIKE PEANUT BUTTER AND JELLY: TWO GOOD THINGS THAT ARE GREAT TOGETHER!

Open Network Install Environment (ONIE) LinuxCon North America 2015

Open Network Install Environment

OPENFLOW, SDN, OPEN SOURCE AND BARE METAL SWITCHES. Guido Appenzeller (Not representing Anyone)

BROADCOM SDN SOLUTIONS OF-DPA (OPENFLOW DATA PLANE ABSTRACTION) SOFTWARE

Ryu SDN Framework What weʼ ve learned Where weʼ ll go

Linux Embedded devices with PicoDebian Martin Noha

Open Ethernet. April

Open Source Network: Software-Defined Networking (SDN) and OpenFlow

Example of Standard API

Scaling the S in SDN at Azure. Albert Greenberg Distinguished Engineer & Director of Engineering Microsoft Azure Networking

Pluribus Netvisor Solution Brief

Embedded Linux Platform Developer

Emerging Software Defined Networking & Open APIs Ecosystem

EXPLORING LINUX KERNEL: THE EASY WAY!

Introduction to Software Defined Networking

Using SouthBound APIs to build an SDN Solution. Dan Mihai Dumitriu Midokura Feb 5 th, 2014

Introduction to Network Virtualization in IaaS Cloud. Akane Matsuo, Midokura Japan K.K. LinuxCon Japan 2013 May 31 st, 2013

An Introduction to Service Containers

CS244 Lecture 5 Architecture and Principles

Definition of a White Box. Benefits of White Boxes

Embedded Linux development training 4 days session

W H I T E P A P E R. Best Practices for Building Virtual Appliances

SDN. What's Software Defined Networking? Angelo Capossele

基 於 SDN 與 可 程 式 化 硬 體 架 構 之 雲 端 網 路 系 統 交 換 器

Five standard procedures for building the android system. Figure1. Procedures for building android embedded systems

Switch Chip panel discussion. Moderator: Yoshihiro Nakajima (NTT)

SDN/OpenFlow. Dean Pemberton Andy Linton

Outline. Why Neutron? What is Neutron? API Abstractions Plugin Architecture

Wiggins/Redstone: An On-line Program Specializer

Scalable and Reliable control and Management for SDN-based Large-scale Networks. CJK CFI

IOTIVITY AND EMBEDDED LINUX SUPPORT. Kishen Maloor Intel Open Source Technology Center

Programmable Networking with Open vswitch

Migrating to ESXi: How To

Fastboot Techniques for x86 Architectures. Marcus Bortel Field Application Engineer QNX Software Systems

HTTP-FUSE PS3 Linux: an internet boot framework with kboot

Version 1.0. File System. Network Settings

Network Virtualization and Software-defined Networking. Chris Wright and Thomas Graf Red Hat June 14, 2013

Embedded Linux development with Buildroot training 3-day session

CORD Fabric, Overlay Virtualization, and Service Composition

Using Chroot to Bring Linux Applications to Android

Software Defined Networking

OF 1.3 Testing and Challenges

APPLICATION VIRTUALIZATION TECHNOLOGIES WHITEPAPER

SDN and Open Ethernet Switches Empower Modern Data Center Networks

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

SOFTWARE-DEFINED NETWORKING AND OPENFLOW

Amahi Instruction Manual

CS197U: A Hands on Introduction to Unix

Dr. Dimitar Valtchev. 24 June 2010, Stuttgart, Eclipse Embedded Day

SDN, OpenFlow and the ONF

Building a Continuous Integration Pipeline with Docker

Palo Alto Networks. Security Models in the Software Defined Data Center

Virtualization, SDN and NFV

How Bigtop Leveraged Docker for Build Automation and One-Click Hadoop Provisioning

Arista Software Define Cloud Networking

Intro to Docker and Containers

Java Embedded Applications

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Release Notes for Fuel and Fuel Web Version 3.0.1

The Lagopus SDN Software Switch. 3.1 SDN and OpenFlow. 3. Cloud Computing Technology

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

App Development Tutorial

FAME Operating Systems

LOCKSS on LINUX. Installation Manual and the OpenBSD Transition 02/17/2011

OpenWRT - embedded Linux for wireless routers

THE REVOLUTION TOWARDS SOFTWARE- DEFINED NETWORKING

Thingsquare Technology

A Coordinated. Enterprise Networks Software Defined. and Application Fluent Programmable Networks

HP Cloud OS. Платформа OpenStack корпоративного уровня. Иван Кровяков Архитектор облачных решений HP Центральная и Восточная Европа

Project 4: SDNs Due: 11:59 PM, Dec 11, 2014

Dell Networking ARGOS 24/03/2016. Nicolas Roughol. Networking Sales Engineer. Tel : nicolas_roughol@dell.com

The MaXX Desktop. Workstation Environment. Revised Road Map Version 0.7. for Graphics Professionals

How To Make A Vpc More Secure With A Cloud Network Overlay (Network) On A Vlan) On An Openstack Vlan On A Server On A Network On A 2D (Vlan) (Vpn) On Your Vlan

2013 ONS Tutorial 2: SDN Market Opportunities

Sun xvm VirtualBox Product Overview

Sistemi ad agenti Principi di programmazione di sistema

OpenFlow: Load Balancing in enterprise networks using Floodlight Controller

Enterprise-Class Virtualization with Open Source Technologies

Survey of Filesystems for Embedded Linux. Presented by Gene Sally CELF

The Hybrid- Open ( HOpen ) router architecture. Brian Field / Comcast

ThinLinX TLXOS 64-bit Firmware Installation Guide for the Intel NUC Range. Materials Required

Freshservice Discovery Probe User Guide

Spotlight On Backbone Technologies

Using Docker in Cloud Networks

Software Defined Networking

Overview. Open source toolchains. Buildroot features. Development process

Network Virtualization: Delivering on the Promises of SDN. Bruce Davie, Principal Engineer

Migration and Building of Data Centers in IBM SoftLayer with the RackWare Management Module

Transcription:

Title Floodlight and the OpenSDN Stack Rob Sherwood Big Switch Networks Joseph Tardo Broadcom Douglas Flint Broadcom 1

Example SDN Stack: Derived from ONS Logo SDN App1 SDN App2 Controller Platform OF Driver SDN Controller OF Driver OpenFlow Agent Linux OS CPU ASIC SDK ASIC SDN Network Device

This workshop: Top-to-Bottom Open SDN Stack SDN App1 SDN App2 Controller Platform OF Driver Floodlight SDN Controller LOXIGEN LOCI, OpenFlowJ OF Driver OpenFlow Agent Linux OS ASIC SDK NEW! Indigo OpenFlow Agent OF-Datapath Abstraction (OF-DPA) CPU ASIC NEW! Open Network Linux

Outline/Schedule: Working BoCom- Up Time 8:30-9:00a Event Open SDN Stack Overview 9:00-10:00a Open Source Switch OS: Open Network Linux 10:00-11:30a OF- DPA: Open API for Broadcom StrataXGS Architecture 11:30-12:30p Lunch 12:30-1:00p Indigo OpenFlow 1.3 Architecture 1:00-2:00p Floodlight, LOXI, and OpenFlow 1.3 Support 4

Overview Outline: 8:30-9:00a IntroducYons Open SDN Stack Component Summary Components Hardware Design OperaYng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller OpenFlow the short, short version For detailed introducyon to OpenFlow, see other tutorials

Introductions: Who Are We? Rob Sherwood CTO at Big Switch Networks Joseph Tardo Associate Technical Director, OpenFlow and SDN technologies, Broadcom Douglas Flint Principal Engineer - So^ware Systems, Broadcom

Introductions: Who Are You? By a show of hands Developers with Floodlight or Indigo experience? Developers with Other SDN experience? Developers with Networking Experience? Developer with Other Experience? Technical, but not a developer? Non- technical?

Open Hardware Open Compute Project (OCP) hosts open hardware designs hcp://opencompute.org/network Hardware designs: SchemaYcs, board layout Recommended devices Port counts, fans, power requirements Components Hardware Design OperaYng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller

Open Operating System Open Network Linux: Linux distribuyon for network devices hcp://github.com/opennetworklinux/onl Based on Debian Wheezy, but adds: Open Network Install Environment (ONIE) compaybility Lots of switch- specific device drivers: I2C, GPIO, device tree files for non- x86 NiceYes for switches: network booyng, overlayfs over flash Support for increasing number of network devices Components Hardware Design Opera9ng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller

Hardware SDK OpenFlow Datapath AbstracYon TBD press release today! From DocumentaYon: OpenFlow Data Plane Abstrac4on (OF- DPA) is an applica4on so9ware component that implements an adapta4on layer between OpenFlow and the Broadcom Silicon SDK. OF- DPA enables scalable implementa4on of OpenFlow 1.3 on Broadcom switch devices. Components Hardware Design OperaYng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller

OpenFlow Agent Indigo OpenFlow Agent hcp://projecjloodlight.org/indigo Supports: OpenFlow 1.0 and OpenFlow 1.3 x86- based vswitch: hcp://www.projecjloodlight.org/indigo- virtual- switch/ Broadcom- based Hardware switches, including OF- DPA Uses LOXI for its OpenFlow driver Components Hardware Design OperaYng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller

OpenFlow Protocol Driver LoxiGen: Generates OF language specific protocol bindings hcp://github.com/floodlight/loxigen Generates OpenFlow v1.0- v1.3.1+ bindings for: C for Indigo Java for Floodlight Python for OFTest: hcps://github.com/floodlight/o^est Wireshark/Lua: hcp://www.projecjloodlight.org/openflow.lua Components Hardware Design OperaYng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller

SDN Controller Floodlight SDN Controller hcp://projecjloodlight.org Supports: OpenFlow 1.0 à TODO: Update to OpenFlow 1.3/Loxigen/OpenFlowJ Example apps: learning switch, hub, skeleton OpenStack Neutron support Last year: example use cases from CERN/Caltech and Mellanox/Radware This year: many of the Research Track papers implement on Floodlight Components Hardware Design OperaYng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller

OpenFlow the short, short version

EXISTING NETWORK DEVICES CLOSEDFLOW Exact Same Process OSPF/ISIS for: STP BGP MPLS LDP 128.8.0.0/16 Route Engine Closed Flow ROUTER Line Card Line Card Line Card Line Card 2 0 1 3 B I G S W I T C H N E T W O R K S, I N C. W W W. B I G S W I T C H. C O M 15

OPENFLOW IS REMOTE CONTROL PLANE PROTOCOL Just like closed flow, but over network and open! Route Engine Closed Flow Line Card Line Card Line Card Line Card 2 0 1 3 B I G S W I T C H N E T W O R K S, I N C. W W W. B I G S W I T C H. C O M OpenFlow Controller OpenFlow Protocol Over the Network OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch 16

OPENFLOW IN PRACTICE Sequence of tables in a packet processing pipeline OpenFlow Switch Flow Table Flow Table Flow Table Flow Table OpenFlow Protocol on SSL OF Agent OpenFlow Switch OpenFlow Switch OpenFlow Switch Managemen t Network 2 0 1 3 B I G S W I T C H N E T W O R K S, I N C. W W W. B I G S W I T C H. C O M Server OpenFlow Controller Linux 17

FLOW TABLE ABSTRACTION Sequence of tables in a packet processing pipeline Priority Match AcTon List Flow Table 500 IP.proto=6 TCP.dst=22 200 IP.dst= 128.8/16 TTL- -, Fwd:port 3 Queue: 4 100 * DROP ExisYng networking hardware actually very flexible FUD: Large + narrow versus small + wide match tables AcYve work in the Open Networking FoundaYon to bring OpenFlow to feature parity with closed flow 2013 BIG SWITCH NETWORKS, INC. WWW.BIGSWITCH.COM 18

DECOUPLE CONTROL FROM FORWARDING OpenFlow Controller OpenFlow permits fewer OpenFlow controllers than Controller datapaths OFDatapath OFDatapath OFDatapath OFDatapath OFDatapath OFDatapath Reduce number of OFDatapath OFDatapath OFDatapath OFDatapath management touchpoints OFDatapath OFDatapath Mapping from datapaths to controllers a crucial OpenFlow does not imply single point of failure! network design quesyon Allows load balancing and failover 2013 BIG SWITCH NETWORKS, INC. WWW.BIGSWITCH.COM 19

Done: Overview Outline: 8:30-9:00a IntroducYons Open SDN Stack Component Summary Components Hardware Design OperaYng System Hardware SDK OpenFlow Agent OpenFlow Protocol Driver SDN Controller OpenFlow the short, short version For detailed introducyon to OpenFlow, see other tutorials

Outline/Schedule: Working BoCom- Up Time 8:30-9:00a Event Open SDN Stack Overview 9:00-10:00a Open Source Switch OS: Open Network Linux 10:00-11:30a OF- DPA: Open API for Broadcom StrataXGS Architecture 11:30-12:30p Lunch 12:30-1:00p Indigo OpenFlow 1.3 Architecture 1:00-2:00p Floodlight, LOXI, and OpenFlow 1.3 Support 21

Open Network Linux A Common Linux Plajorm for Open Network Devices Rob Sherwood Big Switch Networks CTO

Open Network Linux: Outline History MoYvaYon Elements of a Linux DistribuYon Tower of Babel Benefits for users, vendors Technical details MulY- plajorm support: x86, PPC, and x86 VM Full Server- like experience on network hardware Network booyng and image management

OPEN NETWORK LINUX (ONL) HISTORY Switch Light is a Big Switch Networks commercial product Switch Light = Indigo + ONL Proposed to open source the Linux bits of Switch Light to OCP November OCP Network meeyng Lots of good community feedback Source code went live for OCP 1/27/2014 Summit Work in progress: github.com/opennetworklinux/onl Needs website, pre- compiled binaries Lots of interest from the ODM community 2013 BIG SWITCH NETWORKS, INC. WWW.BIGSWITCH.COM 24

BACKGROUND DISTRIBUTION Linux proper is just the kernel DistribuTon is everything else e.g., RedHat, Ubuntu, Slackware, Gentoo, etc. Libc, compiler, user space binaries ConfiguraYon, file system layout, startup scripts Package management, full- featured boot loader A lot of work goes into making a good distributon Default configurayons, daemons Q/A (lots and lots) Lots of possibilites for niche distributons e.g., embedded environments differ from server Bootloaders vs. full fledged systems 2013 BIG SWITCH NETWORKS, INC. WWW.BIGSWITCH.COM 25

BACKGROUND PLATFORM SUPPORT SomeYmes we forget, but the boot process is horrible Server and switch plaborms have many idiosyncrasies Litany of licle devices we never think of USB, GPIO, flash, PCI, serial, RTC, EEPROM, DMA, Crypto chips MPIC - MulYple programmable interrupt controller all at plajorm- specific memory locayons x86- based standards shield us from low- level plaborm details Vendor must write a BIOS for each plajorm, e.g., ACPI standard OperaYng systems (e.g., Linux) discovery devices via BIOS But switch plaborm ecosystem is not as evolved Includes switch specific devices, like I2C, GPIOs, etc. Manual map/inventory of hardware à memory address via Device Tree Source (DTS) files 2013 BIG SWITCH NETWORKS, INC. WWW.BIGSWITCH.COM 26

Motivation: Tower of Babel is Bad STP + MLAG OpenFlow daemon Quagga + hooks Switch Agent(s) Fedora Linux Kernel Device Tree #1 Initrd #1 OCP Platform V1 Std. Debian Linux Kernel Device Tree #2 Initrd #2 OCP Platform V2 BusyBox Linux Kernel Device Tree #3 Initrd #3 White box vendor Platform Independent Platform Dependent Hardware Layer Stack #1 Stack #2 Stack #3

Proposal: Common Linux Platform STP + MLAG OpenFlow daemon Quagga + hooks Keep differentiation in switch agents Standard packages, tools, etc. Stock Linux Kernel + any patches Unified Device Tree Repository Unified Driver Repository Come together around the common bits OCP Platform V1 OCP Platform V2 White box vendor Maximize hardware abstraction

Benefits for Users Help foster an OSS ecosystem sandbox Easy OS binary to download and play with Vendor agnosyc common Linux plajorm Deploy your non- switch tools on any box e.g., Chef/puppet/custom Manage the switch like any other server Central repository for DTS files Less fricyon to support new plajorms Easy hardware validayon

Benefits for vendors All vendors already have their own distribuyons Informal check: most are based off of Debian Wheezy No significant space for differenyayon, might as well standardize Reduce engineering effort Reduce the effort to support new plajorms Open up the ecosystem good for everyone Central repository for hardware vendors to test their drivers Normalize hardware compaybility lists

Open Network Linux: Goals Accelerate adopyon of OCP and other switch hardware Users: download image, install via ONIE Vendors: common Linux plajorm for new drivers, tesyng Create an open community Target: Linux portable to all networking devices License: Eclipse Public License and GPL for Kernel What s in it for me? Engineering efficiencies BeCer development and deployment experience

Open Network Linux: Status Lots of support from community thanks! Github went live : 1/27/2014 Main repository: github.com/opennetworklinux/onl Builds ONIE- compayble images for: Generic x86 plajorms: Interface Masters not yet tested Many PPC plajorms: Quanta LY2, LB9, LB8D, Accton 5652 x86 VM build: for tesyng qcow2 (vmdk via convert) Stability level: works for us Feedback welcome

Open Network Linux: Outline History MoYvaYon Elements of a Linux DistribuYon Tower of Babel Benefits for users, vendors Technical details MulY- plajorm support: x86, PPC, and x86 VM Full Server- like experience on network hardware Network booyng and image management

Technical Overview Code builds two main aryfacts: ONL installer/loader: like grub, but muly- plajorm with netboot ONL SWI file: zip d SWitch Image with root fs, kernel, initrd Code is divided into mulyple sub- modules ONL: main repository auto pulls in other repos linux- 3.9.6: extracted kernel code loader: scripts and code for boot loader process infra and common: libraries, shared rouynes, faultd

Quick Aside: Open Network Install Environment (ONIE) Open source project to install/uninstall network OS hcp://github.com/onie/onie or hcp://onie.github.io/onie/ Think of it like a hybrid PC BIOS and Grub/LILO/Sysimage Co- operayve project: OCP, Cumulus, Big Switch, Others In pracyce: Curt Brune from Cumulus Networks does almost all of the work Allows a network admin to install/uninstall a network OS In pracyce, it is itself a ~4MB mini- Linux installayon More details later

Deployment Overview Full documentayon in README in ONL repository 1. Get code from github.com/opennetworklinux/onl 2. (only for ppc) Build a cross- compilayon workspace 3. Build ONL installer/loader image 4. Put ONL installer/loader image on ONIE server 5. Boot switch and install ONL via ONIE 6. Build one or more ONL SWI s 7. Netboot from scp/nfs/hcp/^p/etc. to install ONL SWI

ONL is Multi-Platform Support many boxes from the same code- base Open Network Linux: Kernel Drivers Loader Work flow Build scripts Management Model X86 Arch PPC Interface Master s x86 VM others? Quanta LB9, LY2, LY5 Accton 5652 Delta, Alpha, etc. ARM????

Install Using ONIE then Boot ONL ~64MB uboot ENVs ONIE Free Space Boot Flash Boot Logic: 1. uboot POSTs 2. $nos_boot_cmd is read from ENVs 3. run $nos_boot_cmd If $nos_boot_cmd returns, run ONIE On install, ONIE sets $nos_boot_cmd to load ONL loader 4. Loader downloads specified SWI URL if not cached 5. Loader mounts rootfs as ramdisk with overlayfs 6. ONL loader kexec s SWI kernel ~2GB ONL Loader ONL SWI #1 (cached) ONL SWI #2 (cached) Mass Storage

PERSPECTIVE RELATIVE TO ONIE Different tools for different use cases but maximize code reuse ~160 MB ~3MB ~16MB ONIE First boot Loader Normal Full- featured Boot Loader (w/busybox) Main Network OS Image (.swi) (w/real binaries) Github.com/ onie/onie Proposed OCP DistribuYon Common kernel and DTS files?? 2013 BIG SWITCH NETWORKS, INC. WWW.BIGSWITCH.COM 39

Tricks to Use Switches Like Servers Switches have flash, not hard drives Problem 1: Maximum flash cycle Yme limit disk writes Problem 2: Flash and ram more limited than typical servers Fix: Use overlayfs to overlay copy- on- write ram disk over flash ONL uses full- featured binaries For size, most switch OS s use stripped binaries, e.g., busybox Bigger binaries uses addiyonal space, but ok with overlayfs Install/use proper Debian binaries using apt- get Useful for development or operayons, e.g., gcc or Chef/Puppet

ONL Supports Net Booting Natively Boot SWIs over the network once ONL Loader installed SWIs are cached locally for performance, resilience Simplifies operayonal management, upgrades Supports hcp, ^p, jtp, nfs, ssh/scp, or ZTN Zero- touch Networking (ZTN): auto- discover SWIs Like PXE for your switches Query all hcp servers in local subnet, use SWI of first hit Just like ONIE Netboot makes managing your network much easier

Outline/Schedule: Working BoCom- Up Time 8:30-9:00a Event Open SDN Stack Overview 9:00-10:00a Open Source Switch OS: Open Network Linux 10:00-11:30a OF- DPA: Open API for Broadcom StrataXGS Architecture 11:30-12:30p Lunch 12:30-1:00p Indigo OpenFlow 1.3 Architecture 1:00-2:00p Floodlight, LOXI, and OpenFlow 1.3 Support 42

hand over to Broadcom folks.

Outline/Schedule: Working BoCom- Up Time 8:30-9:00a Event Open SDN Stack Overview 9:00-10:00a Open Source Switch OS: Open Network Linux 10:00-11:30a OF- DPA: Open API for Broadcom StrataXGS Architecture 11:30-12:30p Lunch 12:30-1:00p Indigo OpenFlow 1.3 Architecture 1:00-2:00p Floodlight, LOXI, and OpenFlow 1.3 Support 44

Indigo OpenFlow Agent Different from Indigo v1 Complete rewrite Uses LoxiGen/Loci not openflow.h Design Goal: Highly portable across ASICs, plajorms, operayng systems Top half/bocom half design: separate hardware dependent bits Roughly AgnosYc to OpenFlow version work on intermediate form Composed of lots and lots of modular libraries

Indigo Bottom Half Ports Indigo Virtual Switch hcp://projecjloodlight.org/indigo- virtual- switch Broadcom SDK Binary only Broadcom OF- DPA source code with OF- DPA distribuyon Mellanox s SDK Demo only (?) And others

Switch Light Architecture Legend Big Network Open Network Linux BSN Open Source Controller Switch Light OS CLI Indigo OpenFlow Agent Loxi BSN Closed Source ZTN Loader SSH Fan Control NTP Syslog SNMP ASIC Driver Vswitch Driver LibC on Debian Wheezy Base DistribuYon BCM SDK Vswitch Kernel 3 rd Party Closed Source ONL Linux Kernel I2C Drivers GPIO Drivers Device Trees BRCM Chip x86 Switch Light is our Indigo OpenFlow Agent running on Open Network Linux on x86 or Broadcom hardware.

Outline/Schedule: Working BoCom- Up Time 8:30-9:00a Event Open SDN Stack Overview 9:00-10:00a Open Source Switch OS: Open Network Linux 10:00-11:30a OF- DPA: Open API for Broadcom StrataXGS Architecture 11:30-12:30p Lunch 12:30-1:00p Indigo OpenFlow 1.3 Architecture 1:00-2:00p Floodlight, LOXI, and OpenFlow 1.3 Support 49

Challenge: Floodlight Needs OpenFlow 1.3 Support! All of the right bits are there All of the language bindings are done Just need to update the handshaking and example code A mere mater of days of work TM But I haven t had the Yme Is this a possible community acyvity? openflow- 1.3 branch on github.com/floodlight/floodlight

LOXI is fully OF1.3.1 git://github.com/floodlight/loxigen C Backend libloci.a Indigo Java Backend OpenFlowJ- LOXI Floodlight Single OF Wire Desc LOXI- GEN Python Backend Pylib openflow OFTest Wireshark Backend Wireshark Plugin (Lua) Wireshark

OpenFlowJng: Architecture Ideas for OF 1.x compaybility 52

What's this about? A new OpenFlow API for Floodlight with support for OF1.[0-3+] o o o Message classes Message/wire conversions Types How should this API look like?

It's not......about implementation details Code generated by LOXI, but that's beside the point.

Higher Level Stuff: Not Today! Portability: abstract away OF version / hardware differences virtualize resources Network model: a higher level / network wide forwarding forwarding abstraction Hard problems! Solutions to be built on top of this

Why? Current API has prob... err, opymizayon potenyal o o o o mutable state passed around 100s lines of code int bitmasks - > people use magic numbers manual housekeeping of line format metadata o Forgot to update size, anyone? messages don't guarantee invariants A convenient/safe API helps o o test coverage correctness

Design Goals

Multiple Versions support OF 1.[0-3]+ compaybility o o o o Easy upgrade path for newer versions Support for Vendor extensions Expose extended features Provide "1.0 compatble" baseline

Bug Resilience Type safety (enums vs. short type) No Integer bitmasks o necessary for muly- version support No manual housekeeping of wireformat properyes Localize state mutayon / limit passing of mutable state

More... Convenience, also for manual creayon o Unit tests! Enable Performance opymizayons o Lazy parsing o Caching of messages

Design Goals - in a nutshell "Work hard in the API to make life easy for apps/clients"

Architecture (no UML[*]. Promised.) [*] almost

Interfaces and Value Classes Interfaces All OF Message types exposed as Interfaces (Messages, Actions, Matches etc.) Value Classes for constant, simple concepts (IPv4Address, MacAddress) stuff that (potentially) changes between versions stuff that always stays the same

Interfaces One Interface for all versions o o o provides Union of the features supports querying for features throws UnsupportedOperaYonExcepYon() version specific implementayons o package private <<interface>> OFFlowMod OFFlowModImplVer12 OFFlowModImplVer11 OFFlowModImplVer10

Immutability Immutability All Message / Value Objects are immutable(*) threadsafe cacheable safe to pass around How do you create stuff? (*) externally visible

Instance creation Instance controlled No constructors. Ever. Complex OF Message types: Factories / Builders factory.createbuilder() Simple Value Objects: Factory Methods IPv4.of("1.2.3.4/24") But I hate factories!!!

Message Objects and Builders Factory createbuilder() Builder setfoo(foo) setbar(bar) lightweight local arbitrary state createbuilder() getmessage() Message threadsafe valid

Sample Packet Loop OFConnection conn = switch.getconnection(); while (true) { // read from wire OFGenericMessage message = conn.readmessage; Wire Transfer is done by messagefactory } switch (message.gettype()) { case ECHO_REQUEST: send(message.asechorequest().createreply()); break; case PACKET_IN: handlepacketin(conn, message.aspacketin()); break; case FLOW_STATS_REPLY: updatestats(message.asflowstatsreply()); break; createreply() convenience function GenericMessage has gettype() and as${type} ()

Create a Match private Match creatematch(ofmessagefactory fact, OFPacketIn packetin) { MatchBuilder builder = factory.creatematchbuilder(); if (builder.supportsfield(in_port)) builder.setfield(in_port, OFPort.of(12)); Match builder can be queried for supported fields if (builder.supportsmask(eth_dst)) builder.setmasked(eth_dst, packetin.getmatch().getmasked(eth_dst)); if (builder.supportswildcards(ipv6_dst)) builder.setmaskedmatch(ipv6_dst, IPv6Mask.of("00:01:02::/64")); IPv4 field = builder.getfield(ipv4_src); } typesafe

Create a FlowMod private void handlepacketin(ofconnection conn, OFPacketIn packetin) { OFMessageFactory factory = conn.getmessagefactory(); OFFlowModBuilder fb = factory.createflowmodbuilder(); chained setters } fb.setcookie(123).setmatch(creatematch()); fb.addaction(messagefactory.actionoutput(10)); OFFlowMod flowmod = fb.getmessage(); send(flowmod); OFFlowMod modifiedflowmod = flowmod.createbuilder().setinport(12).getmessage(); send(modifiedflowmod); builders are mutable, single threaded + dirt cheap to construct Builder used inline to 'modify' (create modified copy) of msg

Summary OpenFlowJ/Loxi: major update to Floodlight s OpenFlow API OF mult version support (but doesn t manage the differences for you) Bug resilience 1st Milestone: 2Q Check out a demo of the client side API https://github.com/andi-bigswitch/openflowj-demo

Outline/Schedule: Working BoCom- Up Time 8:30-9:00a Event Open SDN Stack Overview 9:00-10:00a Open Source Switch OS: Open Network Linux 10:00-11:30a OF- DPA: Open API for Broadcom StrataXGS Architecture 11:30-12:30p Lunch 12:30-1:00p Indigo OpenFlow 1.3 Architecture 1:00-2:00p Floodlight, LOXI, and OpenFlow 1.3 Support 72

Conclusion: Open SDN Stack Phew! Large Brain Dump But, first top- to- bocom Open SDN stack Hardware, OS, ASIC SDK, OpenFlow Agent, OpenFlow Driver, SDN Controller Thanks! If you re not bored of me, join me in the Research Track J

Thank You 74