Open Source Network:
Software-Defined Networking (SDN) and OpenFlow
Insop Song, Ericsson
LinuxCon North America, Aug. 2012, San Diego CA
Objectives
• Overview of OpenFlow
• Overview of Software Defined Networking
(SDN)
Disclaimer
• This presentation represents the view of the author and does not necessarily represent the view of Ericsson
• OpenFlow is an invention from network
researchers Stanford and UCB
Overview of network equipment
• Network equipment
– Layer 2 Ethernet switches, IP routers
Features
Forwarding H/W: ASICs/FPGAs or Merchant silicon chips Operating system
Feature Feature . . . Feature
Data plane
• Hardware packet forwarding path
– Line rate forward packets output ports – Adding tags, Modifying packets
– Drop packets
– Forward packets to CPU – Collect traffic statistics
– Programmed by control plane or manual configuration (management)
L2 table (MAC + Vlan) L3 table (IP) ACL, QoS Switch/Router
Packets in
Packet out
Packet out
Control plane
• Control plane
– Handling protocol packets at CPU – Track topology changes
– Handles protocol and routes
– Updates hardware L2/L3 forwarding tables & ACL
ASICs/FPGAs or Merchant silicon chips Protocol S/W
CPU
Control Packets in
1. Packet forward to CPU 2. Table config
Network configuration
• Distributed dynamic routing running on heterogeneous environment
• Protocol based distributed state management
– STP, OSPF, BGP
• Manual configuration
– Policies, SLA, VLAN
Router Router
Server
Server
Server Router
switch
switch
switch
Forwarding h/w OS
feature
Network equipment…
• Mastering complexity …
– No well defined API for control packet handling – No generalized API for data path state
– Tight vertical integration
– Complicated and lack of abstraction – Distributed state management is hard
– Lack of global and consistent view of network, hard to manage overall network
Solutions
• Generalize data plane
– Flexible flow table management – Decouple data and control
planes
– API for handling control packets
• Decouple distributed model from physical topology
– Take out the control logic from the network equipment
Flow table
Simple packet forwarding hardware
Flow table
Generalized API
Packet forwarding
hardware
Controller(s)
Packet forwarding
hardware
Packet forwarding
hardware
OpenFlow
• Started from academia as a way to test
experimental protocol on a real network
• Identify flexible common set of functions for flow table
• Provides open protocol to program flow table
through secure channel
Flow table
Simple packet forwarding hardware
Flow table
OpenFlow protocol SSL/TCP
OpenFlow Network Controller
OpenFlow
• Logically centralized controller
• Generalized data plane API using Flow table
Packet forwarding
hardware
Network OS
Packet forwarding
hardware
Packet forwarding
hardware
“If header == a, send to port 10”
“if header == b, modify header with c, and send to port 11”
“if header == ?, then send to controller”
Flow table(s) Flow
table(s)
Flow table(s)
Control program 1 Control program 2
OpenFlow
• Flow table(s)
Match Action Status
Port MacDst MacSrc typeEth Vlan Src IP Dst IP TCP srcport TCP dstport … Pop/Push tags
Decrement TTL Set fields
Apply QoS
Forward packets
counter
OpenFlow
• Example of Flow table
Src MAC Dst MAC Src IP Dst IP TCP sport … Action Count
* 10:1f:* * * * * Port 2 100
* * * 1.2.3.4 * * Port 3 200
* * * * 22 drop 300
00:20:.. 00:1f:.. 1.2.3.4 5.6.7.8 1234 Port4 400
* * * * * * Controller 500
OpenFlow Specification
Version Summary
1.0 Initial version
1.1 Multi-table pipeline processing, MPLS, QinQ
1.2 IPv6, Extensible Match (OXM) and additional extensibility
1.3 QoS and PBB additions
Decouple Data and Control planes
• Easier to implement new ideas
– Remove dependencies between vendor SDK
• Easier to test and maintain software
– Centralized programming and more abstraction
• Easier interoperability between vendors
– Using standard API (programing flow and receiving control packets)
• More powerful computing for control logic network management
– Network control could be off-loaded to servers
Software-Defined Networking
• Traditional network
• Closed box, closed API
• Distributed protocol
Packet forwarding
hardware
Network OS
Packet forwarding
hardware
Packet forwarding
hardware
Flow table(s) Flow
table(s)
Flow table(s) Feature Feature
Forwarding h/w OS
feature
Forwarding h/w OS
feature
Forwarding h/w OS
feature
• SDN
• Open standard API
• Logically centralized
Well-defined API
OpenFlow
Centralized controller
• Less system overhead on the network node
– Minimize protocol packets for distributed protocol
• Network topology
– Easier to have consistent global view of the network
• Management
– Easier to mange programmable network
SDN Use cases
• Data center
– SDN facilitates network virtualization – Google, Dell, Yahoo, Facefook, Amazon
• Campus
– Enable IT to apply consistent policies in wired and wireless network
– Stanford and many other universities
• Cloud
– Allows flexible network allocation
Academia and industry
• Close collaboration between university and industry
• Open Networking Foundation (ONF)
– Standard body by 70+ (growing)
• Many companies participating
– From large companies to startups
– From chip vendors to service integrators
– Google, Cisco, HP, NEC, Ericsson, IBM, Juniper – VMWare (Nicira), Big switch, and more
OpenFlow switches
• Current OpenFlow supporting switches
– Growing…, so check with your vendors – Juniper, HP, NEC, NetGear, Ciena, Pronto
• Many companies are prototyping OpenFlow switches
• Google made their own OpenFlow switches
OpenFlow network controllers
Lang License Original author note
OpenFlow reference
C OpenFlow License Stanford/Nicira Reference design
NOX C++ GPL Nicira Nox classic C++/Python
POX Python GPL http://www.noxrepo.
org
Nox Python version
Beacon Java GPL Stanford Run time modular, web
UI
Floodlight Java Apache Big switch Easy to build and set up
Trema Ruby, C GPL NEC Including emulator, test
framework
RouteFlow C Apache CPqD, Brazil OpenFlow with Quagga
stack
How to experiment
• Mininet
– Allows to create hundreds of nodes on a single PC – OpenFlow tutorial is based on Mininet
Open source
• Open vSwitch
– Software switch supports OpenFlow – Upstream from 3.3 kernel
• Various network controller are open source
• Open API
• Openness is one of the key reasons for
SDN/OpenFlow success
Questions?
• Scalability
– Is it scalable?
• Reliability
– High availability
• Security
– Security risk on the centralized controller(s)
• Interoperability
– Co-existing with existing equipment and neighboring domain
Summary
• OpenFlow
– Enabling generalized open API for configuring flow table
– Clean separation between data and forwarding planes
• SDN
– Allowing us to define the right abstractions – Network virtualization
– Very successful so far, more real changes to come..
– The future of networking?
References:
1. The Future of Networking, and the Past of Protocols : Scott Shenker
2. An attempt to motivate and clarify SDN : Scott Shenker 3. Making SDNs Work - Nick McKeown
4. Origins and Evolution of OpenFlow/SDN - Martin Casado 5. OpenFlow @ Google - Urs Hoelzle, Google
6. Opening Up Your Network to Cloud Innovation with SDN: Guido Appenzeller
7. Software Defined Networking is an Architecture Not a Protocol , David Meyer, Cisco
8. SDN and OpenFlow A Tutorial
9. OpenFlow Switch Specification 1.3
10. Software-Defined Networking: The New Norm for Networks: ONF White Paper