3. Transport Layer - UMass Amherst

2y ago
22 Views
2 Downloads
3.04 MB
140 Pages
Last View : Today
Last Download : 3m ago
Upload by : Adalynn Cowell
Transcription

3. Transport LayerComputerNetworking: A TopDown Approach6th editionJim Kurose, Keith RossAddison-WesleyMarch 2012All material copyright 1996-2012J.F Kurose and K.W. Ross, All Rights ReservedTransport Layer 3-1

3. Transport Layer: Goalsour goals:v understandprinciples behindtransport layerservices:§ multiplexing,demultiplexing§ reliable data transfer§ flow control§ congestion controlv learn about Internettransport layer protocols:§ UDP: connectionlesstransport§ TCP: connection-orientedreliable transport§ TCP congestion controlTransport Layer 3-2

3. Transport Layer: Outline3.1 transport-layerservices3.2 multiplexing anddemultiplexing3.3 connectionlesstransport: UDP3.4 principles of reliabledata transfer3.5 connection-orientedtransport: TCP§ § § § segment structurereliable data transferflow controlconnection management3.6 principles of congestioncontrol3.7 TCP congestion controlTransport Layer 3-3

Transport services and protocolsv v v provide logical communicationbetween app processesrunning on different hoststransport protocols run inend systems§ send side: breaks appmessages into segments,passes to network layer§ recv side: reassemblessegments into messages,passes to app layermore than one transportprotocol available to apps§ Internet: TCP and UDPapplicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalTransport Layer 3-4

Transport vs. network layerv v network layer: logicalcommunicationbetween hoststransport layer: logicalcommunicationbetween processes§ relies on and enhancesnetwork layer serviceshousehold analogy:12 kids in Ann’s house sendingletters to 12 kids in Bill’shouse:v hosts housesv processes kidsv app messages letters inenvelopesv transport protocol Annand Bill who demux to inhouse siblingsv network-layer protocol postal serviceTransport Layer 3-5

Internet transport-layer protocolsv reliable, in-orderdelivery (TCP)§ congestion control§ flow control§ connection setupv unreliable, unordereddelivery: UDP§ no-frills extension of“best-effort” IPv services not available:applicationtransportnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalapplicationtransportnetworkdata linkphysical§ delay guarantees§ bandwidth guaranteesTransport Layer 3-6

3. Transport Layer: Outline3.1 transport-layerservices3.2 multiplexing anddemultiplexing3.3 connectionlesstransport: UDP3.4 principles of reliabledata transfer3.5 connection-orientedtransport: TCP§ § § § segment structurereliable data transferflow controlconnection management3.6 principles of congestioncontrol3.7 TCP congestion controlTransport Layer 3-7

Multiplexing/demultiplexingmultiplexing at sender:handle data from multiplesockets, add transport header(later used for demultiplexing)demultiplexing at receiver:use header info to deliverreceived segments to lTransport Layer 3-8

How demultiplexing worksv host receives IP datagrams§ each datagram has sourceand destination IP address§ each datagram carries onetransport-layer segment§ each segment has sourceand destination port numberv host uses IP addresses &port numbers to directsegment to right socket32 bitssource port #dest port #other header fieldsapplicationdata(payload)TCP/UDP segment formatTransport Layer 3-9

Connectionless demultiplexingv recall: created socket hashost-local port #:v DatagramSocket mySocket1 new DatagramSocket(12534);v when host receives UDPsegment:§ checks destination IP andport # in segment§ directs UDP segment tosocket bound to that(IP,port)recall: when creatingdatagram to send intoUDP socket, must specify§ destination IP address§ destination port #IP datagrams with samedest. (IP, port), but differentsource IP addresses and/or source port numberswill be directed to samesocketTransport Layer 3-10

Connectionless demux: exampleDatagramSocketmySocket2 newDatagramSocket(9157);DatagramSocketserverSocket gramSocketmySocket1 sicallinkphysicalphysicalsource port: 6428dest port: 9157source port: 9157dest port: 6428source port: ?dest port: ?source port: ?dest port: ?Transport Layer 3-11

Connection-oriented demuxv TCP socket identifiedby 4-tuple:§ § § § v source IP addresssource port numberdest IP addressdest port numberdemux: receiver usesall four values to directsegment to right socketv server host has manysimultaneous TCP sockets:§ each socket identified by itsown 4-tuplev web servers have differentsocket each client§ non-persistent HTTP willhave different socket foreach requestTransport Layer 3-12

Connection-oriented demux: exampleserver socket, also port t: IPaddress Atransporttransportserver: IPaddress Bsource IP,port: B,80dest IP,port: A,9157source IP,port: A,9157dest IP, port: B,80three segments, all destined to IP address: B,dest port: 80 are demultiplexed to different socketsphysicalsource IP,port: C,5775dest IP,port: B,80host: IPaddress Csource IP,port: C,9157dest IP,port: B,80Transport Layer 3-13

Connection-oriented demux: examplethreaded serverserver socket, also port knetworklinknetworklinkphysicallinkphysicalhost: IPaddress Atransporttransportserver: IPaddress Bsource IP,port: B,80dest IP,port: A,9157source IP,port: A,9157dest IP, port: B,80physicalsource IP,port: C,5775dest IP,port: B,80host: IPaddress Csource IP,port: C,9157dest IP,port: B,80Transport Layer 3-14

3. Transport Layer: Outline3.1 transport-layerservices3.2 multiplexing anddemultiplexing3.3 connectionlesstransport: UDP3.4 principles of reliabledata transfer3.5 connection-orientedtransport: TCP§ § § § segment structurereliable data transferflow controlconnection management3.6 principles of congestioncontrol3.7 TCP congestion controlTransport Layer 3-15

UDP: User Datagram Protocol [RFC 768]v v no frills, bare bonestransport protocol for“best effort” service,UDP segments may be:§ lost§ delivered out-of-orderconnectionless:§ no sender-receiverhandshaking§ each UDP segmenthandled independentlyv UDP uses:§ streaming multimediaapps (loss tolerant, ratesensitive)§ DNS§ SNMPv reliable transfer overUDP:§ add reliability atapplication layer§ application-specific errorrecovery!Transport Layer 3-16

UDP: segment header32 bitssource port #dest port #lengthchecksumapplicationdata(payload)length, in bytes ofUDP segment,including headerwhy is there a UDP?v v v UDP segment formatv no connectionestablishment (which canadd delay)simple: no connectionstate at sender, receiversmall header sizeno congestion control:UDP can blast away asfast as desiredTransport Layer 3-17

UDP checksumGoal: detect “errors” (flipped bits) in segmentssender:receiver:v v v v treat segment contents,including header fields,as sequence of 16-bitintegerschecksum: addition(one’s complementsum) of segmentcontentssender puts checksumvalue into UDPchecksum fieldv compute checksum ofreceived segmentcheck if computedchecksum equals checksumfield value:§ NO - error detected§ YES - no error detected.But maybe errorsnonetheless? More later .Transport Layer 3-18

Internet checksum: exampleexample: add two 16-bit integers1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1Note: when adding numbers, a carryout from the mostsignificant bit needs to be added to the resultTransport Layer 3-19

Q1: Sockets and multiplexingv TCP uses more information in packet headers inorder to demultiplex packets compared to UDP.A. TrueB. FalseTransport Layer 3-20

Q2: Sockets UDPv Suppose we use UDP instead of TCP underHTTP for designing a web server where allrequests and responses fit in a single packet.Suppose a 100 clients are simultaneouslycommunicating with this web server. How manysockets are respectively at the server and at eachclient?A. 1,1B. 2,1C. 200,2D. 100,1E. 101, 1Transport Layer 3-21

Q3: Sockets TCPv Suppose a 100 clients are simultaneouslycommunicating with (a traditional HTTP/TCP)web server. How many sockets are respectivelyat the server and at each client?A. 1,1B. 2,1C. 200,2D. 100,1E. 101, 1Transport Layer 3-22

Q4: Sockets TCPv Suppose a 100 clients are simultaneouslycommunicating with (a traditional HTTP/TCP)web server. Do all of the sockets at the serverhave the same server-side port number?A. YesB. NoTransport Layer 3-23

Q5: UDP checksumsv Let’s denote a UDP packet as (checksum, data)ignoring other fields for this question. Suppose asender sends (0010, 1110) and the receiverreceives (0011,1110). Which of the following istrue of the receiver?A. Thinks the packet is corrupted and discardsthe packet.B. Thinks only the checksum is corrupted anddelivers the correct data to the application.C. Can possibly conclude that nothing is wrongwith the packet.D. A and CTransport Layer 3-24

3. Transport Layer: Outline3.1 transport-layerservices3.2 multiplexing anddemultiplexing3.3 connectionlesstransport: UDP3.4 principles of reliabledata transfer3.5 connection-orientedtransport: TCP§ § § § segment structurereliable data transferflow controlconnection management3.6 principles of congestioncontrol3.7 TCP congestion controlTransport Layer 3-25

Principles of reliable data transferv important in application, transport, link layers§ top-10 list of important networking topics!v characteristics of unreliable channel will determinecomplexity of reliable data transfer protocol (rdt)Transport Layer 3-26

Principles of reliable data transferv important in application, transport, link layers§ top-10 list of important networking topics!v characteristics of unreliable channel will determinecomplexity of reliable data transfer protocol (rdt)Transport Layer 3-27

Principles of reliable data transferv important in application, transport, link layers§ top-10 list of important networking topics!v characteristics of unreliable channel will determinecomplexity of reliable data transfer protocol (rdt)Transport Layer 3-28

Reliable data transfer: getting startedrdt send(): called from above,(e.g., by app.). Passed data todeliver to receiver upper layersendsideudt send(): called by rdt,to transfer packet overunreliable channel to receiverdeliver data(): called byrdt to deliver data to upperreceivesiderdt rcv(): called when packetarrives on rcv-side of channelTransport Layer 3-29

Reliable data transfer: getting startedwe’ll:v incrementally develop sender, receiver sides ofreliable data transfer protocol (rdt)v consider only unidirectional data transfer§ but control info will flow on both directions!v use finite state machines (FSM) to specify sender,receiverevent causing state transitionactions taken on state transitionstate: when in this“state” next stateuniquely determinedby next eventstate1eventactionsstate2Transport Layer 3-30

rdt1.0: reliable transfer over a reliable channelv underlying channel perfectly reliable§ no bit errors§ no loss of packetsv separate FSMs for sender, receiver:§ sender sends data into underlying channel§ receiver reads data from underlying channelWait forcall fromaboverdt send(data)packet make pkt(data)udt send(packet)senderWait forcall frombelowrdt rcv(packet)extract (packet,data)deliver data(data)receiverTransport Layer 3-31

rdt2.0: channel with bit errorsv underlying channel may flip bits in packet§ checksum to detect bit errorsv v the question: how to recover from errors:§ acknowledgements (ACKs): receiver explicitly tells senderthat pkt received OK§ negative acknowledgements (NAKs): receiver explicitly tellssender that pkt had errors§ senderpkt onreceipt fromof NAKHowretransmitsdo humansrecover“errors”new mechanisms in rdt2.0 (beyond rdt1.0):during conversation?§ error detection§ receiver feedback: control msgs (ACK,NAK) rcvr senderTransport Layer 3-32

rdt2.0: channel with bit errorsv underlying channel may flip bits in packet§ checksum to detect bit errorsv v the question: how to recover from errors:§ acknowledgements (ACKs): receiver explicitly tells senderthat pkt received OK§ negative acknowledgements (NAKs): receiver explicitly tellssender that pkt had errors§ sender retransmits pkt on receipt of NAKnew mechanisms in rdt2.0 (beyond rdt1.0):§ error detection§ feedback: control msgs (ACK,NAK) from receiver tosenderTransport Layer 3-33

rdt2.0: FSM specificationrdt send(data)sndpkt make pkt(data, checksum)udt send(sndpkt)rdt rcv(rcvpkt) &&isNAK(rcvpkt)Wait forWait forcall fromACK orudt send(sndpkt)aboveNAKrdt rcv(rcvpkt) && isACK(rcvpkt)Λsenderreceiverrdt rcv(rcvpkt) &&corrupt(rcvpkt)udt send(NAK)Wait forcall frombelowrdt rcv(rcvpkt) &¬corrupt(rcvpkt)extract(rcvpkt,data)deliver data(data)udt send(ACK)Transport Layer 3-34

rdt2.0: operation with no errorsrdt send(data)snkpkt make pkt(data, checksum)udt send(sndpkt)rdt rcv(rcvpkt) &&isNAK(rcvpkt)Wait forWait forcall fromACK orudt send(sndpkt)aboveNAKrdt rcv(rcvpkt) && isACK(rcvpkt)Λrdt rcv(rcvpkt) &&corrupt(rcvpkt)udt send(NAK)Wait forcall frombelowrdt rcv(rcvpkt) &¬corrupt(rcvpkt)extract(rcvpkt,data)deliver data(data)udt send(ACK)Transport Layer 3-35

rdt2.0: error scenariordt send(data)snkpkt make pkt(data, checksum)udt send(sndpkt)rdt rcv(rcvpkt) &&isNAK(rcvpkt)Wait forWait forcall fromACK orudt send(sndpkt)aboveNAKrdt rcv(rcvpkt) && isACK(rcvpkt)Λrdt rcv(rcvpkt) &&corrupt(rcvpkt)udt send(NAK)Wait forcall frombelowrdt rcv(rcvpkt) &¬corrupt(rcvpkt)extract(rcvpkt,data)deliver data(data)udt send(ACK)Transport Layer 3-36

rdt2.0 has a fatal flaw!what happens if ACK/NAK corrupted?v v sender doesn’t knowwhat happened atreceiver!can’t just retransmit:possible duplicatehandling duplicates:v v v sender retransmitscurrent pkt if ACK/NAKcorruptedsender adds sequencenumber to each pktreceiver discards (doesn’tdeliver up) duplicate pktstop and waitsender sends one packet,then waits for receiverresponseTransport Layer 3-37

rdt2.1: sender, handles garbled ACK/NAKsrdt send(data)sndpkt make pkt(0, data, checksum)udt send(sndpkt)rdt rcv(rcvpkt) &&Wait forcall 0 fromaboverdt rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt)( corrupt(rcvpkt) isNAK(rcvpkt) )udt send(sndpkt)Wait forACK orNAK 0rdt rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt)Λrdt rcv(rcvpkt) &&( corrupt(rcvpkt) isNAK(rcvpkt) )udt send(sndpkt)ΛWait forACK orNAK 1Wait forcall 1 fromaboverdt send(data)sndpkt make pkt(1, data, checksum)udt send(sndpkt)Transport Layer 3-38

rdt2.1: receiver, handles garbled ACK/NAKsrdt rcv(rcvpkt) && notcorrupt(rcvpkt)&& has seq0(rcvpkt)rdt rcv(rcvpkt) && (corrupt(rcvpkt)extract(rcvpkt,data)deliver data(data)sndpkt make pkt(ACK, chksum)udt send(sndpkt)rdt rcv(rcvpkt) && (corrupt(rcvpkt)sndpkt make pkt(NAK, chksum)udt send(sndpkt)rdt rcv(rcvpkt) &¬ corrupt(rcvpkt) &&has seq1(rcvpkt)sndpkt make pkt(ACK, chksum)udt send(sndpkt)sndpkt make pkt(NAK, chksum)udt send(sndpkt)Wait for0 frombelowWait for1 frombelowrdt rcv(rcvpkt) && notcorrupt(rcvpkt)&& has seq1(rcvpkt)rdt rcv(rcvpkt) &¬ corrupt(rcvpkt) &&has seq0(rcvpkt)sndpkt make pkt(ACK, chksum)udt send(sndpkt)extract(rcvpkt,data)deliver data(data)sndpkt make pkt(ACK, chksum)udt send(sndpkt)Transport Layer 3-39

Transport Layer 3-40

rdt2.1: discussionQ: Do we really need both ACKs and NACKs?sender:v seq # added to pktv two seq. #’s (0,1) willsuffice. Why?v must check if receivedACK/NAK corruptedv twice as many states§ state must“remember” whether“expected” pkt shouldhave seq # of 0 or 1receiver:v must check if receivedpacket is duplicate§ state indicates whether0 or 1 is expected pktseq #v note: receiver can notknow if its last ACK/NAK received OK atsenderTransport Layer 3-41

rdt2.2: a NAK-free protocolv v same functionality as rdt2.1, using ACKs onlyinstead of NAK, receiver sends ACK for last pktreceived OK§ receiver must explicitly include seq # of pkt being ACKedv duplicate ACK at sender results in same action asNAK: retransmit current pktTransport Layer 3-42

rdt2.2: sender, receiver fragmentsrdt send(data)sndpkt make pkt(0, data, checksum)udt send(sndpkt)rdt rcv(rcvpkt) &&( corrupt(rcvpkt) Wait forWait forisACK(rcvpkt,1) )ACKcall 0 from0udt send(sndpkt)abovesender FSMfragmentrdt rcv(rcvpkt) &&(corrupt(rcvpkt) has seq1(rcvpkt))udt send(sndpkt)Wait for0 frombelowrdt rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt,0)receiver FSMfragmentΛrdt rcv(rcvpkt) && notcorrupt(rcvpkt)&& has seq1(rcvpkt)extract(rcvpkt,data)deliver data(data)sndpkt make pkt(ACK1, chksum)udt send(sndpkt)Transport Layer 3-43

rdt3.0: channels with errors and lossnew assumption:underlying channel canalso lose packets(data, ACKs)§ checksum, seq. #,ACKs, retransmissionswill be of help butnot enoughapproach: sender waits“reasonable” amount oftime for ACKv v v retransmits if no ACKreceived in this timeif pkt (or ACK) just delayed(not lost):§ retransmission will beduplicate, but seq. #’salready handles this§ receiver must specify seq# of pkt being ACKedrequires countdown timerTransport Layer 3-44

rdt3.0 senderrdt send(data)sndpkt make pkt(0, data, checksum)udt send(sndpkt)start timerrdt rcv(rcvpkt)Λrdt rcv(rcvpkt) &&( corrupt(rcvpkt) isACK(rcvpkt,1) )ΛWaitforACK0Wait forcall 0fromaboverdt rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt,1)timeoutudt send(sndpkt)start timerrdt rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt,0)stop timerstop timertimeoutudt send(sndpkt)start timerrdt rcv(rcvpkt) &&( corrupt(rcvpkt) isACK(rcvpkt,0) )ΛWaitforACK1Wait forcall 1 fromaboverdt send(data)rdt rcv(rcvpkt)Λsndpkt make pkt(1, data, checksum)udt send(sndpkt)start timerTransport Layer 3-45

rdt3.0 in actionreceiversendersend pkt0rcv ack0send pkt1rcv ack1send pkt0pkt0ack0pkt1ack1pkt0ack0(a) no losssend pkt0rcv pkt0send ack0rcv pkt1send ack1rcv pkt0send ack0receiversenderrcv ack0send pkt1pkt0ack0rcv pkt0send ack0pkt1Xlosstimeoutresend pkt1rcv ack1send pkt0pkt1ack1pkt0ack0rcv pkt1send ack1rcv pkt0send ack0(b) packet lossTransport Layer 3-46

rdt3.0 in actionreceiversendersend pkt0pkt0rcv ack0send pkt1ack0pkt1ack1Xrcv pkt0send ack0timeoutresend pkt1pkt1rcv ack1send pkt0ack1pkt0ack0(c) ACK losssend pkt0rcv ack0send pkt1rcv pkt1send ack1lossrcv pkt1(detect duplicate)send ack1rcv pkt0send ack0receiversenderpkt0rcv pkt0send ack0ack0pkt1rcv pkt1send ack1ack1timeoutresend pkt1rcv ack1send pkt0rcv ack1send pkt0pkt1rcv pkt1pkt0ack1ack0pkt0(detect duplicate)ack0(detect duplicate)send ack1rcv pkt0send ack0rcv pkt0send ack0(d) premature timeout/ delayed ACKTransport Layer 3-47

Try writing rdt 3.0 receiver?v Use rdt rcv(), isCorrupt(), udt send(pkt), extract(.),deliver(.), make pkt(.), isAck(.), hasSeq(.)Transport Layer 3-48

Performance of rdt3.0v v rdt3.0 is correct, but performance stinkse.g.: 1 Gbps link, 15 ms prop. delay, 8000 bit packet:D 8000 bitsLR 109 bits/sec 8 microsecs§ U : utilization – fraction of time sender busy sendingUL/R.008 30.008RTT L / R 0.00027§ if RTT 30 msec, 1KB pkt every 30 msec: 33kB/sec thruputover 1 Gbps linkv network protocol limits use of physical resources!Transport Layer 3-49

rdt3.0: stop-and-wait operationsenderreceiverfirst packet bit transmitted, t 0last packet bit transmitted, t L / Rfirst packet bit arriveslast packet bit arrives, send ACKRTTACK arrives, send nextpacket, t RTT L / RU L/R.008 30.008RTT L / R 0.00027Transport Layer 3-50

Pipelined protocolspipelining: sender allows multiple, “in-flight”, yett

Transport Layer 3-3 3. Transport Layer: Outline 3.1 transport-layer services 3.2 multiple

Related Documents:

Web Hosting at UMass Amherst UMass Amherst Information Technology .

Alumnus Magazine Photograph Colleciton UMass (1947- ) UMass administration UMass alumni UMass history UMass staff UMass students Collection overview The once active photo morgue of the Alumnus Magazine, the Alumnus Magazine Photograph Collection cap

UMass Lowell Andy Mangels, Vice Chancellor for A&F UMass Amherst Mike Barone, Interim Vice Chancellor for Administration & Fiscal Services UMass Dartmouth Kathleen Kirleis, Vice Chancellor for A&F UMass Boston John Letchford, CIO University of Massachusetts President's Office Advisory Working Group Stephen Karam, UMass Board of .

UMass Engineering Find jobs, internships/co-ops and connect to the UMass Engineering Career Center for recruiting events, career fairs, workshops, helpful resources, and appointments! 1.o to G UMass.JoinHandshake.com 2. Click and login using your UMass Net ID and Password 3. Complete your profile.

University of Massachusetts Amherst Amherst, MA 01003 413-545-2222 director Dr. Wesley Autio 205 Paige Lab autio@umass.edu 413-545-2963 Administrative Assistant Registrar Carol Redmond Elizabeth Wiernasz 208 Paige Lab 211 Paige Lab 413-545-2222 413-545-3305 cbredmond@umass.edu wiernasz@cns.umass.edu Assistant to the Director Barbara Miller 201 .

from the Henry P. Kendall Foundation of Boston, Massachusetts we launched the Local Healthy UMass Food System Initiative that is the basis for this Guide. Mission of the Local Healthy UMass Food System Initiative Implement healthy, sustainable, and delicious menu items at UMass Amherst in a cost-effective manner.

at UMass Dartmouth" Friday, October 22, 5:30 pm UMass Dartmouth Inside the College of Visual and Performing Arts' voluminous atrium— and in conjunction with the closing of the Norman Ives exhibition— enjoy Kelvin Dickinson's presentation, "A Discovery of Opposites: Paul Rudolph & the Poetics of Brutalism at UMass Dartmouth." Mr.

Geburtstagskolloquium Reinhard Krause-Rehberg Andreas Wagner I Institute of Radiation Physics I www.hzdr.de Member of the Helmholtz AssociationPage Positrons slow down to thermal energies in 3-10 ps. After diffusing inside the matter positrons are trapped in vacancies or defects. Kinetics results in trapping rates about