TCP Details: Roadmap Data Flow Timeout/Retransmission

Slides:



Advertisements
Similar presentations
Introduction 1 Lecture 13 Transport Layer (Transmission Control Protocol) slides are modified from J. Kurose & K. Ross University of Nevada – Reno Computer.
Advertisements

2: Transport Layer 31 Transport Layer 3. 2: Transport Layer 32 TCP Flow Control receiver: explicitly informs sender of (dynamically changing) amount of.
Transport Layer3-1 TCP. Transport Layer3-2 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data flow in same connection.
Data Communications and Computer Networks Chapter 3 CS 3830 Lecture 16 Omar Meqdadi Department of Computer Science and Software Engineering University.
1 Chapter 3 Transport Layer. 2 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4.
1 Transport Layer Lecture 9 Imran Ahmed University of Management & Technology.
1 CS492B Project #2 TCP Tutorial # Jin Hyun Ju.
Transport Layer3-1 Summary of Reliable Data Transfer Checksums help us detect errors ACKs and NAKs help us deal with errors If ACK/NAK has errors sender.
Week 9 TCP9-1 Week 9 TCP 3 outline r 3.5 Connection-oriented transport: TCP m segment structure m reliable data transfer m flow control m connection management.
Transport Layer1 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r reliable, in-order byte steam: m no “message boundaries” r pipelined: m TCP congestion.
3: Transport Layer3b-1 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data flow in same connection m MSS: maximum.
Chapter 3 outline 3.1 transport-layer services
Transport Layer 3-1 Transport Layer r To learn about transport layer protocols in the Internet: m TCP: connection-oriented protocol m Reliability protocol.
Transport Layer Transport Layer: TCP. Transport Layer 3-2 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional.
Transport Layer 3-1 Transport Layer r To learn about transport layer protocols in the Internet: m TCP: connection-oriented protocol m Reliability protocol.
1 Announcement r Project 2 out m Much harder than project 1, start early! r Homework 2 due next Tuesday.
Transport Layer3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley,
3: Transport Layer3b-1 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data flow in same connection m MSS: maximum.
Announcement Project 2 out –Much harder than project 1, start early! Homework 2 due next Tu.
Chapter 3 Transport Layer
1 TCP latency modeling. 2 Q: How long does it take to receive an object from a Web server after sending a request? r TCP connection establishment r data.
The Future r Let’s look at the homework r The next test is coming the 19 th (just before turkey day!) r Monday will finish TCP canned slides r Wednesday.
Transport Layer3-1 Data Communication and Networks Lecture 7 Transport Protocols: TCP October 21, 2004.
EEC-484/584 Computer Networks Lecture 14 Wenbing Zhao (Part of the slides are based on Drs. Kurose & Ross ’ s slides for their Computer.
Announcement Homework 1 graded Homework 2 out –Due in a week, 1/30 Project 2 problems –Minet can only compile w/ old version of gcc (2.96). –Only tlab-login.
Transport Layer session 1 TELE3118: Network Technologies Week 9: Transport Layer Basics Some slides have been taken from: r Computer Networking:
TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 point-to-point:
A Simulation of Adaptive Packet Size in TCP Congestion Control Zohreh Jabbari.
Transport Layer 3-1 Chapter 3 Outline r 3.5 Connection-oriented transport: TCP m segment structure m reliable data transfer m flow control m connection.
Transport Layer3-1 TCP sender (simplified) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) event: data received from.
Network LayerII-1 RSC Part III: Transport Layer 3. TCP Redes y Servicios de Comunicaciones Universidad Carlos III de Madrid These slides are, mainly, part.
Transport Layer1 Reliable Transfer Ram Dantu (compiled from various text books)
3: Transport Layer3b-1 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data flow in same connection m MSS: maximum.
2: Transport Layer 21 Transport Layer 2. 2: Transport Layer 22 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data.
Transport Layer 3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 5 th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.
1 End-to-End Protocols (UDP, TCP, Connection Management)
Copyright © Lopamudra Roychoudhuri
1 TCP - Part II Relates to Lab 5. This is an extended module that covers TCP data transport, and flow control, congestion control, and error control in.
TCP: Transmission Control Protocol Part II : Protocol Mechanisms Computer Network System Sirak Kaewjamnong Semester 1st, 2004.
1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:
CS640: Introduction to Computer Networks Aditya Akella Lecture 15 TCP – III Reliability and Implementation Issues.
September 26 th, 2013 CS1652 The slides are adapted from the publisher’s material All material copyright J.F Kurose and K.W. Ross, All Rights.
ECE 4110 – Internetwork Programming
TCP. TCP ACK generation [RFC 1122, RFC 2581] Event at Receiver Arrival of in-order segment with expected seq #. All data up to expected seq # already.
TCP continued. Discussion – TCP Throughput TCP will most likely generate the saw tooth type of traffic. – A rough estimate is that the congestion window.
Transport Layer3-1 Chapter 3 outline r 3.1 Transport-layer services r 3.2 Multiplexing and demultiplexing r 3.3 Connectionless transport: UDP r 3.4 Principles.
Transport Layer3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 5 th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.
Transport Layer3-1 Transport Layer If you are going through Hell Keep going.
Transport Layer1 Goals: r understand principles behind transport layer services and protocols: m UDP m TCP Overview: r transport layer services r multiplexing/demultiplexing.
Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 A note on the use of these.
@Yuan Xue A special acknowledge goes to J.F Kurose and K.W. Ross Some of the slides used in this lecture are adapted from their.
Chapter 3 Transport Layer
COMP 431 Internet Services & Protocols
Chapter 3 outline 3.1 Transport-layer services
Chapter 5 TCP Sequence Numbers & TCP Transmission Control
CS 1652 Jack Lange University of Pittsburgh
TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 full duplex data:
Introduction to Networks
CS1652 TCP Jack Lange University of Pittsburgh
Review: UDP demultiplexing TCP demultiplexing Multiplexing?
Transport Layer Goals: Overview:
Chapter 5 TCP Transmission Control
TCP - Part II Relates to Lab 5. This is an extended module that covers TCP flow control, congestion control, and error control in TCP.
CS4470 Computer Networking Protocols
Chapter 3 outline 3.1 Transport-layer services
TCP 3: Transport Layer.
Transport Layer: Congestion Control
Chapter 3 Transport Layer
TCP: Transmission Control Protocol Part II : Protocol Mechanisms
Presentation transcript:

TCP Details: Roadmap Data Flow Timeout/Retransmission Interactive Bulk Data Timeout/Retransmission Slow Start/ Congestion Avoidance 3: Transport Layer

TCP connection: One Direction Application process W rite bytes TCP Send buffer Segment T ransmit segments Read Receive buffer … 3: Transport Layer

Data Transfer (Simplified One-Way) Sender Data (SequenceNum) Acknowledgment + AdvertisedWindow Receiver 3: Transport Layer

TCP Sender: Simplified State Machine event: data received from application above simplified sender, assuming one way data transfer no flow, congestion control create, send segment wait for event wait for event event: timer timeout for segment with seq # y retransmit segment event: ACK received, with ACK # y ACK processing 3: Transport Layer

TCP Sender: Simplified Pseudo-code 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 03 loop (forever) { 04 switch(event) 05 event: data received from application above 06 create TCP segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum + length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 compue new timeout interval for segment y 13 restart timer for sequence number y 14 event: ACK received, with ACK field value of y 15 if (y > sendbase) { /* cumulative ACK of all data up to y */ 16 cancel all timers for segments with sequence numbers < y 17 sendbase = y 18 } 19 else { /* a duplicate ACK for already ACKed segment */ 20 increment number of duplicate ACKs received for y 21 if (number of duplicate ACKS received for y == 3) { 22 /* TCP fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 26 } /* end of loop forever */ TCP Sender: Simplified Pseudo-code Simplified TCP sender 3: Transport Layer

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

simple telnet scenario TCP Interactive Data Telnet/Rlogin tend to send each interactive key stroke in a separate TCP packet *and* server side echos that same character back to be displayed on the local screen Note: ACK of data is piggy backed on echo of data Host A Host B 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 time simple telnet scenario 3: Transport Layer

TCP Interactive Data Return ACK will usually be delayed if no more typed characters to send Host A Host B User types ‘C’ Seq=42, ACK=79, data = ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ Seq=79, ACK=43, data = ‘C’ Ack not sent immediately; Delayed hoping to piggy back With data or other ACK host ACKs receipt of echoed ‘C’ Would be nice to capture a trace of this in ethereal – no rlogin for me though! Seq=43, ACK=80 simple telnet scenario 3: Transport Layer

Experiment: Interactive Data Use Ethereal to trace a telnet or rlogin session 3: Transport Layer

Small packets How big are these TCP packets containing a single byte of data? 1 byte data 20 bytes (at least) for TCP header 20 bytes for IP header < 3% data! Do we want to fill the pipeline with small packets like this? 3: Transport Layer

Nagle Algorithm If a TCP connection has outstanding data for which an acknowledgement has not yet been received, do not send small segments Instead wait for an acknowledgement to be received then send all data collected to that point If ACKs coming back rapidly (like on a LAN), data will be sent rapidly If ACKs coming back slowly (like on a WAN), will collect more data together in that time to send together 3: Transport Layer

Bulk Data Transfer Receiver may have trouble keeping up with sender Host A Host B Receiver may have trouble keeping up with sender Will send ACKs of data received but with reduced window sizes When window opens up (I.e. app reads data from kernel buffers), send a “window update” message ACK=1, win 3072 Seq=1, 1024 bytes data Seq=1025, 1024 bytes data Seq=2049, 1024bytes data ACK=3073, win 0 ACK=3073, win 3072 time 3: Transport Layer

Lost Window Update? What if the last window update message is lost? Receiver waiting for data Sender not allowed to send anything Solutions? Set timer on receiver after sending window update; If don’t here from sender retransmit Sender periodically sends 1 byte of data even if window is 0 Which do you think was chosen? Internet Principle? 3: Transport Layer

TCP Persist Timer Sender set persist timer when window size goes to 0 Host A Host B Sender set persist timer when window size goes to 0 When timer expires, sends a “window probe” message (TCP packets with 1 byte of data) If receiver still has window 0, it will send an ack but the ack will not cover the “illegal” 1 byte just sent Seq=100, 100 bytes data ACK=200, win 0 Persist Timer Seq=200, 1bytes data ACK=200, win 0 3: Transport Layer

Silly Window Syndrome Occurs when small amounts of data are exchanged over a connection instead of large amounts Sender only knows they can send X bytes of data Receiver can really take 2X but hasn’t had a chance to announce it; gets X bytes so can only advertise X again Solutions? Receiver doesn’t advertise small windows; Instead waits till larger window opens up Sender holds off sending data till larger amount accumulated Which? In this case both 3: Transport Layer

Preventing Silly Window Receiver will not advertise a larger window until the window can be increased by one full-sized segment or by half of the receiver’s buffer space whichever is smaller Sender waits to transmit until either a full sized segment (MSS) can be sent or at least half of the largest window ever advertised by the receiver can be sent or it can send everything in the buffer 3: Transport Layer

Bulk Data: Fully Utilizing the Link How do we fully utilize the link? (Hint: we saw this before) Need window large enough to fill the pipeline Window >= bandwidth * round trip time Note: If use window scaling option not limited to 64K 3: Transport Layer

Experiment: Bulk Data Use Ethereal to trace an ftp session 3: Transport Layer

Interactive vs Bulk Interactive tries to accumulate as much data together as possible without compromising acceptable interactive experience Delayed Acks Nagle Algorithm Bulk has no problem with accumulating data together, but can have problem with overwhelming the receiver Receiver Advertised Window Persist Timer Bulk also tries to fully utilize the link (interactive has no chance of doing that) 3: Transport Layer

Roadmap Data Flow Timeout and Retransmission Interactive Bulk Data Timeout and Retransmission Slow Start and Congestion Avoidance 3: Transport Layer

Timeout and Retransmission Receiver must acknowledge receipt of all packets Sender sets a timer if acknowledgement has not arrived before timer expires then sender will retransmit packet Adaptive retransmission: timer value computed as a function of average round trip times and variance Just makes sense if send a fax and want to know it gets there ask for an acknowledgeent of receipt wait for answer or acknowledgment if don’t hear anything for some time, resend 3: Transport Layer

TCP: retransmission scenarios (1) Host A Host B Host A Seq=92, 8 bytes data ACK=100 loss timeout time lost ACK scenario Host B X Seq=92, 8 bytes data X loss timeout Seq=92, 8 bytes data ACK=100 time lost data scenario 3: Transport Layer

TCP: retransmission scenarios (2) Host A Host A Host B Host B Seq=92, 8 bytes data Seq=92, 8 bytes data Seq=100, 20 bytes data Seq=100, 20 bytes data X loss Seq=92 timeout Seq=120, 20 bytes data ACK=100 Seq=100 timeout ACK=120 Seq=100 timeout ACK=100 ACK=100 Seq=92, 8 bytes data ACK=120 Seq=100, 20 bytes data time time premature timeout, cumulative ACKs Duplicate ACK, fast retransmit (really need 3 dup acks before fast retransmit) 3: Transport Layer

TCP Round Trip Time and Timeout Q: how to set TCP timeout value? longer than RTT note: RTT will vary too short: premature timeout unnecessary retransmissions too long: slow reaction to segment loss Q: how to estimate RTT? SampleRTT: note time when packet sent; when receive ACK, RTT = currentTime – sentTime Not 1:1 correspondence between segments sent and ACKs ignore retransmissions, cumulatively ACKed segments (Not part of original spec; Karn and Partridge 1987) SampleRTT will vary, want estimated RTT “smoother” use several recent measurements, not just current SampleRTT 3: Transport Layer

TCP Round Trip Time Estimate EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT Exponential weighted moving average Influence of given sample decreases exponentially fast Typical value of x: 0.1 (90% weight to accumulated average; 10% to new measurement) Larger x means adapts more quickly to new conditions Would this be good? Yes if real shift in base RTT; No if leads to jumpy reactions to transient conditions Which is more likely? 3: Transport Layer

Original TCP Timeout Calculation Setting the timeout EstimtedRTT plus “safety margin” large variation in EstimatedRTT -> larger safety margin Timeout = EstimatedRTT * DelayVarianceFactor Recommended DelayVarianceFactor = 2 Problems? Observe problems in the presence of wide variations in RTT [Jacobson1988] Hypothesis: Better if base Timeout on both mean and variance of RTT measurements The original algorithm had another flaw- when a TCP segment was sent more than once, it took SampleRTT to the time between the original transmission and the ACK. Assume for definiteness that TimeOut = 2*EstimatedRTT. Sketch a scenario in which no packets are lost but EstimatedRTT converges to a third of the true RTT. Hint: start with a sudden jump in the true RTT to just over the established TimeOut 3: Transport Layer

Jacobson/Karels Timeout Calculation Base on Mean and Variance Mean deviation good approximation of standard deviation but easier to compute (no square root ) EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT Error = |SampleRTT-EstimatedRTT| Deviation = Deviation + h*(Error – Deviation) Timeout = EstimatedRTT + 4*Deviation Recommended: x =0.125 (higher than for original); Timeout responds more rapidly to changes in RTT Recommended: h = 0.25 3: Transport Layer

Original vs Jacobson/Karels Experiment with a spreadsheet 3: Transport Layer

Flow Control vs Congestion Control Prevent senders from overrunning the capacity of the receivers to process incoming data Congestion Control Prevent multiple senders from injecting too much data into the network as a whole (causing links or switches to become overloaded) 3: Transport Layer

TCP Flow Control flow control receiver: explicitly informs sender of (dynamically changing) amount of free buffer space RcvWindow field in TCP segment sender: keeps the amount of transmitted, unACKed data less than most recently received RcvWindow sender won’t overrun receiver’s buffers by transmitting too much, too fast RcvBuffer = size or TCP Receive Buffer RcvWindow = amount of spare room in Buffer receiver buffering 3: Transport Layer

Principles of Congestion Control informally: “too many sources sending too much data too fast for network to handle” different from flow control! a top-10 problem! 3: Transport Layer

Congestion Prevention? In a connection-oriented network: Prevent congestion by requiring resources to be reserved in advance In a connectionless network: No prevention for congestion, just reaction to congestion (congestion control) 3: Transport Layer

Congestion Signals Lost packets:If there are more packets than resources (ex. Buffer space) along some path, then no choice but to drop some Delayed packets: Router queues get full and packets wait longer for service Explicit notification: Routers can alter packet headers to notify end hosts 3: Transport Layer

Congestion Collapse As number of packets entering network increases, number of packets arriving at destination increases but only up to a point Packet dropped in network => all the resources it used along the way are wasted => no forward progress Internet 1987 3: Transport Layer