Software Defined Networking (SDN)
Overview Traditional Switches Approaches and Issues Software Defined Networking Overview OpenFlow Controller/Network Operating Systems
Traditional Switch Configuration Switch 1 Switch 2 Switch n Fn1 Fn n Fn1 Fn n Fn1 Fn n OS OS OS Forwarding ASIC Forwarding ASIC Communication Links Forwarding ASIC
Traditions Switch - Issues Closed network control functions (eg, BGP, NAT, OSPF, QoS) Implementation specific to vendor device Difficult to debug Limited control of routing/switching Poor support for collaboration and research Difficult to research new methods or interoperate through different vendors Generally slow innovation
SDN Properties SDN separates the control plane and data plane Control plane decides how traffic is processed Abstracts control from the implementation within the switch Control done across network, not just per switch Enables centralized control Data Plane forwards traffic based on control plane Single control plane can control multiple data planes Key components Controller Network Operating System Example: NOX Control API/Protocol Example: OpenFlow
SDN Approach Control Fn1 Fn n Network OS OpenFlow API OpenFlow API OpenFlow API OS Data Plane (Forwarding) OS Data Plane (Forwarding) Communication Links OS Data Plane (Forwarding)
SDN Architecture Source: https://wwwopennetworkingorg/images/stories/downloads/sdn-resources/white-papers/wp-sdn-newnormpdf
OpenFlow OpenFlow API between control plane and data plane Standardization allows interoperability across many switch vendors Components: OpenFlow Protocol Manipulate switch Transfer packets between switch/controller Flow Table Controls flow of traffic across switch Secure Channel Communication between controller and switch Source: OpenFlow: Enabling Innovation in Campus Networks
OpenFlow Messages Communication TCP 6653 w/ TLS Message Types Controller-to-switch controller issued to manage or inspect switch Functions Add, Update, Delete flow entries Proactively and reactively Asynchronous switch issue to provide switch with updated state information Symmetric Error and diagnostic messages
Flow Table OpenFlow switches contain some number of flow tables Determine how data plane handles traffic Table entries contain: Matching fields Ethernet, IP, TCP header fields Actions Forward packet to port Encapsulate and forward packet to controller Determine where packet should be added to FlowTable Drop packet Statistics
Flow Tables Example Source: https://wwwopennetworkingorg/images/stories/downloads/sdn-resources/white-papers/wp-sdn-newnormpdf
NOX Network operating system Operate as controller for SDN Proposed in NOX: Toward an Operating System for Networks Based on OpenFlow API Abstractions Create programs as high level abstractions for the development of control functions Similar to how traditional OS abstracts hardware Abstractions for: Host tracking Routing Topology Network applications (eg, routing, access control, load-balancing) run as applications Event handling Switch join/leave, packet received, statistics updated Other related network operating systems POX, SNAC, Beacon
NOX Example - Authentication # On user authentication, statically setup VLAN tagging # rules at the user s first hop switch def setup_user_vlan(dp, user, port, host): vlanid = user_to_vlan_function(user) # For packets from the user, add a VLAN tag attr_out[in_port] = port attr_out[dl_src] = noxreverse_resolve(host)mac action_out = [(noxoutput, (0, noxflood)), (noxadd_vlan, (vlanid))] install_datapath_flow(dp, attr_out, action_out) # For packets to the user with the VLAN tag, remove it attr_in[dl_dst] = noxreverse_resolve(host)mac attr_in[dl_vlan] = vlanid action_in = [(noxoutput, (0, noxflood)), (noxdel_vlan)] install_datapath_flow(dp, attr_in, action_in) noxregister_for_user_authentication(setup_user_vlan) Source: NOX: Toward an Operating System for Networks
SDN - Example Applications Network Configuration & Management Centralized and vendor neutral http://informtmforumorg/features-and-analysis/featured/2014/08/google-applies-sdnconfiguration-management/ Debugging Virtualization/Cloud Computing Server topology changes, migrations https://wwwopennetworkingorg/images/stories/downloads/sdnresources/ieee-papers/sdn-standardizationpdf Load Balancing Utilizing controller with central knowledge of network state Access control and user authentication
Mininet Mininet open source network emulation http://mininetorg/ Creates virtual networks on laptop/pc Command line/python API for configuration Rapid prototyping of SDN Simulate hosts, switches routers Built in Open vswitch and OpenFlow switches Great for experimenting with SDN, OpenFlow