Material from Computer Networking: A Top Down Approach. J.F. Kurose and K.W. Ross
Reliable Transport
14-740: Fundamentals of Computer Networks Bill Nace
Reliable Transport 14-740: Fundamentals of Computer Networks Bill - - PowerPoint PPT Presentation
Reliable Transport 14-740: Fundamentals of Computer Networks Bill Nace Material from Computer Networking: A Top Down Approach. J.F. Kurose and K.W. Ross Administration Stu ff is due HW #1 was due 2 slides ago Lab #1 on Tuesday
Material from Computer Networking: A Top Down Approach. J.F. Kurose and K.W. Ross
14-740: Fundamentals of Computer Networks Bill Nace
2
3
4
5
6
7
8
9
10
11
segment
segment
13
Sender Receiver send segment rcv segment send NAK rcv NAK send segment rcv segment send ACK rcv ACK
resend
15
Sender Receiver send seg0 rcv seg0 send NAK rcv NAK send seg0 rcv seg0 send ACK deliver to App rcv ACK send seg1 rcv seg1 send ACK deliver to App rcv ACK send seg1 rcv seg1 send ACK rcv ACK
timer, include seq number
timer and proceed with next segment
set the timer)
Sender Receiver send seg0 rcv seg0 send ACK0 rcv ACK0 send seg1 rcv seg1 send ACK1 rcv seg0 send ACK0 rcv ACK1 send seg0 Sender Receiver send seg0 rcv seg0 send ACK0 rcv ACK0 send seg1 rcv seg1 send ACK1 rcv seg0 send ACK0 rcv ACK1 send seg0 timeout timeout resend seg1
Sender Receiver send seg0 rcv seg0 send ACK0 rcv ACK0 send seg1 rcv seg1 send ACK1 rcv seg0 send ACK0 rcv ACK1 send seg0 timeout timeout resend seg1 rcv seg1 send ACK1
Sender Receiver send seg0 rcv seg0 send ACK0 rcv ACK0 send seg1 rcv seg1 send ACK1 rcv seg0 send ACK0 rcv ACK1 send seg0 timeout timeout resend seg1 rcv seg1 send ACK1 rcv ACK1 do nothing
L = 1000B segment R = 1.5Mbps RTT = 45 ms
L / R = .0053 = 0.1059 L / R + RTT .0503
Sender Receiver
first segment bit transmitted, t=0 last segment bit transmitted, t = L / R RTT ACK arrives. First bit of next segment, t = RTT + L / R first segment bit arrives last segment bit arrives, send ACK
awaiting an ACK
in flight
21
22
A stop-and-wait protocol A pipelined protocol
Data segment Data segments ACK segments
23
3 x L / R = 0.016 = 0.317 L / R + RTT .0503
Sender Receiver
first segment bit transmitted, t=0 last segment bit transmitted, t = L / R RTT ACK arrives. First bit of next segment, t = RTT + L / R first segment bit arrives last segment bit arrives, send ACK last bit of 2nd seg arrives, send ACK last bit of 3rd seg arrives, send ACK
24
segments without overwhelming receiver
without waiting for an ACK
sequence numbers
25
segments allowed
seq# segments in window
seq# n
26
27
send_base nextseqnum window size (N)
already ACK'ed sent, not yet ACK'ed usable, not yet sent not usable
29
Sender Receiver
X
rcv seg0 send ACK0 rcv seg3 (discard) send ACK1 rcv seg1 send ACK1 rcv seg4 (discard) send ACK1 rcv seg5 (discard) send ACK1 rcv seg2 (deliver) send ACK2 rcv seg3 (deliver) send ACK3 send seg0 rcv ACK0 send seg4 seg2 timeout resend seg2 send seg1 send seg2 send seg3 rcv ACK1 send seg5 wait resend seg3 resend seg4 resend seg5
30
31
received segments
ACK not received
32
send_base nextseqnum window size (N)
already ACK'ed sent, not yet ACK'ed usable, not yet sent not usable
rcv_base window size (N)
already received acceptable (within window) buffered and ACK'ed (out of order) not usable
send segment, start timer
send_base = next unACKed seq#
in-order segs and advance window to not-yet-received segment
Sender Receiver
X
seg0 sent 0 1 2 3 4 5 6 7 0 1 2 3 seg1 sent 0 1 2 3 4 5 6 7 0 1 2 3 seg2 sent 0 1 2 3 4 5 6 7 0 1 2 3 seg3 sent 0 1 2 3 4 5 6 7 0 1 2 3 (window full, wait) ACK0 rcvd, seg4 sent 0 1 2 3 4 5 6 7 1 2 3 4 ACK1 rcvd, seg5 sent 0 1 2 3 4 5 6 7 2 3 4 5 seg2 timeout, seg2 resent 0 1 2 3 4 5 6 7 2 3 4 5 ACK 3 rcvd, nothing sent 0 1 2 3 4 5 6 7 2 3 4 5 seg0 rcvd, delivered, ACK0 sent 0 1 2 3 4 5 6 7 8 9 1 2 3 4 seg1 rcvd, delivered, ACK1 sent 0 1 2 3 4 5 6 7 8 9 2 3 4 5 seg3 rcvd, buffered, ACK3 sent 0 1 2 3 4 5 6 7 8 9 2 3 4 5 seg4 rcvd, buffered, ACK4 sent 0 1 2 3 4 5 6 7 8 9 2 3 4 5 seg5 rcvd, buffered, ACK5 sent 0 1 2 3 4 5 6 7 8 9 2 3 4 5 seg2 rcvd, ACK2 sent seg2, seg3, seg4, seg5 delivered 0 1 2 3 4 5 6 7 8 9 6 7 8 9
0 1 2 3 0 1 2 0 1 2 0 1 2 3 0 1 2 1 2 3 0 1 2 3 0 1 2 2 3 0 0 1 2 3 0 1 2 3 0 1 0 1 2 3 0 1 2 0 1 2 0 1 2 3 0 1 2 0 1 2 0 1 2 3 0 1 2 0 1 2 seg0 seg1 seg2 timeout retransmit seg0 s e g receive segment with seq# 0 ACK0 A C K 1 A C K 2
X X X
seg3 0 1 2 3 0 1 2 0 1 2 0 1 2 3 0 1 2 1 2 3 0 1 2 3 0 1 2 2 3 0 0 1 2 3 0 1 2 3 0 1 0 1 2 3 0 1 2 0 1 2 0 1 2 3 0 1 2 0 1 2 0 1 2 3 0 1 2 2 3 0 seg0 seg1 s e g 2 seg0 receive segment with seq# 0 A C K A C K 1 ACK2
X
0 1 2 3 0 1 2 1 2 3
m-w m-1 window (w)
already ACK'ed sent, not yet ACK'ed not usable
m-w window (w)
already received acceptable (within window) received and ACK'ed
m-1 m m+w-1
ecs_kurose_compnetw_6/216/55463/14198702.cw/content/ index.html
39
40
41
42
usage of each RDT tool—checksums, receiver feedback, retransmission, sequence numbers, timer expiration, window—as well as the network faults each is designed to overcome
Wait, Go Back N & Selective Repeat) in order to show how each RDT tool is employed
a protocol affects the protocol design choices. An example is receiver-side buffering
43