CS 356: Computer Network Architectures Lecture 13: Border ...
CS 755 – System and Network Architectures and ...
Transcript of CS 755 – System and Network Architectures and ...
![Page 1: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/1.jpg)
3-1CS 755 - Fall 2014
CS 755 – System and Network Architectures and Implementation
Module 3 - Transport
Martin Karsten
![Page 2: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/2.jpg)
3-2CS 755 - Fall 2014
Notice
Some slides and elements of slides are taken from third-party slide sets. In this module, parts are taken from the Kurose/Ross slide set. See detailed statement on next slide...
![Page 3: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/3.jpg)
3-3CS 755 - Fall 2014
A note on the use of these ppt slides:We’re making these slides freely available to all (faculty, students, readers). They’re in PowerPoint form so you can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: If you use these slides (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we’d like people to use our book!) If you post any slides in substantially unaltered form on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material.
Thanks and enjoy! JFK/KWR
All material copyright 1996-2009J.F Kurose and K.W. Ross, All Rights Reserved
Computer Networking: A Top Down Approach 5th edition. Jim Kurose, Keith RossAddison-Wesley, April 2009.
![Page 4: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/4.jpg)
3-4CS 755 - Fall 2014
Overview
● multiplexing, virtual channel● reliable transmission● flow and congestion control● connection management and semantics
![Page 5: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/5.jpg)
3-5CS 755 - Fall 2014
Networks – Review
● network graph● goal: facilitate any-to-any communication
● main concerns● routing● addressing● scalability
● virtualization
![Page 6: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/6.jpg)
3-6CS 755 - Fall 2014
Transport
● virtual channel● end-to-end transmission performance
● reliable transmission● rate control
● connection management
![Page 7: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/7.jpg)
3-7CS 755 - Fall 2014
Hop by Hop vs. End to End?
● some services only hop by hop● delay control● throughput guarantees
● others also end to end● multiplexing● loss control – reliable transmission● rate control
● principle: if possible, use end to end
![Page 8: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/8.jpg)
3-8CS 755 - Fall 2014
Multiplexing
● multiple logical sessions over same channel● here: IP connectivity provides “virtual channel”● transport session also provides “virtual channel”● multiplexing
● encapsulation / stacking of multiplex label
● demultiplexing● forwarding according to multiplex label● decapsulation / remove multiplex label
![Page 9: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/9.jpg)
3-9CS 755 - Fall 2014
Multiplexing
● Internet addressing convention:● IP address – network node address● transport port – transport session identifier
● Other Approaches● virtual circuit – integrated with network layer● hop-by-hop transport service● session identified locally by virtual circuit identifier
![Page 10: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/10.jpg)
3-10CS 755 - Fall 2014
Layered Service
apptransportnetworkdata linkphysical
apptransportnetworkdata linkphysical
logical end-end transport
apptransportnetworkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
networkdata linkphysical
apptransportnetworkdata linkphysical
logical end-end transport
![Page 11: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/11.jpg)
3-11CS 755 - Fall 2014
Operating System Integration
● OS implements transport protocol● handles asynchronous execution● provides send/receive queue at socket
– socket: named communication endpoint
● OS system calls● create/remove sockets● establish names, connections● send/receive data
![Page 12: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/12.jpg)
3-12CS 755 - Fall 2014
Multiplexing – Multiple Sockets
host 1
application
transport
network
link
physical
P1 application
transport
network
link
physical
application
transport
network
link
physical
P2P3 P4P1
host 2 host 3
= process= socket
![Page 13: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/13.jpg)
3-13CS 755 - Fall 2014
Multiplexing – Single Socket
ClientIP:B
P2
client IP: A
P1P1P3
serverIP: C
SP: 6428
DP: 9157
SP: 9157
DP: 6428
SP: 6428
DP: 5775
SP: 5775
DP: 6428
SP provides “return address”
![Page 14: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/14.jpg)
3-14CS 755 - Fall 2014
Multiplexing – Multiple Connections
ClientIP:B
P1
client IP: A
P1P2
serverIP: C
SP: 9157
DP: 80
SP: 9157
DP: 80
P5 P3
D-IP:CS-IP: A
D-IP:C
S-IP: B
SP: 5775
DP: 80
D-IP:CS-IP: B
![Page 15: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/15.jpg)
3-15CS 755 - Fall 2014
Reliable Transmission
● use acknowledgements to indicate receipt● sender knows data has been received● BUT: two-army problem
● look at functionality first, then performance
![Page 16: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/16.jpg)
3-16CS 755 - Fall 2014
Principles of Reliable data transfer
● important in application, transport, link layers● top-10 list of important networking topics!
● characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
![Page 17: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/17.jpg)
3-17CS 755 - Fall 2014
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)
![Page 18: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/18.jpg)
3-18CS 755 - Fall 2014
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)
![Page 19: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/19.jpg)
3-19CS 755 - Fall 2014
Reliable data transfer: getting started
sendside
receiveside
rdt_send(): called from above, (e.g., by app.). Passed data to deliver to receiver upper layer
udt_send(): called by rdt,to transfer packet over
unreliable channel to receiver
rdt_rcv(): called when packet arrives on rcv-side of channel
deliver_data(): called by rdt to deliver data to upper layer
![Page 20: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/20.jpg)
3-20CS 755 - Fall 2014
Reliable data transfer: getting started
We’ll:● incrementally develop sender, receiver sides of
reliable data transfer protocol (rdt)● consider only unidirectional data transfer
● but control info will flow on both directions!● use finite state machines (FSM) to specify sender,
receiver
state1
state2
event causing state transitionactions taken on state transition
state: when in this “state” next state
uniquely determined by next event
event
actions
![Page 21: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/21.jpg)
3-21CS 755 - Fall 2014
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
Wait for call from above packet = make_pkt(data)
udt_send(packet)
rdt_send(data)
extract (packet,data)deliver_data(data)
Wait for call from
below
rdt_rcv(packet)
sender receiver
![Page 22: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/22.jpg)
3-22CS 755 - Fall 2014
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
![Page 23: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/23.jpg)
3-23CS 755 - Fall 2014
rdt2.0: FSM specification
Wait for call from above
snkpkt = make_pkt(data, checksum)udt_send(sndpkt)
extract(rcvpkt,data)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from below
sender
receiverrdt_send(data)
![Page 24: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/24.jpg)
3-24CS 755 - Fall 2014
rdt2.0: operation with no errors
Wait for call from above
snkpkt = make_pkt(data, checksum)udt_send(sndpkt)
extract(rcvpkt,data)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from below
rdt_send(data)
![Page 25: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/25.jpg)
3-25CS 755 - Fall 2014
rdt2.0: error scenario
Wait for call from above
snkpkt = make_pkt(data, checksum)udt_send(sndpkt)
extract(rcvpkt,data)deliver_data(data)udt_send(ACK)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
Wait for ACK or
NAK
Wait for call from below
rdt_send(data)
![Page 26: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/26.jpg)
3-26CS 755 - Fall 2014
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
Sender sends one packet, then waits for receiver response
stop and wait
![Page 27: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/27.jpg)
3-27CS 755 - Fall 2014
rdt2.1: sender, handles garbled ACK/NAKs
Wait for call 0 from above
sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)
rdt_send(data)
Wait for ACK or NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isNAK(rcvpkt) )
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)
Wait for call 1 from
above
Wait for ACK or NAK 1
![Page 28: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/28.jpg)
3-28CS 755 - Fall 2014
rdt2.1: receiver, handles garbled ACK/NAKs
Wait for 0 from below
sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)
extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
Wait for 1 from below
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt)
extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)
![Page 29: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/29.jpg)
3-29CS 755 - Fall 2014
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
![Page 30: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/30.jpg)
3-30CS 755 - Fall 2014
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
![Page 31: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/31.jpg)
3-31CS 755 - Fall 2014
rdt2.2: sender, receiver fragments
Wait for call 0 from above
sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) )
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0)
Wait for ACK
0
sender FSMfragment
Wait for 0 from below
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)
extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK1, chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq1(rcvpkt))
udt_send(sndpkt)
receiver FSMfragment
![Page 32: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/32.jpg)
3-32CS 755 - Fall 2014
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
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
![Page 33: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/33.jpg)
3-33CS 755 - Fall 2014
rdt3.0 sender
sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timer
rdt_send(data)
Wait for
ACK0
rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,1) )
Wait for call 1 from
above
sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)start_timer
rdt_send(data)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0)
rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,0) )
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1)
stop_timerstop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
rdt_rcv(rcvpkt)
Wait for call 0 from
above
Wait for
ACK1
rdt_rcv(rcvpkt)
![Page 34: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/34.jpg)
3-34CS 755 - Fall 2014
rdt3.0 in action
![Page 35: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/35.jpg)
3-35CS 755 - Fall 2014
rdt3.0 in action
![Page 36: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/36.jpg)
3-36CS 755 - Fall 2014
Performance of rdt3.0
● rdt3.0 works, but performance stinks● example: 1 Gbps link, 15 ms prop. delay, 8000 bit packet:
U sender: utilization – fraction of time sender busy sending
U sender
= .008
30.008 = 0.00027
microseconds
L / R
RTT + L / R =
1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link network protocol limits use of physical resources!
dsmicrosecon8bps10
bits80009
R
Ldtrans
![Page 37: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/37.jpg)
3-37CS 755 - Fall 2014
rdt3.0: stop-and-wait operation
first packet bit transmitted, t = 0
sender receiver
RTT
last packet bit transmitted, t = L / R
first packet bit arriveslast packet bit arrives, send ACK
ACK arrives, send next packet, t = RTT + L / R
U sender
= .008
30.008 = 0.00027
microseconds
L / R
RTT + L / R =
![Page 38: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/38.jpg)
3-38CS 755 - Fall 2014
Pipelined protocols
Pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged pkts
● range of sequence numbers must be increased● buffering at sender and/or receiver
● Two generic forms of pipelined protocols: go-Back-N, selective repeat
![Page 39: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/39.jpg)
3-39CS 755 - Fall 2014
Pipelining: increased utilization
first packet bit transmitted, t = 0
sender receiver
RTT
last bit transmitted, t = L / R
first packet bit arriveslast packet bit arrives, send ACK
ACK arrives, send next packet, t = RTT + L / R
last bit of 2nd packet arrives, send ACKlast bit of 3rd packet arrives, send ACK
U sender
= .024
30.008 = 0.0008
microseconds
3 * L / R
RTT + L / R =
Increase utilizationby a factor of 3!
![Page 40: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/40.jpg)
3-40CS 755 - Fall 2014
Pipelining Protocols
Go-back-N: overview● sender: up to N unACKed
pkts in pipeline● receiver: only sends
cumulative ACKs● doesn’t ACK pkt if there’s a
gap● sender: has timer for
oldest unACKed pkt● if timer expires: retransmit
all unACKed packets
Selective Repeat: overview● sender: up to N unACKed
packets in pipeline● receiver: ACKs individual pkts● sender: maintains timer for
each unACKed pkt● if timer expires: retransmit only
unACKed packet
![Page 41: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/41.jpg)
3-41CS 755 - Fall 2014
Go-Back-NSender:
● k-bit seq # in pkt header● “window” of up to N, consecutive unACKed pkts allowed
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
![Page 42: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/42.jpg)
3-42CS 755 - Fall 2014
GBN: sender extended FSM
if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ }else refuse_data(data)
Waitstart_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])…udt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum) stop_timer else start_timer
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
![Page 43: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/43.jpg)
3-43CS 755 - Fall 2014
GBN: receiver extended FSM
ACK-only: always send ACK for correctly-received pkt with highest in-order seq #
● may generate duplicate ACKs● need only remember expectedseqnum
● out-of-order pkt: ● discard (don’t buffer) -> no receiver buffering!● Re-ACK pkt with highest in-order seq #
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)
![Page 44: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/44.jpg)
3-44CS 755 - Fall 2014
GBN inaction
![Page 45: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/45.jpg)
3-45CS 755 - Fall 2014
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
● sender window● N consecutive seq #’s● again limits seq #s of sent, unACKed pkts
![Page 46: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/46.jpg)
3-46CS 755 - Fall 2014
Selective repeat: sender, receiver windows
![Page 47: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/47.jpg)
3-47CS 755 - Fall 2014
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 #
sender
pkt 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
![Page 48: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/48.jpg)
3-48CS 755 - Fall 2014
Selective repeat in action
![Page 49: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/49.jpg)
3-49CS 755 - Fall 2014
Selective repeat: dilemma
Example: ● 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?
![Page 50: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/50.jpg)
3-50CS 755 - Fall 2014
Flow Control: TCP
● receive side of TCP connection has a receive buffer:
● speed-matching service: matching send rate to receiving application’s drain rate
app process may be slow at reading from buffer
sender won’t overflowreceiver’s buffer by
transmitting too much, too fast
flow control
IPdatagrams
TCP data(in buffer)
(currently)unused buffer
space
applicationprocess
![Page 51: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/51.jpg)
3-51CS 755 - Fall 2014
TCP Flow Control: how it works
(suppose TCP receiver discards out-of-order segments)
● unused buffer space:= rwnd
= RcvBuffer-[LastByteRcvd - LastByteRead]
● receiver: advertises unused buffer space by including rwnd value in segment header
● sender: limits # of unACKed bytes to rwnd
● guarantees receiver’s buffer doesn’t overflow
IPdatagrams
TCP data(in buffer)
(currently)unused buffer
space
applicationprocess
rwndRcvBuffer
![Page 52: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/52.jpg)
3-52CS 755 - Fall 2014
Congestion Control
● decoupled network and transport service:
multiple senders might overwhelm routers
=> packet delay and loss● certain situations: congestion collapse
● another goal:
“fair” sharing of network resources
![Page 53: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/53.jpg)
3-53CS 755 - Fall 2014
Overload without Reliability
● one router, infinite buffers
● no retransmission
● large delays● maximum
throughput
unlimited shared output link buffers
Host Ain : original data
Host B
out
![Page 54: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/54.jpg)
3-54CS 755 - Fall 2014
Overload with Reliability
● one router, finite buffers● retransmission of lost packets
finite shared output link buffers
Host A in : original data
Host B
out
'in : original data, plus retransmitted data
![Page 55: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/55.jpg)
3-55CS 755 - Fall 2014
Overload with Reliability
a) perfect send rate
b) finite buffer -> loss & retransmission
c) retransmission too eager (timeout to small)
R/2
R/2in
ou
t
b.
R/2
R/2in
ou
t
a.
R/2
R/2in
ou
t
c.
R/4
![Page 56: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/56.jpg)
3-56CS 755 - Fall 2014
Circular Bottlenecks
finite shared output link buffers
Host Ain : original data
Host B
out
'in : original data, plus retransmitted data
![Page 57: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/57.jpg)
3-57CS 755 - Fall 2014
Congestion Collapse
● packet drop after upstream bottleneck
=> upstream capacity wasted
Host A
Host B
o
u
t
![Page 58: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/58.jpg)
3-58CS 755 - Fall 2014
Congestion Control
● senders must control rate to avoid permanent network overload
● input signals?● direct feedback from network? overhead!● indirect feedback through receiver? reaction time!
– TCP congestion control– use drop or packet marking to indicate overload
![Page 59: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/59.jpg)
3-59CS 755 - Fall 2014
TCP Congestion Control
● limit depth of pipeline – congestion window● sending rate (roughly): CongWin / RTT● adjust CongWin based on network feedback
● sender infers packet loss– duplicate ACK -> assume light overload– timeout -> assume severe overload
● adaptation regimes/phases● slow start: start at very small rate, increase fast● congestion avoidance: hold rate, increase slow
![Page 60: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/60.jpg)
3-60CS 755 - Fall 2014
TCP Slow Start
● start with small fixed CongWin
● increase exponentially until first loss● double CongWin every
RTT, i.e.:● increment CongWin for
every ACK
● start slow, but increase fast
Host A
one segment
RTT
Host B
time
two segments
four segments
![Page 61: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/61.jpg)
3-61CS 755 - Fall 2014
TCP Congestion Avoidance
● regular operation (no loss):increase CongWin by fixed amount per RTT
● receiver detects missing segment-> send duplicate ACK for previous one
● sender receives 3 duplicate ACKs-> reduce CongWin in half
● but after sender timeout:-> restart Slow Start procedure
![Page 62: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/62.jpg)
3-62CS 755 - Fall 2014
TCP Rate Control
● Slow Start -> Congestion Avoidance● based on threshold (CongWin/2 of last timeout)
![Page 63: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/63.jpg)
3-63CS 755 - Fall 2014
TCP Fairness
Two competing sessions:● Additive increase gives slope of 1, as throughout increases● multiplicative decrease decreases throughput proportionally
R
R
equal bandwidth share
Connection 1 throughput
Connect
ion 2
thro
ughput
congestion avoidance: additive increaseloss: decrease window by factor of 2
congestion avoidance: additive increaseloss: decrease window by factor of 2
![Page 64: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/64.jpg)
3-64CS 755 - Fall 2014
TCP Discussion
● hybrid of Go-Back-N and Selective Repeat● SACK: more precise acknowledgements (limited)
● reduction of CongWin -> pause sending● until ACKs catch up with outstanding data
● refinements● fast retransmit & fast recovery -> resume sending
faster during dupack losses● keep sending at ACK-clocked pace
![Page 65: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/65.jpg)
3-65CS 755 - Fall 2014
TCP Discussion
● TCP fairness relies on configuration values● initial window for slow start● additive increase during congestion avoidance
-> problem with highspeed / long-delay links● more agile congestion control -> robustness?● per-session fairness?
● lots of other approaches in the literature● very little real-world adoption
![Page 66: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/66.jpg)
3-66CS 755 - Fall 2014
Connection Management: TCP
● Connection Establishment: 3-Way Handshake● Step 1: initiator sends SYN to responder
● sets up initial variables, e.g., sequence number
● Step 2: responder responds with SYNACK● sets up initial variables, e.g., sequence number● responder allocates internal buffer
● Step 3: initiator responds with ACK● might already send data along
![Page 67: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/67.jpg)
3-67CS 755 - Fall 2014
Connection Management: TCP
● Connection Teardown – Be Aware of Reliability!
● Step 1: client sends TCP FIN to server
● Step 2: server responds with ACK & sends FIN
● FIN -> no more data● ACK -> all data received
client
FIN
server
ACK
ACK
FIN
close
close
closedti
med w
ait
![Page 68: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/68.jpg)
3-68CS 755 - Fall 2014
Connection Management: TCP
● Step 3: client responds with ACK● enters “TIMED WAIT”● in case ACK is lost
● Step 4: server receives ACK● connection closed
client
FIN
server
ACK
ACK
FIN
closing
closing
closedti
med w
ait
closed
![Page 69: CS 755 – System and Network Architectures and ...](https://reader033.fdocuments.us/reader033/viewer/2022060211/629382303cfc4c26c8492996/html5/thumbnails/69.jpg)
3-69CS 755 - Fall 2014
Interface Semantics
● message interface● message boundaries preserved across transport
● byte-stream interface● message boundaries not preserved● simpler and more flexible for implementation