openflowhub webinar - indigo v2.0 and loxi

21
OpenFlowHub Webinar Series Open Source SDN Stack & Indigo Deepdive September 19 th , 2012

Upload: openflowhub

Post on 20-Jun-2015

2.351 views

Category:

Documents


6 download

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

Page 1: OpenFlowHub Webinar - Indigo v2.0 and LOXI

OpenFlowHub  Webinar  Series  Open  Source  SDN  Stack  &  Indigo  Deep-­‐dive  

September  19th,  2012  

Page 2: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 3: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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  

Page 4: OpenFlowHub Webinar - Indigo v2.0 and LOXI

�  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  

Page 5: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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"

Page 6: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 7: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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  

Page 8: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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  

Page 9: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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”!  

Page 10: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 11: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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”  

 

Page 12: OpenFlowHub Webinar - Indigo v2.0 and LOXI

 

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  

Page 13: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 14: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 15: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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  

Page 16: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 17: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 18: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 19: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 20: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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

Page 21: OpenFlowHub Webinar - Indigo v2.0 and LOXI

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