networks and operating systems chapter 6: reliable … and operating systems chapter 6: reliable...
TRANSCRIPT
![Page 1: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/1.jpg)
Networks and Operating Systems Chapter 6: Reliable data transfer
Donald Kossmann & Torsten Höfler Frühjahrssemester 2013
© Systems Group | Department of Computer Science | ETH Zürich
1 ©DINFK, ETH Zürich.
![Page 2: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/2.jpg)
2
Reliable data transfer
• Important in applications, transport, link layers • On the top 10 list of important networking topics... • Characteristics of unreliable channel will determine complexity of reliable
data transfer protocol (rdt)
![Page 3: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/3.jpg)
3
Reliable data transfer 101
send side
receive side
rdt_send(): called from above, (by application). 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
![Page 4: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/4.jpg)
©DINFK, ETH Zürich. 4
State Machines and reliable channels
![Page 5: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/5.jpg)
5
Reliable data transfer We will • 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
state 1
state 2
event causing state transition actions taken on state transition
state: when in this “state” next state uniquely
determined by next event
event actions
![Page 6: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/6.jpg)
6
rdt 1.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 reads data from underlying channel
![Page 7: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/7.jpg)
©DINFK, ETH Zürich. 7
Dealing with corrupted messages
![Page 8: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/8.jpg)
8
rdt 2.0: channel with bit errors
• There is no packet loss • Underlying channel may flip bits in packet
– example: UDP checksum to detect bit errors • Question: How do we recover from errors?
– acknowledgements (ACKs): receiver explicitly tells sender that packet received OK
– negative acknowledgements (NAKs): receiver explicitly tells sender that packet had errors
– sender retransmits packet on receipt of NAK
![Page 9: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/9.jpg)
9
rdt 2.0: FSM specification
sender FSM receiver FSM
![Page 10: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/10.jpg)
10
rdt 2.0 in action (no errors)
sender FSM receiver FSM
![Page 11: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/11.jpg)
11
rdt 2.0 in action (error scenario)
sender FSM receiver FSM
![Page 12: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/12.jpg)
©DINFK, ETH Zürich. 12
Dealing with errors in ACKs
![Page 13: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/13.jpg)
13
rdt 2.0 has a fatal flaw!
• What happens if ACK/NAK is corrupted? – sender doesn’t know what
happened at receiver! – can’t just retransmit: possible
duplicate
• What to do? – sender ACKs/NAKs receiver’s
ACK/NAK? What if sender ACK/NAK is lost?
– retransmit, but this might cause retransmission of correctly received packet!
Handling duplicates • sender adds sequence number to
each packet • sender retransmits current packet if
ACK/NAK garbled • receiver discards (doesn’t deliver up)
duplicate packet
Sender sends one packet, then waits for receiver response
stop and wait
![Page 14: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/14.jpg)
14
rdt 2.1: handles garbled ACK/NAKs (sender side)
![Page 15: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/15.jpg)
15
rdt 2.1: handles garbled ACK/NAKs (sender side)
Receiver has safely received
“0”.
![Page 16: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/16.jpg)
16
rdt 2.1: handles garbled ACK/NAKs (receiver side)
![Page 17: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/17.jpg)
17
rdt 2.1: handles garbled ACK/NAKs (receiver side) I have received
“0”, but sender might not know it. I am prepared
to receive “0” again
![Page 18: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/18.jpg)
18
rdt 2.1: Discussion Sender • sequence number added to packet • two sequence numbers (0,1) are
sufficient. • must check if received ACK/NAK
corrupted • twice as many states because state
must “remember” whether “current” packet has sequence number 0 or 1.
Receiver • must check if received packet is
duplicate – state indicates whether 0 or 1 is
expected packet sequence number
• note: receiver cannot know if its last ACK/NAK was received OK by sender
Assumptions • no message lost • tries to optimize for no seq number in ACK/NAK rdt 2.1 is only a thought experiment • detecting error in ACK/NAK as expensive as correcting error • need seq. numbers in ACK/NAK for other reasons
![Page 19: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/19.jpg)
19
rdt 2.2: a NAK-free protocol • same functionality as
rdt 2.1, using ACKs only • instead of NAK, receiver
sends ACK for last packet received OK – receiver must
explicitly include sequence number of packet being ACKed
• duplicate ACK at sender results in same action as NAK: retransmit current packet
sender FSM
NAK ~ corrupt ACK or wrong ACK
![Page 20: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/20.jpg)
©DINFK, ETH Zürich. 20
Dealing with message loss
![Page 21: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/21.jpg)
21
rdt 3.0: channels with errors and loss
• New assumption: underlying
channel can also lose packets (data or ACKs) in addition to corrupt messages – checksum, seq. #, ACKs,
retransmissions will be of help, but not enough
• Timeout Approach: sender waits
“reasonable” amount of time for ACK • Sender retransmits if no ACK received
in this time • If packet (or ACK) just delayed (but
not lost): – retransmission will be duplicate,
but use of sequence numbers already handles this
– receiver must specify sequence number of packet being ACKed
• Requires countdown timer
![Page 22: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/22.jpg)
22
rdt 3.0 (sender side)
Corrupt ACKs are simply ignored. No need for NAKs (can wait for timeout at sender), but NAK may be an optimizaton. Receiver: Same as in rdt 2.2.
![Page 23: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/23.jpg)
23
rdt 3.0 in action
![Page 24: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/24.jpg)
24
rdt 3.0 in action
![Page 25: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/25.jpg)
25
rdt 3.0 in action (problems?) send pkt0
timeout re-send pkt0
rcv ACK0
send pkt1
rcv ACK1 send new pkt0
rcv ACK0
send new pkt1
rcv pkt0; send ACK0 (slow) rcv pkt0; send ACK0 (again?) rcv pkt1; send ACK1
now everything seems to be OK… Problem: no FIFO channel
x
![Page 26: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/26.jpg)
26
Performance of rdt 3.0
• Back of envelope calculation of performance of rdt 3.0 • example: 1 Gbps link, 15 ms propagation delay, 1kB packet (8kb)
[b=bit, B=Byte, Gbps = Gb/s]
• With the propagation delay, the acknowledgement arrives 30.008ms later (assuming that nodal and queuing delays are 0)
• That is, we only transmit 1kB/30.008ms instead of 1Gb/s
• network protocol limits use of physical resources!
![Page 27: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/27.jpg)
27
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 arrives last packet bit arrives, send ACK
ACK arrives, send next packet, t = RTT + L / R
L: Length of message; R: Bandwidth; L/R: time to feed message into network
![Page 28: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/28.jpg)
Summary
• rdt 3.0 is great to minimize #messages – can only improve if you batch several application messages
into a bigger super-messages – unfortunately, not possible in the Internet
(on the contratrary, need to split into smaller packets) • rdt 3.0 does not exploit bandwidth of channel
– maybe fine on Internet where 1000s of others will do – not fine in local network where you are only user – results in high response times for whole workload
• Idea: send several messages before ACK – generalize Alternating Bit to “window”
©DINFK, ETH Zürich. 28
![Page 29: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/29.jpg)
©DINFK, ETH Zürich. 29
From theory to practice: Go-Back-N
![Page 30: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/30.jpg)
30
Pipelined protocols
• Pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged packets – range of sequence numbers must be increased – buffering at sender and/or receiver
• There are two generic forms of pipelined protocols
– go-Back-N and selective repeat
![Page 31: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/31.jpg)
31
Pipelining: increased utilization first packet bit transmitted, t = 0
sender receiver
RTT
last bit transmitted, t = L / R
first packet bit arrives last packet bit arrives, send ACK
ACK arrives, send next packet, t = RTT + L / R
last bit of 2nd packet arrives, send ACK last bit of 3rd packet arrives, send ACK
Increase utilization by a factor of 3!
![Page 32: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/32.jpg)
32
Go-Back-N Sender • Multiple-bit sequence numbers in packet header • “Window” of up to N consecutive unack’ed packets allowed
ACK(n): ACKs all packets up to and including sequence number n a.k.a. cumulative ACK sender may get duplicate ACKs
timer for each in-flight packet
timeout(n): retransmit packet n and all higher seq# packets in window
Again, assumes FIFO channel!
![Page 33: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/33.jpg)
33
Wait start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) … udt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
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)
base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
base=1 nextseqnum=1
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
Λ
GBN: sender extended FSM
Timer restarted at every receipt! (NB.Not a timer per message.)
![Page 34: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/34.jpg)
34
GBN: receiver extended FSM Receiver (simple version) • ACK-only: always send ACK for correctly-received pkt with highest in-order
sequence number – may generate duplicate ACKs – need only to remember the expected sequence number
• out-of-order packet: – discard (don’t buffer) ! no receiver buffering! – re-ACK packet with highest in-order sequence number
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=1 sndpkt = make_pkt(expectedseqnum,ACK,chksum)
Λ
If (out of order or corrupt) just ACK the last good package
![Page 35: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/35.jpg)
35
GBN in action
![Page 36: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/36.jpg)
©DINFK, ETH Zürich. 36
From theory to practice: Selective Repeat
![Page 37: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/37.jpg)
37
Selective Repeat
• receiver individually acknowledges all correctly received packets – buffers packets, as needed, for eventual in-order
delivery to upper layer • sender only resends packets for which ACK not received
– sender timer for each unACKed packet • sender window
– N consecutive sequence numbers – again limits sequence numbers of sent, unACKed pkts
![Page 38: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/38.jpg)
38
Selective repeat: sender, receiver windows
![Page 39: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/39.jpg)
39
Get data from layer above • if next available sequence number
in window, send packet timeout(n) • resend packet n, restart timer
ACK(n) in [sendbase,sendbase+N-1] • mark packet n as received • if n smallest unACKed pkt, advance
window base to next unACKed sequence number
sender pkt n in [rcvbase, rcvbase+N-1]
send ACK(n)
out-of-order: buffer
in-order: deliver (also deliver buffered in-order packets), advance window to next not-yet-received packet
pkt n in [rcvbase-N,rcvbase-1]
ACK(n)
otherwise
ignore
receiver
Selective repeat
![Page 40: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/40.jpg)
40
Selective repeat in action
Can somebody find the error in this example?
![Page 41: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/41.jpg)
41
Selective repeat: dilemma
Example • sequence numbers: 0…3 • window size = 3 • Receiver cannot tell
whether it receives first or second Message 0!!!
Q: What is the relationship between sequence number size and window size?
(Exercise Groups )
![Page 42: Networks and Operating Systems Chapter 6: Reliable … and Operating Systems Chapter 6: Reliable data transfer ... Pipelining: increased utilization . first packet bit transmitted,](https://reader031.vdocuments.us/reader031/viewer/2022020100/5b48fc8a7f8b9aa4148dd903/html5/thumbnails/42.jpg)
Additional reading
• Sliding window animation: – http://www3.rad.com/networks/2004/sliding_window/
• Sliding window protocols – http://en.wikipedia.org/wiki/Sliding_window
©IKS, ETH Zürich. 42