72
Transport Layer 3-1 Chapter 3 Transport Layer A note on the use of these ppt slides: The notes used in this course are substantially based on powerpoint slides developed and copyrighted by J.F. Kurose and K.W. Ross, 1996-2007 Computer Networking: A Top Down Approach 4 th edition. Jim Kurose, Keith Ross Addison-Wesley, July 2007.

Transport Layer 3-1 Chapter 3 Transport Layer A note on the use of these ppt slides: The notes used in this course are substantially based on powerpoint

Embed Size (px)

Citation preview

Transport Layer 3-1

Chapter 3Transport Layer

A note on the use of these ppt slides:The notes used in this course are substantially based on powerpoint slides developed and copyrighted by J.F. Kurose and K.W. Ross, 1996-2007

Computer Networking: A Top Down Approach 4th edition. Jim Kurose, Keith RossAddison-Wesley, July 2007.

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-2

Transport Services and Protocols

Provide logical communication between app processes running on different hosts

Transport protocols run in end systems

Send side: breaks app messages into segments, passes to network layer

Rcv side: reassembles segments into messages, passes to app layer

More than one transport protocol available to apps

Internet: TCP and UDP

Transport Layer 3-3

application

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysicalnetwork

data linkphysical

logical end-end transport

Multiplexing/demultiplexing

Transport Layer 3-4

application

transport

network

link

physical

P1 application

transport

network

link

physical

application

transport

network

link

physical

P2P3 P4P1

host 1 host 2 host 3

= process= socket

delivering received segmentsto correct socket

Demultiplexing at rcv host:gathering data from multiplesockets, enveloping data with header (later used for demultiplexing)

Multiplexing at send host:

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-5

UDP: User Datagram Protocol [RFC 768]

“No frills,” “bare bones” Internet transport protocol

“Best effort” service, UDP segments may be:

Lost Delivered out of order to

app Connectionless:

No handshaking between UDP sender, receiver

Each UDP segment handled independently of others

Why is there a UDP? No connection establishment

(which can add delay) Simple: no connection state at

sender, receiver Small segment header No congestion control: UDP

can blast away as fast as desired

Transport Layer 3-6

UDP Checksum

Sender: Treat segment contents as

sequence of 16-bit integers Checksum: addition (1’s

complement sum) of segment contents

Sender puts checksum value into UDP checksum field

Receiver: Compute checksum of received

segment Check if computed checksum

equals checksum field value: NO - error detected YES - no error detected But

maybe errors nonetheless? More later

Transport Layer 3-7

Goal: detect “errors” (e.g., flipped bits) in transmitted segment

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-8

Principles of Reliable Data Transfer

Important in app., transport, link layers Top-10 list of important networking topics!

Transport Layer 3-9

Principles of Reliable Data Transfer

Important in app., transport, link layers Top-10 list of important networking topics!

Characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)

Transport Layer 3-10

Principles of Reliable Data Transfer

Important in app., transport, link layers Top-10 list of important networking topics!

Characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)

Transport Layer 3-11

Summary of the Protocols

Rdt1.0: all packets arrive correctly Rdt2.0: all packets arrive, with possible errors

only in data packets, and introducing ACK and NAK (no error)

Rdt2.1: corrupted ACKs/NAKs Rdt2.2: similar to rdt2.1 remove NAKs Rdt3.0: Allows packets to be lost and errors

Transport Layer 3-12

Rdt1.0: Reliable Transfer over a Reliable Channel

Underlying channel perfectly reliable No bit errors No loss of packets

Separate FSMs for sender, receiver: Sender sends data into underlying channel Receiver read data from underlying channel

Transport Layer 3-13

packet = make_pkt(data)udt_send(packet)

Wait for call from above

rdt_send(data)

sender

extract (packet,data)deliver_data(data)

Wait for call from

below

rdt_rcv(packet)

receiver

Rdt2.0: Channel with Bit Errors

Underlying channel may flip bits in packet Checksum to detect bit errors

The question: how to recover from errors: Acknowledgements (ACKs): receiver explicitly tells sender that

pkt received OK Negative acknowledgements (NAKs): receiver explicitly tells

sender that pkt had errors Sender retransmits pkt on receipt of NAK

New mechanisms in rdt2.0 (beyond rdt1.0): Error detection Receiver feedback: control msgs (ACK,NAK) rcvr->sender

Transport Layer 3-14

Rdt2.0 Has a Fatal Flaw!

What happens if ACK/NAK corrupted?

Sender doesn’t know what happened at receiver!

Can’t just retransmit: possible duplicate

Handling duplicates: Sender retransmits current

pkt if ACK/NAK garbled Sender adds sequence number

to each pkt Receiver discards (doesn’t

deliver up) duplicate pkt

Transport Layer 3-15

Sender sends one packet, then waits for receiver response

stop and wait

Sender: whenever sender receives control message it sends a packet to receiver

A valid ACK: Sends next packet (if exists) with new sequence # A NAK or corrupt response: resends old packet

Receiver: sends ACK/NAK to sender If received packet is corrupt: send NAK If received packet is valid and has different sequence # as prev

packet: send ACK and deliver new data up If received packet is valid and has same sequence # as prev

packet, i.e., is a retransmission of duplicate: send ACK

Note: ACK/NAK do not contain sequence #

Transport Layer 3-16

Rdt2.1: Discussion

Sender: Seq # added to pkt Two seq. #’s (0,1) will

suffice. Why? Must check if received

ACK/NAK corrupted Twice as many states

State must “remember” whether “current” pkt has 0 or 1 seq. #

Receiver: Must check if received

packet is duplicate State indicates whether 0 or

1 is expected pkt seq # Note: receiver can not

know if its last ACK/NAK received OK at sender

Transport Layer 3-17

Rdt2.2: a NAK-free Protocol

Same functionality as rdt2.1, using ACKs only Instead of NAK, receiver sends ACK for last pkt

received OK Receiver must explicitly include seq # of pkt being ACKed

Duplicate ACK at sender results in same action as NAK: retransmit current pkt

Transport Layer 3-18

Rdt3.0: Channels with Errors and Loss

New assumption: Underlying channel can also lose packets (data or ACKs)

Checksum, seq. #, ACKs, retransmissions will be of help, but not enough

Q: how to deal with loss? Sender waits until

certain data or ACK lost, then retransmits

Any drawbacks?

Approach: sender waits “reasonable” amount of time for ACK

Retransmits if no ACK received in this time

If pkt (or ACK) just delayed (not lost):

Retransmission will be duplicate, but use of seq. #’s already handles this

Receiver must specify seq # of pkt being ACKed

Requires countdown timer

Transport Layer 3-19

Performance of rdt3.0

Rdt3.0 works, but performance stinks Example: 1 Gbps link, 15 ms e-e prop. delay, 1KB packet:

Transport Layer 3-20

Ttransmit

= 8kb/pkt10**9 b/sec

= 8 microsec

U sender: utilization – fraction of time sender busy sending

U sender

= .008

30.008 = 0.00027

microseconds

L / R

RTT + L / R =

L (packet length in bits)R (transmission rate, bps)

=

1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link Network protocol limits use of physical resources!

Pipelined ProtocolsPipelining: sender allows multiple, “in-flight”, yet-to-

be-acknowledged pkts Range of sequence numbers must be increased Buffering at sender and/or receiver

Transport Layer 3-21

Pipelined Protocols

Advantage: much better bandwidth utilization than stop-and-wait

Disadvantage: More complicated to deal with reliability issues, e.g., corrupted, lost, out of order data. Two generic approaches to solving this

Go-Back-N protocols Selective repeat protocols

Note: TCP is not exactly either

Transport Layer 3-22

Go-Back-NSender: K-bit seq # in pkt header “Window” of up to N, consecutive unack’ed pkts allowed

Transport Layer 3-23

ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK” May receive duplicate ACKs (see receiver)

Timer for each in-flight pkt Timeout(n): retransmit pkt n and all higher seq # pkts in

window Called a sliding-window protocol

GBN: Sender rdt_Send() called: checks to see if window is full

No: send out packet Yes: return data to application level

Receipt of ACK(n): cumulative acknowledgement that all packets up to and including n have been received. Updates window accordingly and restarts timer

Timeout: resends ALL packets that have been sent but not yet acknowledged.

This is only event that triggers resend

Transport Layer 3-24

GBN: Receiver Extended FSM

If expected packet received: Send ACK and deliver packet upstairs

If out-of-order packet received: Discard (don’t buffer) -> no receiver buffering! Re-ACK pkt with highest in-order seq # May generate duplicate ACKs

Transport Layer 3-25

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum)

extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(expectedseqnum,ACK,chksum)udt_send(sndpkt)expectedseqnum++

expectedseqnum=1sndpkt = make_pkt(expectedseqnum,ACK,chksum)

More on Receiver

ACK-only: the receiver always sends ACK for last correctly received packet with highest in-order seq #

Receiver only sends ACKS (no NAKs) Need only remember expectedseqnum Can generate duplicate ACKs

Transport Layer 3-26

Transport Layer 3-27

GBN is easy to code but might have performance problems

In particular, if many packets are in pipeline at one time (bandwidth-delay product large) then one error can force retransmission of huge amounts of data!

Selective Repeat protocol allows receiver to buffer data and only forces retransmission of required packets

Selective Repeat

Receiver individually acknowledges all correctly received pkts

Buffers pkts, as needed, for eventual in-order delivery to upper layer

Sender only resends pkts for which ACK not received Sender timer for each unACKed pkt Compare to GBN which only had timer for base packet

Sender window N consecutive seq #’s Again limits seq #s of sent, unACKed pkts Important: Window size < seq # range

Transport Layer 3-28

Selective Repeat: Sender, Receiver Windows

Transport Layer 3-29

Selective Repeat

Data from above : If next available seq # in

window, send pkt

Timeout(n): Resend pkt n, restart timer

ACK(n) in [sendbase,sendbase+N]:

Mark pkt n as received If n smallest unACKed pkt,

advance window base to next unACKed seq #

Transport Layer 3-30

senderpkt n in [rcvbase, rcvbase+N-1]

Send ACK(n) Out-of-order: buffer In-order: deliver (also deliver

buffered, in-order pkts), advance window to next not-yet-received pkt

pkt n in [rcvbase-N,rcvbase-1]

ACK(n)

Otherwise: Ignore

receiver

Selective Repeat: DilemmaExample: seq #’s: 0, 1, 2, 3 window size=3

Receiver sees no difference in two scenarios!

Incorrectly passes duplicate data as new in (a)

Q: what relationship between seq # size and window size?

Transport Layer 3-31

GBN vs. Selective Repeat

Selective repeat is more complicated as it needs buffering at the receiver, but only retransmit packets required for retransmission

GBN is simpler, but can lead to large number of unnecessary retransmission

Transport Layer 3-32

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-33

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

Full duplex data: Bi-directional data flow in

same connection MSS: maximum segment size

Connection-oriented: Handshaking (exchange of

control msgs) init’s sender, receiver state before data exchange

Flow controlled: Sender will not overwhelm

receiver

Point-to-point: One sender, one receiver

Reliable, in-order byte steam:

No “message boundaries” Pipelined:

TCP congestion and flow control set window size

Send & receive buffers

Transport Layer 3-34

socketdoor

T C Psend buffer

T C Preceive buffer

socketdoor

segm ent

applicationwrites data

applicationreads data

TCP Segment Structure

Transport Layer 3-35

source port # dest port #

32 bits

applicationdata

(variable length)

sequence number

acknowledgement numberReceive window

Urg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

URG: urgent data (generally not used)

ACK: ACK #valid

PSH: push data now(generally not used)

RST, SYN, FIN:connection estab(setup, teardown

commands)

# bytes rcvr willingto accept

countingby bytes of data(not segments!)

Internetchecksum

(as in UDP)

TCP Round Trip Time and Timeout

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

SampleRTT will vary, want estimated RTT “smoother”

Average several recent measurements, not just current SampleRTT

Transport Layer 3-36

TCP Round Trip Time and Timeout

Transport Layer 3-37

EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

Exponential weighted moving average

Influence of past sample decreases exponentially fast

Typical value: = 0.125

TCP Round Trip Time and Timeout

Setting the timeout EstimtedRTT plus “safety margin”

Large variation in EstimatedRTT -> larger safety margin

First estimate of how much SampleRTT deviates from EstimatedRTT:

Transport Layer 3-38

TimeoutInterval = EstimatedRTT + 4*DevRTT

DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT|(typically, = 0.25)

Then set timeout interval:

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-39

TCP Reliable Data Transfer

TCP creates rdt service on top of IP’s unreliable service

Pipelined segments Cumulative acks TCP uses single

retransmission timer

Retransmissions are triggered by:

Timeout events Duplicate acks

Initially consider simplified TCP sender:

Ignore duplicate acks Ignore flow control,

congestion control

Transport Layer 3-40

TCP Sender Events:Data rcvd from app: Create segment with seq

# Seq # is byte-stream

number of first data byte in segment

Start timer if not already running (think of timer as for oldest unacked segment)

Expiration interval: TimeOutInterval

Timeout: Retransmit segment that

caused timeout Restart timer Ack rcvd: If acknowledges

previously unacked segments

Update what is known to be acked

Start timer if there are outstanding segments

Transport Layer 3-41

TCP: Retransmission Scenarios

Transport Layer 3-42

Host A

Seq=100, 20 bytes data

ACK=100

time premature timeout

Host B

Seq=92, 8 bytes data

ACK=120

Seq=92, 8 bytes data

Seq=

92

tim

eout

ACK=120

Host A

Seq=92, 8 bytes data

ACK=100

loss

tim

eout

lost ACK scenario

Host B

X

Seq=92, 8 bytes data

ACK=100

time

Seq=

92

tim

eout

SendBase= 100

SendBase= 120

SendBase= 120

Sendbase= 100

TCP Retransmission Scenarios (more)

Transport Layer 3-43

Host A

Seq=92, 8 bytes data

ACK=100

loss

tim

eout

Cumulative ACK scenario

Host B

X

Seq=100, 20 bytes data

ACK=120

time

SendBase= 120

TCP ACK Generation [RFC 1122, RFC 2581]

Transport Layer 3-44

Event at Receiver

Arrival of in-order segment withexpected seq #. All data up toexpected seq # already ACKed

Arrival of in-order segment withexpected seq #. One other segment has ACK pending

Arrival of out-of-order segmenthigher-than-expect seq. # .Gap detected

Arrival of segment that partially or completely fills gap

TCP Receiver action

Delayed ACK. Wait up to 500msfor next segment. If no next segment,send ACK

Immediately send single cumulative ACK, ACKing both in-order segments

Immediately send duplicate ACK, indicating seq. # of next expected byte

Immediate send ACK, provided thatsegment startsat lower end of gap

More on Sender Policies Doubling the Timeout Interval

Used by most TCP implementations If timeout occurs then, after retransmisison, Timeout

Interval is doubled Intervals grow exponentially with each consecutive

timeout When Timer restarted because of (i) new data from

above or (ii) ACK received, then Timeout Interval is reset as described previously using Estimated RTT and DevRTT.

Limited form of Congestion Control

Transport Layer 3-45

Fast Retransmit Time-out period often

relatively long: Long delay before resending

lost packet Detect lost segments via

duplicate ACKs. Sender often sends many

segments back-to-back If segment is lost, there will

likely be many duplicate ACKs

If sender receives 3 ACKs for the same data, it supposes that segment after ACKed data was lost:

Fast retransmit: resend segment before timer expires

Transport Layer 3-46

TCP: GBN or Selective Repeat?

Basic TCP looks a lot like GBN

Many TCP implementations will buffer received out-of-order segments and then ACK them all after filling in the range This looks a lot like Selective Repeat

TCP is a hybrid

Transport Layer 3-47

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-48

TCP Flow Control Sender should not overwhelm receiver’s

capacity to receive data If necessary, sender should slow down

transmission rate to accommodate receiver’s rate

Different from Congestion Control whose purpose was to handle congestion in network

But both congestion control and flow control work by slowing down data transmission

Transport Layer 3-49

low capacity receiver

fast network

flow control problem

TCP Flow Control Receive side of TCP

connection has a receive buffer:

Speed-matching service: matching the send rate to the receiving app’s drain rate

Transport Layer 3-50

App process may be slow at reading from buffer

sender won’t overflowreceiver’s buffer by

transmitting too much, too fast

flow control

TCP Flow Control: How it Works

(Suppose TCP receiver discards out-of-order segments)

Spare room in buffer= RcvWindow

= RcvBuffer-[LastByteRcvd - LastByteRead]

Rcvr advertises spare room by including value of RcvWindow in segments

Sender limits unACKed data to RcvWindow

Guarantees receive buffer doesn’t overflow

Transport Layer 3-51

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-52

TCP Connection Management

Recall: TCP sender, receiver establish “connection” before exchanging data segments

Initialize TCP variables: Seq. #s Buffers, flow control info (e.g. RcvWindow)

Client: connection initiator Socket clientSocket

= new Socket("hostname", "port number"); Server: contacted by client Socket connectionSocket

= welcomeSocket.accept();

Transport Layer 3-53

TCP Connection Management (Cont.)

Three way handshake:Step 1: client host sends TCP SYN

segment to server Specifies client initial seq # No application data

Step 2: server host receives SYN, replies with SYNACK segment

Server allocates buffers Specifies server initial seq. #

Step 3: client receives SYNACK, replies with ACK segment, which may contain data

Transport Layer 3-54

client

Connection request (SYN=1 seq=client_isn)

server

Connection granted (SYN=1, server_isn,

ACK (SYN=0, seq=client_isn+1)

ack=client_isn+1)

ack=server_isn+1

TCP Connection Management (cont.)

Closing a connection:

client closes socket: clientSocket.close();

Step 1: client end system sends TCP FIN control segment to server

Step 2: server receives FIN, replies with ACK. Closes connection, sends FIN

Transport Layer 3-55

client

FIN

server

ACK

FIN

close

close

TCP Connection Management (cont.)

Step 3: client receives FIN, replies with ACK.

Enters “timed wait” - will respond with ACK to received FINs

Step 4: server, receives ACK. Connection closed.

Note: with small modification, can handle simultaneous FINs

Transport Layer 3-56

client

FIN

server

ACK

ACK

FIN

close

closing

closed

tim

ed w

ait

closed

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-57

Approaches towards Congestion Control

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 (SNA, DECbit, TCP/IP ECN, ATM)

Explicit rate sender should send at

Transport Layer 3-58

Two broad approaches towards congestion control:

Two Ways for Providing Feedback

Transport Layer 3-59

Case study: ATM ABR Congestion Control

ABR: available bit rate: “Elastic service” If sender’s path

“underloaded”: Sender should use

available bandwidth If sender’s path congested:

Sender throttled to minimum guaranteed rate

RM (resource management) cells:

Sent by sender, interspersed with data cells

Bits in RM cell set by switches (“network-assisted”)

NI bit: no increase in rate (mild congestion)

CI bit: congestion indication RM cells returned to sender by

receiver, with bits intact

Transport Layer 3-60

Case study: ATM ABR Congestion Control

Two-byte ER (explicit rate) field in RM cell Congested switch may lower ER value in cell Sender’ send rate thus maximum supportable rate on path

EFCI bit in data cells: set to 1 in congested switch If data cell preceding RM cell has EFCI set, sender sets CI bit in

returned RM cell

Transport Layer 3-61

Chapter 3 Outline 3.1 Transport-layer

services 3.2 Multiplexing and

demultiplexing 3.3 Connectionless

transport: UDP 3.4 Principles of reliable

data transfer

3.5 Connection-oriented transport: TCP

Segment structure Reliable data transfer Flow control Connection management

3.6 Principles of congestion control

3.7 TCP congestion control

Transport Layer 3-62

TCP Congestion Control End-to-end control (no network assistance) Transmission rate limited by congestion window size,

Congwin, over segments Congwin dynamically modified to reflect perceived congestion

Transport Layer 3-63

w segments, each with MSS bytes sent in one RTT:

throughput = w * MSS

RTT Bytes/sec

Congwin

To simplify presentation we assume that RcvBuffer is large enough that it will not overflow

Tools are “similar” to flow control

sender limits transmission using:

LastByteSent-LastByteAcked CongWin

How does sender perceive congestion? loss event = timeout or 3 duplicate ACKs TCP sender reduces rate (CongWin) after loss event

CongWin increment: ACK arrives at slow rate -> CongWin be increased at a slow rate ACK arrives at high rate -> CongWin be increased at a high rate

Self-Clocking: TCP uses ACK to trigger (clock) its increase in congwin

Transport Layer 3-64

TCP Congestion Control Algorithms

Three mechanisms: AIMD = Additive Increase Multiplicative

Decrease Slow start = CongWin set to 1 and then grows

exponentially Conservative after timeout events

Transport Layer 3-65

TCP AIMDMultiplicative decrease:

cut CongWin in half after loss event

8 Kbytes

16 Kbytes

24 Kbytes

time

congestionwindow

Transport Layer 3-66

Additive increase: increase CongWin by 1 MSS every RTT in the absence of loss events: probing also known as congestion avoidance

Long-lived TCP connection

TCP Slow Start When connection begins, CongWin = 1 MSS

Example: MSS = 500 bytes & RTT = 200 msec

Initial rate = 20 kbps

Available bandwidth may be >> MSS/RTT

Desirable to quickly ramp up to respectable rate

Transport Layer 3-67

When connection begins, increase rate exponentially fast until first loss event

Slow Start is NOT really Slow!

TCP Slow Start (more) When connection begins,

increase rate exponentially until first loss event:

Double CongWin every RTT Done by incrementing CongWin for every ACK received

Summary: initial rate is slow but ramps up exponentially fast

Transport Layer 3-68

one segment

RTT

two segments

Host A Host B

time

four segments

So Far Slow-Start: ramps up exponentially Followed by AIMD: sawtooth pattern Q: When should the exponential increase switch to linear?

Reality (TCP Reno) Introduce new variable threshold: initially very large Slow-Start exponential growth stops when reaches threshold and then switches to AIMD

Two different types of loss events 3 dup ACKS: cut CongWin in half and set threshold=CongWin (now in standard AIMD)

Timeout: set threshold=CongWin/2, CongWin=1 and switch to Slow-Start

Transport Layer 3-69

Reason for treating 3 dup ACKS differently than timeout is that:

3 dup ACKs indicates network capable of delivering some segments while

Timeout before 3 dup ACKs is “more alarming”

Note that older protocol, TCP Tahoe, treated both types of loss events the same and always goes to slow-start with Congwin=1 after a loss event

TCP Reno’s skipping of the slow start for a 3-DUP-ACK loss event is known as fast-recovery

Transport Layer 3-70

The Big Picture

Transport Layer 3-71

Chapter 3: Summary Principles behind transport layer

services: Multiplexing, demultiplexing Reliable data transfer Flow control Congestion control

Instantiation and implementation in the Internet

UDP TCP

Next: Leaving the network

“edge” (application, transport layers)

Into the network “core”

Transport Layer 3-72