Sdr-Infocom Brazil 2009 v1-1
Sdr-Infocom Brazil 2009 v1-1
Sdr-Infocom Brazil 2009 v1-1
Networking
Nick McKeown
[email protected]
Part 1: Inside the box
Switch and Router Design
IP Address Lookup
& Classification
Crossbar
Scheduler
Router
Million of lines 5389 RFCs Barrier to entry
Software of source code
Control
Deployment
Idea Standardize
Wait 10 years
Open Source
Culture
It is up to us to make it happen.
Until we (someone) does, it remains ossified.
Application
OS
Computer Computer
x86 x86
(Computer) (Computer)
Windows Mac
or Linux or
(OS) OS Virtualization
x86 x86
(Computer) (Computer)
New function!
We need…
1. A clean separation between the substrate
and an open programming environment
2. A simple hardware substrate that
generalizes, subsumes and simplifies the
current substrate
3. Very few preconceived ideas about how
the substrate will be programmed
4. Strong isolation
Step 2: Cache decisions in minimal
flow-based datapath
“If header = x, send to port 4”
“If header = y, overwrite header with z, send to ports 5,6”
“If header = ?, send to me”
Flow
Table
Unicast
1.
Multicast
2.
Multipath
Load-balancing
3. Redundancy
Waypoints
Middleware
Intrusion detection
4. …
What is a flow? Types of action
Application flow Allow/deny flow
All http Route & re-route flow
Jim’s traffic Isolate flow
All packets to Canada Make flow private
… Remove flow
Packet-switching substrate
Ethernet IP TCP
DA, SA, etc DA, SA, etc DP, SP, etc Payload
Header
User-defined flowspace Payload
Flowspace: Simple example
Single flow All flows from A
All flows
between two
subnets
IP DA
A
IP SA
Flowspace: Generalization
Single flow
Set of flows
Field 1
Field 2
Field n
Properties of Flowspace
Backwards compatible
Current layers are a special case
No end points need to change
Easily implemented in hardware
e.g. TCAM flow-table in each switch
Strong isolation of flows
Simple geometric construction
Can prove which flows can/cannot
communicate
A substrate
Flow-based
Small number of actions for each flow
Plumbing: Forward to port(s)
Control: Forward to controller
Routing between flow-spaces: Rewrite
header
Bandwidth isolation: Min/max rate
External open API to flow-table
OpenFlow as a strawman
flow-based substrate
Our Approach
1. Define the substrate
OpenFlow is an open external API to a flow-table
Version 1.0
Defined to be easy to add to existing hardware
switches, routers, APs, …
Timeframe: Now
Version 2.0
OpenFlow-optimized hardware
General “flowspace”
Timeframe: 2011
Our Approach
2. Deploy
Deploy on college campuses
An OpenFlow Controller
Martin Scott
Casado Shenker
OpenFlow Basics
Ethernet Switch
Control Path (Software)
Flow 1. Rule
Action Statistics
(exact & wildcard)
Flow 2. Rule
Action Statistics
(exact & wildcard)
Flow 3. Rule
Action Statistics
(exact & wildcard)
Rule
Flow N. Default Action Statistics
(exact & wildcard)
Flow Table Entry
OpenFlow Protocol Version 1.0
* * 00:1f:.. * * * * * * * port6
Flow Switching
Switch MAC MAC Eth VLAN IP IP IP TCP TCP
Action
Port src dst type ID Src Dst Prot sport dport
Firewall
Switch MAC MAC Eth VLAN IP IP IP TCP TCP
Forward
Port src dst type ID Src Dst Prot sport dport
* * * * * * * * * 22 drop
Examples
Routing
OpenFlow
Protocol
OpenFlow OpenFlow
Rule Action Statistics Rule Action Statistics
Switch Switch
OpenFlowSwitch.org Peter
Usage examples
Peter’s code:
Static “VLANs”
His own new routing protocol: unicast, multicast, multipath, load-
balancing
Network access control
Home network manager
Mobility manager
Energy manager
Packet processor (in controller)
IPvPeter
Network measurement and visualization
…
Separate VLANs for Production
and Research Traffic
Controller
Research VLANs
Flow Table
Production VLANs
Normal L2/L3 Processing
Virtualize OpenFlow Switch
Controller A
OpenFlow
Protocol
OpenFlow
Protocol
OpenFlow OpenFlow
Switch Switch
Virtualizing OpenFlow
http
Multicast Load-balancer
Broadcast
OpenFlow
Protocol
OpenFlow OpenFlow
Switch
FlowVisor & Policy Control
OpenFlow
Protocol
OpenFlow OpenFlow
Switch Switch
App App App
App App App
Controller
Controller Controller
Controller
Windows
Windows Mac Controller Controller
Windows Linux Mac
Mac 1 2
11 22
(OS) Linux
Linux OS
(OS) OS
OS
(OS)
x86
OpenFlow
(Computer)
Other deployments
Internet2 (NetFPGA switches)
JGN2plus, Japan (NEC switches)
10-15 research groups have switches
OpenFlow Deployments
Plans in 2009-10
Campus deployments
Lab + production use
“Enterprise GENI” (NSF/GPO)
Backbone deployments
National research backbones
Research + Production use
How to get involved (1)
Visit http://OpenFlowSwitch.org
Experiment with reference switches
Linux soft switch
NetFPGA hardware switch
Explore with your network administrator/CIO
about trial production deployment
Look at prototype commercial hardware
How to get involved (2)
Experiment with controllers
Simple test controllers
NOX: http://NOXrepo.org
Run a class
Thank You!