CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite...
Transcript of CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite...
![Page 1: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/1.jpg)
CS 43: Computer Networks
19: TCP Flow and Congestion Control October 31, Nov 2, 2018
![Page 2: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/2.jpg)
Five-layer Internet Model
Lecture19-Slide2
Application:theapplication(e.g.,theWeb,Email)
Transport:end-to-endconnections,reliability
Network:routing
Link(data-link):framing,errordetection
Physical:1’sand0’s/bitsacrossamedium(copper,theair,fiber)
![Page 3: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/3.jpg)
Last class: Practical Reliability Questions
• Whatdoesconnectionestablishmentlooklike?• Howdowechoosesequencenumbers?• Howdothesenderandreceiverkeeptrackofoutstandingpipelinedsegments?
• Howshouldwechoosetimeoutvalues?• Howmanysegmentsshouldbepipelined?
Lecture19-Slide3
![Page 4: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/4.jpg)
Last class: Go-back-N
• Atthesender:• Atthereceiver:
– Keeptrackoflargestsequencenumberseen.– IfitreceivesANYTHING,sendsbackACKforlargestsequencenumberseensofar.(CumulativeACK)
Lecture19-Slide4
![Page 5: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/5.jpg)
Last class: Selective Repeat
Lecture19-Slide5
![Page 6: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/6.jpg)
Last class: TCP Timeout Value
TimeoutInterval = EstimatedRTT + 4*DevRTT
estimated RTT “safety margin”
Lecture19-Slide6
ExponentiallyWeightedMovingAverage(EWMA)EstimatedRTT=(1–α)*EstimatedRTT+α*SampleRTT
![Page 7: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/7.jpg)
Today: Practical Reliability Questions
• Whatdoesconnectionestablishmentlooklike?• Howdowechoosesequencenumbers?• Howdothesenderandreceiverkeeptrackofoutstandingpipelinedsegments?
• Howshouldwechoosetimeoutvalues?• Howmanysegmentsshouldbepipelined?
Lecture18-Slide7
![Page 8: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/8.jpg)
Sliding window
• Howmanybytestopipeline?• Howbigdowemakethatwindow?
– Toosmall:linkisunder-utilized– Toolarge:congestion,packetsdropped– Otherconcerns:fairness
Lecture19-Slide8
![Page 9: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/9.jpg)
Discussion: Why do we need rate control ?
A. tohelptheglobalnetwork(corerouters,andotherend-hosts)
B. tohelpthereceiverC. tohelpthesenderD. someotherreason
Sharedhigh-levelgoal:don’twastecapacitybysendingsomethingthatislikelytobedropped.
Lecture19-Slide9
![Page 10: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/10.jpg)
Rate Control
FlowControl• Don’tsendsofastthatwe
overloadthereceiver.
• Ratedirectlynegotiatedbetweenonepairofhosts(thesenderandreceiver).
CongestionControl• Don’tsendsofastthatwe
overloadthenetwork.
• Rateinferredbysenderinresponseto“congestionevents.”
Sharedhigh-levelgoal:don’twastecapacitybysendingsomethingthatislikelytobedropped.
Lecture19-Slide10
![Page 11: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/11.jpg)
Flow Control
• Don’tsendsofastthatweoverloadthereceiver.• Ratedirectlynegotiatedbetweenonepairofhosts(thesenderandreceiver).
Lecture19-Slide11
![Page 12: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/12.jpg)
Flow Control
• Examplescenarios:
Fastserver Low-powerdevice
Problem:Sendercansendatahighrate.Networkcandeliveratahighrate.Thereceiverisdrowningindata.
Multiplefastservers FastserverLecture19-Slide12
![Page 13: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/13.jpg)
Flow Control
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Lecture19-Slide13
![Page 14: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/14.jpg)
Flow Control
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Lecture19-Slide14
![Page 15: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/15.jpg)
Flow Control
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Appcallsrecv()
Lecture19-Slide15
![Page 16: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/16.jpg)
Flow Control
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Appcallsrecv()
Lecture19-Slide16
![Page 17: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/17.jpg)
Flow Control
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Lecture19-Slide17
![Page 18: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/18.jpg)
Flow Control
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Lecture19-Slide18
![Page 19: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/19.jpg)
Flow Control
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Stop!
Lecture19-Slide19
![Page 20: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/20.jpg)
TCP Segments
source port # dest port #
32 bits
application data (variable length)
Urg data pointer
F S R P A U head len
not used
URG: urgent data (generally not used)
ACK: ACK # valid
PSH: push data now (generally not used)
RST, SYN, FIN: connection estab (setup, teardown
commands)
checksum
Internet checksum
(as in UDP)
receive window # bytes rcvr willing to accept
sequence number acknowledgement number
counting by bytes of data (not segments!)
options (variable length)
AKA:rwnd
Lecture19-Slide20
![Page 21: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/21.jpg)
Flow Control
• Senderneversendsmorethanrwnd.
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Lecture19-Slide21
![Page 22: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/22.jpg)
Flow Control
• Senderneversendsmorethanrwnd.
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Lecture19-Slide22
![Page 23: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/23.jpg)
Flow Control
• Senderneversendsmorethanrwnd.
Fastserver Low-powerdevice
Finitesocketbufferspaceatthereceiver.
Ack.rwnd:4
last byte ACKed sent,not-
yetACKed(“in-flight”)
last byte sent
min(rwnd,cwnd)
Lecture19-Slide23
![Page 24: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/24.jpg)
Congestion
• Flowcontrolis(relatively)easy.Thereceiverknowshowmuchspaceithas.
• Whataboutthenetworkdevices?
Lecture19-Slide24
![Page 25: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/25.jpg)
Congestion
Router
Router’sbuffer.
Lecture19-Slide25
![Page 26: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/26.jpg)
Congestion
Router
Router’sbuffer.
Incomingrateisfasterthanoutgoinglinkcansupport.
Lecture19-Slide26
![Page 27: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/27.jpg)
Trash
Congestion
Router
Router’sbuffer.
Incomingrateisfasterthanoutgoinglinkcansupport.
Ugh.Isocan’tdeal
withthisrightnow!
Lecture19-Slide27
![Page 28: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/28.jpg)
What’s the worst that can happen?
A. Thisisnoproblem.Sendersjustkeeptransmitting,andit’llallworkout.
B. Therewillberetransmissions,butthenetworkwillstillperformwithoutmuchtrouble.
C. Retransmissionswillbecomeveryfrequent,causingaseriouslossofefficiency.
D. Thenetworkwillbecomecompletelyunusable.
Lecture19-Slide28
![Page 29: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/29.jpg)
Congestion Collapse
…
…
…
…
LinkA LinkB
Lecture19-Slide29
![Page 30: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/30.jpg)
Congestion Collapse
…
…
…
…
LinkA LinkB
Onesenderstarts,butthere’sstillcapacityatlinkA.
S1Lecture19-Slide30
![Page 31: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/31.jpg)
Congestion Collapse
…
…
…
…
LinkA LinkB
S1
S2Anothersenderstartsup.LinkAisshowingslightdelay,butstilldoingok.
Lecture19-Slide31
![Page 32: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/32.jpg)
Congestion Collapse
…
…
…
…
LinkA LinkB
S1
S2
UnrelatedtrafficpassesthroughandcongestslinkB.
Lecture19-Slide32
![Page 33: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/33.jpg)
Congestion Collapse
…
…
…
…
LinkA LinkB
S1
S2 S2’strafficisbeingdroppedatLinkB,soitstartsretransmittingontopofwhatitwassending.
Thisisverybad.S2isnowsendinglotsoftrafficoverlinkAthathasnohopeofcrossinglinkB. Lecture19-Slide33
![Page 34: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/34.jpg)
Congestion Collapse
…
…
…
…
LinkA LinkB
S1
S2
IncreasedtrafficfromS2causesLinkAtobecomecongested.S1startsretransmitting.
Lecture19-Slide34
![Page 35: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/35.jpg)
Congestion Collapse
…
…
…
…
LinkA LinkB
S1
S2
Lecture19-Slide35
![Page 36: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/36.jpg)
Without Congestion Control
• Congestion…– Increasesdeliverylatency– Increaseslossrate– Increasesretransmissions,manyunnecessary– Wastescapacityontrafficthatisneverdelivered– Increasescongestion,cyclecontinues…
Lecture19-Slide36
![Page 37: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/37.jpg)
Congestion Collapse
• ThishappenedtotheInternet(thenNSFnet)in1986.– Ratedroppedfromablazing32kbpsto40bps– Thishappenedonandofffortwoyears– In1988,VanJacobsonpublished“CongestionAvoidanceandControl”
– Thefix:sendersvoluntarilylimitsendingrate
Lecture19-Slide37
![Page 38: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/38.jpg)
TCP Congestion Control: details
• senderlimitstransmission:
• cwndisdynamic,functionofperceivednetworkcongestion
TCPsendingrate:• sendcwndbytes,waitRTT
forACKS,thensendmorebytes
lastbyteACKed
sent,not-yetACKed(“in-flight”)
lastbytesent
cwnd
cwnd ≤ LastByteSent- LastByteAcked
sendersequencenumberspace
~ ~ rate cwnd
RTT bytes/sec
Lecture19-Slide38
![Page 39: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/39.jpg)
How should we set cwnd?
A. Weshouldkeepraisingituntila“congestionevent”,thenbackoffslightlyuntilwenoticenomoreevents.
B. Weshouldraiseituntila“congestionevent”,thengobackto0andstartraisingitagain.
C. Weshouldraiseituntila“congestionevent”,thengobacktoamedianvalueandstartraisingitagain.
D. Weshouldsendasfastaspossibleatalltimes.
Lecture19-Slide39
![Page 40: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/40.jpg)
What is a “congestion event” from the perspective of a sender in TCP?
A. Asegmentloss
B. Receivingduplicateacknowledgement(s)
C. Aretransmissiontimeoutfiring
D. Somesubsetoftheabove
E. Alloftheabove
Lecture19-Slide40
Whatwecareaboutissegmentloss,andbothBandCgiveusawaytoknowthatasegmentlosshasoccurred.
![Page 41: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/41.jpg)
TCP Congestion Control Phases
• Slowstart– Senderhasnoideaofnetwork’scongestion– Startconservatively,increaseratequickly
• Congestionavoidance– Increaserateslowly– Backoffwhencongestionoccurs
• HowmuchdependsonTCPversion
Lecture19-Slide41
![Page 42: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/42.jpg)
TCP Slow Start
• Whenconnectionbegins,increaserateexponentiallyuntilfirstlossevent:§ initiallycwnd=1MSS§ doublecwndeveryRTT§ donebyincrementingcwndforeveryACKreceived
• Summary:initialrateisslowbutrampsupexponentiallyfast
• Whendowestop?
Host A
one segment
RTT
Host B
time
two segments
four segments
Lecture19-Slide42
![Page 43: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/43.jpg)
TCP Slow Start
• Whendowestop?
• Initially– Onacongestionevent
• Later– Onacongestionevent– Whenwecrossapreviously-determinedthreshold
Host A
one segment
RTT
Host B
time
two segments
four segments
Lecture19-Slide43
![Page 44: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/44.jpg)
TCP Congestion Avoidance
• ssthresh:Thresholdwhereslowstartends– initiallyunlimited
• Incongestionavoidance,insteadofdoubling,increasecwndbyoneMSSeveryRTT.– IncreasecwndbyMSS/cwndbytesforeachACK– Backoffoncongestionevent
Lecture19-Slide44
![Page 45: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/45.jpg)
We can determine that a packet was lost two different ways: via 3 duplicate ACKS, or via a timeout. We should…
A. Treattheseeventsdifferently.
B. Treattheseeventsthesame.
(Fordiscussion:Isoneoftheseeventsworsethantheother,ordotheyrepresentequallybadscenarios?Ifthey’renotequal,whichisworse?)
Lecture19-Slide45
![Page 46: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/46.jpg)
Detecting, Reacting to Loss (Tahoe vs. Reno)
Lossindicatedbytimeout:TahoeandReno:
– cwndsetto1MSS;– windowthengrowsexponentially(asinslowstart)tothreshold,
– thengrowslinearly
Lecture19-Slide46
Lossindicatedby3duplicateACKs:• Tahoe:
– cwndsetto1MSS;– windowgrowsexponentially(asinslowstart)tothreshold
– thengrowslinearly• Reno
– cwndiscutinhalfwindowthengrowslinearly
– dupACKsindicatenetworkcapableofdeliveringsomesegments
![Page 47: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/47.jpg)
Q:whenshouldtheexponentialincreaseswitchtolinear?
A:whencwndgetsto1/2ofitsvaluebeforetimeout.
Implementation:• variablessthresh • onlossevent,ssthreshis
setto1/2ofcwnd justbeforelossevent
TCP: switching from slow start to congestion avoidance
Lecture19-Slide47
![Page 48: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/48.jpg)
Additive Increase, Multiplicative Decrease (AIMD)
• approach:senderincreasestransmissionrate(windowsize),probingforusablebandwidth,untillossoccurs
• additiveincrease:increasecwndby1MSS(MaximumSegmentSize)everyRTTuntillossdetected
• multiplicativedecrease:cutcwndinhalfafterlosscwnd:
TC
P se
nder
co
nges
tion
win
dow
siz
e
AIMD saw tooth behavior: probing
for bandwidth
additively increase window size … …. until loss occurs (then cut window in half)
time Lecture19-Slide48
linkcapacity
![Page 49: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/49.jpg)
Q:whenshouldtheexponentialincreaseswitchtolinear?
A:whencwndgetsto1/2ofitsvaluebeforetimeout.
Implementation:• variablessthresh • onlossevent,ssthreshis
setto1/2ofcwnd justbeforelossevent
TCP: switching from slow start to CA
Lecture19-Slide49
![Page 50: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/50.jpg)
TCP Variants
• Therearetonsofthem!
• Tahoe,Reno,NewReno,Vegas,Hybla,BIC,CUBIC,Westwood,CompoundTCP,DCTCP,YeAH-TCP,…
• Eachtweaksandadjuststheresponsetocongestion.
• Whynotjustfindacwndvaluethatworks,andstickwithit?
Lecture19-Slide50
![Page 51: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/51.jpg)
fairnessgoal:ifKTCPsessionssharesamebottlenecklinkofbandwidthR,eachshouldhaveaveragerateofR/K
TCP connection 1
bottleneck router capacity R
TCP Fairness
TCP connection 2
Lecture19-Slide51
![Page 52: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/52.jpg)
TCP Fairness
Time
FlowRates
Lecture19-Slide52
Twocompetingsessions:• additiveincreasegivesslopeof1,asthroughputincreases• multiplicativedecrease,decreasesthroughputproportionally
![Page 53: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/53.jpg)
Since TCP is fair, does this mean we no longer have to worry about bandwidth hogging?
A. Yep,solvedit!
B. No,wecanstillgamethesystem.
Ifyouwantedtocheattogetextratrafficthrough,howmightyoudoit?
Lecture19-Slide53
![Page 54: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/54.jpg)
Fairness (more)
FairnessandUDP• Multimediaappsoftendo
notuseTCP– donotwantratethrottledbycongestioncontrol
• InsteaduseUDP:– sendaudio/videoatconstantrate,toleratepacketloss
Fairness,parallelTCPconnections• Applicationcanopenmultiple
parallelconnectionsbetweentwohosts
• Webbrowsersdothis• e.g.,linkofrateRwith9
existingconnections:– newappasksfor1TCP,getsrateR/10
– newappasksfor11TCPs,getsR/2
Lecture19-Slide54
![Page 55: CS 43: Computer Networkschaganti/cs43/f18/... · Flow Control Fast server Low-power device Finite socket buffer space at the receiver. App calls recv() ... – On a congestion event](https://reader035.fdocuments.in/reader035/viewer/2022070704/5e88da895ec8b1068a0030dd/html5/thumbnails/55.jpg)
Summary
• TCPhasmechanismstocontrolsendingrate:– Flowcontrol:don’toverloadreceiver– Congestioncontrol:don’toverloadnetwork
• min(rwnd,cwnd)determineswindowsizeforTCPsegmentpipelining(typicallycwnd)
• AIMD:additiveincrease,multiplicativedecrease
Lecture19-Slide55