Applying Operating System Principles to SDN Controller Design

Preview:

Citation preview

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 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]

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

Applying Operating System Principles to SDN Controller Design

Distributions4

Applying Operating System Principles to SDN Controller Design

Software Projects5

Applying Operating System Principles to SDN Controller Design 6

Applying Operating System Principles to SDN Controller Design 6

$

Applying Operating System Principles to SDN Controller Design 6

$

$ grep$ find$ sed$ sort$ cat

Applying Operating System Principles to SDN Controller Design 7

$ cd /var/log$ grep that_annoying_problem syslog

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

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

Applying Operating System Principles to SDN Controller Design 9

Controller Framework

Controller App Routing Firewall Virtualizer

Applying Operating System Principles to SDN Controller Design 10

Applying Operating System Principles to SDN Controller Design 10

Applying Operating System Principles to SDN Controller Design 10

Applying Operating System Principles to SDN Controller Design 10

Applying Operating System Principles to SDN Controller Design 10

Applying Operating System Principles to SDN Controller Design 10

Applying Operating System Principles to SDN Controller Design 10

Trema

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Java

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Java

Java

Applying Operating System Principles to SDN Controller Design 10

Trema

C++

Python

Python

Java

Java

Ruby/C

Applying Operating System Principles to SDN Controller Design 11

Applying Operating System Principles to SDN Controller Design

yanc

12

yet another network controller

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

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

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

Applying Operating System Principles to SDN Controller Design 13

Why a filesystem?

Applying Operating System Principles to SDN Controller Design 14

Linux

Filesystem

Logically Distinct Applications

Applying Operating System Principles to SDN Controller Design

Independent Development15

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

$ git clone git@github.com/yanc/yanc-fw$ cd yanc-fw$ make# make install

Applying Operating System Principles to SDN Controller Design

Any Programming Language16

Linux

Filesystem

C++ C++bash Python

Applying Operating System Principles to SDN Controller Design

Yanc Components

‣The Yanc Filesystem

‣Hardware Decoupling

‣Operating System Integration

‣Dynamic Application Composition

‣Distribution

17

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem18

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem19

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem20

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem21

Applying Operating System Principles to SDN Controller Design

The Yanc Filesystem22

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

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

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

Applying Operating System Principles to SDN Controller Design

Device Drivers26

Applying Operating System Principles to SDN Controller Design

Device Drivers26

ApplicationApplication

Application

Applications

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

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

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

Applying Operating System Principles to SDN Controller Design

Schema-based Filesystem27

Applying Operating System Principles to SDN Controller Design

Operating System Integration

‣ Integrate tightly with Linux

‣Use off-the-shelf technologies

‣Encourage active ecosystem

28

Applying Operating System Principles to SDN Controller Design

Operating System Integration29

What can we use from a traditional operating system?

Applying Operating System Principles to SDN Controller Design

Operating System Integration29

What can we use from a traditional operating system?

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?

Applying Operating System Principles to SDN Controller Design

Application Composition

‣Today’s controllers show mostly monolithic design

‣Distinct applications must be composed

30

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

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router

Route Optimizer

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router

Route Optimizer

Link Tapper

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer

Link Tapper

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Applying Operating System Principles to SDN Controller Design

Motivating Example32

Fast Router Route Optimizer Link Tapper

Applying Operating System Principles to SDN Controller Design

Optimizing a flow33

Applying Operating System Principles to SDN Controller Design

Adding a Linktapper34

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

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

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

Applying Operating System Principles to SDN Controller Design

Locking37

Controller A

ControllerB

ControllerC

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

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

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!

Applying Operating System Principles to SDN Controller Design 41

Backup Slides

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_*/

Applying Operating System Principles to SDN Controller Design

Architecture43

Composer

Topology Discovery

Learning Switch Firewall …

driver driver

Linux

distributed fs

yanc file system

Applying Operating System Principles to SDN Controller Design

Performance44

Applying Operating System Principles to SDN Controller Design

Shared Library45

shared memory

/run/yanc_db

libyanc.so

app app

Recommended