Upload
others
View
3
Download
0
Embed Size (px)
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 [email protected]/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