Jennifer Rexford Princeton University

Slides:



Advertisements
Similar presentations
Incremental Update for a Compositional SDN Hypervisor Xin Jin Jennifer Rexford, David Walker.
Advertisements

Compiling Path Queries in Software-Defined Networks Srinivas Narayana Jennifer Rexford and David Walker Princeton University.
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
COS 461 Fall 1997 Routing COS 461 Fall 1997 Typical Structure.
Composing Software-Defined Networks Princeton*Cornell^ Chris Monsanto*, Joshua Reich* Nate Foster^, Jen Rexford*, David Walker*
SDX: A Software-Defined Internet Exchange
Nanxi Kang Princeton University
Mobility Jennifer Rexford COS 461: Computer Networks Lectures: MW 10-10:50am in Architecture N101
Programming Abstractions for Software-Defined Networks Jennifer Rexford Princeton University.
Traffic Engineering With Traditional IP Routing Protocols
Traffic Engineering Jennifer Rexford Advanced Computer Networks Tuesdays/Thursdays 1:30pm-2:50pm.
© 2003 By Default! A Free sample background from Slide 1 SAVE: Source Address Validity Enforcement Protocol Authors: Li,
CS335 Networking & Network Administration Tuesday, April 20, 2010.
Software-Defined Networking
Data Plane Verification. Background: What are network policies Alice can talk to Bob Skype traffic must go through a VoIP transcoder All traffic must.
SDX: A Software Defined Internet Exchange Arpit Gupta, Laurent Vanbever, Muhammad Shahbaz, Sean P. Donovan, Brandon Schlinker Nick Feamster, Jennifer Rexford,
COS 461: Computer Networks
Jennifer Rexford Princeton University MW 11:00am-12:20pm Wide-Area Traffic Management COS 597E: Software Defined Networking.
Putting the “Inter” in “Internet” Jennifer Rexford Princeton University 1.
Languages for Software-Defined Networks Nate Foster, Arjun Guha, Mark Reitblatt, and Alec Story, Cornell University Michael J. Freedman, Naga Praveen Katta,
Cellular Core Network Architecture
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.
Common Devices Used In Computer Networks
Firewall and Internet Access Mechanism that control (1)Internet access, (2)Handle the problem of screening a particular network or an organization from.
VeriFlow: Verifying Network-Wide Invariants in Real Time
Higher-Level Abstractions for Software-Defined Networks Jennifer Rexford Princeton University.
Jennifer Rexford Fall 2014 (TTh 3:00-4:20 in CS 105) COS 561: Advanced Computer Networks TCP.
CS332, Ch. 26: TCP Victor Norman Calvin College 1.
Copyright 2013 Open Networking User Group. All Rights Reserved Confidential Not For Distribution Programming Abstractions for Software-Defined Networks.
SDX: A Software-Defined Internet eXchange Jennifer Rexford Princeton University
Jennifer Rexford Princeton University MW 11:00am-12:20pm Measurement COS 597E: Software Defined Networking.
Networking Fundamentals. Basics Network – collection of nodes and links that cooperate for communication Nodes – computer systems –Internal (routers,
Programming Languages for Software Defined Networks Jennifer Rexford and David Walker Princeton University Joint work with the.
Intradomain Traffic Engineering By Behzad Akbari These slides are based in part upon slides of J. Rexford (Princeton university)
SDX: A Software-Defined Internet eXchange Jennifer Rexford Princeton University
Jennifer Rexford Princeton University MW 11:00am-12:20pm SDN Programming Languages COS 597E: Software Defined Networking.
Measurement Query Languages for Software-Defined Networks Jennifer Rexford Princeton University Joint work with Srinivas.
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.
Network Virtualization Ben Pfaff Nicira Networks, Inc.
Network Layer COMPUTER NETWORKS Networking Standards (Network LAYER)
Xin Li, Chen Qian University of Kentucky
Compiling Path Queries
CIS 700-5: The Design and Implementation of Cloud Networks
SDN Network Updates Minimum updates within a single switch
Jennifer Rexford Princeton University
The DPIaaS Controller Prototype
Routing Jennifer Rexford.
Martin Casado, Nate Foster, and Arjun Guha CACM, October 2014
Forwarding and Routing IP Packets
Chapter 4 Data Link Layer Switching
of Dynamic NFV-Policies
6.829 Lecture 13: Software Defined Networking
Net 323: NETWORK Protocols
Programming the Networks of the Future
Programmable Networks
Software Defined Networking
Enabling Innovation Inside the Network
Languages for Software-Defined Networks
COS 561: Advanced Computer Networks
Programmable Networks
Lecture 10, Computer Networks (198:552)
Control-Data Plane Separation
Chapter 4: outline 4.1 Overview of Network layer data plane
Presentation transcript:

Jennifer Rexford Princeton University SDN Applications Jennifer Rexford Princeton University Goals: use example applications to illustrate challenges in PL and verification, and hopefully also highlight some new apps that are neat

Software-Defined Networking Logically-centralized controller App 1 App 2 Controller Simple data-plane interface

Prioritized list of rules Priority: disambiguate overlapping patterns Pattern: match packet header bits Actions: drop, forward, modify, send to controller Counters: number of bytes and packets Priority Pattern Actions Counters 3 srcip=1.0.*.* Forward(1) 3, 4500 2 dstip=1.2.3.4, dstport=80 dstip:=10.0.0.1, Forward(2) 5, 6018 1 srcport=25 Send to controller 1, 512 * Drop 2, 1024

Example SDN Applications Simple illustrative examples MAC learning Stateful firewall Server load balancing Commercial examples Wide-area traffic engineering Multi-tenant data centers Middlebox traffic steering Ongoing research at Princeton Internet eXchange Points Traffic monitoring (Dave Walker’s talk!)

Programming & Verification Challenges Multiple tasks, one set of rules Policies that change over time Uncertain ordering of events Rule-space limitations Non-deterministic applications Interactions with other protocols

Simple Illustrative Examples

MAC Learning Plug-and-play Example Flood packets sent to unknown destinations Learn a host’s location when it sends packets Example h1 sends to h2: flood, learn (h1, port 1) h3 sends to h1: forward to port 1, learn (h3, port 3) h1 sends to h3: forward to port 3 h1 1 3 h3 h2 2

MAC Learning, Done Wrong Install rules as you learn Match on host address and port Buggy behavior What happens when h3 sends to h1? What happens when h1 sends to h3? Pattern Action dstmac=h1 Forward(1) * Send to controller Pattern Action * Send to controller h1 sends to h2 h1 1 3 h3 h2 2

MAC Learning, Stating Invariant What is the invariant being violated? “Reachability between all pairs of hosts”? No, h1 can reach h3, albeit via flooding Performance invariants are hard to state “After h3 sends a packet, all other hosts should be able to reach h3 without flooding”? Delays between h3 and the switch(es)? “After packet from h3 is delivered, all other hosts should reach h3 without flooding”?

MAC Learning, Done Right Compose forwarding and querying Forwarding: flood or forward Query: learn location of unknown hosts Synthesize a single set of rules Well, still ignoring that hosts can move… Must learn the host’s new location (how?) Pattern Action srcmac=h3, dstmac=h1 Forward(1) * Send to controller Should I look at fast mobility, where it isn’t clear which switch has the host?

Stateful Firewall Speak only when spoken to Example Client sends a packet to a server Only then can a server send a return packet Example s3 sends to c1: block (or blacklist s3) c2 sends to s4: forward to port 3 s4 sends to c2: forward to port 2 Stating the invariant? s3 c1 1 3 c2 2 s4

Stateful Firewall, Done Wrong Bad performance optimization Send client packet to server And, send copy of packet to controller But, timing delays What if s4 sends back to c2 before the controller installs the rules? Pattern Action srcip=c2, dstip=s4 Forward(3) srcip=s4, dstip=c2 Forward(2) srcip=client Forward(3), send to controller srcip=server Drop Pattern Action srcip=client Forward(3), send to controller srcip=server Drop c2 sends to s4

Stateful Firewall, Done Wrong Blacklisting instead of blocking Unsolicited traffic leads to blacklisting of host Pattern Action srcip=client Forward(3), send to controller srcip=server Send to controller s3 c1 1 3 c2 2 s4 Similar problem with host mobility – may not be clear which mobility event happened first Two events c2’s packet reaches controller: allow s4 s4’s packet reaches controller: blacklist s4 Which event happens first???

Stateful Firewall, Done Right No assumptions about delays Ordering of events in the switch Ordering of events triggered by hosts Don’t let host see packet Until policy is updated Pattern Action srcip=c2, dstip=s4 Forward(3) srcip=s4, dstip=c2 Forward(2) srcip=client Send to controller srcip=server Drop Pattern Action srcip=client Send to controller srcip=server Drop c2 sends to s4

Server Load Balancing Pre-install load-balancing policy Split traffic based on source IP 10.0.0.1 srcip=0*, dstip=1.2.3.4 srcip=1*, dstip=1.2.3.4 10.0.0.2

Server Load Balancing Bring up a third server to handle the load E.g., srcip=10* vs. srcip=11* 10.0.0.1 srcip=0*, dstip=1.2.3.4 10.0.0.3 srcip=1*, dstip=1.2.3.4 10.0.0.2

Load Balancing, Connection Affinity Connections finish where they started Ongoing connections srcip=1*: finish with server 10.0.0.2 New connections srcip=10*: go to 10.0.0.2 srcip=11*: go to 10.0.0.3 srcip=11* 10.0.0.3 3 1 2 srcip=1*, dstip=1.2.3.4 srcip=10* 10.0.0.2

Connection Affinity, Done Wrong Identifying ongoing connections Send a packet to the controller See if the packet is a TCP SYN Timeout the “send to controller rule” SYN packet from srcip=111 Pattern Action srcip=111 Forward(3) srcip=11* Send to controller Pattern Action srcip=11* Send to controller Pattern Action srcip=110 Forward(2) srcip=111 Forward(3) srcip=11* Send to controller non-SYN packet from srcip=110

Connection Affinity, Done Wrong Flawed assumption about TCP protocol Just one SYN packet per connection Duplicate SYN packets Network can sometimes duplicate packets Sender may retransmit the SYN packet Misclassification of a connection Ongoing connection misclassified as new How to state the invariant here?

Server Load Balancing Weighted traffic splitting E.g., {1/6, 1/3, 1/2} to three servers Matching on header fields srcip=000*: 1/8 srcip=0*: 3/8 srcip=1*: 1/2 Could do better with more rules Better programming abstractions Optimizing use of rule-table space

Commercial Examples

Wide-Area Traffic Engineering Compute k paths between edge pairs Split traffic over the k paths Adapt to changes in offered load

Wide-Area TE, Transient Behavior Adapt traffic splitting at multiple switches Consistent update to preserve invariants Congestion-free, loop-free, etc. Path 2 A B Path 1 Path 2 C Path 1

Wide-Area TE, What-If Analysis Planned maintenance Before taking link/switch down for maintenance … model what the effects will be SDN to the rescue Simply run the controller application … using estimated traffic demands … and the link or switch removed Do you necessarily get the same answer As you would get in the operational network? Hint: what if the order of events matters?

Multi-Tenant Data Centers Physical network Virtual machines on a server with soft switch Rack of servers with top-of-rack switch Fabric of switches (e.g., fat tree, Clos)

Multi-Tenant Data Centers Abstraction to each tenant Collection of its virtual machines Connected to one big Ethernet switch Preserved across VMs in different servers and racks Migration of VMs to different locations

Multi-Tenancy, Solution Controller realizing the abstraction Directory of VM addresses and locations Soft switch rules to direct traffic and enforce policy Packet encapsulation between soft switches Updates to switches on VM migration Challenge: verifying that all the pieces are working together, and in the right order 27

Middlebox Traffic Steering Direct selected traffic (e.g., TCP port 80) … through a chain of middleboxes dstip = 1.2.3.4 dstport = 80 dstip=1.2.3.4

Middlebox Traffic Steering Unified policy framework Switch rules and network paths Chains of middleboxes Joint optimization Sizing: how many middlebox instances Placement: where to run them Steering: which flows to direct through them Routing: which network paths to take Correctness under dynamics

Ongoing Research at Princeton

Software-Defined eXchanges (SDX) SDX Controller SDX BGP Session SDN Switch AS A Router AS B Router AS C Router

SDX Apps: Inbound TE AS C splits incoming traffic Web traffic via C1 Remaining traffic via C2 Incoming Data C1 C2 AS A Router AS B Router AS C Routers

SDX Apps: DoS Mitigation Attacker Victim AS drops traffic Installing drop rules in SDX AS 3 SDX 1 SDX 2 AS 2 AS 1 Victim

SDX Challenges: Multiple ASes Combine multiple policies Virtual switch abstraction Switching Fabric Virtual Switch Virtual Switch AS A AS B A1 B1 match(dstport=80)drop Virtual Switch AS C match(dstport=80)fwd(C1) C1 C2

SDX Challenges: Work with BGP Interdomain routing ASes decide who can route through them Prevent loops and protocol oscillation match(dstport=80) -> forward(C) 20.0.0.0/8 p A B SDX 10.0.0.0/8 C

Conclusions SDN enables many new apps These apps raise new challenges Programming abstractions Verification problems Networking problems Lots more work for all of us to do!

Traffic Monitoring Traffic matrix Congested link diagnosis Offered load for ingress-egress pairs Congested link diagnosis Fan in/out of a congested link Denial of service attack diagnosis Sink tree into the victim Localizing packet loss Identifying which hop on a path drops packets Firewall evasion Identifying packets that do not traverse a firewall

Traffic Monitoring Challenges Generality Programming abstractions that support a wide range of queries Efficiency Limiting overhead for collecting and joining data Accuracy Direct observation of the traffic Dynamics Robustness to changing forwarding policy Limited switch functionality Match packets, and count or send to controller

Traffic Monitoring, Abstractions Path queries Regular expression over predicates on packet location and header values SQL groupby constructs to aggregate results Examples Traffic matrix: ingroup(ingress(), [switch]) ^ true* ^ outgroup(egress(), [switch]) Firewall evasion: in(ingress()) ^ (in(sw!=FW))* ^ out(egress)

Traffic Monitoring, Compilation Convert regular expression into a DFA DFA tracks packet’s progress in satisfying query Represent the DFA in the switches State: tag on the packet Transitions: match-action rules in the switch Accepting: count or send packet to controller sw=S1 Simple query in(sw=S1) ^ in(sw=S2) sw=S4 1 2