CS 268: Lecture 5 (TCP Congestion Control)

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

TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
Transmission Control Protocol (TCP)
UDP & TCP Where would we be without them!. UDP User Datagram Protocol.
1 CS492B Project #2 TCP Tutorial # Jin Hyun Ju.
1 TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
1 TCP Congestion Control. 2 TCP Segment Structure source port # dest port # 32 bits application data (variable length) sequence number acknowledgement.
1 CS 4396 Computer Networks Lab Transmission Control Protocol (TCP) Part I.
TCP: Transmission Control Protocol Overview Connection set-up and termination Interactive Bulk transfer Timers Improvements.
Transport Layer – TCP (Part1) Dr. Sanjay P. Ahuja, Ph.D. Fidelity National Financial Distinguished Professor of CIS School of Computing, UNF.
Shivkumar Kalyanaraman Rensselaer Polytechnic Institute 1 TCP Congestion Control: AIMD and Binomial Shivkumar Kalyanaraman Rensselaer Polytechnic Institute.
CS 268: Congestion Control and Avoidance Kevin Lai Feb 4, 2002.
CSCE 515: Computer Network Programming Chin-Tser Huang University of South Carolina.
CSCE 515: Computer Network Programming Chin-Tser Huang University of South Carolina.
Lecture 7 Transport Protocols: UDP, TCP
TCP. Learning objectives Reliable Transport in TCP TCP flow and Congestion Control.
1 EE 122: Advanced TCP Ion Stoica TAs: Junda Liu, DK Moon, David Zats (Materials with thanks to Vern Paxson,
TCOM 509 – Internet Protocols (TCP/IP) Lecture 04_b Transport Protocols - TCP Instructor: Dr. Li-Chuan Chen Date: 09/22/2003 Based in part upon slides.
TCP : Transmission Control Protocol Computer Network System Sirak Kaewjamnong.
TCP Lecture 13 November 13, TCP Background Transmission Control Protocol (TCP) TCP provides much of the functionality that IP lacks: reliable service.
TCP1 Transmission Control Protocol (TCP). TCP2 Outline Transmission Control Protocol.
CSE679: Computer Network Review r Review of the uncounted quiz r Computer network review.
EE 122: Congestion Control and Avoidance Kevin Lai October 23, 2002.
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.
Lecture 9 – More TCP & Congestion Control
What is TCP? Connection-oriented reliable transfer Stream paradigm
Computer Networking Lecture 18 – More TCP & Congestion Control.
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.
CIS679: TCP and Multimedia r Review of last lecture r TCP and Multimedia.
CS 268: Lecture 5 (TCP Congestion Control) Ion Stoica February 4, 2004.
CS 268: Transport and Congestion Control Lecture 5 February 2, 2005.
Transmission Control Protocol (TCP) TCP Flow Control and Congestion Control CS 60008: Internet Architecture and Protocols Department of CSE, IIT Kharagpur.
CSEN 404 Transport Layer II Amr El Mougy Lamia AlBadrawy.
1 TCP ProtocolsLayer name DNSApplication TCP, UDPTransport IPInternet (Network ) WiFi, Ethernet Link (Physical)
DMET 602: Networks and Media Lab Amr El Mougy Yasmeen EssamAlaa Tarek.
Other Methods of Dealing with Congestion
Distributed Systems 11. Transport Layer
DMET 602: Networks and Media Lab
TCP - Part II Relates to Lab 5. This is an extended module that covers TCP flow control, congestion control, and error control in TCP.
TCP Lecture 4.
Chapter 3 outline 3.1 transport-layer services
Introduction to Networks
Introduction to Congestion Control
Transmission Control Protocol (TCP)
5. End-to-end protocols (part 1)
Transmission Control Protocol (TCP)
Process-to-Process Delivery, TCP and UDP protocols
TCP.
TCP.
PART 5 Transport Layer Computer Networks.
TCP.
Introduction of Transport Protocols
Internet and Intranet Protocols and Applications
TCP - Part I Karim El Defrawy
TCP - Part II Relates to Lab 5. This is an extended module that covers TCP flow control, congestion control, and error control in TCP.
Lecture 19 – TCP Performance
So far, On the networking side, we looked at mechanisms to links hosts using direct linked networks and then forming a network of these networks. We introduced.
CS 268: Lecture 4 (TCP Congestion Control)
CS640: Introduction to Computer Networks
Chapter 17. Transport Protocols
Congestion control and TCP 2007
TCP Congestion Control
TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
TCP Overview.
EE 122: Lecture 10 (Congestion Control)
Transport Protocols: TCP Segments, Flow control and Connection Setup
Transport Layer: Congestion Control
Transport Protocols: TCP Segments, Flow control and Connection Setup
Transport Layer 9/22/2019.
Presentation transcript:

CS 268: Lecture 5 (TCP Congestion Control) Ion Stoica February 6, 2006

Today’s Lecture Basics of Transport Basics of Congestion Control Comments on Congestion Control

Duties of Transport Demultiplexing: Data reliability (if desired): IP header points to protocol Transport header needs demultiplex further UDP: port TCP: source and destination address/port Well known ports and ephemeral ports Data reliability (if desired): UDP: checksum, but no data recovery TCP: checksum and data recovery

TCP Header 4 10 16 31 Source port Destination port Sequence number Acknowledgement HdrLen Flags Advertised window Checksum Urgent pointer Options (variable) Sequence number, acknowledgement, and advertised window – used by sliding-window based flow control Flags: SYN, FIN – establishing/terminating a TCP connection ACK – set when Acknowledgement field is valid URG – urgent data; Urgent Pointer says where non-urgent data starts PUSH – don’t wait to fill segment RESET – abort connection

TCP Header (Cont) Checksum – 1’s complement and is computed over TCP data Pseudo-header (from IP header) Note: breaks the layering! Source address Destination address Protocol (TCP) TCP Segment length

TCP Connection Establishment Three-way handshake Goal: agree on a set of parameters: the start sequence number for each side Client (initiator) Server SYN, SeqNum = x SYN and ACK, SeqNum = y and Ack = x + 1 ACK, Ack = y + 1

TCP Issues Connection confusion: Source spoofing: SYN floods: ISNs can’t always be the same Source spoofing: Need to make sure ISNs are random SYN floods: SYN cookies State management with many connections Server-stateless TCP (NSDI 05)

TCP Flow Control Make sure receiving end can handle data Negotiated end-to-end, with no regard to network Ends must ensure that no more than W packets are in flight Receiver ACKs packets When sender gets an ACK, it knows packet has arrived

Sliding Window Last ACKed (without gap) Last received (without gap) 1 2 3 4 5 6 7 5 6 7 Last ACKed (without gap) Last received (without gap)

Observations Throughput is ~ (w/RTT) Sender has to buffer all unacknowledged packets, because they may require retransmission Receiver may be able to accept out-of-order packets, but only up to its buffer limits

What Should the Receiver ACK? ACK every packet, giving its sequence number Use negative ACKs (NACKs), indicating which packet did not arrive Use cumulative ACK, where an ACK for number n implies ACKS for all k < n Use selective ACKs (SACKs), indicating those that did arrive, even if not in order

Error Recovery Must retransmit packets that were dropped To do this efficiently Keep transmitting whenever possible Detect dropped packets and retransmit quickly Requires: Timeouts (with good timers) Other hints that packet were dropped

Question: Why not set timeout to average delay? Timer Algorithm Use exponential averaging: A(n) = b*A(n- 1) + (1 – b)T(n) D(n) = b*D(n-1) + (1 – b)*(T(n) – A(n)) Timeout(n) = A(n) +4D(n) Question: Why not set timeout to average delay? Notes: Measure T(n) only for original transmissions Double Timeout after timeout … Reset Timeout for new packet and when receive ACK

Hints When should I suspect a packet was dropped? When I receive several duplicate ACKs Receiver sends an ACK whenever a packet arrives ACK indicates seq. no. of last received consecutively received packet Duplicate ACKs indicates missing packet

TCP Congestion Control Can the network handle the rate of data? Determined end-to-end, but TCP is making guesses about the state of the network Two papers: Good science vs great engineering

Dangers of Increasing Load packet loss knee cliff Knee – point after which Throughput increases very slow Delay increases fast Cliff – point after which Throughput starts to decrease very fast to zero (congestion collapse) Delay approaches infinity In an M/M/1 queue Delay = 1/(1 – utilization) Throughput congestion collapse Load Delay Load

Cong. Control vs. Cong. Avoidance Congestion control goal Stay left of cliff Congestion avoidance goal Stay left of knee knee cliff Throughput congestion collapse Load

Control System Model [CJ89] User 1 x1 x2 xi>Xgoal  User 2 xn User n y Simple, yet powerful model Explicit binary signal of congestion

Possible Choices Multiplicative increase, additive decrease aI=0, bI>1, aD<0, bD=1 Additive increase, additive decrease aI>0, bI=1, aD<0, bD=1 Multiplicative increase, multiplicative decrease aI=0, bI>1, aD=0, 0<bD<1 Additive increase, multiplicative decrease aI>0, bI=1, aD=0, 0<bD<1 Which one?

Multiplicative Increase, Additive Decrease fairness line Fixed point at Fixed point is unstable! (bI(x1h+aD), bI(x2h+aD)) (x1h,x2h) (x1h+aD,x2h+aD) User 2: x2 efficiency line User 1: x1

Additive Increase, Additive Decrease fairness line (x1h+aD+aI), x2h+aD+aI)) Reaches stable cycle, but does not converge to fairness (x1h,x2h) (x1h+aD,x2h+aD) User 2: x2 efficiency line User 1: x1

Multiplicative Increase, Multiplicative Decrease fairness line Converges to stable cycle, but is not fair (x1h,x2h) (bIbDx1h, bIbDx2h) (bdx1h,bdx2h) User 2: x2 efficiency line User 1: x1

Additive Increase, Multiplicative Decrease (bDx1h+aI, bDx2h+aI) fairness line Converges to stable and fair cycle (x1h,x2h) (bDx1h,bDx2h) User 2: x2 efficiency line User 1: x1

Modeling Critical to understanding complex systems [CJ89] model relevant after 15 years, 106 increase of bandwidth, 1000x increase in number of users Criteria for good models Two conflicting goals: reality and simplicity Realistic, complex model  too hard to understand, too limited in applicability Unrealistic, simple model  can be misleading

TCP Congestion Control [CJ89] provides theoretical basis for basic congestion avoidance mechanism Must turn this into real protocol

TCP Congestion Control Maintains three variables: cwnd: congestion window flow_win: flow window; receiver advertised window Ssthresh: threshold size (used to update cwnd) For sending, use: win = min(flow_win, cwnd)

TCP: Slow Start Goal: reach knee quickly Upon starting (or restarting): Set cwnd =1 Each time a segment is acknowledged increment cwnd by one (cwnd++). Slow Start is not actually slow cwnd increases exponentially

Slow Start Example The congestion window size grows very rapidly TCP slows down the increase of cwnd when cwnd >= ssthresh segment 1 cwnd = 1 ACK 2 cwnd = 2 segment 2 segment 3 ACK 4 cwnd = 4 segment 4 segment 5 segment 6 segment 7 ACK8 cwnd = 8

Congestion Avoidance Slow down “Slow Start” ssthresh is lower-bound guess about location of knee If cwnd > ssthresh then each time a segment is acknowledged increment cwnd by 1/cwnd (cwnd += 1/cwnd). So cwnd is increased by one only if all segments have been acknowledged.

Slow Start/Congestion Avoidance Example Assume that ssthresh = 8 Cwnd (in segments) ssthresh Roundtrip times

Putting Everything Together: TCP Pseudocode Initially: cwnd = 1; ssthresh = infinite; New ack received: if (cwnd < ssthresh) /* Slow Start*/ cwnd = cwnd + 1; else /* Congestion Avoidance */ cwnd = cwnd + 1/cwnd; Timeout: /* Multiplicative decrease */ ssthresh = cwnd/2; while (next < unack + win) transmit next packet; where win = min(cwnd, flow_win); unack next seq # win

The big picture cwnd Timeout Congestion Avoidance Slow Start Time

Fast Retransmit Don’t wait for window to drain Resend a segment after 3 duplicate ACKs segment 1 cwnd = 1 ACK 2 cwnd = 2 segment 2 segment 3 ACK 3 ACK 4 cwnd = 4 segment 4 segment 5 segment 6 ACK 4 segment 7 ACK 4 3 duplicate ACKs ACK 4

Fast Recovery After a fast-retransmit set cwnd to ssthresh/2 i.e., don’t reset cwnd to 1 But when RTO expires still do cwnd = 1 Fast Retransmit and Fast Recovery Implemented by TCP Reno Most widely used version of TCP today Lesson: avoid RTOs at all costs!

Fast Retransmit and Fast Recovery cwnd Congestion Avoidance Slow Start Time Retransmit after 3 duplicated acks prevent expensive timeouts No need to slow start again At steady state, cwnd oscillates around the optimal window size.

Engineering vs Science in CC Great engineering built useful protocol: TCP Reno, etc. Good science by CJ and others Basis for understanding why it works so well

Behavior of TCP Are packets smoothly paced? NO! Ack-compression Are long-lived flows nicely interleaved? NO! How does throughput depend on drop rate? Tput ~ 1/sqrt(d)

Extensions to TCP Selective acknowledgements: TCP SACK Explicit congestion notification: ECN Delay-based congestion avoidance: TCP Vegas Discriminating between congestion losses and other losses: cross-layer signaling and guesses Randomized drops (RED) and other router mechanisms

Issues with TCP Fairness: High speeds: Short flows: Throughput depends on RTT High speeds: to reach 10gbps, packet losses occur every 90 minutes! Short flows: How to set initial cwnd properly What about flows that want congestion control, but don’t want reliable delivery?

TCP: Cooperation and Compatibility TCP assumes all flows employ TCP-like congestion control TCP-friendly or TCP-compatible Selfish flows: can get all the bandwidth they like If new congestion control algorithms are developed, they must be TCP-friendly