The Transport Layer is Dead – Long Live the Transport Layer!

Slides:



Advertisements
Similar presentations
Umut Girit  One of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer.
Advertisements

William Stallings Data and Computer Communications 7 th Edition Chapter 2 Protocols and Architecture.
Department of Electronic Engineering City University of Hong Kong EE3900 Computer Networks Transport Protocols Slide 1 Transport Protocols.
OSI Model 7 Layers 7. Application Layer 6. Presentation Layer
COE 342: Data & Computer Communications (T042) Dr. Marwan Abu-Amara Chapter 2: Protocols and Architecture.
IP-UDP-RTP Computer Networking (In Chap 3, 4, 7) 건국대학교 인터넷미디어공학부 임 창 훈.
Gursharan Singh Tatla Transport Layer 16-May
Chapter 17 Networking Dave Bremer Otago Polytechnic, N.Z. ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William Stallings.
Presentation on Osi & TCP/IP MODEL
1.1 What is the Internet What is the Internet? The Internet is a shared media (coaxial cable, copper wire, fiber optics, and radio spectrum) communication.
6.1. Transport Control Protocol (TCP) It is the most widely used transport protocol in the world. Provides reliable end to end connection between two hosts.
Mukesh N. Tekwani Elphinstone College Mumbai
Dr. John P. Abraham Professor University of Texas Pan American Internet Applications and Network Programming.
1. I NTRODUCTION TO N ETWORKS Network programming is surprisingly easy in Java ◦ Most of the classes relevant to network programming are in the java.net.
Types of Service. Types of service (1) A network architecture may have multiple protocols at the same layer in order to provide different types of service.
BZUPAGES.COM Presentation on TCP/IP Presented to: Sir Taimoor Presented by: Jamila BB Roll no Nudrat Rehman Roll no
Lecture 4 Overview. Ethernet Data Link Layer protocol Ethernet (IEEE 802.3) is widely used Supported by a variety of physical layer implementations Multi-access.
Our pre-TAPS work on transport services Michael Welzl TAPS, 92 nd IETF meeting 23. March 2015.
Protocol Layering Chapter 11.
U Innsbruck Informatik - 1 Specification of a Network Adaptation Layer for the Grid GGF7 presentation Michael Welzl University.
SOCKET PROGRAMMING Presented By : Divya Sharma.
Chapter 3 Transport Layer
Introduction to Networks
Chapter 3 Transport Layer
The Transport Layer Implementation Services Functions Protocols
Transport Layer Slides are originally from instructor: Carey Williamson at University of Calgary Very minor modification are made Notes derived from “Computer.
Chapter 9: Transport Layer
Lecture (2).
Chapter 3 outline 3.1 Transport-layer services
Instructor Materials Chapter 9: Transport Layer
Transport Layer.
Process-to-Process Delivery, TCP and UDP protocols
Discussion: Messaging
Telemedicine.
06- Transport Layer Transport Layer.
PART 5 Transport Layer Computer Networks.
Understand the OSI Model Part 2
SCTP v/s TCP – A Comparison of Transport Protocols for Web Traffic
CS 1652 Jack Lange University of Pittsburgh
Introduction to Networks
NET323 D: Network Protocols
Subject Name: Computer Communication Networks Subject Code: 10EC71
Introduction of Transport Protocols
Transport Layer Unit 5.
Transport Layer Our goals:
Transport Protocols Relates to Lab 5. An overview of the transport protocols of the TCP/IP protocol suite. Also, a short discussion of UDP.
September 19th, 2013 CS1652 Jack Lange University of Pittsburgh
TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
Chapter 14 User Datagram Protocol (UDP)
Falling Back! … and: a Functional Decomposition of Post-Sockets
NET323 D: Network Protocols
Process-to-Process Delivery:
Dr. John P. Abraham Professor UTPA
Advanced Computer Networks
A Minimal Set of Transport Services for TAPS Systems draft-ietf-taps-minset-00 Michael Welzl, Stein-Gjessing IETF
Dr. John P. Abraham Professor UTPA
Lecture 2: Overview of TCP/IP protocol
CPEG514 Advanced Computer Networkst
Net 323 D: Networks Protocols
1 TRANSMISSION CONTROL PROTOCOL / INTERNET PROTOCOL (TCP/IP) K. PALANIVEL Systems Analyst, Computer Centre Pondicherry University, Puducherry –
CS4470 Computer Networking Protocols
OSI Reference Model Unit II
Process-to-Process Delivery: UDP, TCP
ITIS 6167/8167: Network and Information Security
draft-ietf-taps-transports-usage-03
Chapter 3 Transport Layer
OSI Model 7 Layers 7. Application Layer 6. Presentation Layer
Transport Layer Our goals:
Department of Informatics Networks and Distributed Systems (ND) group
How Applications (Will Hopefully Soon) Use the Internet
Presentation transcript:

The Transport Layer is Dead – Long Live the Transport Layer! Michael Welzl Net Group, University of Rome Tor Vergata 30. 09. 2017

Outline The problem The solution IETF Transport Services (TAPS) WG NEAT EC project (and software!)

The Transport Layer is Dead .... (the problem)

The beauty ;-) of OSI... A N-layer provides a service to the N+1-layer what's below the service interface is hidden Protocols inside layers are interchangeable Transport layer (and above) should be especially easy to change!

Internet transport is ossified node A node B e.g. HTTP Application Layer Transport Layer entity UDP TCP  Applications expect precisely the behavior of TCP and UDP  Routers expect to see precisely TCP or UDP (sometimes with even more limitations)

Transport layer development Computer, 30 years ago A program that sends data over the Internet, 30 years ago (using Berkeley sockets)

Transport layer development Computer, today A program that sends data over the Internet, today (using Berkeley sockets)

More than just sockets... Previous example: Berkeley sockets Today, applications use many different APIs These higher-layer systems use sockets  can only offer the services of TCP and UDP A reliable byte stream Unreliable packet (“datagram”) transmission It’s a way of thinking about communication !

... and it’s from the 80s ! Reliable byte stream, TCP Datagram, UDP

What about... Priorities? Among your own flows, and between yours and others? Careful “do not disturb anybody” background (“scavenger”) communication? Intelligent use of multiple network interfaces? Maybe using data even when a checksum fails? Codecs can handle that, but UDP will throw away all your data Using protocol features that yield lower latency? Maybe trade latency against bandwidth? Control the send buffer?

Example: unordered message delivery Some applications can accept data chunks out of order, even when requiring reliability TCP causes Head-Of-Line (HOL) blocking delay TCP receiver buffer Chunk 2 Chunk 3 Chunk 4 Chunk 1 App waits in vain! Some protocols can deliver data out of order (e.g. SCTP) If such a protocol is not available: fine to use TCP! in-order delivery is correct! Just slower ... BUT: unless an application asks for it, we can NEVER give it data in the wrong order.  This service needs to be in ALL APIs ! (not just socket level)

By the way: the 90s were no better! IntServ? DiffServ? IntServ over DiffServ! ("U can't touch this" ISP core router) From http://blog.sendmemobile.com/music-humor/ten-1990s-artists-who-need-a-comeback

Internet (end-to-end!) QoS Circular dependency that’s very similar to the Transport Layer problem [RFC 2990] Internet (IP over everything) + strict QoS guarantees was never a good fit Alternatives exist, but perhaps not as sexy for ISPs – e.g. Alternative Best Effort (ABE) Service (Paul Hurley, Jean-Yves Le Boudec, Patrick Thiran) and some papers by Sergey Gorinsky et al Could do that, or just “try QoS” but not rely on it "Try QoS" is now done by WebRTC: https://tools.ietf.org/html/draft-ietf-tsvwg-rtcweb-qos-18

... Long Live The Transport Layer! (the solution)

Solution part 1: A Standard. IETF Transport Services (TAPS)

TAPS Background mid-2013, the time had come: LEDBAT, RTMFP, MPTCP, SPDY, Minion Can we get some order into this chaos? 1 year of community-convincing; 1 bar BoF; 2 BoFs => TAPS chartered 24.9.2014 History available at: https://sites.google.com/site/transportprotocolservices/

How TAPS wants to solve the problem Unordered reliable message delivery is only one example What is the minimum set of transport services... from the services that IETF transport protocols offer ... that we “must” make available everywhere for them to become usable? Once we know that, we can specify how to implement a TAPS system

TAPS charter: planned outcomes List of services provided by today’s transports List: subset of services that systems supporting TAPS will provide + guidance on choosing among available mechanisms and protocols Experimental spec: mechanisms to provide the services identified in item 2 (“This document will explain how to select and engage an appropriate protocol and how to discover which protocols are available for the selected service between a given pair of end points. Further, it will provide a basis for incremental deployment.”)

Bottom-up method to derive a minimum set of transport services IETF Transport Services (TAPS) Working Group Survey of services provided by transport protocols – RFC 8095 (54 pages) In-depth analysis of 30+ RFCs: TCP, MPTCP, UDP, UDP-Lite, SCTP, LEDBAT (2 Internet-drafts, 79 pages) Derivation of a minimum set: from 2), keep only services that require application-specific knowledge and do not prohibit falling back to TCP / UDP; resolve some resulting peculiarities (1 Internet-draft, 53 pages)

Fall-backs enable one-sided deployment New Protocol X New API New App TCP New API New App UDP New API New App Several Protocols New API New App UDP Sockets Current App TCP Sockets Current App

Result (latest version): high-level view Note: assume TCP fall-back only (assuming UDP fall-back limits this list) Flow creation and flow grouping Most configuration features only configure a group (e.g., can’t configure timeout for an SCTP stream only) Should use configuration early, ideally before connecting Send-before-connect Could also be implemented as a parameter to “connect” Specify “idempotent data” for extra-fast transmission (TFO) Limited connect / listen / close / abort semantics (support UDP, or transparently use streams) Connect may not invoke accept! No half-closed connections

Result (latest version): high-level view /2 Be informed about sender buffer running dry Late decision about choice of data to send Configure: per-flow priorities, network-wide priorities (DSCP), timeout, authentication, checksums Some queries, e.g. related to packet sizes Send messages, receive bytestream Messages stay intact, but may be reordered or dropped (configured by sender) Receiver must be aware (detect boundaries)

Sending messages, receiving a bytestream Can we make this combination work? Be compatible to TCP but still benefit from messages? Alternative not very attractive: always telling an application “sorry, you only get a stream here” is not much different than saying “sorry, use TCP instead” Let’s minimize # hoops an app developer has to jump through Message-oriented TCP apps already frame their data Unnecessary to repeat this in transport layer Requirement to tell receiver app “here is your complete message” creates a major limitation and is often unnecessary

Application-Framed (AFra-)Bytestream Normal TCP-like bytestream API Optional: some additional information provided by sender app Sender app: hands over a stream of bytes, informs transport about frame boundaries and requirements (order, reliability, ..) Delimited frames stay intact, in order More relaxed rules possible between frames Delimiters assumed to be known by application Receiver app: receives stream of bytes App-level delimiters turn it into messages TCP = special case: no delimiters used Can talk to “normal” TCP applications on both sides

Unordered message delivery: SCTP Sender app Receiver app Msg 3 Msg 1 Msg 2 Msg 3 App-defined header. Could also be e.g. implicit knowledge about size Msg 1 Msg 2 App knows how to identify messages Inform where frame ends API Inform where frame begins Configure: “unordered” Just a byte stream! API Block 1 Block 3 Block 2 Block 1 Block 2 Block 3

Unordered message delivery: TCP Sender app Receiver app Msg 3 Msg 1 Msg 2 Msg 2 Msg 1 Msg 3 App knows how to identify messages Inform where frame ends Inform where frame begins Configure: “unordered” … TCP just ignores this! API Just a byte stream! API Block 1 Block 3 Block 2 Block 1 Block 2 Block 3

Unreliable unordered msg delivery: SCTP Sender app Receiver app Msg 3 Msg 3 Msg 2 Msg 2 Msg 1 App knows how to identify messages Inform where frame ends API Inform where frame begins Configure: “unreliable, unordered” Just a byte stream! API Block 1 Block 3 Block 2 Block 2 Block 3

Unreliable unordered msg delivery: TCP Sender app Receiver app Msg 3 Msg 1 Msg 2 Msg 2 Msg 1 Msg 3 App knows how to identify messages Inform where frame ends Inform where frame begins Configure: “unreliable, unordered” … TCP just ignores this! API Just a byte stream! API Block 1 Block 3 Block 2 Block 1 Block 2 Block 3

Unreliable message delivery: SCTP, large messages Sender app Receiver app Msg 3 Msg 2 Msg 1 Inform where frame ends API Inform where block begins Configure: “Unreliable” API Packets Block 1 Block 3 Block 2

Unreliable message delivery: SCTP, large messages Sender app Receiver app Msg 2 App knows how to identify messages API Just a byte stream! API SCTP Block 1 Block 3 Block 2 Packets

Init: example decision tree - Will you need some form of reliability? Yes: SCTP or TCP can be used. - Is any of the following useful to the application? * Choosing a scheduler, choosing priorities * Configurable message reliability * Unordered message delivery * Request not to delay message SACKs Yes: SCTP is preferred. No: * Hand over a message to reliably transfer (possibly multiple times) before connection establishment * Suggest timeout to the peer * Notification of Excessive Retransmissions (early warning below abortion threshold) * Notification of ICMP error message arrival Yes: TCP is preferred. No: SCTP and TCP are equally preferable. No: all protocols can be used. * Specify checksum coverage used by the sender * Specify min. checksum coverage required by receiver Yes: UDP-Lite is preferred; No: UDP is preferred. Init: example decision tree Avoids, e.g.: 1) choose UDP 2) app asks for reliability

Moving to a system specification... TAPS charter item 3: currently various documents / proposals post-sockets: fall-back to TLS, system on both sides, extra features (e.g. connection migration) guidelines for TAPS systems, security survey NEAT project outputs (happy eyeballs, API, ..) socket intents (mostly focused on interface choice)

Solution part 2: Code. The project (and software)

What does NEAT offer? A user-space library for efficient e2e network Internet comm., designed to be easy to use Offers access to the features of TCP, MPTCP, SCTP, UDP, UDP-LITE and more researchy things via a callback-based API Policy system to control everything via json files One-sided deployment possible, can do fall-backs to TCP or UDP, can talk to native peers (e.g. TCP, SCTP, even WebRTC browser!) Not precisely the minimum set, but much overlap (e.g.: send message, receive without guarantee of message boundaries for TCP; transparent use of SCTP multi-streaming), and much more

NEAT architecture

Internals: sequence of events in NEAT

Happy Eye- balls

More deployment considerations “Application” could be a library or middleware e.g., pub-sub doesn’t need 100% reliability would only exploit a subset of TAPS capabilities, but re-compiling an app with the new middleware version would make the app use TAPS Related NEAT development: NEAT socket API Run legacy applications over NEAT using "withneat commandname params" Benefit from: policy settings; transparent SCTP-stream-mapping

Stuff ! TAPS: NEAT: https://datatracker.ietf.org/wg/taps/ http://www.neat-project.org https://github.com/NEAT-project/neat "NEAT: A Platform- and Protocol-Independent Internet Transport API", IEEE Communications Magazine 55 (6), 2017. "De-ossifying the Internet Transport Layer: A Survey and Future Perspectives", IEEE Communications Surveys & Tutorials 19(1), Firstquarter 2017.

Questions, comments?