89
Oliver Michel, Matthew Monaco, Eric Keller Invited Talk University of Illinois at Urbana-Champaign April 11th, 2014. Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Applying Operating System Principles to SDN Controller Design

Oliver Michel, Matthew Monaco, Eric Keller

Invited Talk University of Illinois at Urbana-Champaign April 11th, 2014.

Applying Operating System Principles to SDN Controller Design

Page 2: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 2

“What we clearly need is an “operating system” for networks, one that provides a uniform and centralized programmatic interface to the entire network.”

[Gude et.al. ‘08]

Page 3: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 3

Extend an existing operating system and its user space software ecosystem

in order to serve as a practical network operating system

Page 4: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Distributions4

Page 5: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Software Projects5

Page 6: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 6

Page 7: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 6

$

Page 8: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 6

$

$ grep$ find$ sed$ sort$ cat

Page 9: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 7

$ cd /var/log$ grep that_annoying_problem syslog

Page 10: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 7

$ cd /var/log$ grep that_annoying_problem syslog

$ ps -A | sort -k3nr | head -10$ kill -TERM 12345

Page 11: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 8

#!/bin/bash!procs=( ps -A | sort -k3nr | head -$1 | tr -s ’ ’ \ | cut -d’ ’ -f9)!for p in "${procs[@]}"; do printf "%d is misbehaving\n" "$p" >&2 kill -TERM "$p" sleep 3 kill -KILL "$p"done

Page 12: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 9

Controller Framework

Controller App Routing Firewall Virtualizer

Page 13: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Page 14: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Page 15: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Page 16: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Page 17: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Page 18: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Page 19: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Trema

Page 20: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Page 21: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Page 22: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Page 23: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Java

Page 24: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Java

Java

Page 25: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Java

Java

Ruby/C

Page 26: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 11

Page 27: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

yanc

12

yet another network controller

Page 28: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

yanc

12

yet another network controller

/net��� hosts��� switches� ��� sw1� ��� sw2��� views ��� http ��� management-net ��� hosts ��� switches ��� views

Page 29: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

yanc

12

yet another network controller

/net��� hosts��� switches� ��� sw1� ��� sw2��� views ��� http ��� management-net ��� hosts ��� switches ��� views

App 1 App 2

Page 30: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

yanc

12

yet another network controller

/net��� hosts��� switches� ��� sw1� ��� sw2��� views ��� http ��� management-net ��� hosts ��� switches ��� views

Driver

App 1 App 2

Page 31: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 13

Why a filesystem?

Page 32: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 14

Linux

Filesystem

Logically Distinct Applications

Page 33: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Independent Development15

# apt-get install yanc-learning-switch# apt-get install yanc-router

$ git clone [email protected]/yanc/yanc-fw$ cd yanc-fw$ make# make install

Page 34: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Any Programming Language16

Linux

Filesystem

C++ C++bash Python

Page 35: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Yanc Components

‣The Yanc Filesystem

‣Hardware Decoupling

‣Operating System Integration

‣Dynamic Application Composition

‣Distribution

17

Page 36: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem18

Page 37: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem19

Page 38: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem20

Page 39: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem21

Page 40: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem22

Page 41: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem23

$ echo 1 > port_1.port_down

$ mkdir -p switches/00:01:02:0a:0b:0c/flows/my_flow

Page 42: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem24

$ find /net -name tp_dst -exec grep 22 {} +

#!/bin/bashflowdir=/net/switches/"$1"/flows/"$2"mkdir "$flowdir"echo ff:ff:ff:ff:ff:ff > "$flowdir"/match.dl_dstecho 0x0806 > "$flowdir"/match.dl_typeecho FLOOD > "$flowdir"/action.out

Page 43: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Hardware Decoupling and Middleboxes

‣Support for different physical devices and device classes

• Device Drivers

• Schema-based filesystem

25

Page 44: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Device Drivers26

Page 45: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Device Drivers26

ApplicationApplication

Application

Applications

Page 46: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Device Drivers26

ApplicationApplication

Application

Applications

/net/switch1/flow1/…

/net/firewall1/rule1/…

/net/ids/alerts/…

/net/firewall2/rule1/…

Filesystem

Page 47: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Device Drivers26

ApplicationApplication

Application

Applications

/net/switch1/flow1/…

/net/firewall1/rule1/…

/net/ids/alerts/…

/net/firewall2/rule1/…

Filesystem

Bro

iptables

Drivers

Page 48: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Device Drivers26

ApplicationApplication

Application

Applications

/net/switch1/flow1/…

/net/firewall1/rule1/…

/net/ids/alerts/…

/net/firewall2/rule1/…

Filesystem

Bro

iptables

Drivers

HP OF Switch

NEC OFSwitch

Linux Server

BroAppliance

CiscoASA 5505

CiscoASA 5510

Physical Boxes

Page 49: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Schema-based Filesystem27

Page 50: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Operating System Integration

‣ Integrate tightly with Linux

‣Use off-the-shelf technologies

‣Encourage active ecosystem

28

Page 51: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Operating System Integration29

What can we use from a traditional operating system?

Page 52: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Operating System Integration29

What can we use from a traditional operating system?

Page 53: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Operating System Integration

‣ Inotify

‣File Permissions and ACLs

‣Namespaces and Control Groups

‣Layered Filesystem

29

What can we use from a traditional operating system?

Page 54: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Application Composition

‣Today’s controllers show mostly monolithic design

‣Distinct applications must be composed

30

Page 55: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Composition in Yanc

‣Frenetic/Pyretic introduced Parallel/Sequential Composition

• per packet abstraction

• compiled into single application

‣Yanc controls read/writes to the network state

‣Yanc provides dynamic composition

31

Page 56: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Page 57: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router

Page 58: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router

Route Optimizer

Page 59: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router

Route Optimizer

Link Tapper

Page 60: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer

Link Tapper

Page 61: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Page 62: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Page 63: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Page 64: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Page 65: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Optimizing a flow33

Page 66: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Adding a Linktapper34

Page 67: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Distribution

‣Filesystem representation allows layering

• Distributed filesystem on top of yancfs ‣Yanc may run on multiple servers or even switches

35

Page 68: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Layered Filesystem36

Linux Linux Linux Linux

yancfs yancfs yancfs yancfs

Distributed Filesystem

Router Monitor Router Firewall local app

DedicatedSDN Controllers

SoftwareSwitch

End hostEnd host

SDN Switches

Page 69: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 70: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 71: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 72: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 73: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 74: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 75: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 76: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 77: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 78: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 79: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 80: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 81: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Page 82: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Prototype

‣Filesystem implemented using FUSE (C) ‣OpenFlow Driver (C++) ‣Applications (Python and Ruby)

• Topology Discovery

• Learning Switch

• Fast Router

• Route Optimizer

• Link Tapper ‣several Bash management scripts and static flow pusher

38

Page 83: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Conclusion

‣Defined a Universal Interface for Network Control

‣Allow Control Applications as Separate Processes

‣ Implemented Interface

‣Leveraging Existing OS Technologies

‣Built Functional Applications on top of Interface

39

Page 84: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 40

Matthew Monaco, Oliver Michel, and Eric Keller. Applying operating system principles to SDN controller design. In Proceedings of the Twelfth ACM Workshop on Hot Topics in

Networks (HotNets-XII). 2013.

Thank you!

Page 85: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design 41

Backup Slides

Page 86: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Programmability42

#!/usr/bin/env python3!def new_switch(id, n_tables=1): pass!def write_flow(switch, matches=[], actions=[]): pass

#ifndef _YANC_H_#define _YANC_H_!int new_switch(uint64_t, uint8_t);int write_flow(const char* path, match_t*, action_t*);!#endif/*_YANC_H_*/

Page 87: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Architecture43

Composer

Topology Discovery

Learning Switch Firewall …

driver driver

Linux

distributed fs

yanc file system

Page 88: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Performance44

Page 89: Applying Operating System Principles to SDN Controller Design

Applying Operating System Principles to SDN Controller Design

Shared Library45

shared memory

/run/yanc_db

libyanc.so

app app