Structured Streams: A New Transport Abstraction

Similar documents
Structured Streams: a New Transport Abstraction

Computer Networks and Data Systems

UNIT IV -- TRANSPORT LAYER

TCP/IP Protocol Suite 1

Advanced Computer Networking. CYBR 230 Jeff Shafer University of the Pacific QUIC

Different Layers Lecture 21

Structured Stream Transport Preliminary Protocol Specification

NT1210 Introduction to Networking. Unit 10

Stream Control Transmission Protocol (SCTP)

Lecture 3: The Transport Layer: UDP and TCP

Video Streaming with the Stream Control Transmission Protocol (SCTP)

Chapter 24. Transport-Layer Protocols

Announcements Computer Networking. Outline. Transport Protocols. Transport introduction. Error recovery & flow control. Mid-semester grades

ITS323: Introduction to Data Communications

EITF25 Internet Techniques and Applications L7: Internet. Stefan Höst

EE 122: IP Forwarding and Transport Protocols

Transport Over IP. CSCI 690 Michael Hutt New York Institute of Technology

CSCI-131 Networking: the End-to-End Layer. Rodrigo Fonseca March 12 th, 2013

MIDTERM EXAMINATION #2 OPERATING SYSTEM CONCEPTS U N I V E R S I T Y O F W I N D S O R S C H O O L O F C O M P U T E R S C I E N C E

No book chapter for this topic! Slides are posted online as usual Homework: Will be posted online Due 12/6

Announcements. No book chapter for this topic! Slides are posted online as usual Homework: Will be posted online Due 12/6

NWEN 243. Networked Applications. Layer 4 TCP and UDP

Network Protocols. Transmission Control Protocol (TCP) TDC375 Autumn 2009/10 John Kristoff DePaul University 1

CMSC 417. Computer Networks Prof. Ashok K Agrawala Ashok Agrawala. October 25, 2018

CS UDP: User Datagram Protocol, Other Transports, Sockets. congestion worse);

OSI Transport Layer. Network Fundamentals Chapter 4. Version Cisco Systems, Inc. All rights reserved. Cisco Public 1

ECE 650 Systems Programming & Engineering. Spring 2018

CCNA 1 Chapter 7 v5.0 Exam Answers 2013

T Computer Networks II. Transport Issues Contents. TCP and UDP. Congestion Prevention. Motivation for Congestion Control

ECE697AA Lecture 3. Today s lecture

PLEASE READ CAREFULLY BEFORE YOU START

TSIN02 - Internetworking

Introduction to Networking. Operating Systems In Depth XXVII 1 Copyright 2017 Thomas W. Doeppner. All rights reserved.

Transmission Control Protocol (TCP)

Square Pegs in a Round Pipe: Wire-Compatible Unordered Delivery In TCP and TLS

CS519: Computer Networks. Lecture 5, Part 1: Mar 3, 2004 Transport: UDP/TCP demux and flow control / sequencing

precise rules that govern communication between two parties TCP/IP: the basic Internet protocols IP: Internet protocol (bottom level)

CS 4390 Computer Networks. Transport Services and Protocols

Internet and Intranet Protocols and Applications

Applied Networks & Security

Outline Computer Networking. Functionality Split. Transport Protocols

ETSF10 Internet Protocols Transport Layer Protocols

UDP and TCP. Introduction. So far we have studied some data link layer protocols such as PPP which are responsible for getting data

Does current Internet Transport work over Wireless? Reviewing the status of IETF work in this area

Datagram Congestion Control Protocol (DCCP)

Transport Layer (TCP/UDP)

Transport Layer. Application / Transport Interface. Transport Layer Services. Transport Layer Connections

Mobile Transport Layer Lesson 10 Timeout Freezing, Selective Retransmission, Transaction Oriented TCP and Explicit Notification Methods

CSE 461 Module 10. Introduction to the Transport Layer

Intro to LAN/WAN. Transport Layer

Transport Layer. The transport layer is responsible for the delivery of a message from one process to another. RSManiaol

Transmission Control Protocol. ITS 413 Internet Technologies and Applications

Network Technology 1 5th - Transport Protocol. Mario Lombardo -

Page 1. Goals for Today" Discussion" Example: Reliable File Transfer" CS162 Operating Systems and Systems Programming Lecture 11

CS 5520/ECE 5590NA: Network Architecture I Spring Lecture 13: UDP and TCP

Operating Systems. 16. Networking. Paul Krzyzanowski. Rutgers University. Spring /6/ Paul Krzyzanowski

Transport Layer. Chapter 3: Transport Layer

SPDY - A Web Protocol. Mike Belshe Velocity, Dec 2009

Announcements Computer Networking. What was hard. Midterm. Lecture 16 Transport Protocols. Avg: 62 Med: 67 STD: 13.

CSCI 466 Midterm Networks Fall 2013

Transport Layer. Gursharan Singh Tatla. Upendra Sharma. 1

CSEP 561 Connections. David Wetherall

CN1047 INTRODUCTION TO COMPUTER NETWORKING CHAPTER 6 OSI MODEL TRANSPORT LAYER

CSE 461 Connections. David Wetherall

Outline 9.2. TCP for 2.5G/3G wireless

Guide To TCP/IP, Second Edition UDP Header Source Port Number (16 bits) IP HEADER Protocol Field = 17 Destination Port Number (16 bit) 15 16

Transport Layer Marcos Vieira

UNIT IV TRANSPORT LAYER

The Transmission Control Protocol (TCP)

Congestion Control. Daniel Zappala. CS 460 Computer Networking Brigham Young University

A Survey of Recent Developments of TCP. Sally Floyd ACIRI (AT&T Center for Internet Research at ICSI) October 17, 2001

Transport Protocols Reading: Sections 2.5, 5.1, and 5.2. Goals for Todayʼs Lecture. Role of Transport Layer

PLEASE READ CAREFULLY BEFORE YOU START

PLEASE READ CAREFULLY BEFORE YOU START

CS457 Transport Protocols. CS 457 Fall 2014

Transport Protocols Reading: Sections 2.5, 5.1, and 5.2

Outline. History Introduction Packets Association/ Termination Data Transmission concepts Multihoming Streams

Computer Communication Networks Midterm Review

Connections. Topics. Focus. Presentation Session. Application. Data Link. Transport. Physical. Network

Lecture 2: Layering & End-to-End

Chapter 6. The Transport Layer. The Transport Service. Services Provided to the Upper Layers. Transport Service Primitives (3) 10/7/2010

Congestion Manager. Nick Feamster Computer Networks. M.I.T. Laboratory for Computer Science. October 24, 2001

Announcements. IP Forwarding & Transport Protocols. Goals of Today s Lecture. Are 32-bit Addresses Enough? Summary of IP Addressing.

Network Protocols. Sarah Diesburg Operating Systems CS 3430

Introduction to Networks and the Internet

Transport Protocols & TCP TCP

Mobile Transport Layer

User Datagram Protocol

Reliable Transport I: Concepts and TCP Protocol

Chapter 23 Process-to-Process Delivery: UDP, TCP, and SCTP

ARP, IP, TCP, UDP. CS 166: Introduction to Computer Systems Security 4/7/18 ARP, IP, TCP, UDP 1

TCP/IP Transport Layer Protocols, TCP and UDP

Reliable Transport I: Concepts and TCP Protocol

Internet Content Distribution

TSIN02 - Internetworking

CSEP 561 Connections. David Wetherall

Layer 4: UDP, TCP, and others. based on Chapter 9 of CompTIA Network+ Exam Guide, 4th ed., Mike Meyers

Application Service Models

EE 122: Transport Protocols. Kevin Lai October 16, 2002

Computer Networks. Sándor Laki ELTE-Ericsson Communication Networks Laboratory

Transcription:

Structured Streams: A New Transport Abstraction Bryan Ford Computer Science and Artificial Intelligence Laboratory Massachusetts Institute of Technology ACM SIGCOMM, August 30, 2007 http://pdos.csail.mit.edu/uia/sst/

Current Transport Abstractions Streams Extended lifetime In-order delivery Datagrams Ephemeral lifetime Independent delivery Examples: TCP SCTP Examples: UDP RDP DCCP

Simplistic Overview The Problem: Streams don't quite match applications' needs Datagrams make the application do everything The Solution: Structured Streams: like streams, only better

How Applications Use TCP Natural approach: streams as transactions or application data units (ADUs) [Clark/Tennenhouse] Example: HTTP/1.0 Web Client TCP Stream Web Server GET 200 OK <...> GET 200 OK <...> GET 200 OK <...> GET 200 OK <...>

TCP Streams as Transactions/ADUs Advantages: Reliability, ordering within each ADU Independence, parallelism between ADUs Application-Layer Framing [Clark/Tennenhouse] Disadvantages: Setup cost: 3-way handshake per stream Setup cost: slow start per stream Shutdown cost: 4-minute TIME-WAIT period Network cost: firewall/nat state per stream Network cost: unfair congestion control behavior

How Applications Use TCP Practical approach: streams as sessions SSH Client TCP Stream SSH Server POP Client TCP Stream POP Server Web Client TCP Stream Web Server Cmd CR Echo Echo Cmd Output LIST RETR +OK 1 <...> +OK <...> GET GET 200 OK <...> 200 OK <...> Cmd Echo RETR +OK <...> GET CR Echo DELE +OK 200 OK <...>

TCP Streams as Sessions Advantages: Stream costs amortized across many ADUs Disadvantages: TCP's reliability/ordering applies across many ADUs Unnecessary serialization: no parallelism between ADUs Head-of-line blocking: one loss delays everything behind TCP unusable for real-time video/voice conferencing HTTP/1.1 made web browsers slower! [Nielsen/W3C] Makes applications more complicated Pipelined HTTP/1.1 still not widely used after 7 years!

What about Datagrams? Do Everything Yourself : Tag & associate related ADUs Fragment large ADUs (> ~8KB) Retransmit lost datagrams (except w/ RDP) Perform flow control Perform congestion control (except w/ DCCP) complexity, fragility, duplication of effort...

Structured Stream Transport Don't give up on streams; fix 'em! Goals: Make streams cheap Let application use one stream per ADU, efficiently Make streams independent Preserve natural parallelism between ADUs Make streams easy to manage Don't have to bind, pass IP address & port number, separately authenticate each new stream

What is a Structured Stream? Unix fork model for stream creation Given parent stream s between A and B B listens on s Web Browser: Top-level Stream Web Page Download: HTML Image Image Image Image Multimedia Plug-in: Control Stream Video Codec Stream A creates child s' on s B accepts s' on s Video Frames (Ephemeral Streams) Audio Codec Stream Audio Frames (Ephemeral Streams)

Talk Outline Introduction to Structured Streams SST Protocol Design Prototype Implementation Evaluation, Related Work Conclusion

SST Protocol Design

SST Transport Services Independent per stream: Data ordering Reliable delivery (optional) Flow control (receive window) Shared among all streams: Congestion control Replay/hijacking protection Transport security (optional)

SST Organization Application Protocol Streams Stream Protocol Channels Channel Protocol Negotiation Protocol Structured Stream Transport (SST) Sessions Underlying Protocol (e.g., UDP, IP, link layer)

Streams, Channels, Packets Time Top-level Application Stream Streams Substream 1 Substream 2 Substream 3 3.1 3.2 1.1 1.2 Channels Channel 1 multiplex streams onto channel 1 channel 1 nears end of life; migrate streams to channel 2 multiplex streams onto channel 2 Channel 2 Packets

SST Packet Header Channel Header (8 bytes) Stream Header (4 8 bytes) Stream Payload (variable) 31 24 23 16 15 8 7 0 Channel ID Transmit Sequence Number (TSN) AckCt Acknowledgment Sequence Number (ASN) Local Stream Identifier (LSID) Type Flags Window Additional Stream Header Fields (depends on Type) Application Data Encrypted (optionally) Message Authentication Check (MAC) (Typical header overhead: 16 bytes + MAC)

Channel Protocol Design Sequencing Acknowledgment Congestion Control Security (see paper)

Channel Protocol: Sequencing Every transmission gets new packet sequence # Including acks, retransmissions [DCCP] Transmissions (retransmit #2) 1 2 3 4 6 5 7 8 9 1 3 6 4 5 8 9 Arrivals

Channel Protocol: Acknowledgment All acknowledgments are selective [DCCP] No cumulative ack point as in TCP, SCTP

Channel Protocol: Acknowledgment All acknowledgments are selective [DCCP] Each packet acknowledges a sequence range Time Packet Received 1 2 3 4 5 6 7 Acknowledgment Sent in Return Packet (acknowledged sequence number range) Ack 1 Ack 1 2 Ack 1 3 (packet 4 dropped) Ack 5 Ack 5 6 Ack 5 7 1 2 3 4 5 6 7 Sequence Number Space

Channel Protocol: Acknowledgment All acknowledgments are selective [DCCP] Each packet acknowledges a sequence range Successive ACKs usually overlap redundancy against lost ACKs No variable-length SACK headers needed all info in fixed header

Channel Protocol: Acknowledgment All acknowledgments are selective [DCCP] Each packet acknowledges a sequence range Congestion control at channel granularity Many streams share congestion state

Stream Protocol Design Stream Creation Data Transfer Best-effort Datagrams Stream Shutdown/Reset (see paper) Stream Migration (see paper)

Stream Protocol: Creating Streams Goal: Create & start sending data on new stream without round-trip handshake delay Challenges: 1.What happens to subsequent data segments if initial create-stream packet is lost? 2.Flow control: may send how much data before seeing receiver's initial window update?

Stream Protocol: Creating Streams Solution: All segments during 1 st round-trip carry create info (special segment type, parent & child stream IDs) Child borrows from parent stream's receive window ( create packets belong to parent stream for flow control) 31 24 23 16 15 8 7 0 Local Stream Identifier (LSID) Type P C Window Parent Stream Identifier (PSID) Byte Sequence Number (BSN) Application Payload

Stream Protocol: Data Transfer Regular data transfer (after 1 st round-trip): 32-bit wraparound byte sequence numbers (BSNs) (just like TCP) Unlimited stream lifetime (just like TCP) 31 24 23 16 15 8 7 0 Local Stream Identifier (LSID) Type P C Window Byte Sequence Number (BSN) Application Payload

Stream Protocol: Best-effort Datagrams Datagrams are ephemeral streams Semantically equivalent to: 1.Create child stream 2.Send data on child stream 3.Close child stream...but without buffering data for retransmission (like setting a short SO_LINGER timeout)

Stream Protocol: Best-effort Datagrams When datagram is small: Stateless best-effort delivery optimization (avoids need to assign stream identifier to child) 31 24 23 16 15 8 7 0 Parent Stream Identifier (PSID) Type F L Window Application Payload Flags: F First Fragment L Last Fragment

Stream Protocol: Best-effort Datagrams When datagram is small: Stateless best-effort delivery optimization When datagram is large: Fall back to delivery using regular child stream Makes no difference to application; datagrams of any size just work!

Implementation & Evaluation

Current Prototype User-space library in C++ Application-linkable simple deployment Runs atop UDP NAT/firewall compatibility ~13,000 lines; ~4,400 semicolons (including crypto security & key agreement) Available at: http://pdos.csail.mit.edu/uia/sst/

Performance Transfer performance vs native kernel TCP Minimal slowdown at DSL, WiFi LAN speeds TCP-friendliness Congestion control fair to TCP within ± 2% Transaction microbenchmark: SST vs TCP, UDP Web browsing workloads Performance: HTTP on SST vs TCP Responsiveness: request prioritization

Transaction Microbenchmark

Web Browsing Workloads Performance of transactional HTTP/1.0 on SST: Much faster than HTTP/1.0 on TCP Faster than persistent HTTP/1.1 on TCP [most browsers] As fast as pipelined HTTP/1.1 on TCP [Opera browser]

Web Browsing Workloads HTTP/1.0 over SST can be more responsive No unnecessary request serialization Simple out-of-band communication via substreams Easy to dynamically prioritize requests (Demo)

Related Work Application-Layer Framing [Clark/Tennenhouse] Transports: TCP, RDP, VMTP, SCTP, DCCP Multiplexers: SSL, SSH, MUX, BXXP/BEEP T/TCP: TCP for Transactions [Braden] TCP congestion state sharing [Touch], Congestion Manager [Balakrishnan] Transport-layer migration support [Snoeren] Network-layer prioritization for QoS [...many...]

Conclusion SST enables applications to use streams as: Sessions (as in legacy TCP apps), or ADUs/Transactions (as in HTTP/1.0), or Datagrams (as in VoIP, RPC over UDP)...without: TCP's per-stream costs, unnecessary serialization UDP's datagram size limits http://pdos.csail.mit.edu/uia/sst/

Can't HTTP/1.1 over TCP do this? Answer: Sort of, if you work really hard. But: 1.Enable HTTP/1.1 pipelining Most browsers still don't because servers get it wrong! 2.Fragment large downloads via Range requests Pummel server with many small HTTP requests Risk atomicity issues with dynamic content 3.Track round-trip time, bandwidth in application Try to keep pipeline full without adding extra delay Still get head-of-line blocking on TCP segment loss!

Comparing SST to SCTP SCTP: No dynamic stream creation/destruction No per-stream flow control (just per session) Best-effort datagrams limited in size SST: No multihoming/failover (yet)...but channel/stream split should facilitate

Comparing SST to DCCP DCCP: No reliability, ordering, flow control No association between packets No cryptographic security SST: No congestion control negotiation (yet)

Channel Protocol: Security Design based on IPsec Cryptographic security mode: Encrypt-then-MAC + replay protection [IPsec] TCP-grade security mode: No encryption MAC = 32-bit checksum + 32-bit key depends on system time [Tomlinson], secret data [Bellovin] stronger protection than TCP: validity window size = 1