openflowhub webinar - indigo v2.0 and loxi
DESCRIPTION
The Big Switch team has been working overtime to develop a new version of the popular Indigo project. Indigo is an OpenFlow firmware agent for physical switches, and info on the current version can be found on http://indigo.openflowhub.org. Why the need for a new version? We wanted to provided an extensible framework to enable switch and hypervisor vendors to implement OpenFlow agents, and provide an easier way to provide an upgrade path to supported new versions of OpenFlow. Major new capabilities include a) a HAL abstraction layer to make it easy to integrate with the forwarding and port management interfaces of physical- or virtual- switches, b) a configuration abstraction layer to support running OpenFlow in a "hybrid" mode on your switch, c) LOXI - a marshalling/un-marshalling engine that generates OpenFlow libraries in multiple languages. Currently it generates C, but Java and Python are coming soon.TRANSCRIPT
OpenFlowHub Webinar Series Open Source SDN Stack & Indigo Deep-‐dive
September 19th, 2012
Agenda
� Overview of OpenFlowHub projects and Big Switch
� Overview of Indigo v1
� Indigo v2 and LOXI � OpenFlow 1.x Architectural Challenges � What is “LOXI” � Indigo 2.0 Architecture � ImplementaPon Status
� Road Map
� How to get involved / Q&A
2
Overview � Founded in 2010 by key members of Stanford SDN Team � ProducPon beta deployments since 2011 � Product revenue since 2012
Big Switch is the Leading Enterprise SDN Company � #1 Controller in the Enterprise
� 15+ Fortune 500 Companies are using BSN Controllers � #1 Partnerships
� 80% of major Networking Vendors � Most used reference controller (e.g. at Interop 2012)
� #1 by product partnerships � Key joint development efforts with select partners
� We expect to be #1 by revenue of pure breed SDN companies for 2012
3
The Leader in Socware Defined Networking for the Enterprise Big Switch Networks
� SDN/OpenFlow � Head of Stanford OpenFlow Lab � 4 lead architects of OpenFlow at
Stanford � Lead of Stanford’s ON.LAB � 2 Post-‐Doc’s from Berkeley’s SDN Lab
� VMware � Head of VMware’s Networking Team � 7 senior staff from VMware’s
Networking team � Lead architects of DVS � Lead architect of VXLan
� Networking � 5 key members of Nexus 1k Team � Lead of the N1k for MSFT effort
4
Unique Leadership for SDN Engineering Team
People @ Big Switch
Howie Xu VP Engineering Head of entire VMware Networking Unit 2005-2011. Co-inventor of Hypervisor vSwitch. Led UCS and Nexus 1000V collaboration with Cisco. Rob Sherwood Architect Author of FlowVisor and key architect of OpenFlow 1.0
Dan Talayco Architect Former member of the Stanford OpenFlow Team. Led development of the Indigo reference implementaPon
Others include: Guido Appenzeller: Lead author of OF 1.0 spec Nick BasPn: Lead dev @ ON.Lab
5
An ecosystem around the northbound applicaPon API What Makes Big Switch Unique?
vSwitch"
Switch"
Switch "
vSwitch"
Controller Platform "
Application"
Application"
Application"
Application!
vSwitch" vSwitch"
vSwitch"
vSwitch"
Application tier: Network Virtualization, packet brokering/ monitoring, application delivery control, firewalling…
Controller tier: SDKs: OpenFlow, tunneling, state distribution, configuration and management, device-specific drivers…
Data plane tier: OpenFlow-enabled Physical and Hypervisor switches: throughput/performance, flow table sizes, LAG, tunneling, L3 integration…
Floodlight"
North-Bound API"
Open source projects from Big Switch
Defining an open SDN platform
• Apache-‐licensed OpenFlow Controller
• Core of the Big Switch commercial commercial
• OpenStack Quantum plug in
• OpenFlow agent for physical switches
• LOXI -‐ OpenFlow Library generator
• ProducPon use in OpenFlow switches today
• TesPng frameworks for Open Flow compaPbility
6
Indigo 1.0
� OpenFlow 1.0 implementaPon for hardware switches � Dan Talayco primary author; many contributors
� Released under OpenFlow-‐license (BSD-‐like) in 2009
� Supports 1G and 10G-‐based Broadcom-‐chips � Triumph2, Triumph3, Scorpion, Trident, Trident+, etc.
� Rich HAL layer for portability across mulPple plaqorms
� Modest hybrid-‐switch support; only for control channel
� h"p://indigo.openflowhub.org
7
ProducPon support for OpenFlow hardware since 2009
Indigo 1.0 Architecture
8
OFProtocol
OFDatapath
OpenFlow
-‐1-‐0.h
Web UI
CLI
ASIC-‐driver code
OpenFlow Controller
OpenFlow Control Channel
Hardware AbstracPon Layer
OpenFlow 1.x Challenges
� OpenFlow specificaPon is a pdf and a C header file � #include “openflow/openflow.h” � PDF is ocen incomplete, must rely on header file
� Result #1: Pght coupling between wire format and internal data structures
� Result #2: any change to the protocol causes disproporPonate code changes in the OpenFlow agents � e.g., OF1.0 à OF1.1 the “port_id” field went from 16 to 32 bits
� OpenFlow switch development has stagnated – too hard! � Affects OpenVSwitch, Stanford reference design, Indigo, etc. � PorPng OpenFlow to new languages also hard, e.g., Java
9
All implementaPons depend too much on “openflow.h”!
LOXI: Logical OpenFlow eXtensible Interface
10
LOXI solves the “openflow.h” problem for many languages
openflow.h V1.0
openflow.h V1.3
openflow.h V1.1
openflow.h V1.2
LOXI Front-‐end
C Back-‐end
Java Back-‐end
Python Back-‐end
libLOXI.a
LOXI.jar
LOXI.py
Input Parser Code Gen Output
LOXI ProperPes
� LOXI interface hides OpenFlow wire format differences
� In LOXI, write match on MPLS tag XXX � OF1.0 – returns unsupported � OF1.1 – encodes as OF1.1 fixed length match � OF1.2+ – encodes as OF1.2 OXM-‐style match
� LOXI libraries are usable by switches and controllers � We will be LOXI-‐enabling floodlight as well
� Data semanPcs are back-‐end-‐specific � libLOXI.a works stores state internally in the version-‐specific
wire format and uses “copy on grow”
11
“Write once to LOXI interface, works across all OpenFlow”
Indigo 2.0 Architecture
12
OFProtocol
OFDatapath
OpenFlow
-‐1-‐0.h
Web UI
CLI
ASIC-‐driver code
OpenFlow Controller
OpenFlow Control Channel
Hardware AbstracPon Layer
ConnecPon Instance ConnecPon Instance ConnecPon Instance
OpenFlow Core State Manager
Data Path AbstracPon
OpenFlow Fowarding Engine Port Manager
Config AbstracPon
OF Config Proto
Indigo 2.0 ProperPes
� Apache 2.0 license
� Wrixen in C with portability in mind � #define MEMALLOC(bytes) malloc(bytes) vs. kmalloc() � Not implicitly targeted at Linux-‐only
� DistribuPon includes example datapath drivers � e.g., pure userspace datapath as portable reference � ExpectaPon is that partners will write their own ASIC drivers to
HAL interface
� Config abstracPon helps integrate with exisPng partner UI’s
13
Source DistribuPon Architecture
LoxiGen
LOCI
Indigo-2 Architecture
Headers
Indigo Agent Core
OF State Manager
OF Connection Manager
OF Socket Manager
Indigo Linux Platform
vSwitch UserSpaceForwarding
LinuxPort Manager
BigCode Libraries
PackMan(Packet
Manipulation)
SPI(Software
TCAM) VPI
(Port abs)
LRI on OVS(planned)Indigo HW LRI
14
ImplementaPon Status
� LOXI with C-‐backend and Support for OF 1.0, 1.1, 1.2 wrixen � Currently debugging and massaging interface � Plans for Java + Python Backend, as well as OF1.3 shortly
� Indigo 2.0 � HAL interface updated � Config abstracPon: sexled on ‘sysctl’-‐like interface � User-‐space Linux datapath socware driver wrixen � ConnecPon manager wrixen to LOXI interface � Currently wriPng per-‐message handlers in LOXI
� Very acPve development
15
Q3 2012
Roadmap
� LOXI: � Create Java back-‐end for floodlight � Create Python back-‐end for OFTest
� Indigo 2.0: � Pass remaining OFTest tests (hxp://ocest.openflowhub.org) � Add support for OF Config Protocol � Add “OVS” datapath compaPbility HAL-‐translator
� Support the OVS Linux kernel module � Support exisPng OVS-‐based hardware ASIC drivers
� Extend hybrid-‐switch support: Spanning tree-‐protocol
� IniPal release with subset of above: � Public release target soon (subscribe to indigo-‐announce) � Closed-‐to-‐partners pre-‐release sooner
16
Indigo 2.0 Linux ImplementaPon
17
Proposed IntegraPon with OVS kernel module
user space
kernel space
State Manager
data path abstraction
vswitch_mod.ko
Connector
Port Management Forwarding Engine
libLOXI
shim
Port Management
Forwarding Engine
OVS Connector
Web UI
CLI
OpenFlow Configuration
VPI
openvswitch_mod.ko
ImplicaPons for OFTest
� Next-‐step: LOXI-‐fy OFTest � Need to build the LOXI python backend � Port/merge join OF1.{0,1,2,3} tests to LOXI
� Increasing interest in OFTest � Increasing external commixers � De facto standard test suite from ONF TesPng Working Group
� Go to hxp://ocest.openflowhub.org for more details
18
Summary
� OpenFlow switch implementaPons are Pghtly coupled to openflow.h � EffecPvely halted development
� LOXI breaks that dependency and provides a future-‐proof common interface target
� Indigo 2.0 builds on LOXI and adds: � ASIC and socware friendly HAL � ConfiguraPon abstracPon for simpler integraPon and OFConfig � Linux reference implementaPon (virtual switch integrated with
OVS kernel datapath)
19
Complete SDN Stack At Launch
Application Plane • Contributed by Open Source community • Compatible with Big Flow Controller
Control Plane • Supported by largest community • De facto northbound API
Data Plane • OVS (Open vSwitch) • LOXI (OpenFlow Library) • Indigo (OF firmware agent)
Floodlight"
"BG
P Speaker"
Static Flow
Managem
ent""
Virtual N
etworking"
& more""
Standard Interface "(Rest API / Modules)"
Testing and Simulation Tools • OFTest
OVS"Physical Switch"
LOXI"
Indigo-2"
20
Get Involved
� Subscribe to mailing lists � indigo-‐[email protected]
� Used to announce new versions of Indigo � hxp://groups.google.com/a/openflowhub.org/group/indigo-‐
announce/subscribe
� indigo-‐[email protected] � Discuss development and review code before being commixed � hxp://groups.google.com/a/openflowhub.org/group/indigo-‐dev/
subscribe
� To see code now, contact [email protected]
21