한국통신학회 워크샵: sdn/nfv for secure services - understanding open source sdn...

50
최영락 (Ian Choi) Manager / NAIM Networks [email protected] Mar 27, 2014

Upload: ian-choi

Post on 07-May-2015

363 views

Category:

Technology


1 download

DESCRIPTION

Title: Understanding Open Source SDN Controllers Location: KICS Workshop - SDN/NFV for Secure Services

TRANSCRIPT

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

최영락 (Ian Choi)

Manager / NAIM Networks [email protected]

Mar 27, 2014

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

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

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

I. Open Source Environment

4

SDN Controllers

SDN Related Open Sources

Enabling Specification / Organizations

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

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

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

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

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

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

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

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

TCAM

TCAM

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

TCAM

TCAM

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

TCAM

TCAM

Operating System (OS)

App App App App App App

App App App App App App

Operating System (OS)

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

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

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

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.

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

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.

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

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)����������� ������������������  

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

1.  NOX 2.  POX 3.  Ryu 4.  MUL

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

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

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

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, …

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

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

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

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

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

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

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

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)

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

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)

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

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)

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

II-2. POX – (2)

v Example !  pox/forwarding/l2_learning.py

22

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

II-2. POX – (3)

v User interfaces (needs poxdesk) ! https://github.com/MurphyMc/poxdesk/

23

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

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

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

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

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

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

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

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

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

II-4. MUL – (3)

v Example !  application/l2switch/l2switch.c (C, partial)

28

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

II-4. MUL – (4)

v Execution

29

(terminal)

(OpenvSwitch)

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

1.  Beacon 2.  Floodlight 3.  OpenIRIS 4.  Opendaylight

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

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

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-1. Beacon – (2)

v Example ! net.beaconcontroller.learningswitch (Java, partial)

32

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-1. Beacon – (3)

v Development environment using Eclipse

33

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-1. Beacon – (4)

v Web-based user interfaces

34

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

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

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-2. Floodlight – (2)

v Example ! Main.java.net.floodlightcontroller.learningswitch

(Java, partial)

36

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-2. Floodlight – (3)

v Web-based user interfaces

37

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

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

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-3. OpenIRIS – (2)

v Example ! etri.sdn.controller.app.basic.BasicOFController

(Java, Partial)

39

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-3. OpenIRIS – (3)

v Web-based user interfaces

40

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-4. Opendaylight – (1)

v Overview !  Java-based Open Source controller (Hydrogen) !  Supports OpenFlow 1.0, 1.3, and other multiple

protocols (OVSDB, NetConf, LISP, …) !  Using java.nio for OpenFlow controller (channels

& buffers) !  Eclipse license v1.0 !  Following (rather complex) software design

patterns using OSGi !  Provides web-based user interfaces !  Good Documentation: architecture, basic usage

41

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-4. Opendaylight – (2)

v Architecture

42

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-4. Opendaylight – (3)

v Example ! SwitchHandler (Java, Partial)

•  Location: controller/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal

43

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

III-4. Opendaylight – (4)

v Web-based user interfaces

44

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

IV. Criteria for Open Source Controllers

v Many Criteria !  Interfaces (South bound, North bound)

•  Supported OpenFlow Version !  Well & Active Support (Documentation,

Community) !  Algorithm & Functionality (L2, L3, loop, failover, …) !  Easiness (GUI, Usage, Installation, Programming) !  Language Support (C/C++, Python, Java, …) !  Platform Support (Linux, Windows, …) !  3rd-party Application Support

•  REST API •  Integration to OpenStack Networking (Neutron)

!  Security

46

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

IV. Testing SDN Controllers

v WireShark ! http://www.wireshark.org

v Mininet ! http://mininet.org/

v Building with a real test bed !  SDN controllers can work on real hardware

switches (OpenFlow enabled switches)? !  Mix with OpenvSwitch & OpenFlow enabled

switches?

47

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

IV. Conclusion

v Various Open Source SDN controllers! v Need to choose a suitable Open Source SDN

controller based on your own criteria v Please actively participate in Open Source

activities. !  Questions: using groups or forums !  Commits (if possible)

48

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved.

Questions?

49

www.NAIMNetworks.com

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

Copyright ⓒ 2014 by NAIM Networks, Inc. All rights reserved. 50