Transport Reliability - PowerPoint PPT Presentation

1 / 49
About This Presentation
Title:

Transport Reliability

Description:

none – PowerPoint PPT presentation

Number of Views:18
Avg rating:3.0/5.0
Slides: 50
Provided by: yangrich
Category:

less

Transcript and Presenter's Notes

Title: Transport Reliability


1
Transport Reliability
Richard Alimi 10/12/2009
2
Reliable Data Transfer Getting Started
send side
receive side
3
Potential Channel Errors
  • bit errors
  • loss (drop) of packets
  • reordering or duplication

Characteristics of unreliable channel will
determine complexity of reliable data transfer
protocol (rdt).
4
Outline
  • Recap
  • Reliable data transfer
  • perfect channel
  • channel with bit errors

5
Rdt2.0 Channel With Bit Errors
  • Underlying channel may flip bits in packet
  • New mechanisms in rdt2.0 (beyond rdt1.0)
  • receiver error detection recall UDP checksum to
    detect bit errors
  • sender retransmission
  • receiver feedback control msgs (ACK,NAK)
    rcvr-gtsender
  • 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

6
rdt2.0 FSM Specification
receiver
Wait for data
sender
7
rdt2.0 Operation with No Errors
rdt_send(data)
snkpkt make_pkt(data, checksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) isNAK(rcvpkt)
Wait for data
udt_send(sndpkt)
rdt_rcv(rcvpkt) isACK(rcvpkt)
Wait for data
L
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
extract(rcvpkt,data) deliver_data(data) udt_send(A
CK)
8
rdt2.0 Error Scenario
rdt_send(data)
snkpkt make_pkt(data, checksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) isNAK(rcvpkt)
Wait for data
udt_send(sndpkt)
rdt_rcv(rcvpkt) isACK(rcvpkt)
Wait for data
L
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
extract(rcvpkt,data) deliver_data(data) udt_send(A
CK)
9
Big Picture of rdt2.0
receiver
data (n)
NACK
waiting for N/ACK
data (n)
ACK
waitingfor data
data (n1)
10
rdt2.0 is Incomplete!
  • What happens if ACK/NAK corrupted?
  • Although sender receives feedback, but doesnt
    know what happened at receiver!

11
Two Possibilities
sender
receiver
sender
receiver
data (n)
data (n)
waiting for N/ACK
deliver
NACK
ACK
waiting for N/ACK
waitingfor data
deliver
12
Handle Control Message Corruption
  • It is always harder to deal with control message
    errors than data message errors
  • sender cant just retransmit possible duplicate
  • Handling duplicates
  • sender adds sequence number to each pkt
  • sender retransmits current pkt if ACK/NAK
    garbled
  • receiver discards (doesnt deliver up) duplicate
    pkt

13
rdt2.1b Sender, Handles Garbled ACK/NAKs
Wait for pkt n from above
14
rdt2.1b Receiver, Handles Garbled ACK/NAKs
15
rdt2.1b Summary
  • Sender
  • seq added to pkt
  • must check if received ACK/NAK corrupted
  • Receiver
  • must check if received packet is duplicate
  • by checking if the packet has the expected pkt
    seq

16
Another Look at rdt2.1b
receiver
data (n)
waiting for n
NACK
sending n
data (n)
ACK
waiting n1
data (n)
ACK
sendingn1
data 1 (n1)
waiting for n2
17
State Relationship of rt2.1b
W1 wait for data with seq. 1 S1 sending data
with seq. 1
s0
s1
s2
w3
w1
w2
w0
sender
State invariant - When receivers state is
waiting for seq n, senders state can be sending
either seqn-1or seqn
18
rdt2.1c Sender, Handles Garbled ACK/NAKs Using
1 bit
rdt_send(data)
sndpkt make_pkt(0, data, checksum) udt_send(sndp
kt)
rdt_rcv(rcvpkt) ( corrupt(rcvpkt)
isNAK(rcvpkt) )
Wait for call 0 from above
udt_send(sndpkt)
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
isACK(rcvpkt)
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
isACK(rcvpkt)
L
L
rdt_rcv(rcvpkt) ( corrupt(rcvpkt)
isNAK(rcvpkt) )
rdt_send(data)
sndpkt make_pkt(1, data, checksum) udt_send(sndp
kt)
udt_send(sndpkt)
19
rdt2.1c Receiver, Handles Garbled ACK/NAKs
Using 1 bit
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)
rdt_rcv(rcvpkt) (corrupt(rcvpkt)
sndpkt make_pkt(NAK, chksum) udt_send(sndpkt)
sndpkt make_pkt(NAK, chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) not corrupt(rcvpkt)
has_seq1(rcvpkt)
rdt_rcv(rcvpkt) not corrupt(rcvpkt)
has_seq0(rcvpkt)
sndpkt make_pkt(ACK, chksum) udt_send(sndpkt)
sndpkt make_pkt(ACK, chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
has_seq1(rcvpkt)
extract(rcvpkt,data) deliver_data(data) sndpkt
make_pkt(ACK, chksum) udt_send(sndpkt)
20
rdt2.1c Discussion
  • Sender
  • 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

21
A Flavor of Protocol Correctness Analysis rdt2.1c
  • Combined states of sender and channel
  • Assume the sender always has data to send

corrupt
sender state sending 0 and waiting for ACK
receiver state waiting for 0
channel state packet seq
corrupt
ok
ok
corrupt
ok
ok
ok
corrupt
corrupt
corrupt
ok
22
rdt2.2 a NAK-free protocol
  • Same functionality as rdt2.1c, 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

23
rdt2.2 Sender, Receiver Fragments
rdt_send(data)
sndpkt make_pkt(0, data, checksum) udt_send(sndp
kt)
rdt_rcv(rcvpkt) ( corrupt(rcvpkt)
isACK(rcvpkt,1) )
udt_send(sndpkt)
sender FSM fragment
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
isACK(rcvpkt,0)
rdt_rcv(rcvpkt) (corrupt(rcvpkt)
has_seq1(rcvpkt))
L
receiver FSM fragment
sndpktmake_pkt(ACK,1,
chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
has_seq0(rcvpkt)
extract(rcvpkt,data) deliver_data(data) sndpkt
make_pkt(ACK,0, chksum) udt_send(sndpkt)
24
Outline
  • Review
  • Reliable data transfer
  • perfect channel
  • channel with bit errors
  • channel with bit errors and losses

25
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
  • Q how to deal with loss?
  • Approach sender waits reasonable amount of
    time for ACK
  • requires countdown timer
  • 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

26
rdt3.0 Sender
rdt_send(data)
rdt_rcv(rcvpkt) ( corrupt(rcvpkt)
isACK(rcvpkt,1) )
sndpkt make_pkt(0, data, checksum) udt_send(sndp
kt) start_timer
L
rdt_rcv(rcvpkt)
L
timeout
udt_send(sndpkt) start_timer
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
isACK(rcvpkt,1)
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
isACK(rcvpkt,0)
stop_timer
stop_timer
timeout
udt_send(sndpkt) start_timer
rdt_rcv(rcvpkt)
L
rdt_send(data)
rdt_rcv(rcvpkt) ( corrupt(rcvpkt)
isACK(rcvpkt,0) )
sndpkt make_pkt(1, data, checksum) udt_send(sndp
kt) start_timer
L
27
rdt3.0 in Action
Question to think about How to determine a good
timeout value?
28
rdt3.0 in Action
29
rdt3.0
receiver
data 0 (n-1)
waiting for 0(n-1)
State consistency When receivers state is
waiting n, the state of the sender is either
sending for n-1 or sending for n When senders
state is sending for n, receivers state is
waiting for n or n 1
ACK for 0 (n-1)
sending 0 (n-1)
data 0 (n-1)
waiting for 1 (n)
ACK for 0 (n-1)
data 1 (n)
sending 1(n)
waiting for 0(n1)
30
rdt3.0 Stop-and-Wait Operation
sender
receiver
first packet bit transmitted, t 0
last packet bit transmitted, t L / R
first packet bit arrives
RTT
last packet bit arrives, send ACK
ACK arrives, send next packet, t RTT L / R
What is Usender utilization fraction of time
sender busy sending?
Assume 1 Gbps link, 15 ms e-e prop. delay, 1KB
packet
31
Performance of rdt3.0
  • rdt3.0 works, but performance stinks
  • Example 1 Gbps link, 15 ms e-e prop. delay, 1KB
    packet

L (packet length in bits)
8kb/pkt
T


8 microsec
transmit
R (transmission rate, bps)
109 b/sec
  • 1KB pkt every 30 msec -gt 33kB/sec thruput over 1
    Gbps link
  • network protocol limits use of physical resources
    !

32
A Summary of Questions
  • How to improve the performance of rdt3.0?
  • What if there are reordering and duplication?
  • How to determine the right timeout value?

33
Outline
  • Review
  • Reliable data transfer
  • perfect channel
  • channel with bit errors
  • channel with bit errors and losses
  • sliding window reliability with throughput

34
Sliding Window Protocols Pipelining
  • 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

35
Pipelining Increased Utilization
sender
receiver
first packet bit transmitted, t 0
last bit transmitted, t L / R
first packet bit arrives
RTT
last packet bit arrives, send ACK
last bit of 2nd packet arrives, send ACK
last bit of 3rd packet arrives, send ACK
ACK arrives, send next packet, t RTT L / R
increase utilization by a factor of 3!
Question a rule-of-thumb window size?
36
Go-Back-n
  • Sender
  • k-bit seq in pkt header
  • window of up to W, consecutive unacked pkts
    allowed

W
  • ACK(n) ACKs all pkts up to, including seq n -
    cumulative ACK
  • note ACK(n) could mean two things I have
    received upto and include n, or I am waiting for
    n
  • timer for the packet at base
  • timeout(n) retransmit pkt n and all higher seq
    pkts in window

37
GBN Sender Extended FSM
rdt_send(data)
if (nextseqnum lt baseW) sndpktnextseqnum
make_pkt(nextseqnum,data,chksum)
udt_send(sndpktnextseqnum) if (base
nextseqnum) start_timer nextseqnum else
block sender
L
base1 nextseqnum1
start_timer udt_send(sndpktbase) udt_send(sndpkt
base1) udt_send(sndpktnextseqnum-1)
if (new packets ACKed) advance base if
(more packets waiting) send more
packets if (base nextseqnum)
stop_timer else start_timer for the packet at
new base
38
GBN Receiver Extended FSM
default
udt_send(sndpkt)
rdt_rcv(rcvpkt) notcurrupt(rcvpkt)
hasseqnum(rcvpkt,expectedseqnum)
L
Wait
extract(rcvpkt,data) deliver_data(data) sndpkt
make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpk
t) expectedseqnum
expectedseqnum1 sndpkt
make_pkt(expectedseqnum,ACK,chksum)
  • ACK-only always send ACK for correctly-received
    pkt with highest in-order seq
  • need only remember expectedseqnum
  • out-of-order pkt
  • discard (dont buffer) -gt no receiver buffering!
  • re-ACK pkt with highest in-order seq
  • may generate duplicate ACKs

39
GBN inAction
window size 4
40
Discussion Efficiency of Go-Back-n
  • Assume window size W
  • Assume each packet is lost with probability p
  • On average, how many packets do we send for each
    data packet?

41
Selective Repeat
  • Sender window
  • Window size W W consecutive unACKed seq s
  • Receiver individually acknowledges correctly
    received pkts
  • buffers pkts as needed, for eventual in-order
    delivery to upper layer
  • ACK(n) means received packet with seq n only
  • buffer size at receiver window size
  • Sender only resends pkts for which ACK not
    received
  • sender timer for each unACKed pkt

42
Selective Repeat Sender, Receiver Windows
W
W
43
Selective Repeat
  • pkt n in rcvbase, rcvbaseW-1
  • send ACK(n)
  • if (out-of-order) mark and buffer pkt nelse
    /in-order/
  • deliver any in-order packets
  • otherwise
  • ignore
  • data from above
  • unACKed packets is less than window size W, send
    otherwise block app.
  • timeout(n)
  • resend pkt n, restart timer
  • ACK(n) in sendbase,sendbaseW-1
  • mark pkt n as received
  • update sendbase to the first packet unACKed

44
Selective Repeat in Action
45
Discussion Efficiency of Selective Repeat
  • Assume window size W
  • Assume each packet is lost with probability p
  • On average, how many packets do we send for each
    data packet?

46
State Invariant Window Location
  • Go-back-n (GBN)
  • Selective repeat (SR)

sender window
receiver window
sender window
receiver window
47
Q what relationship between seq size and
window size?
Window Location
  • Go-back-n (GBN)
  • Selective repeat (SR)

sender window
receiver window
sender window
receiver window
48
Selective Repeat Seq Ambiguity
  • Example
  • seq s 0, 1, 2, 3
  • window size3
  • receiver sees no difference in two scenarios!
  • incorrectly passes duplicate data as new in (a)

49
Sliding Window ProtocolsGo-back-n and Selective
Repeat
Less efficient
More efficient
M gt W
M 2W
W
1
More complex
Simpler
p the loss rate of a packet M number of seq
(e.g., 3 bit M 8) W window size
Write a Comment
User Comments (0)
About PowerShow.com