+ All Categories
Home > Documents > Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based...

Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based...

Date post: 05-Jan-2016
Category:
Upload: stella-mckenzie
View: 221 times
Download: 0 times
Share this document with a friend
69
Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender Basic requirements (85%) , deal with: Loss, corruption and reordering Duplication and delay Performance requirements (15%): Fast retransmit Selective acknowledgement
Transcript
Page 1: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Project 2 – Implement Reliable Transport

Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender

Basic requirements (85%) , deal with: Loss, corruption and reordering Duplication and delay

Performance requirements (15%): Fast retransmit Selective acknowledgement

Page 2: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Protocol

start|0|<data>|<checksum>

ack|2|<checksum>

data|1|<data>|<checksum>

ack|3|<checksum>

end|2|<data>|<checksum>

• Packet types:• Start, data, ack, end, and

sack

• Sliding window size: 5 packets

• Receiver returns cumulative

acknowledgement

Page 3: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Sender

The sender should be able to send a file to the receiver

python Sender.py -f <input file>

Implement a Go Back N based sender It should have a 500ms retransmission timeout It must not produce any console output

Page 4: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Test and Grading

We provide TestHarness.py for testing and a similar version of TestHarness.py is used for

grading

Tips: Start your project early You may start with “Stop-and-Wait” Write your own test cases

Page 5: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Logistics

GSIs: Peter, Radhika and Akshay

Additional OH for help with the project – will be announced on Piazza

These slides, Spec and code online midnight, today

Due Nov 2, at noon

Page 6: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP: Congestion Control

CS 168, Fall 2014

Sylvia Ratnasamy

http://inst.eecs.berkeley.edu/~cs168

Material thanks to Ion Stoica, Scott Shenker, Jennifer Rexford, Nick McKeown, and many other colleagues

Page 7: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Administrivia

HW2 due at midnight (not noon) on Oct 16

Project#2 due on Nov 2 (not Oct 27)

Next lecture: midterm review

Today’s material (CC) on the midterm? Very basic concepts not details (~ up to slide#26)

Page 8: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Last lecture Flow control: adjusting the sending rate to keep from

overwhelming a slow receiver

Today Congestion control: adjusting the sending rate to keep

from overloading the network

Page 9: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

If two packets arrive at a router at the same time Router will transmit one and buffer/drop the other

Internet traffic is bursty

If many packets arrive close in time the router cannot keep up gets congested causes packet delays and drops

Statistical Multiplexing Congestion

Page 10: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

How do we know the network is congested?

Who takes care of congestion? network, end hosts, both, …

How do we handle of congestion?

A few design considerations…If you were starting with TCP?

Page 11: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP’s approach

End hosts adjust sending rate

Based on implicit feedback from network

Not the only approach A consequence of history rather than planning

Page 12: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Some History: TCP in the 1980s

Sending rate only limited by flow control Dropped packets senders (repeatedly!) retransmit

Led to “congestion collapse” in Oct. 1986 Throughput on the NSF network dropped from

32Kbits/s to 40bits/sec

“Fixed” by Van Jacobson’s development of TCP’s congestion control (CC) algorithms

Page 13: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Van Jacobson

Leader of the networking research group at LBL Many contributions to the early TCP/IP stack

Most notably congestion control Creator of many widely used network tools

Traceroute, tcpdump, pathchar, Berkeley Packet Filter Later Chief Scientist at Cisco, now Fellow at PARC

Page 14: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Jacobson’s Approach

Extend TCP’s existing window-based protocol but adapt the window size in response to congestion

A pragmatic and effective solution required no upgrades to routers or applications! patch of a few lines of code to TCP implementations

Extensively researched and improved upon Especially now with datacenters and cloud services

Page 15: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Three Issues to Consider

Discovering the available (bottleneck) bandwidth

Adjusting to variations in bandwidth

Sharing bandwidth between flows

Page 16: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Abstract View

Ignore internal structure of router and model it as a single queue for a particular input-output pair

Sending Host Buffer in Router Receiving Host

A B

Page 17: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Discovering available bandwidth

Pick sending rate to match bottleneck bandwidth Without any a priori knowledge Could be gigabit link, could be a modem

A B100 Mbps

Page 18: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Adjusting to variations in bandwidth

Adjust rate to match instantaneous bandwidth Assuming you have rough idea of bandwidth

A BBW(t)

Page 19: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Multiple flows and sharing bandwidth

Two Issues: Adjust total sending rate to match bandwidth Allocation of bandwidth between flows

A2 B2BW(t)

A1

A3 B3

B1

Page 20: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Reality

Congestion control is a resource allocation problem involving many flows, many links, and complicated global dynamics

1Gbps

600Mbps

1Gbps

Page 21: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Possible Approaches

(0) Send without care Many packet drops

Page 22: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Possible Approaches

(0) Send without care

(1) Reservations Pre-arrange bandwidth allocations Requires negotiation before sending packets Low utilization

Page 23: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Possible Approaches

(0) Send without care

(1) Reservations

(2) Pricing Don’t drop packets for the high-bidders Requires payment model

Page 24: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Possible Approaches

(0) Send without care

(1) Reservations

(2) Pricing

(3) Dynamic Adjustment Hosts infer level of congestion; adjust Network reports congestion level to hosts; hosts adjust Combinations of the above Simple to implement but suboptimal, messy dynamics

Page 25: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Possible Approaches

(0) Send without care

(1) Reservations

(2) Pricing

(3) Dynamic Adjustment

All three techniques have their place Generality of dynamic adjustment has proven powerful Doesn’t presume business model, traffic characteristics,

application requirements But does assume good citizenship!

Page 26: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP’s Approach in a Nutshell

TCP connection has window Controls number of packets in flight

Sending rate: ~Window/RTT

Vary window size to control sending rate

Page 27: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

All These Windows…

Congestion Window: CWND How many bytes can be sent without overflowing routers Computed by the sender using congestion control algorithm

Flow control window: AdvertisedWindow (RWND) How many bytes can be sent without overflowing receiver’s buffers Determined by the receiver and reported to the sender

Sender-side window = minimum{CWND, RWND} Assume for this lecture that RWND >> CWND

Page 28: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Note

This lecture will talk about CWND in units of MSS (Recall MSS: Maximum Segment Size, the amount of

payload data in a TCP packet) This is only for pedagogical purposes

Keep in mind that real implementations maintain CWND in bytes

Page 29: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Two Basic Questions

How does the sender detect congestion?

How does the sender adjust its sending rate? To address three issues

Finding available bottleneck bandwidth Adjusting to bandwidth variations Sharing bandwidth

Page 30: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Detecting Congestion

Packet delays Tricky: noisy signal (delay often varies considerably)

Routers tell endhosts when they’re congested

Packet loss Fail-safe signal that TCP already has to detect Complication: non-congestive loss (e.g., checksum errors)

Page 31: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Not All Losses the Same

Duplicate ACKs: isolated loss Still getting ACKs

Timeout: much more serious Not enough dupacks Must have suffered several losses

Will adjust rate differently for each case

Page 32: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Rate Adjustment

Basic structure: Upon receipt of ACK (of new data): increase rate Upon detection of loss: decrease rate

How we increase/decrease the rate depends on the phase of congestion control we’re in: Discovering available bottleneck bandwidth vs. Adjusting to bandwidth variations

Page 33: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Bandwidth Discovery with Slow Start

Goal: estimate available bandwidth start slow (for safety) but ramp up quickly (for efficiency)

Consider RTT = 100ms, MSS=1000bytes Window size to fill 1Mbps of BW = 12.5 packets Window size to fill 1Gbps = 12,500 packets Either is possible!

Page 34: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

“Slow Start” Phase

Sender starts at a slow rate but increases exponentially until first loss

Start with a small congestion window Initially, CWND = 1 So, initial sending rate is MSS/RTT

Double the CWND for each RTT with no loss

Page 35: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Slow Start in Action

• For each RTT: double CWND

• Simpler implementation: for each ACK, CWND += 1

Linear increase per ACK(CWND+1) exponential increase per RTT (2xCWND)

Page 36: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Slow Start in Action

• For each RTT: double CWND

• Simpler implementation: for each ACK, CWND += 1

D A D D A A D D

Src

Dest

D D

1 2 43

A A A A

8

Page 37: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Adjusting to Varying Bandwidth

Slow start gave an estimate of available bandwidth

Now, want to track variations in this available bandwidth, oscillating around its current value Repeated probing (rate increase) and backoff (decrease)

TCP uses: “Additive Increase Multiplicative Decrease” (AIMD) We’ll see why shortly…

Page 38: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

AIMD

Additive increase Window grows by one MSS for every RTT with no loss For each successful RTT, CWND = CWND + 1 Simple implementation:

for each ACK, CWND = CWND+ 1/CWND

Multiplicative decrease On loss of packet, divide congestion window in half On loss, CWND = CWND/2

Page 39: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Leads to the TCP “Sawtooth”

Loss

Exponential“slow start”

t

Window

Page 40: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Slow-Start vs. AIMD

When does a sender stop Slow-Start and start Additive Increase?

Introduce a “slow start threshold” (ssthresh) Initialized to a large value On timeout, ssthresh = CWND/2

When CWND = ssthresh, sender switches from slow-start to AIMD-style increase

Page 41: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Why AIMD?

Page 42: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Recall: Three Issues

Discovering the available (bottleneck) bandwidth Slow Start

Adjusting to variations in bandwidth AIMD

Sharing bandwidth between flows

Page 43: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Goals for bandwidth sharing

Efficiency: High utilization of link bandwidth Fairness: Each flow gets equal share

Page 44: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Why AIMD?

Some rate adjustment options: Every RTT, we can Multiplicative increase or decrease: CWND a*CWND Additive increase or decrease: CWND CWND + b

Four alternatives: AIAD: gentle increase, gentle decrease AIMD: gentle increase, drastic decrease MIAD: drastic increase, gentle decrease MIMD: drastic increase and decrease

Page 45: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Simple Model of Congestion Control

User 1’s rate (x1)

Us

er

2’s

rate

(x

2)

Fairness line(x1 =x2)

Efficiency line(x1+x2 = 1)

1

1 Two users

rates x1 and x2

Congestion when x1+x2 > 1

Unused capacity when x1+x2 < 1

Fair when x1 =x2

congeste

d

ineffic

ient

Page 46: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Example

User 1: x1

Use

r 2:

x2

fairnessline

efficiencyline

1

1

Inefficient: x1+x2=0.7

(0.2, 0.5)

Congested: x1+x2=1.2

(0.7, 0.5)

Efficient: x1+x2=1Fair

(0.5, 0.5)

congeste

d

ineffic

ient

Efficient: x1+x2=1Not fair

(0.7, 0.3)

Page 47: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

AIAD

User 1: x1

Use

r 2:

x2

fairnessline

efficiencyline

(x1,x2)

(x1-aD,x2-aD)

(x1-aD+aI),x2-aD+aI)) Increase: x + aI

Decrease: x - aD

Does not converge to fairness

congeste

d

ineffic

ient

Page 48: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

48

AIAD Sharing Dynamics

A Bx1

D E

0

10

20

30

40

50

60

1 28 55 82 109

136

163

190

217

244

271

298

325

352

379

406

433

460

487

x2

Page 49: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

MIMD

User 1: x1

Use

r 2:

x2

fairnessline

efficiencyline

(x1,x2)

(bdx1,bdx2)

(bIbDx1,bIbDx2)

Increase: x*bI

Decrease: x*bD

Does not converge to fairness

congeste

d

ineffic

ient

Page 50: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

(bDx1+aI,bDx2+aI)

AIMD

User 1: x1

Use

r 2:

x2

fairnessline

efficiencyline

(x1,x2)

(bDx1,bDx2)

Increase: x+aI

Decrease: x*bD

Converges to fairness

congeste

d

ineffic

ient

Page 51: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

51

AIMD Sharing Dynamics

A50 pkts/sec

Bx1

D E

0

10

20

30

40

50

60

1 28 55 82 109

136

163

190

217

244

271

298

325

352

379

406

433

460

487

Rates equalize fair share

x2

Page 52: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP Congestion Control Details

Page 53: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Implementation

State at sender CWND (initialized to a small constant) ssthresh (initialized to a large constant) [Also dupACKcount and timer, as before]

Events ACK (new data) dupACK (duplicate ACK for old data) Timeout

Page 54: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Event: ACK (new data)

If CWND < ssthresh CWND += 1

• CWND packets per RTT • Hence after one RTT

with no drops: CWND = 2xCWND

Page 55: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Event: ACK (new data)

If CWND < ssthresh CWND += 1

Else CWND = CWND + 1/CWND

Slow start phase

• CWND packets per RTT • Hence after one RTT

with no drops: CWND = CWND + 1

“Congestion Avoidance” phase (additive increase)

Page 56: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Event: TimeOut

On Timeout ssthresh CWND/2 CWND 1

Page 57: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Event: dupACK

dupACKcount ++

If dupACKcount = 3 /* fast retransmit */ ssthresh = CWND/2 CWND = CWND/2

Page 58: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Example

t

Window

Slow-start restart: Go back to CWND = 1 MSS, but take advantage of knowing the previous value of CWND

Slow start in operation until it reaches half of previous CWND, I.e.,

SSTHRESH

TimeoutFast

Retransmission

SSThreshSet to Here

Page 59: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

One Final Phase: Fast Recovery

The problem: congestion avoidance too slow in recovering from an isolated loss

Page 60: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Example

Consider a TCP connection with: CWND=10 packets Last ACK was for packet # 101

i.e., receiver expecting next packet to have seq. no. 101

10 packets [101, 102, 103,…, 110] are in flight Packet 101 is dropped What ACKs do they generate? And how does the sender respond?

Page 61: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Timeline

ACK 101 (due to 102) cwnd=10 dupACK#1 (no xmit) ACK 101 (due to 103) cwnd=10 dupACK#2 (no xmit) ACK 101 (due to 104) cwnd=10 dupACK#3 (no xmit) RETRANSMIT 101 ssthresh=5 cwnd= 5 ACK 101 (due to 105) cwnd=5 + 1/5 (no xmit) ACK 101 (due to 106) cwnd=5 + 2/5 (no xmit) ACK 101 (due to 107) cwnd=5 + 3/5 (no xmit) ACK 101 (due to 108) cwnd=5 + 4/5 (no xmit) ACK 101 (due to 109) cwnd=5 + 5/5 (no xmit) ACK 101 (due to 110) cwnd=6 + 1/5 (no xmit) ACK 111 (due to 101) only now can we transmit new packets Plus no packets in flight so ACK “clocking” (to increase CWND)

stalls for another RTT

Page 62: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Solution: Fast Recovery

Idea: Grant the sender temporary “credit” for each dupACK so as to keep packets in flight

If dupACKcount = 3 ssthresh = cwnd/2 cwnd = ssthresh + 3

While in fast recovery cwnd = cwnd + 1 for each additional duplicate ACK

Exit fast recovery after receiving new ACK set cwnd = ssthresh

Page 63: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Example

Consider a TCP connection with: CWND=10 packets Last ACK was for packet # 101

i.e., receiver expecting next packet to have seq. no. 101

10 packets [101, 102, 103,…, 110] are in flight Packet 101 is dropped

Page 64: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

Timeline

ACK 101 (due to 102) cwnd=10 dup#1 ACK 101 (due to 103) cwnd=10 dup#2 ACK 101 (due to 104) cwnd=10 dup#3 REXMIT 101 ssthresh=5 cwnd= 8 (5+3) ACK 101 (due to 105) cwnd= 9 (no xmit) ACK 101 (due to 106) cwnd=10 (no xmit) ACK 101 (due to 107) cwnd=11 (xmit 111) ACK 101 (due to 108) cwnd=12 (xmit 112) ACK 101 (due to 109) cwnd=13 (xmit 113) ACK 101 (due to 110) cwnd=14 (xmit 114) ACK 111 (due to 101) cwnd = 5 (xmit 115) exiting fast recovery Packets 111-114 already in flight ACK 112 (due to 111) cwnd = 5 + 1/5 back in congestion avoidance

Page 65: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP State Machine

slow start

congstn. avoid.

fast recovery

cwnd > ssthresh

timeout

dupACK=3

timeout

dupACK=3new ACK

dupACK

new ACK

timeout

new ACKdupACK

dupACK

Page 66: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP State Machine

slow start

congstn. avoid.

fast recovery

cwnd > ssthresh

timeout

dupACK=3

timeout

dupACK=3new ACK

dupACK

new ACK

timeout

new ACKdupACK

dupACK

Page 67: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP State Machine

slow start

congstn. avoid.

fast recovery

cwnd > ssthresh

timeout

dupACK=3

timeout

dupACK=3new ACK

dupACK

new ACK

timeout

new ACKdupACK

dupACK

Page 68: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP State Machine

slow start

congstn. avoid.

fast recovery

cwnd > ssthresh

timeout

dupACK=3

timeout

dupACK=3new ACK

dupACK

new ACK

timeout

new ACKdupACK

dupACK

Page 69: Project 2 – Implement Reliable Transport Bears – TP: A simple reliable transport protocol based on GBN Receiver code is provided Only implement sender.

TCP Flavors

TCP-Tahoe CWND =1 on triple dupACK

TCP-Reno CWND =1 on timeout CWND = CWND/2 on triple dupack

TCP-newReno TCP-Reno + improved fast recovery

TCP-SACK incorporates selective acknowledgements

Our default assumption


Recommended