1 / 41

Chapter 3: Transport Layer Part B

Course on Computer Communication and Networks, CTH/GU The slides are adaptation of the slides made available by the authors of the course’s main textbook. Chapter 3: Transport Layer Part B. full duplex data: bi-directional data flow in same connection MSS: maximum segment size

mimis
Download Presentation

Chapter 3: Transport Layer Part B

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Course on Computer Communication and Networks, CTH/GU The slides are adaptation of the slides made available by the authors of the course’s main textbook Chapter 3: Transport LayerPart B 3: Transport Layer

  2. full duplex data: bi-directional data flow in same connection MSS: maximum segment size connection-oriented: handshaking (exchange of control msgs) initssender & receiver state before data exchange flow control: sender will not overwhelm receiver congestion control: sender will not flood network with traffic (but still try to maximize throughput) point-to-point: one sender, one receiver reliable, in-order byte steam: no “message boundaries” pipelined: TCP congestion and flow control set window size TCP: Overview RFCs: 793,1122,1323, 2018, 5681 TransportLayer

  3. TCP segment structure 32 bits URG: urgent data (generally not used) counting by bytes of data (not segments!) source port # dest port # sequence number ACK: ACK # valid acknowledgement number head len not used receive window U A P R S F PSH: push data now (generally not used) # bytes rcvr willing to accept(flow control) checksum Urg data pointer RST, SYN, FIN: connection estab (setup, teardown commands) options (variable length) application data (variable length) Internet checksum (as in UDP) TransportLayer

  4. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Connection management Flow control and buffer space + timeout: how to estimate? Congestion control Principles TCP congestion control Roadmap Transport Layer 3: Transport Layer

  5. sequence numbers: “number” of first byte in segment’s data acknowledgements: seq # of next byte expected from other side cumulative ACK Q: how does receiver handle out-of-order segments? A: TCP spec doesn’t say, - up to implementor (keep, drop, …) outgoing segment from sender source port # source port # dest port # dest port # incoming segment to sender sequence number sequence number acknowledgement number acknowledgement number rwnd rwnd checksum checksum A TCP seq. numbers, ACKs window size N • sender sequence number space sent ACKed usable but not yet sent sent, not-yet ACKed (“in-flight”) not usable TransportLayer

  6. TCP seq. numbers, ACKs Host B Host A User types ‘C’ Seq=42, ACK=79, data = ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ Seq=79, ACK=43, data = ‘C’ host ACKs receipt of echoed ‘C’ Seq=43, ACK=80 simple telnet scenario TransportLayer

  7. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Connection management Flow control and buffer space + timeout: how to estimate? Congestion control Principles TCP congestion control Roadmap Transport Layer 3: Transport Layer

  8. before exchanging data, sender/receiver “handshake”: agree to establish connection (each knowing the other willing to establish connection) agree on connection parameters Connection Management application application • connection state: ESTAB • connection variables: • seq # client-to-server • server-to-client • rcvBuffer size • at server,client • connection state: ESTAB • connection Variables: • seq # client-to-server • server-to-client • rcvBuffer size • at server,client network network Socket clientSocket = newSocket("hostname","port number"); Socket connectionSocket = welcomeSocket.accept(); TransportLayer

  9. client state server state LISTEN choose init seq num, x send TCP SYN msg SYNSENT SYN=1, Seq=x choose initseqnum, y send TCP SYN/ACK msg, acking SYN SYN RCVD SYN=1, Seq=y ACK=1; ACKnum=x+1 received SYN/ACK(x) indicates server is live; send ACK for SYN/ACK; this segment may contain client-to-server data ESTAB ACK=1, ACKnum=y+1 received ACK(y) indicates client is live Setting up a connection: TCP 3-way handshake ESTAB TransportLayer

  10. client, server both close their side of the connection send TCP segment with FIN bit = 1 respond to received FIN with ACK on receiving FIN, ACK can be combined with own FIN simultaneous FIN exchanges can be handled RST: alternative way to close connection immediately, when error occurs TCP: closing a connection TransportLayer

  11. clientSocket.close() FIN=1, seq=x FIN_WAIT_1 can no longer send but can receive data CLOSE_WAIT ACK=1; ACKnum=x+1 can still send data FIN_WAIT_2 wait for server close LAST_ACK FIN=1, seq=y can no longer send data TIME_WAIT ACK=1; ACKnum=y+1 timed wait (typically 30s) CLOSED CLOSED TCP: client closing a connection client state server state ESTAB ESTAB TransportLayer

  12. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Connection management Flow control and buffer space + timeout: how to estimate? Congestion control Principles TCP congestion control Roadmap Transport Layer 3: Transport Layer

  13. flow control application OS receiver controls sender, so sender won’t overflow receiver’s buffer by transmitting too much, too fast TCP socket receiver buffers TCP flow control application process application might remove data from TCP socket buffers …. … slower than TCP is delivering (i.e. slower than sender is sending) TCP code IP code from sender receiver protocol stack TransportLayer

  14. receiver “advertises” free buffer space by including rwnd value in TCP header of receiver-to-sender segments RcvBuffersize set via socket options (typical default is 4096 bytes) many operating systems autoadjustRcvBuffer sender limits amount of unacked (“in-flight”) data to receiver’s rwndvalue guarantees receive buffer will not overflow buffered data free buffer space TCP flow control to application process RcvBuffer rwnd TCP segment payloads receiver-side buffering TransportLayer

  15. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Connection management Flow control and buffer space + timeout: how to estimate? Congestion control Principles TCP congestion control Roadmap Transport Layer 3: Transport Layer

  16. Q: how to set TCP timeout value? longer than RTT but RTT varies too short: premature timeout, unnecessary retransmissions too long: slow reaction to segment loss Q: how to estimate RTT? SampleRTT: measured time from segment transmission until ACK receipt ignore retransmissions SampleRTTwill vary, want a “smoother” estimatedRTT average several recent measurements, not just current SampleRTT TCP round trip time, timeout TransportLayer

  17. TCP round trip time, timeout EstimatedRTT = (1-)*EstimatedRTT + *SampleRTT • exponential weighted moving average • influence of past sample decreases exponentially fast • typical value:  = 0.125 RTT:gaia.cs.umass.edutofantasia.eurecom.fr RTT (milliseconds) sampleRTT EstimatedRTT time (seconds) TransportLayer

  18. timeout:EstimatedRTT plus “safety margin” large variation in EstimatedRTT -> larger safety margin estimate SampleRTT deviation from EstimatedRTT: TCP round trip time, timeout DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| (typically,  = 0.25) TimeoutInterval = EstimatedRTT + 4*DevRTT estimated RTT “safety margin” TransportLayer

  19. Seq=100, 20 bytes of data ACK=120 ACK=100 TCP: retransmission scenarios Host B Host B Host A Host A SendBase=92 Seq=92, 8 bytes of data Seq=92, 8 bytes of data timeout timeout ACK=100 X Seq=92, 8 bytes of data Seq=92, 8 bytes of data SendBase=100 SendBase=120 ACK=100 ACK=120 SendBase=120 lost ACK scenario premature timeout TransportLayer

  20. TCP ACK generation[RFC 1122, RFC 5681] TCP Receiver action Delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK (windows 200 ms) immediately send single cumulative ACK send(duplicate) ACK, indicating seq. # of next expected byte immediate send ACK if segment starts at lower end of gap Event in-order segment arrival, no gaps, everything else already ACKed in-order segment arrival, no gaps, one delayed ACK pending out-of-order segment arrival higher-than-expect seq. # gap detected arrival of segment that partially or completely fills gap 3: Transport Layer

  21. time-out period often relatively long: long delay before resending lost packet IMPROVEMENT: detect lost segments via duplicate ACKs sender sends many segments (pipelining) if a segment is lost, there will likely be many duplicate ACKs. TCP fast retransmit (RFC 5681) TCP fast retransmit if sender receives 3 duplicate ACKs for same data • resend unacked segment with smallest seq # • likely that unacked segment lost, so don’t wait for timeout Implicit NAK! Q: Why need at least 3? TransportLayer

  22. timeout ACK=100 ACK=100 ACK=100 ACK=100 TCP fast retransmit Host B Host A Seq=92, 8 bytes of data Seq=100, 20 bytes of data X Seq=100, 20 bytes of data fast retransmit after sender receipt of triple duplicate ACK TransportLayer

  23. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Connection management Flow control and buffer space + timeout: how to estimate? Congestion control Principles TCP congestion control Roadmap Transport Layer 3: Transport Layer

  24. congestion: informally: “too many sources sending too much data too fast for network to handle” manifestations: lost packets (buffer overflow at routers) long delays (queueing in router buffers) Principles of congestion control • different from flow control! TransportLayer

  25. two senders, two receivers, average rate of data is lin one router, infinite buffers output link capacity: R (no retransmission in the “picture” yet) maximum per-connection throughput: R/2 R/2 lout delay lin R/2 lin R/2 Causes/costs of congestion: scenario 1 original data: lin throughput:lout Host A unlimited shared output link buffers Host B • large delays as arrival rate, lin, approaches capacity TransportLayer

  26. when sending at R/2, some packets are retransmissions including duplicated that are delivered! lin Causes/costs of congestion: scenario 2 Realistic: duplicates • packets can be lost, dropped at router due to full buffers • sender times out prematurely, sending twocopies, both of which are delivered R/2 lout R/2 “costs” of congestion: • more work (retrans) for given “goodput” (application-level throughput) • unneeded retransmissions: links carry multiple copies of pkt TransportLayer

  27. Causes/costs of congestion: scenario 3 C/2 lout lin’ another “cost” of congestion: • when packets dropped, any “upstream transmission capacity used for that packet was wasted! TransportLayer

  28. end-end congestion control: no explicit feedback from network congestion inferred from end-system observed loss, delay approach taken by TCP network-assisted congestion control: routers provide feedback to end systems single bit indicating congestion explicit rate for sender to send at Approaches towards congestion control two broad approaches towards congestion control: TransportLayer

  29. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Connection management Flow control and buffer space + timeout: how to estimate? Congestion control Principles TCP congestion control Roadmap Transport Layer 3: Transport Layer

  30. cwnd ~ ~ RTT TCP congestion control: additive increase multiplicative decrease • end-end control (no network assistance), sender limits transmission • How does sender perceive congestion? • loss = timeout or 3 duplicate acks • TCP sender reduces rate (CongWin) then • additive increase: increase cwnd by 1 MSS every RTT until loss detected • multiplicative decrease: cut cwndin half after loss • To start with: slow start rate bytes/sec additively increase window size … …. until loss occurs (then cut window in half) AIMD saw tooth behavior: probing for bandwidth cwnd: TCP sender congestion window size time TransportLayer

  31. when connection begins, increase rate exponentially until first loss event: initially cwnd = 1 MSS double cwnd every RTT done by incrementing cwnd for every ACK received summary:initial rate is slow but ramps up exponentially fast time TCP Slow Start Host B Host A one segment RTT two segments four segments TransportLayer

  32. Q: when should the exponential increase switch to linear? A: when cwnd gets to 1/2 of its value before timeout. Implementation: variable ssthresh(slow start threshold) on loss event, ssthresh is set to 1/2 of cwndjust before loss event TCP cwnd: from exp. to linear growth TransportLayer

  33. Fast recovery (Reno) Session’sexperience

  34. principles behind transport layer services: multiplexing, demultiplexing reliable data transfer flow control congestion control instantiation, implementation in the Internet UDP TCP next: leaving the network “edge” (application, transport layers) into the network “core” Chapter 3: summary TransportLayer

  35. Somereviewquestions on this part • DescribeTCP’sflowcontrol • WhydoesTCp do fast retransmitupon a 3rd ack and not a 2nd? • DescribeTCP’scongestioncontrol: principle, method for detectionofcongestion, reaction. • Can a TCP’s session sending rate increaseindefinitely? • Whydoes TCP needconnection management? • Whydoes TCP usehandshaking in the start and the end ofconnection? • Canan applicationhavereliable data transfer if it uses UDP? How or why not? 3: Transport Layer

  36. Reading instructionschapter 3 • KuroseRossbook • Otherresources (further, optionalstudy) • Eddie Kohler, Mark Handley, and Sally Floyd. 2006. Designing DCCP: congestioncontrolwithoutreliability. SIGCOMM Comput. Commun. Rev. 36, 4 (August 2006), 27-38. DOI=10.1145/1151659.1159918 http://doi.acm.org/10.1145/1151659.1159918 • http://research.microsoft.com/apps/video/default.aspx?id=104005 TransportLayer

  37. Q:How long does it take to receive an object from a Web server after sending a request? TCP connection establishment data transfer delay Notation, assumptions: Assume one link between client and server of rate R Assume: fixed congestion window, W segments S: MSS (bits) O: object size (bits) no retransmissions (no loss, no corruption) Receiver has unbounded buffer TCP delay modeling (slow start– related) 3: Transport Layer

  38. TCP delay Modeling: simplified, fixed window K:= O/WS Case 2:WS/R < RTT + S/R: wait for ACK after sending window’s worth of data sent delay= 2RTT + O/R + (K-1)[S/R + RTT - WS/R] Case 1:WS/R > RTT + S/R: ACK for first segment in window returns before window’s worth of data nsent delay= 2RTT + O/R 3: Transport Layer

  39. TCP Delay Modeling: Slow Start • Delay components: • 2 RTT for connection estab and request • O/R to transmit object • time server idles due to slow start • Server idles: P =min{K-1,Q} times • where • Q = #times server stalls until cong. window is larger than a “full-utilization” window (if the object were of unbounded size). • - K = #(incremental-sized) congestion-windows that “cover” the object. • Example: • O/S = 15 segments • K = 4 windows • Q = 2 • Server idles P = min{K-1,Q} = 2 times 3: Transport Layer

  40. TCP Delay Modeling (slow start - cont) 3: Transport Layer

  41. TCP Delay Modeling (4) Recall K = number of windows that cover object How do we calculate K ? Calculation of Q, number of idles for infinite-size object, is similar. 3: Transport Layer

More Related