최영락 (Ian Choi)	

Manager / NAIM Networks
ian@naimnetworks.com
Mar 27, 2014
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved. 2
Table of Contents
Open Source & SDN Controllers
Open Source SDN Controllers – C & Python
Open Source SDN Controllers – Java
Comments on SDN Controllers
I
II
III
IV
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. Open Source Environment
4
SDN Controllers
SDN Related Open Sources
Enabling Specification / Organizations
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. Why Open Source with Community?
5
Open Source At A Glance
!  600,000+ projects
!  100+ Billion lines of code
!  10 Million person-years of work
SDN innovation will come from
open source like
!  40% of cloud innovation
!  15% of mobile enterprises
!  19% of mobile apps
v  Free software tools and platforms accessible to all
v  Support from passionate SDN experts
v  Freedom to use, redistribute and modify without IP infringement
Empowered
community and
continuous
improvement
Huge creative and
diverse potential for
unprecedented scale
Src.: ON.LAB
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. Unlocking Network Potential
6
Traditional Networking
!  Control plane
embedded into the box
!  Closed proprietary
with no open interface
!  A big barrier to
innovation
The Promise of SDN
!  Separation of forwarding
and control planes
!  Open and vendor
agnostic interface (e.g.
OpenFlow)
!  Well defined control
plane abstractions to
enable rapid innovation
Need to create
new tools
Use them and
modify them freely
to experiment new
possibilities
Exchange ideas
and experience
Src.: ON.LAB
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. SDN Controller Overview – (1)
v Applications for Network Devices
7
Network Device
Software
ASIC
TCAM
 TCAM
 TCAM
 TCAM
 TCAM
Low-Level ASIC Interface
TCAM
TCAM
Operating System (OS)
App
 App
 App
App
 App
App
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. SDN Controller Overview – (2)
v Separation of Applications
8
Controller (Openflow Controller / SDN Controller)
Network Device
Software
ASIC
TCA
M
TCA
M
TCA
M
TCA
M
TCA
M
Low-Level ASIC Interface
TCA
M
TCA
M
Operating System (OS)
App
 App
 App
App
 App
App
Network Device
Software
ASIC
TCA
M
TCA
M
TCA
M
TCA
M
TCA
M
Low-Level ASIC Interface
TCA
M
TCA
M
Operating System (OS)
App
 App
 App
App
 App
App
Network Device
Software
ASIC
TCA
M
TCA
M
TCA
M
TCA
M
TCA
M
Low-Level ASIC Interface
TCA
M
TCA
M
Operating System (OS)
App
 App
 App
App
 App
App
App
 App
 App
App
 App
App
Operating System (OS)
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. SDN Controller Overview – (3)
v The All-Seeing Eye for Almighty
9
Network Device
Software
ASIC
TCAM
 TCAM
 TCAM
 TCAM
 TCAM
Low-Level ASIC Interface
TCAM
TCAM
SDN Controller
Network Device
Software
ASIC
TCAM
 TCAM
 TCAM
 TCAM
 TCAM
Low-Level ASIC Interface
TCAM
TCAM
Network Device
Software
ASIC
TCAM
 TCAM
 TCAM
 TCAM
 TCAM
Low-Level ASIC Interface
TCAM
TCAM
Flow
Flow
Flow
App
 App
 App
App
 App
App
Operating
 System
 (OS)
 
Southbound
•  OpenFlow
•  NetConf
•  SNMP
•  Node Aware
Northbound
•  Code Base Automation
•  Controls vBRAS, vCDN, vADC
Northbound
Southbound
Agent
Agent
Agent
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. Open Source + SDN Controllers
10
Vendors’ perspective
Source : HP Technical white paper
Need to create
new tools
Use them and
modify them freely
to experiment new
possibilities
Exchange ideas
and experience
Open sources’ perspective
v API is an important part to compose SDN
architecture with controllers and elements.
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
I. Open Source SDN Controllers
v Many Open Source SDN controllers!
11
SDN Controller
Project Organization(s) Memo
Beacon
Stanford
University
Beacon is a fast, cross-platform, modular, Java-based controller that supports both event-based and threaded
operation.
FloodLight
Big Switch
Networks
The Floodlight controller is an enterprise-class, Apache-licensed, Java-based OpenFlow Controller. It was
forked from the Beacon controller, originally developed by David Erickson, and now is supported by a
community of developers including a…
FlowER
Travelping
GmbH
FlowER is an open-source Erlang based OpenFlow controller. Its purpose is to provide a simplified platform for
writing network control software in Erlang. Its still under development but Travelping, FlowER’s creator, is
already using it in its…
OpenIRIS
ETRI
(Korea)
OpenIRIS (pronounced ai-ri-s) is the open source version of IRIS, a recursive SDN OpenFlow Controller
created by IRIS Research Team in ETRI, Korea.
Jaxon
University
of Tsukuba
Jaxon is a Java-based OpenFlow Controller that provides a thin interface to NOX to bridge Java applications
and the NOX controller.
Mul SDN
Controller
Kulcloud
(Korea)
MūL, is an OpenFlow (SDN) controller. It has a C based multi-threaded infrastructure at its core. It supports a
multi-level north bound interface for hooking up applications.
NOX ICSI
NOX was the first OpenFlow controller. It has been the basis for many and various research projects in the
early exploration of the SDN space.
OpenContrail
Juniper
Networks
OpenContrail is an Apache 2.0-licensed project that is built using standards-based protocols and provides all
the necessary components for network virtualization–SDN controller, virtual router, analytics engine, and
published northbound APIs.
OpenDaylight
Linux
Foundation
The adoption of new technologies and pursuit of programmable networks has the potential to significantly
improve levels of functionality, flexibility and adaptability of mainstream datacenter architectures. To leverage
this abstraction to its fullest
POX ICSI
POX is a Python-only version of NOX that provides controller functionality within a rapid prototyping
environment.
Ryu Network
Operation system
NTT
Communications
Ryu is a network OS that integrates with OpenStack and supports OpenFlow. It provides a logically centralized
controller and well-defined API that make it easy for operators to create new network management and
control applications.
Trema NEC An Open Source modular framework for developing OpenFlow controllers in Ruby/C.
…
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
[Java]
 
[Python]
 
[C/C++]
 
I. Pedigree Chart
12
Controller
(Proprietary)
Big Network
Controller
(Proprietary)
 
OPEN
DAYLIGHT
 
(nox-classic  nox)
 
(Proprietary)
 
1.  NOX
2.  POX
3.  Ryu
4.  MUL
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-1. NOX – (1)
v Two Versions of NOX
!  NOX-classic
•  Original NOX (now, officially deprecated)
– https://github.com/noxrepo/nox-classic
•  C++-based SDN controller, but applications can be
developed using Python
•  Provides graphical user interfaces
!  NOX
•  Separated from NOX-classic in 2012
– https://github.com/noxrepo/nox
•  Only supports C++ for application development
•  Fewer default applications than NOX-classic
– But, much faster and has a much cleaner source base
•  No graphical user interfaces
14
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-1. NOX – (2)
v Original NOX (a.k.a., nox-classic)
!  Multi-thread C++-based controller
!  GNU GPL v3 license
!  Written on top of Boost library
•  Provides fast, asynchronous IO (Boost.Asio)
!  Supported target system: Linux
!  SDN applications can be developed with Python
!  Documentation: doxygen, # of tutorials
15
Sample application written in C++
Sample application written in C++ and Python using SWIG library
Sample application written in Python
SWIG  (Simplified Wrapper and Interface Generator): an open source software tool used to connect computer programs or libraries written in
	

 C or C++ with scripting languages such as Lua, Perl, PHP, Python, …
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-1. NOX – (3)
v Original NOX (a.k.a., nox-classic)
!  Example: Switch application (C++, partial)
16
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-1. NOX – (4)
v Original NOX (a.k.a., nox-classic)
!  Example: Switch application (Python, partial)
17
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-1. NOX – (5)
v Original NOX (a.k.a., nox-classic)
!  Graphical user interfaces
18
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-1. NOX – (6)
19
v NOX (not nox-classic)
!  Enhanced performance and better source
readability/maintenance structure
!  Less active open source community than POX
•  Only 28 source commits for the recent 2 years
!  Documentation: poor (only doxigen)
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-1. NOX – (7)
20
v NOX (not nox-classic)
!  Example: Switch application (C++, partial)
The use of Boost library
(cf. nox-classic: libc++)
The same structure as nox-classic
python code
(better readability)
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-2. POX – (1)
v Overview
!  A platform for rapid development and
prototyping of network control using Python
!  Supports all the targets (Linux, Mac, Windows)
!  Still active (# of commits, forum in noxrepo.org)
!  Documentation; Wiki, comments on source files
21
Src.: noxrepo.org/pox (NOX-Python: pypy)
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-2. POX – (2)
v Example
!  pox/forwarding/l2_learning.py
22
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-2. POX – (3)
v User interfaces (needs poxdesk)
! https://github.com/MurphyMc/poxdesk/
23
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-3. Ryu – (1)
v Overview
!  Completely written in Python
!  Apache 2.0 License
!  Supports various OpenFlow versions
•  1.0, 1.2, 1.3, 1.4
!  No official graphical user interfaces
•  Provided by another repo from Yamada Hideki
!  Documentation
•  Official Wiki: https://github.com/osrg/ryu/wiki
•  Some presentations  a book (English  Japanese)
!  Active maintenance
!  Some sample apps
24
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-3. Ryu – (2)
v Example
!  ryu/ryu/app/simple_switch.py (Python, partial)
25
simple_switch_13.py
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-4. MUL – (1)
v Overview – (1)
!  Multi-threaded C code using pthread  libevent
!  GNU GPL v2 license
!  Supported target system: Linux
!  No official graphical user interfaces
!  Documentation: Wiki  Blog
•  Wiki: http://sourceforge.net/p/mul/wiki/Home/
•  Blog: http://kulcloud.wordpress.com/
– (Korean: kulcloudkr.wordpress.com)
!  (Relatively) a few default applications
•  Cli, fabric, l2switch
26
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-4. MUL – (2)
v Overview – (2)
!  Less # of commits
•  Total 77 commits (last: Dec 24, 2013)
!  Some global interests
•  Described in global homepages
– http://www.sdncentral.com/projects/mul-sdn-controller/
•  Referenced on several international papers
– E.g., A. Shalimov et al, “Advanced study of SDN/OpenFlow
controllers”, CCC-SECR’ 13, 2013.
27
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-4. MUL – (3)
v Example
!  application/l2switch/l2switch.c (C, partial)
28
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
II-4. MUL – (4)
v Execution
29
(terminal)
(OpenvSwitch)
1.  Beacon
2.  Floodlight
3.  OpenIRIS
4.  Opendaylight
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-1. Beacon – (1)
v Overview
!  Java-based OpenFlow controller using java.nio
(channels  buffers)
!  Supports OpenFlow 1.0
!  BSD License (as of version 1.0.4)
•  Previously: GNU GPL v2 license with Stanford University
FOSS License Exception v1.0
!  Java projects can be open using Eclipse
!  Following good software design patterns using
Spring Framework  OSGi
!  Provides web-based user interfaces
!  Good Documentation: tutorial, video  wiki
!  (Relatively) a few default applications
•  Hub, learningswitch, routing, topology (discovery)
31
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-1. Beacon – (2)
v Example
! net.beaconcontroller.learningswitch (Java, partial)
32
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-1. Beacon – (3)
v Development environment using Eclipse
33
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-1. Beacon – (4)
v Web-based user interfaces
34
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-2. Floodlight – (1)
v Overview
!  Java-based Open Source OpenFlow controller
made by Big Switch Networks
!  Supports OpenFlow 1.0
!  Apache License
!  Using Netty for network IO (ChannelBuffer, but
processes with a single thread)
!  Java projects can be open using Eclipse
!  Build environment: Apache ant
!  Provides web-based user interfaces
!  Well Documented: tutorial, javadoc, …
!  Has active community, but no major version up
currently
35
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-2. Floodlight – (2)
v Example
! Main.java.net.floodlightcontroller.learningswitch
(Java, partial)
36
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-2. Floodlight – (3)
v Web-based user interfaces
37
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-3. OpenIRIS – (1)
v Overview
!  Java-based Open Source OpenFlow
controller made by ETRI, Korea
!  Supports OpenFlow 1.0  1.3
!  Apache License
!  Using Java.nio (channels  buffers) with Thread
programming model
!  Java projects can be open using Eclipse
!  Build environment: Apache ant
!  Provides web-based user interfaces
!  Controller DB can be stored to Database (MongoDB)
!  Good Documentation in English: tutorial, javadoc, …
38
Src.: bjlee72, ETRI
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-3. OpenIRIS – (2)
v Example
! etri.sdn.controller.app.basic.BasicOFController
(Java, Partial)
39
Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.
III-3. OpenIRIS – (3)
v Web-based user interfaces
40

한국통신학회 워크샵: SDN/NFV for Secure Services - Understanding Open Source SDN Controllers

  • 1.
    최영락 (Ian Choi) Manager/ NAIM Networks ian@naimnetworks.com Mar 27, 2014
  • 2.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. 2 Table of Contents Open Source & SDN Controllers Open Source SDN Controllers – C & Python Open Source SDN Controllers – Java Comments on SDN Controllers I II III IV
  • 4.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. Open Source Environment 4 SDN Controllers SDN Related Open Sources Enabling Specification / Organizations
  • 5.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. Why Open Source with Community? 5 Open Source At A Glance !  600,000+ projects !  100+ Billion lines of code !  10 Million person-years of work SDN innovation will come from open source like !  40% of cloud innovation !  15% of mobile enterprises !  19% of mobile apps v  Free software tools and platforms accessible to all v  Support from passionate SDN experts v  Freedom to use, redistribute and modify without IP infringement Empowered community and continuous improvement Huge creative and diverse potential for unprecedented scale Src.: ON.LAB
  • 6.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. Unlocking Network Potential 6 Traditional Networking !  Control plane embedded into the box !  Closed proprietary with no open interface !  A big barrier to innovation The Promise of SDN !  Separation of forwarding and control planes !  Open and vendor agnostic interface (e.g. OpenFlow) !  Well defined control plane abstractions to enable rapid innovation Need to create new tools Use them and modify them freely to experiment new possibilities Exchange ideas and experience Src.: ON.LAB
  • 7.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. SDN Controller Overview – (1) v Applications for Network Devices 7 Network Device Software ASIC TCAM TCAM TCAM TCAM TCAM Low-Level ASIC Interface TCAM TCAM Operating System (OS) App App App App App App
  • 8.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. SDN Controller Overview – (2) v Separation of Applications 8 Controller (Openflow Controller / SDN Controller) Network Device Software ASIC TCA M TCA M TCA M TCA M TCA M Low-Level ASIC Interface TCA M TCA M Operating System (OS) App App App App App App Network Device Software ASIC TCA M TCA M TCA M TCA M TCA M Low-Level ASIC Interface TCA M TCA M Operating System (OS) App App App App App App Network Device Software ASIC TCA M TCA M TCA M TCA M TCA M Low-Level ASIC Interface TCA M TCA M Operating System (OS) App App App App App App App App App App App App Operating System (OS)
  • 9.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. SDN Controller Overview – (3) v The All-Seeing Eye for Almighty 9 Network Device Software ASIC TCAM TCAM TCAM TCAM TCAM Low-Level ASIC Interface TCAM TCAM SDN Controller Network Device Software ASIC TCAM TCAM TCAM TCAM TCAM Low-Level ASIC Interface TCAM TCAM Network Device Software ASIC TCAM TCAM TCAM TCAM TCAM Low-Level ASIC Interface TCAM TCAM Flow Flow Flow App App App App App App Operating
  • 10.
  • 11.
  • 12.
      Southbound •  OpenFlow •  NetConf • SNMP •  Node Aware Northbound •  Code Base Automation •  Controls vBRAS, vCDN, vADC Northbound Southbound Agent Agent Agent
  • 13.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. Open Source + SDN Controllers 10 Vendors’ perspective Source : HP Technical white paper Need to create new tools Use them and modify them freely to experiment new possibilities Exchange ideas and experience Open sources’ perspective v API is an important part to compose SDN architecture with controllers and elements.
  • 14.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. I. Open Source SDN Controllers v Many Open Source SDN controllers! 11 SDN Controller Project Organization(s) Memo Beacon Stanford University Beacon is a fast, cross-platform, modular, Java-based controller that supports both event-based and threaded operation. FloodLight Big Switch Networks The Floodlight controller is an enterprise-class, Apache-licensed, Java-based OpenFlow Controller. It was forked from the Beacon controller, originally developed by David Erickson, and now is supported by a community of developers including a… FlowER Travelping GmbH FlowER is an open-source Erlang based OpenFlow controller. Its purpose is to provide a simplified platform for writing network control software in Erlang. Its still under development but Travelping, FlowER’s creator, is already using it in its… OpenIRIS ETRI (Korea) OpenIRIS (pronounced ai-ri-s) is the open source version of IRIS, a recursive SDN OpenFlow Controller created by IRIS Research Team in ETRI, Korea. Jaxon University of Tsukuba Jaxon is a Java-based OpenFlow Controller that provides a thin interface to NOX to bridge Java applications and the NOX controller. Mul SDN Controller Kulcloud (Korea) MūL, is an OpenFlow (SDN) controller. It has a C based multi-threaded infrastructure at its core. It supports a multi-level north bound interface for hooking up applications. NOX ICSI NOX was the first OpenFlow controller. It has been the basis for many and various research projects in the early exploration of the SDN space. OpenContrail Juniper Networks OpenContrail is an Apache 2.0-licensed project that is built using standards-based protocols and provides all the necessary components for network virtualization–SDN controller, virtual router, analytics engine, and published northbound APIs. OpenDaylight Linux Foundation The adoption of new technologies and pursuit of programmable networks has the potential to significantly improve levels of functionality, flexibility and adaptability of mainstream datacenter architectures. To leverage this abstraction to its fullest POX ICSI POX is a Python-only version of NOX that provides controller functionality within a rapid prototyping environment. Ryu Network Operation system NTT Communications Ryu is a network OS that integrates with OpenStack and supports OpenFlow. It provides a logically centralized controller and well-defined API that make it easy for operators to create new network management and control applications. Trema NEC An Open Source modular framework for developing OpenFlow controllers in Ruby/C. …
  • 15.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. [Java]
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-1. NOX – (1) v Two Versions of NOX !  NOX-classic •  Original NOX (now, officially deprecated) – https://github.com/noxrepo/nox-classic •  C++-based SDN controller, but applications can be developed using Python •  Provides graphical user interfaces !  NOX •  Separated from NOX-classic in 2012 – https://github.com/noxrepo/nox •  Only supports C++ for application development •  Fewer default applications than NOX-classic – But, much faster and has a much cleaner source base •  No graphical user interfaces 14
  • 25.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-1. NOX – (2) v Original NOX (a.k.a., nox-classic) !  Multi-thread C++-based controller !  GNU GPL v3 license !  Written on top of Boost library •  Provides fast, asynchronous IO (Boost.Asio) !  Supported target system: Linux !  SDN applications can be developed with Python !  Documentation: doxygen, # of tutorials 15 Sample application written in C++ Sample application written in C++ and Python using SWIG library Sample application written in Python SWIG  (Simplified Wrapper and Interface Generator): an open source software tool used to connect computer programs or libraries written in  C or C++ with scripting languages such as Lua, Perl, PHP, Python, …
  • 26.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-1. NOX – (3) v Original NOX (a.k.a., nox-classic) !  Example: Switch application (C++, partial) 16
  • 27.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-1. NOX – (4) v Original NOX (a.k.a., nox-classic) !  Example: Switch application (Python, partial) 17
  • 28.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-1. NOX – (5) v Original NOX (a.k.a., nox-classic) !  Graphical user interfaces 18
  • 29.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-1. NOX – (6) 19 v NOX (not nox-classic) !  Enhanced performance and better source readability/maintenance structure !  Less active open source community than POX •  Only 28 source commits for the recent 2 years !  Documentation: poor (only doxigen)
  • 30.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-1. NOX – (7) 20 v NOX (not nox-classic) !  Example: Switch application (C++, partial) The use of Boost library (cf. nox-classic: libc++) The same structure as nox-classic python code (better readability)
  • 31.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-2. POX – (1) v Overview !  A platform for rapid development and prototyping of network control using Python !  Supports all the targets (Linux, Mac, Windows) !  Still active (# of commits, forum in noxrepo.org) !  Documentation; Wiki, comments on source files 21 Src.: noxrepo.org/pox (NOX-Python: pypy)
  • 32.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-2. POX – (2) v Example !  pox/forwarding/l2_learning.py 22
  • 33.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-2. POX – (3) v User interfaces (needs poxdesk) ! https://github.com/MurphyMc/poxdesk/ 23
  • 34.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-3. Ryu – (1) v Overview !  Completely written in Python !  Apache 2.0 License !  Supports various OpenFlow versions •  1.0, 1.2, 1.3, 1.4 !  No official graphical user interfaces •  Provided by another repo from Yamada Hideki !  Documentation •  Official Wiki: https://github.com/osrg/ryu/wiki •  Some presentations a book (English Japanese) !  Active maintenance !  Some sample apps 24
  • 35.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-3. Ryu – (2) v Example !  ryu/ryu/app/simple_switch.py (Python, partial) 25 simple_switch_13.py
  • 36.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-4. MUL – (1) v Overview – (1) !  Multi-threaded C code using pthread libevent !  GNU GPL v2 license !  Supported target system: Linux !  No official graphical user interfaces !  Documentation: Wiki Blog •  Wiki: http://sourceforge.net/p/mul/wiki/Home/ •  Blog: http://kulcloud.wordpress.com/ – (Korean: kulcloudkr.wordpress.com) !  (Relatively) a few default applications •  Cli, fabric, l2switch 26
  • 37.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-4. MUL – (2) v Overview – (2) !  Less # of commits •  Total 77 commits (last: Dec 24, 2013) !  Some global interests •  Described in global homepages – http://www.sdncentral.com/projects/mul-sdn-controller/ •  Referenced on several international papers – E.g., A. Shalimov et al, “Advanced study of SDN/OpenFlow controllers”, CCC-SECR’ 13, 2013. 27
  • 38.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-4. MUL – (3) v Example !  application/l2switch/l2switch.c (C, partial) 28
  • 39.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. II-4. MUL – (4) v Execution 29 (terminal) (OpenvSwitch)
  • 40.
    1.  Beacon 2.  Floodlight 3. OpenIRIS 4.  Opendaylight
  • 41.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-1. Beacon – (1) v Overview !  Java-based OpenFlow controller using java.nio (channels buffers) !  Supports OpenFlow 1.0 !  BSD License (as of version 1.0.4) •  Previously: GNU GPL v2 license with Stanford University FOSS License Exception v1.0 !  Java projects can be open using Eclipse !  Following good software design patterns using Spring Framework OSGi !  Provides web-based user interfaces !  Good Documentation: tutorial, video wiki !  (Relatively) a few default applications •  Hub, learningswitch, routing, topology (discovery) 31
  • 42.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-1. Beacon – (2) v Example ! net.beaconcontroller.learningswitch (Java, partial) 32
  • 43.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-1. Beacon – (3) v Development environment using Eclipse 33
  • 44.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-1. Beacon – (4) v Web-based user interfaces 34
  • 45.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-2. Floodlight – (1) v Overview !  Java-based Open Source OpenFlow controller made by Big Switch Networks !  Supports OpenFlow 1.0 !  Apache License !  Using Netty for network IO (ChannelBuffer, but processes with a single thread) !  Java projects can be open using Eclipse !  Build environment: Apache ant !  Provides web-based user interfaces !  Well Documented: tutorial, javadoc, … !  Has active community, but no major version up currently 35
  • 46.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-2. Floodlight – (2) v Example ! Main.java.net.floodlightcontroller.learningswitch (Java, partial) 36
  • 47.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-2. Floodlight – (3) v Web-based user interfaces 37
  • 48.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-3. OpenIRIS – (1) v Overview !  Java-based Open Source OpenFlow controller made by ETRI, Korea !  Supports OpenFlow 1.0 1.3 !  Apache License !  Using Java.nio (channels buffers) with Thread programming model !  Java projects can be open using Eclipse !  Build environment: Apache ant !  Provides web-based user interfaces !  Controller DB can be stored to Database (MongoDB) !  Good Documentation in English: tutorial, javadoc, … 38 Src.: bjlee72, ETRI
  • 49.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-3. OpenIRIS – (2) v Example ! etri.sdn.controller.app.basic.BasicOFController (Java, Partial) 39
  • 50.
    Copyright ⓒ 2014by NAIM Networks, Inc. All rights reserved. III-3. OpenIRIS – (3) v Web-based user interfaces 40