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

43
The Transport Layer is Dead – Long Live the Transport Layer! Michael Welzl University of Oslo / University of Rome Tor Vergata 15. 01. 2018 1

Transcript of The Transport Layer is Dead – Long Live the Transport...

Page 1: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

TheTransportLayerisDead–LongLivetheTransportLayer!

MichaelWelzlUniversityofOslo/UniversityofRomeTorVergata

15.01.20181

Page 2: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

MichaelWelzlUniversityofOslo/UniversityofRomeTorVergata

15.01.20182

Page 3: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Wakeupcall• Thetransportlayerisinterestingagain!

– Somehow,(mostlyUS?)industryisaware,butacademia+(European?)fundingbodiesdon'trecognize;onlyexception:MPTCP

• Longlistofnew,interestingstuff!– HTTP/2+QUIC;LEDBAT;WebRTC(withRMCAT congestioncontrols)– Focusonlowlatency:Bufferbloatcommunity=>AQMalgorithms:

(FQ-)CoDel,PIE andnowalsosomeWiFiwork;ECN:ABE,L4S

• Whyhastransport"gonecold"?– Noproblemtosolve,TCPworks? nottrue! TCP=latency,complexity,bad

fairness,badinteractionswithdelay-sensitiveornon-greedytraffic,...– ChangingTCPisfrustratinglyhard,elsenochancetochangeanything?

Notsotrueanymore!=>storyofthistalk! 3

Page 4: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Outline

1. The"transportlayerossification"problem

2. Thesolution1. IETFTransportServices(TAPS)WG2. NEATECproject(andsoftware!)

4

Page 5: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Terminology

5

Ossification Petrification

Page 6: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

TheTransportLayerisDead....

(theproblem)

6

Page 7: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Thebeauty;-)ofOSI...

• AN-layerprovidesaservicetotheN+1-layer– what'sbelowtheserviceinterfaceishidden

• Protocolsinsidelayersareinterchangeable

• Transportlayer(andabove)shouldbeespecially easytochange!

node A node B

protocol Layer N+1

Layer N: services N1, N2

service interface

entitiy vertical comm.

horizontal comm.

N1

N2

N1

N2

7

Page 8: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Internettransportisossified

è Applicationsexpectprecisely thebehaviorofTCPandUDP

node A nodeB

e.g.HTTP Application Layer

TransportLayer

entityUDP

TCP

è Routersexpecttoseeprecisely TCPorUDP(sometimeswithevenmorelimitations)

8

Page 9: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Transportlayerdevelopment• Computer,30yearsago

• AprogramthatsendsdataovertheInternet,30yearsago

(usingBerkeleysockets)

9

Page 10: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Transportlayerdevelopment• Computer,today

• AprogramthatsendsdataovertheInternet,today

(usingBerkeleysockets)

10

Page 11: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Morethanjustsockets...

• Previousexample:Berkeleysockets– Today,applicationsusemanydifferentAPIsfromvariouslibraries/middlewares

• Buttheselibraries/middlewaresuse socketsè limitedbytheservicesofTCPandUDP1. Areliablebytestream2. Unreliablepacket(“datagram”)transmission

It’sawayofthinking aboutcommunication!11

Page 12: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

...andit’sfromthe80s!

1) Reliablebytestream,TCP

2) Datagram,UDP

12

Page 13: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Whatabout...

• Priorities?– Amongyourownflows,andbetweenyoursandothers?

• Careful“donotdisturbanybody”background(“scavenger”)communication?

• Intelligentuseofmultiplenetworkinterfaces?

• Maybeusingdataevenwhenachecksumfails?– Codecscanhandlethat,butUDPwillthrowawayallyourdata

• Usingprotocolfeaturesthatyieldlowerlatency?– Maybetradelatencyagainstbandwidth?– Controlthesendbuffer?

13

Page 14: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Example:unordered message delivery

• Some applications can accept data chunks outof order,even when requiring reliability– TCPcauses Head-Of-Line(HOL)blocking delay

Chunk 2 Chunk 3 Chunk 4 Chunk 1TCP receiver buffer

App waits in vain!

• Some protocols can deliver data outof order (e.g.SCTP)• If suchaprotocol is notavailable:fine to use TCP!

• in-orderdelivery is correct!Justslower

...BUT:unless anapplication asks for it,we can NEVERgiveitdatainthe wrong order.è Thisservice needs to be inALLAPIs!(notjustsocketlevel)

14

Page 15: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

...LongLiveTheTransportLayer!

(thesolution)

15

Page 16: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Solutionpart1:AStandard.

IETFTransportServices(TAPS)

16

Page 17: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

TAPSBackground

Application

Protocol X

ISP A (supports

X only)

Application

Protocol X

ISP A (supports

X only)

TAPS system

Application

Protocol Y

ISP B (supports X and Y)

TAPS system

Application

Protocol X

ISP B (supports X and Y)

without TAPS with TAPS

• mid-2013,thetimehadcome:LEDBAT,RTMFP,MPTCP,SPDY,Minion• Canwegetsomeorderintothischaos?

• 1yearofcommunity-convincing;1barBoF;2BoFs=>TAPSchartered24.9.2014• Historyavailableat:https://sites.google.com/site/transportprotocolservices/17

Page 18: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

HowTAPSwantstosolvetheproblem

• Unorderedreliablemessagedeliveryisonlyoneexample

• Whatistheminimumsetoftransportservices...– fromtheservicesthatIETFtransportprotocolsoffer...thatwe“must”makeavailableeverywhereforthemtobecomeusable?

• Onceweknowthat,wecanspecifyhowtoimplementaTAPSsystem

18

Page 19: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

TAPScharter:plannedoutcomes

1. Listofservices providedbytoday’stransports

2. List:subsetofservices thatsystemssupportingTAPSwillprovide+guidanceonchoosingamongavailablemechanismsandprotocols

3. Experimentalspec:mechanismstoprovidetheservicesidentifiedinitem2(“Thisdocumentwillexplainhowtoselectandengageanappropriateprotocolandhowtodiscoverwhichprotocolsareavailablefortheselectedservicebetweenagivenpairofendpoints.Further,itwillprovideabasisforincrementaldeployment.”)

19

Page 20: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Bottom-upmethodtoderiveaminimumsetoftransportservices

• IETFTransportServices(TAPS)WorkingGroup1. Survey ofservicesprovidedbytransportprotocols– RFC

8095(54pages)2. In-depthanalysisof30+RFCs:TCP,MPTCP,UDP,UDP-

Lite,SCTP,LEDBAT (RFCs-to-be8303&8304~79pages)3. Derivationofaminimumset:from2),keeponlyservices

thatrequireapplication-specificknowledgeanddonotprohibitfallingbacktoTCP/UDP;resolvesomeresultingpeculiarities(1Internet-draft,53pages)

20

Page 21: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Fall-backsenableone-sideddeployment

SeveralProtocols

NewAPI

NewApp NewProtocolX

NewAPI

NewApp

TCP

NewAPI

NewApp

UDP

NewAPI

NewApp

TCP

Sockets

CurrentApp

UDP

Sockets

CurrentApp

21

Page 22: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Result(latestversion):high-levelview

1. Flowcreationandflowgrouping– Mostconfigurationfeaturesonlyconfigureagroup(e.g.,can’tconfiguretimeoutforanSCTPstreamonly)

– Shoulduseconfigurationearly,ideallybeforeconnecting

2. Send-before-connect– Couldalsobeimplementedasaparameterto“connect”– Specify“idempotentdata”forextra-fasttransmission(TFO)

3. Limitedconnect/listen/close/abortsemantics(supportUDP,ortransparentlyusestreams)– Connectmaynotinvokeaccept!– Nohalf-closedconnections 22

Note:assumeTCPfall-backonly(assumingUDPfall-backlimitsthislist)

Page 23: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Result(latestversion):high-levelview/2

• Beinformedaboutsenderbufferrunningdry– Latedecisionaboutchoiceofdatatosend

• Configure:per-flowpriorities,network-widepriorities(DSCP),timeout,authentication,checksums

• Somequeries,e.g.relatedtopacketsizes• Sendmessages,receivebytestream

– Messagesstayintact,butmaybereorderedordropped(configuredbysender)

– Receivermustbeaware(detectboundaries)23

Page 24: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Movingtoasystemspecification...

• TAPScharteritem3:currentlyvariousdocuments/proposals– post-sockets:TLSfeatures,connectionmigration,variousotherextras,relatedtoApple'ssoon-to-be-shippedcode

– guidelinesforTAPSsystems,securitysurvey– NEATprojectoutputs(happyeyeballs,API,..)– socketintents(mostlyfocusedoninterfacechoice)

24

Page 25: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Solutionpart2:Code.

Theproject(andsoftware)

25

Page 26: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

WhatdoesNEAToffer?• Auser-spacelibrary forefficiente2enetworkInternetcomm.,designedtobeeasytouse– Thinkofitas"TAPSminimumset++"

• Easy,platform-independentaccesstothefeaturesofTCP,MPTCP,SCTP,UDP,UDP-LITEandmoreresearchythings viaacallback-basedAPI– Policysystemtocontroleverythingviajsonfiles

• One-sideddeploymentpossible,candofall-backstoTCPorUDP,cantalktonativepeers(e.g.TCP,SCTP,evenWebRTCbrowser!)

26

Page 27: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Internals:sequenceofeventsinNEAT

27

Page 28: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Happy

Eye-balls

28

Page 29: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Moredeploymentconsiderations• “Application”couldbealibraryormiddleware

– e.g.,pub-subdoesn’tneed100%reliability=>interestingresearchpossibilities("networkingmeetsdistributedsystems")

– wouldonlyexploitasubsetofTAPScapabilities,butre-compilinganappwiththenewmiddlewareversionwouldmaketheappuseTAPS

• RelatedNEATdevelopment:NEATsocketAPI– RunlegacyapplicationsoverNEATusing"withneat commandname params"– Benefitfrom:policysettings;transparentSCTP-stream-mapping

Non TAPS-enabled application

M's API

Legacy transport(TCP, UDP)

M's internals

Non TAPS-enabled application

M's API

Available transports (TCP, UDP, Minion,

SCTP...)

M + TAPS internalsMiddleware M Middleware M

29

Page 30: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Conclusion

• Wehave:– IETFTAPS– Apple– TheNEATproject,includingMozillaandthemainSCTPdevelopers

• ....allworkingtowardsareal transportlayer– Newflexibility,newresearchpossibilities

• PleasejointheNEATeffort– download,test,extendandplay!

30

node A node B

protocol Layer N+1

Layer N: services N1, N2

service interface

entitiy vertical comm.

horizontal comm.

N1

N2

N1

N2

Page 31: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Stuff!

• TAPS:– https://datatracker.ietf.org/wg/taps/

• NEAT:– http://www.neat-project.org– https://github.com/NEAT-project/neat– "NEAT:APlatform- andProtocol-IndependentInternetTransportAPI",

IEEECommunicationsMagazine55(6),2017.– "De-ossifyingtheInternetTransportLayer:ASurveyandFuture

Perspectives",IEEECommunicationsSurveys&Tutorials19(1),Firstquarter2017.

31

Page 32: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Questions,comments?

32

Page 33: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Backupslides

33

Page 34: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Sendingmessages,receivingabytestream

• Canwemakethiscombinationwork?– BecompatibletoTCPbutstillbenefitfrommessages?

• Alternativenotveryattractive:alwaystellinganapplication“sorry,youonlygetastreamhere”isnotmuchdifferentthansaying“sorry,useTCPinstead”– Let’sminimize#hoopsanappdeveloperhastojumpthrough

• Message-orientedTCPappsalreadyframetheirdata– Unnecessarytorepeatthisintransportlayer– Requirementtotellreceiverapp“hereisyourcompletemessage”createsa

majorlimitationandisoftenunnecessary

34

Page 35: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Application-Framed(AFra-)Bytestream

• NormalTCP-likebytestream API– Optional:someadditionalinformationprovidedbysenderapp

• Senderapp: handsoverastreamofbytes,informstransportaboutframeboundariesandrequirements(order,reliability,..)– Delimitedframesstayintact,inorder– Morerelaxedrulespossiblebetween frames– Delimitersassumedtobeknownbyapplication

• Receiverapp:receivesstreamofbytes– App-leveldelimitersturnitintomessages

• TCP=specialcase:nodelimitersused– Cantalkto“normal”TCPapplicationsonbothsides

35

Page 36: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Unorderedmessagedelivery:SCTP

36

API API

Msg 3

Msg 2

Msg 1

SenderappMsg 1

Msg 3

Msg 2

Receiverapp

• Informwhereframebegins• Configure:“unordered”

Block1Block3 Block2

App-definedheader.Couldalsobee.g.implicitknowledgeaboutsize

Justabytestream!

Appknowshowtoidentifymessages

Block1Block2 Block3

• Informwhereframeends

Page 37: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Unorderedmessagedelivery:TCP

37

API API

Msg 3

Msg 2

Msg 1

SenderappMsg 1

Msg 2

Msg 3

Receiverapp

• Informwhereframebegins• Configure:“unordered”

… TCPjustignoresthis!

Block1Block3 Block2

Justabytestream!

Appknowshowtoidentifymessages

Block1Block2 Block3

• Informwhereframeends

Page 38: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Unreliableunorderedmsg delivery:SCTP

38

API API

Msg 3

Msg 2

Msg 1

SenderappMsg 3

Msg 2

Receiverapp

• Informwhereframebegins• Configure:“unreliable,unordered”

Block1Block3 Block2

Justabytestream!

Appknowshowtoidentifymessages

Block2 Block3

• Informwhereframeends

Page 39: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Unreliableunorderedmsg delivery:TCP

39

API API

Msg 3

Msg 2

Msg 1

SenderappMsg 1

Msg 2

Receiverapp

• Informwhereframebegins• Configure:“unreliable,unordered”

… TCPjustignoresthis!

Block1Block3 Block2

Justabytestream!

Appknowshowtoidentifymessages

Block2 Block3

Block1

Msg 3

• Informwhereframeends

Page 40: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Unreliablemessagedelivery:SCTP,largemessages

40

API API

Msg 3

Msg 2

Msg 1

Senderapp Receiverapp

• Informwhereblockbegins• Configure:“Unreliable”

Block1Block3 Block2

Packets

• Informwhereframeends

Page 41: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Unreliablemessagedelivery:SCTP,largemessages

41

API API

SenderappMsg 2

Receiverapp

Justabytestream!

Appknowshowtoidentifymessages

Block1Block3 Block2

Packets

SCTP

Page 42: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

Init:

exampledecisiontree

-Willyouneedsomeformofreliability?Yes: SCTPorTCP canbeused.- Isanyofthefollowingusefultotheapplication?*Choosingascheduler,choosingpriorities*Configurablemessagereliability*Unorderedmessagedelivery*RequestnottodelaymessageSACKsYes:SCTPispreferred.No:- Isanyofthefollowingusefultotheapplication?*Handoveramessagetoreliablytransfer(possiblymultipletimes)beforeconnectionestablishment*Suggesttimeouttothepeer*NotificationofExcessiveRetransmissions(earlywarningbelowabortionthreshold)*NotificationofICMPerrormessagearrivalYes:TCPispreferred.No:SCTPandTCPareequallypreferable.

No: allprotocolscanbeused.- Isanyofthefollowingusefultotheapplication?*Specifychecksumcoverageusedbythesender*Specifymin.checksumcoveragerequiredbyreceiverYes:UDP-Liteispreferred;No:UDPispreferred. 42

Avoids,e.g.:1)chooseUDP2)appasksforreliability

Page 43: The Transport Layer is Dead – Long Live the Transport Layer!heim.ifi.uio.no/michawe/research/publications/inw2018... · 2018-02-02 · –post-sockets: TLS features, connection

TCP UDP SCTP

APP Class 0 APP Class 1 APP Class 2 APP Class 3

TCP Minion Experimental Mechanisms

Traditional Socket NEAT Socket

Middleware

NEAT Framework

NEAT User API

NEAT APP Support API

NEAT Policy

ManagerUSER

KERNEL

Policy Information

Base

Characteristic Information

Base

Policy Interface

SCTP/UDP

APP Class 4

PCAP RAW IP Experimental Mechanisms

KPI

Selection Components

H and SComponents

NEAT APP Support Module

IP

DIAG & STATS

NEAT Kernel Module

Policy Interface

Transport Components

SCTP/UDP

SPUD/UDP…

Userspace TransportExp

Mech

NEATarchitecture

43