Professor Yashar Ganjali Department of Computer Science University of Toronto Some slides courtesy.

Slides:



Advertisements
Similar presentations
Resonance: Dynamic Access Control in Enterprise Networks Ankur Nayak, Alex Reimers, Nick Feamster, Russ Clark School of Computer Science Georgia Institute.
Advertisements

Incremental Update for a Compositional SDN Hypervisor Xin Jin Jennifer Rexford, David Walker.
SDN Applications Jennifer Rexford Princeton University.
Frenetic: A High-Level Language for OpenFlow Networks Nate Foster, Rob Harrison, Matthew L. Meola, Michael J. Freedman, Jennifer Rexford, David Walker.
Composing Software Defined Networks
Composing Software-Defined Networks Princeton*Cornell^ Chris Monsanto*, Joshua Reich* Nate Foster^, Jen Rexford*, David Walker*
Nanxi Kang Princeton University
Jennifer Rexford Princeton University
Modular SDN Programming w/ Pyretic
Slick: A control plane for middleboxes Bilal Anwer, Theophilus Benson, Dave Levin, Nick Feamster, Jennifer Rexford Supported by DARPA through the U.S.
Programming Abstractions for Software-Defined Networks Jennifer Rexford Princeton University.
Scalable Flow-Based Networking with DIFANE 1 Minlan Yu Princeton University Joint work with Mike Freedman, Jennifer Rexford and Jia Wang.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
David Walker Princeton University Joint work with Nate Foster, Michael J. Freedman, Rob Harrison, Christopher Monsanto, Mark Reitblatt, Jennifer Rexford,
Software-Defined Networking
Handout # 4: Scaling Controllers in SDN - HyperFlow
Enabling Innovation Inside the Network Jennifer Rexford Princeton University
Languages for Software-Defined Networks Nate Foster, Arjun Guha, Mark Reitblatt, and Alec Story, Cornell University Michael J. Freedman, Naga Praveen Katta,
OpenFlow Switch Limitations. Background: Current Applications Traffic Engineering application (performance) – Fine grained rules and short time scales.
Enabling Innovation Inside the Network Jennifer Rexford Princeton University
Composing Software Defined Networks Jennifer Rexford Princeton University With Joshua Reich, Chris Monsanto, Nate Foster, and.
Enabling Innovation Inside the Network Jennifer Rexford Princeton University
Frenetic: A Programming Language for Software Defined Networks Jennifer Rexford Princeton University Joint work with Nate.
Software-Defined Networks Jennifer Rexford Princeton University.
NOX an OpenFlow controller. Role of Controller in OpenFlow Environments Push forwarding logic to switches Give developers a high-level API to develop.
Parallel Programming Models Jihad El-Sana These slides are based on the book: Introduction to Parallel Computing, Blaise Barney, Lawrence Livermore National.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
Higher-Level Abstractions for Software-Defined Networks Jennifer Rexford Princeton University.
Languages for Software-Defined Networks Nate Foster, Michael J. Freedman, Arjun Guha, Rob Harrison, Naga Praveen Katta, Christopher Monsanto, Joshua Reich,
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Frenetic: Programming Software Defined Networks Jennifer Rexford Princeton University Joint with Nate Foster, David Walker,
Reasoning about Software Defined Networks Mooly Sagiv Tel Aviv University Thursday (Physics 105) Monday Schrieber.
Jennifer Rexford Fall 2014 (TTh 3:00-4:20 in CS 105) COS 561: Advanced Computer Networks TCP.
Copyright 2013 Open Networking User Group. All Rights Reserved Confidential Not For Distribution Programming Abstractions for Software-Defined Networks.
Programming Abstractions for Software-Defined Networks Jennifer Rexford Princeton University
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Programming Languages for Software Defined Networks Jennifer Rexford and David Walker Princeton University Joint work with the.
CSC480 Software Engineering Lecture 10 September 25, 2002.
High-Level Abstractions for Programming Software Defined Networks Joint with Nate Foster, David Walker, Arjun Guha, Rob Harrison, Chris Monsanto, Joshua.
SDN Management Layer DESIGN REQUIREMENTS AND FUTURE DIRECTION NO OF SLIDES : 26 1.
Gedae, Inc. Gedae: Auto Coding to a Virtual Machine Authors: William I. Lundgren, Kerry B. Barnes, James W. Steed HPEC 2004.
Programming Abstractions for Software-Defined Networks Jennifer Rexford Princeton University.
Enabling Innovation Inside the Network Joint with Nate Foster, David Walker, Rob Harrison, Chris Monsanto, Cole Schlesinger, Mike Freedman, Mark Reitblatt,
Enabling Innovation Inside the Network Jennifer Rexford Princeton University
Pyretic Programming.
Jennifer Rexford Princeton University MW 11:00am-12:20pm SDN Programming Languages COS 597E: Software Defined Networking.
Enabling Innovation Inside the Network Jennifer Rexford Princeton University
Jennifer Rexford Princeton University MW 11:00am-12:20pm Data-Plane Verification COS 597E: Software Defined Networking.
Jennifer Rexford Princeton University MW 11:00am-12:20pm Testing and Debugging COS 597E: Software Defined Networking.
Programming Abstractions & Languages for SDN: Frenetic & Pyretic.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Software Defined Networking BY RAVI NAMBOORI. Overview  Origins of SDN.  What is SDN ?  Original Definition of SDN.  What = Why We need SDN ?  Conclusion.
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
Programming SDN 1 Problems with programming with POX.
SDN challenges Deployment challenges
Programming SDN Newer proposals Frenetic (ICFP’11) Maple (SIGCOMM’13)
Jennifer Rexford Princeton University
Martin Casado, Nate Foster, and Arjun Guha CACM, October 2014
Part 3 Design What does design mean in different fields?
Programming Abstractions & Languages for SDN: Frenetic & Pyretic
Programming the Networks of the Future
Programmable Networks
Northbound API Dan Shmidt | January 2017
Software Defined Networking (SDN)
Enabling Innovation Inside the Network
Programmable Networks
Frenetic: Programming Software Defined Networks
OpenSec:Policy-Based Security Using Software-Defined Networking
Control-Data Plane Separation
Presentation transcript:

Professor Yashar Ganjali Department of Computer Science University of Toronto Some slides courtesy of J. Rexford (Princeton), N. Foster (Cornell) and N. Feamster (Georgia Tech), all used with permission.

Announcements Final project proposal 2 pages Due: Fri. Oct. 3 rd (5PM) In class presentations Booked for 4 weeks (week 6) me if you want to be next CSC Software-Defined Networking2University of Toronto – Fall 2014

Programming SDNs The Good Network-wide visibility Direct control over the switches Simple data-plane abstraction The Bad Low-level programming interface Functionality tied to hardware Explicit resource control The Ugly Non-modular, non-compositional Challenging distributed programming Images by Billy Perkins CSC Software-Defined NetworkingUniversity of Toronto – Fall 20143

Programming OpenFlow is Not Easy OpenFlow and NOX now make it possible to implement exciting new network services Unfortunately, they do not make it easy. Combining different applications is not straightforward OpenFlow provides a very low level abstraction We have a two-tier architecture Network of switches is susceptible to race conditions CSC Software-Defined Networking4University of Toronto – Fall 2014

Programming OpenFlow is Not Easy OpenFlow and NOX now make it possible to implement exciting new network services Unfortunately, they do not make it easy. Combining different applications is not straightforward OpenFlow provides a very low level abstraction We have a two-tier architecture Network of switches is susceptible to race conditions CSC Software-Defined Networking5University of Toronto – Fall 2014

Problem 1: Anti-Modularity Combining different applications is challenging Example: monitor + route + firewall + load balancing How these applications will work together? How are messages from switches delivered to these applications How are messages from these apps aggregated to be sent to switches? Do OpenFlow and NOX provide a way for each app to perform its job without impacting other apps? Question: How can we combine these applications? CSC Software-Defined Networking6University of Toronto – Fall 2014

Combining Many Networking Tasks CSC Software-Defined Networking7University of Toronto – Fall 2014 Controller Platform Monolithic application Hard to program, test, debug, reuse, port, …

Modular Controller Applications CSC Software-Defined Networking8University of Toronto – Fall 2014 Easier to program, test, and debug Greater reusability and portability A module for each task Controller Platform

Beyond Multi-Tenancy CSC Software-Defined Networking9University of Toronto – Fall Each module controls a different portion of the traffic Relatively easy to partition rule space, link bandwidth, and network events across modules Controller Platform

Modules Affect the Same Traffic CSC Software-Defined Networking10University of Toronto – Fall 2014 How to combine modules into a complete application? Each module partially specifies the handling of the traffic Controller Platform

Consider a simple network Anti-Modularity Example CSC Software-Defined Networking11University of Toronto – Fall 2014 Want to add two applications Simple repeater Port 1  Port 2 Port 2  Port 1 Web monitor Packet and byte counts Incoming web traffic

Events: switch_join(switch): triggered when switch joins the network stats_in(switch, xid, pattern, packets, bytes ), triggered when switch returns the packets and bytes counters in response to a request for statistics about rules contained in pattern Commands: install(switch, pattern, priority, timeout, actions): installs a rule in the flow table of switch query_stats(switch, pattern): issues a request for statistics from all rules contained in pattern on switch NOX Events and Commands CSC Software-Defined Networking12University of Toronto – Fall 2014

Anti-Modularity Example CSC Software-Defined Networking13University of Toronto – Fall 2014 Overlapping rules - repeater first: no counting web traffic - Monitor first: no repeating

Anti-Modularity Example CSC Software-Defined Networking14University of Toronto – Fall 2014

Programming OpenFlow is Not Easy OpenFlow and NOX now make it possible to implement exciting new network services Unfortunately, they do not make it easy. Combining different applications is not straightforward OpenFlow provides a very low level abstraction We have a two-tier architecture Network of switches is susceptible to race conditions CSC Software-Defined Networking15University of Toronto – Fall 2014

Problem 2: Low-Level API OpenFlow is a low level programming interface Derived from the features of the switch hardware Rather than ease of use Programmer must describe low-level details that do not affect the overall behavior of the program Example: to implement simple set difference we require Multiple rules Priorities All need to be managed by the programmer Focusing on the big picture not easy CSC Software-Defined Networking16University of Toronto – Fall 2014

Low-Level API Example Extend the repeater and monitoring Monitor all incoming web traffic except traffic destined to (on internal network) We need to express a logical “difference” of patterns OpenFlow can only express positive constraints CSC Software-Defined Networking17University of Toronto – Fall 2014

Programming OpenFlow is Not Easy OpenFlow and NOX now make it possible to implement exciting new network services Unfortunately, they do not make it easy. Combining different applications is not straightforward OpenFlow provides a very low level abstraction We have a two-tier architecture Network of switches is susceptible to race conditions CSC Software-Defined Networking18University of Toronto – Fall 2014

Problem 3: Two-Tiered System Control program manages networks by Installing/uninstalling switch-level rules Programmer needs to specify communication patterns between controller and switches Deal with tricky concurrency issues Controller does not have full visibility Sees only packets that the switches do not know how to handle. Previously installed rules Reduce the load on the controller Make it difficult to reason Detour: proactive vs. reactive rule installation CSC Software-Defined Networking19University of Toronto – Fall 2014

Two-Tiered Programming Example Extending the original repeater Monitor the total amount of incoming traffic By destination host Cannot install all of the rules we need in advance Address of each host is unknown a priori The controller must dynamically install rules for the packets seen at run time CSC Software-Defined Networking20University of Toronto – Fall 2014

Two-Tiered Programming Example Two programs depended on each other Complex concurrency issues can arise Reading/understanding the code is difficult Details are sources of significant distraction CSC Software-Defined Networking21University of Toronto – Fall 2014

Programming OpenFlow is Not Easy OpenFlow and NOX now make it possible to implement exciting new network services Unfortunately, they do not make it easy. Combining different applications is not straightforward OpenFlow provides a very low level abstraction We have a two-tier architecture Network of switches is susceptible to race conditions CSC Software-Defined Networking22University of Toronto – Fall 2014

Problem 4: Race Conditions Race conditions can cause complications We have a distributed system Of switches And controllers Example 1: rule install delay One new flow Multiple packets CSC Software-Defined Networking23University of Toronto – Fall 2014

Race Conditions Example Example 2: firewall application Running on multiple switches Allow A initiate a flow to B Two way But, block flows started by B CSC Software-Defined Networking24University of Toronto – Fall 2014

Race Conditions Example Example 2: firewall application Running on multiple switches Allow A initiate a flow to B Two way But, block flows started by B CSC Software-Defined Networking25University of Toronto – Fall 2014

Northbound API Programming abstraction for applications Hides low-level details Helps orchestrate and combine applications Example uses Path computation Loop avoidance Routing Security CSC Software-Defined Networking26University of Toronto – Fall 2014 Northbound API Southbound API

Who Will Use the Northbound API? Service providers Sophisticated network operators Or, enthusiastic network administrators Vendors Researchers Or anyone who wants to add new capabilities to their network CSC Software-Defined Networking27University of Toronto – Fall 2014

Benefits of the Northbound API Vendor independence Ability to quickly modify or customize control applications through simple programming Example applications: Large virtual switch Security applications Resource management and control Middlebox integration CSC Software-Defined Networking28University of Toronto – Fall 2014

Frenetic Language Declarative Design What the programmer might want Rather than how the hardware implements it. Modular Design Primitives have limited network-wide effects and semantics Independent of the context in which they are used. Single-tier Programming See-every-packet abstraction Race-free Semantics Automatic race detection and packet suppression Cost control Core query logic can be executed on network switches CSC Software-Defined Networking29University of Toronto – Fall 2014

Network Control Loop CSC Software-Defined NetworkingUniversity of Toronto – Fall 2014 Read state OpenFlow Switches Write policy Compute Policy 30

Language-Based Abstractions Query abstraction s OpenFlow Switches Update abstractions Writing/combining modules University of Toronto – Fall 2014CSC Software-Defined Networking31

Frenetic Language Abstractions for querying network state An integrated query language Select, filter, group, sample sets of packets or statistics Designed so that computation can occur on data plane Abstractions for specifying a forwarding policy A functional stream processing library (based on FRP) Generate streams of network policies Transform, split, merge, filter policies and other streams Implementation A collection of Python libraries on top of NOX CSC Software-Defined Networking32University of Toronto – Fall 2014

Frenetic Queries CSC Software-Defined Networking33University of Toronto – Fall 2014

Frenetic Queries CSC Software-Defined Networking34University of Toronto – Fall 2014

Policy in OpenFlow Defining “policy” is complicated All rules in all switches Packet-in handlers Polling of counters Programming “policy” is error-prone Duplication between rules and handlers Frequent changes in policy (e.g., flowmods) Policy changes affect packets in flight CSC Software-Defined Networking35University of Toronto – Fall 2014

Frenetic Forwarding Policies CSC Software-Defined Networking36University of Toronto – Fall 2014 Rules are created using the Rule Constructor, which takes a pattern and a list of actions as arguments Network policies associate rules with switches Dictionaries mapping switches to list of rules Policy events are infinite, time-indexed streams of values, just like the events generated from queries Programs control the installation of policies in a network over time by generating policy events Listeners are event consumers Print: send to console Send: transfer packet to switch and apply actions Register: apply network wide policy

Power of Policy as a Function Composition Parallel: Monitor + Route Sequential: Firewall >> Route A >> (B + C) >> D (A >> P) + (B >> P) (A + B)>>P CSC Software-Defined Networking37University of Toronto – Fall 2014

Frenetic Forwarding Policies CSC Software-Defined Networking38University of Toronto – Fall 2014

Parallel Composition CSC Software-Defined Networking39University of Toronto – Fall 2014 Route on destination Monitor on source + dstip =  fwd(1) dstip =  fwd(2 ) srcip =  count Controller Platform

Parallel Composition CSC Software-Defined Networking40University of Toronto – Fall 2014 Route on destination Monitor on source + dstip =  fwd(1) dstip =  fwd(2 ) srcip =  count srcip = , dstip =  fwd(1), count srcip = , dstip =  fwd(2 ), count srcip =  count dstip =  fwd(1) dstip =  fwd(2) Controller Platform

Sequential Composition CSC Software-Defined Networking41University of Toronto – Fall 2014 Routing Load Balancer >> dstip =  fwd(1) dstip =  fwd(2 ) srcip = 0*, dstip=  dstip= srcip = 1*, dstip=  dstip= Controller Platform

Sequential Composition CSC Software-Defined Networking42University of Toronto – Fall 2014 Routing Load Balancer >> dstip =  fwd(1) dstip =  fwd(2 ) srcip = 0*, dstip=  dstip= srcip = 1*, dstip=  dstip= srcip = 0*, dstip =  dstip = , fwd(1) srcip = 1*, dstip =  dstip = , fwd(2 ) Controller Platform

Dividing the Traffic Over Modules Predicates Specify which traffic traverses which modules Based on input port and packet-header fields CSC Software-Defined Networking43University of Toronto – Fall 2014 Routing Load Balancer Monitor Routing Non-web dstport != 80 Web traffic dstport = 80 >> +

Program Composition CSC Software-Defined Networking44University of Toronto – Fall 2014

Frenetic Runtime System CSC Software-Defined Networking45University of Toronto – Fall 2014