1 / 66

Course on Computer Communication and Networks Lecture 5 Chapter 3; Transport Layer , Part B

This lecture covers transport layer services in the Internet, addressing and multiplexing/demultiplexing, connectionless transport with UDP, principles of reliable data transfer, and efficiency perspective with pipelined protocols and error control.

issacs
Download Presentation

Course on Computer Communication and Networks Lecture 5 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 Lecture 5 Chapter 3; Transport Layer, Part B EDA344/DIT 423, CTH/GU

  2. Roadmap • Transport layer services in Internet • Addressing, multiplexing/demultiplexing • Connectionless, unreliable transport: UDP • principles of reliable data transfer • Efficiency perspective • Next lecture: connection-oriented transport: TCP • reliable transfer • flow control • connection management • TCP congestion control

  3. pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged pkts range of sequence numbers must be increased buffering at sender and/or receiver Pipelined ack-based error-control protocols

  4. Pipelining: increased utilization sender receiver first packet bit transmitted, t = 0 last bit transmitted, t = L / R first packet bit arrives RTT last packet bit arrives, send ACK RTT = Round TripTime = 2 * Tpropagation last bit of 2nd packet arrives, send ACK last bit of 3rd packet arrives, send ACK ACK arrives, send next packet, t = RTT + L / R 3-packet pipelining increases stop&wait utilization by a factor of 3!

  5. Pipelined protocols: ack-based error control two generic forms (i.e. ack + book-keeping policies) to deal with lost data: • go-Back-n • selective repeat

  6. sender “window” of up to N, consecutive unack’edpktsallowed Go-Back-n receiver • Ack last correctly received pkt • ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK” • may receive duplicate ACKs • timer for oldest in-flight pkt • timeout(n): retransmit packet n and all higher seq # pkts in window

  7. 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 GBn in action https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/go-back-n-protocol/index.html sender receiver sender window (N=4) send pkt0 send pkt1 send pkt2 send pkt3 (wait) receive pkt0, send ack0 receive pkt1, send ack1 receive pkt3, discard, (re)send ack1 X loss rcv ack0, send pkt4 rcv ack1, send pkt5 0 1 2 3 4 5 6 7 8 receive pkt4, discard, (re)send ack1 ignore duplicate ACK receive pkt5, discard, (re)send ack1 pkt 2 timeout send pkt2 send pkt3 send pkt4 send pkt5 rcv pkt2, deliver, send ack2 rcv pkt3, deliver, send ack3 rcv pkt4, deliver, send ack4 rcv pkt5, deliver, send ack5

  8. Selective repeat: sender, receiver windows • receiver individually acknowledges received pkts • buffers pkts for eventual in-order delivery to upper layer • sender only resends pkts for which ACK not received • Requires timer for each unACKedpkt

  9. 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 345 6 7 8 0 1 2 34 5 6 7 8 0 1 2 3 4 5 6 7 8 Selective repeat in action https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/selective-repeat-protocol/index.html sender receiver sender window (N=4) send pkt0 send pkt1 send pkt2 send pkt3 (wait) receive pkt0, send ack0 receive pkt1, send ack1 receive pkt3, buffer, send ack3 X loss rcv ack0, send pkt4 rcv ack1, send pkt5 0 1 2 3 4 5 6 7 8 receive pkt4, buffer, send ack4 record ack3 arrived receive pkt5, buffer, send ack5 pkt 2 timeout send pkt2 record ack4 arrived rcv pkt2; deliver pkt2, pkt3, pkt4, pkt5; send ack2 record ack5 arrived Q: what happens when ack2 arrives?

  10. Roadmap • Transport layer services in Internet • Addressing, multiplexing/demultiplexing • Connectionless, unreliable transport: UDP • principles of reliable data transfer • Efficiency perspective: pipelined protocols & error control through go-back-n, selective-repeat • Sequence numbers • Next: connection-oriented transport: TCP • reliable transfer • flow control • connection management • TCP congestion control

  11. example: seq #’s: 0, 1, 2, 3 window size=3 pkt0 pkt1 0 1 2 3 0 1 2 pkt2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 pkt3 X 0 1 23 0 1 2 pkt0 will accept packet with seq number 0 (a) no problem pkt0 pkt1 0 1 2 3 0 1 2 pkt2 0 1 2 3 0 1 2 X Selective repeat:Sequence numbers 0 1 2 3 0 1 2 X timeout retransmit pkt0 X pkt0 will accept packet with seq number 0 0 1 23 0 1 2 (b) oops! 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 receiver window (after receipt) sender window (after receipt) • duplicate data accepted as new in (b) • Q: what relationship between seq # size and window size to avoid problem in (b)? receiver can’t see sender side. receiver behavior identical in both cases! something’s (very) wrong!

  12. What do Ack’sachievebesidesreliability? Question Flowcontrol: receiver can ack itsreceivingcapacity i.e. avoidswamping the receiver Flowcontrol: Sender/receiver (ienetworkedge) issue: S cares to not overwhelm R

  13. Ack-based pipelining => error-control & flow control at the same time!!! sender receiver first packet bit transmitted, t = 0 last bit transmitted, t = L / R first packet bit arrives RTT last packet bit arrives, send ACK last bit of 2nd packet arrives, send ACK last bit of 3rd packet arrives, send ACK ACK arrives, send next packet, t = RTT + L / R Flowcontrol: Sender/receiver problem; S caresto not overwhelm R

  14. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Retransmissions Connection management Flow control and buffer space Congestion control Principles TCP congestion control Roadmap Transport Layer

  15. point-to-point & full duplex data: one sender, one receiver bi-directional data flow in same connection MSS: maximum segment size connection-oriented, reliable, in-order byte steam: Needs handshaking (exchange of control msgs); initssender & receiver state before data exchange Flow&error control: ack-based, pipelined: (+ extra)congestion control: sender will not flood network TCP: Overview RFCs: 793,1122,1323, 2018, 5681

  16. 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 buffer(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)

  17. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Retransmissions Connection management Flow control and buffer space Congestion control Principles TCP congestion control Roadmap Transport Layer

  18. sequence numbers: “number” of first byte in segment’s data acknowledgements: seq # of next byte expected from other side cumulative ACK outgoing segment from sender source port # source port # dest port # dest port # TCP seq. numbers, ACKs incoming segment to sender sequence number sequence number acknowledgement number acknowledgement number rwnd rwnd checksum checksum A window size N • sender sequence number space sent ACKed usable but not yet sent sent, not-yet ACKed (“in-flight”) not usable

  19. TCP seq. numbers, ACKs Always ack next in-order expected byte 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 example scenario Based on telnet msg exchange

  20. Seq=100, 20 bytes of data Seq=100, 20 bytes of data timeout ACK=120 ACK=100 ACK=120 ACK=100 TCP: cumulative Ack - 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 X Seq=92, 8 bytes of data SendBase=100 Seq=120, 15 bytes of data SendBase=120 ACK=120 SendBase=120 Cumulative ACK (Premature) timeout

  21. TCP ACK generation[RFC 1122, RFC 5681] TCP Receiver action Delayed ACK. Wait max 500ms for next segment then send ACK immediately send single cumulative ACK send (duplicate) ACK, indicating seq. # of next expected byte 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

  22. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Retransmissions Connection management Flow control and buffer space Congestion control Principles TCP congestion control Roadmap Transport Layer

  23. network link physical application transport network link physical application transport network link physical application transport network link physical application transport network link physical segment segment Q: how to set TCP timeout value? • longer than end-to-end RTT • but that varies!!! • too short timeout: • premature, unnecessary retransmissions • too long: • slow reaction to loss

  24. TCP round trip time, timeout estimation 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) DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| TimeoutInterval = EstimatedRTT + 4*DevRTT (typically,  = 0.25) “safety margin” sampleRTT EstimatedRTT time (seconds)

  25. time-out can belong: long delay before resending lost packet IMPROVEMENT: detect lost segments via duplicate ACKs timeout ACK=100 ACK=100 ACK=100 TCP fast retransmit (RFC 5681) Host B Host A Seq=92, 8 bytes of data Seq=100, 20 bytes of data X 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 Seq=100, 20 bytes of data Implicit NAK! Q: Why need at least 3?

  26. Q: Is TCP statefulor stateless?

  27. Is it possible to have reliable transfer over UDP?

  28. reliable transfer over UDP? • add reliability at application layer • application-specific error recovery • But best to: not “reinvent “ TCP on top of UDP • i.e.. if you need TCP, use TCP  • i.e..: it is best to have protocol definitions and implementations for types of services needed (so that they are reused and not need to be implemented by each “user” separately and from scratch)

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

  30. before exchanging data, sender/receiver “handshake”: agree to establish connection + 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();

  31. TransportLayer 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 Reserve buffer SYN RCVD SYN=1, Seq=y ACK=1; ACKnum=x+1 received SYN/ACK(x) 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

  32. 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 TCP: closing a connection timed wait (typically 30s) CLOSED CLOSED client state server state ESTAB ESTAB simultaneous FINs can be handled RST: alternative way to close connection immediately, when error occurs

  33. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Retransmissions Connection management Flow control and buffer space Congestion control Principles TCP congestion control Roadmap Transport Layer

  34. 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 …. … what if slower than TCP is delivering (i.e. slower than sender is sending) TCP code IP code from sender receiver protocol stack

  35. receiver “advertises” free buffer space through rwnd value in header RcvBuffersize set via socket options (typical default 4 Kbytes) OS can autoadjustRcvBuffer sender limits unacked (“in-flight”) data to receiver’s rwndvalue s.t. receiver’s buffer will not overflow buffered data free buffer space source port # dest port # TCP flow control sequence number acknowledgement number rwnd checksum A to application process RcvBuffer rwnd TCP segment payloads receiver-side buffering To sender 3-36

  36. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Retransmissions Connection management Flow control and buffer space Congestion control Principles TCP congestion control Roadmap Transport Layer

  37. Differencebetweencongestioncontrol and flowcontrol? Question: Congestioncontrol= Avoidcongesting the network Congestion is network-coreissue in contrast to flow-control, which is sender-receiver (i.e. networkedge) issue

  38. congestion: informally: “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

  39. Distinctionbetweenflowcontrol and congestioncontrol Fig. A. Tanenbaum Computer Networks Need for congestioncontrol Need for flowcontrol

  40. Ideal per-connection throughput: R/2 (if 2 connections) R/2 lout delay Causes/costs of congestion lin R/2 lin R/2 original data: lin throughput:lout Host A output link capacity: R link buffers Host B • Recall queueing behaviour + losses • Losses => retransmissions => even higher load… • reality 

  41. end-end congestion control: no explicit feedback from network congestion inferred from end-system observed loss, delay network-assisted congestion control: routers collaborate for optimal rates + provide feedback to end-systems eg. a single bit indicating congestion explicit rate for sender to send at Approaches towards congestion control Not present in Internet’s networklayerprotocols approach taken by TCP

  42. transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP reliable transfer Acknowledgements Retransmissions Connection management Flow control and buffer space Congestion control Principles TCP congestion control Roadmap Transport Layer

  43. TCP congestion control: additive increase multiplicative decrease (AIMD) cwnd ~ ~ RTT • end-end control (no network assistance), sender limits transmission • How does sender perceive congestion? • loss = timeout or 3 duplicate acks • TCP sender reduces rate (Congestion Window) 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

  44. when connection begins, increase rate exponentially until first loss event: initially cwnd = 1 MSS double cwnd every ack of previous “batch” done by incrementing cwnd for every ACK received summary:initial rate is slow but ramps up exponentially fast then, saw-tooth TCP Slow Start time Host B Host A one segment RTT two segments four segments

  45. Implementation: variable ssthresh(slow start threshold) on loss event, ssthresh = ½*cwnd TCP cwnd: from exponential to linear growth + reacting to loss Reno: loss indicated by timeout or 3 duplicate ACKs: cwnd is cut in half; then grows linearly Non-optimized: loss indicated by timeout: cwnd set to 1 MSS; then window slow start to threshold, then grows linearly

  46. TCP’s throughput (Fast recovery - Reno) Session’s experience

  47. 2 problems, joint solution: limit the rate of the sender! (or ”Howmanywindowsdoes a TCP’ssendermaintain?”) rwnd cwnd cwnd, rwnd Fig. A. Tanenbaum Computer Networks Need for congestioncontrol Need for flowcontrol

  48. sender limits transmission: cwnd is dynamic, function of perceived network congestion, rwnddymanically limited by receiver’s buffer space TCP sending rate: send min {cwnd, rwnd} bytes, wait for ACKS, then send more < TCP combined flow-ctrl, congestion ctrl windows sender sequence number space Min{cwnd, rwnd} last byte ACKed last byte sent sent, not-yet ACKed (“in-flight”) LastByteSent- LastByteAcked Min{cwnd, rwnd}

  49. fairness goal: if K TCP sessions share same bottleneck link of bandwidth R, each should have average rate of R/K TCP Fairness TCP connection 1 bottleneck router capacity R TCP connection 2

  50. Q: Cana TCP implementation deviate from the Congestion-Control standard?

More Related