Chapter 3 outline - PowerPoint PPT Presentation

1 / 15
About This Presentation
Title:

Chapter 3 outline

Description:

3.1 Transport-layer services. 3.2 Multiplexing and demultiplexing ... U sender: utilization fraction of time sender busy sending ... – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 16
Provided by: JimKurosea175
Category:

less

Transcript and Presenter's Notes

Title: Chapter 3 outline


1
Chapter 3 outline
  • 3.1 Transport-layer services
  • 3.2 Multiplexing and demultiplexing
  • 3.3 Connectionless transport UDP
  • 3.4 Principles of reliable data transfer
  • 3.5 Connection-oriented transport TCP
  • 3.6 Principles of congestion control
  • 3.7 TCP congestion control

2
Last lecture
  • Reliable data transfer (rdt)
  • Using FSM specifications
  • Characteristics of channel determine complexity
  • Rdt 1.0 over a reliable channel
  • Rdt 2.0 over a channel with bit errors
  • Rdt 2.1 over a channle with bit errors, and
    handles corrupted ACKs/NAKs
  • Rdt 2.2 over a channel with bit errors, and
    eliminates NAKs
  • Mechanisms
  • Checksum
  • ACKs/NAKs
  • Sequence number
  • Readings
  • Section 3.4

3
rdt3.0 channels with errors and loss
  • New assumption underlying channel can also lose
    packets (data or ACKs)
  • checksum, sequence number, ACKs, retransmissions
    will be of help, but not enough
  • Packet loss is always more difficult to handle
    than bit errors. Why?
  • Q how to deal with loss?
  • sender waits until certain data or ACK lost, then
    retransmits
  • drawbacks?
  • Approach sender waits reasonable amount of
    time for ACK
  • retransmits if no ACK received in this time
  • if packet (or ACK) just delayed (not lost)
  • retransmission will be duplicate, but use of
    sequence numbers already handles this
  • receiver must specify sequence number of pkt
    being ACKed
  • requires countdown timer

4
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
5
rdt3.0 in action
6
rdt3.0 in action
7
Is this an error in rdt3.0?
8
Performance of rdt3.0
  • rdt3.0 works (except for the last example), but
    performance stinks
  • example 1 Gbps link, 15 ms e2e prop. delay, 1KB
    packet

L (packet length in bits)
8kb
T


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

9
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
10
Pipelined protocols
  • Philosophy adding both complexity and efficiency
  • Pipelining sender allows multiple, in-flight,
    yet-to-be-acknowledged packets
  • range of sequence numbers must be increased
  • buffering at sender and/or receiver
  • Two generic forms of pipelined protocols
    go-Back-N, selective repeat

11
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!
12
Go-Back-N
  • Sender
  • k-bit sequence number in packet header
  • window of up to N (how to determine?)
    consecutive unacked packets allowed
  • ACK(n) ACKs all packets up to, including
    sequence number n --cumulative ACK
  • may deceive duplicate ACKs (see receiver)
  • timer for each in-flight packet
  • timeout(n) retransmit packet n and all higher
    sequence number packets in window

13
GBN sender extended FSM
rdt_send(data)
if (nextseqnum lt baseN) sndpktnextseqnum
make_pkt(nextseqnum,data,chksum)
udt_send(sndpktnextseqnum) if (base
nextseqnum) start_timer be careful,
timer for this packet nextseqnum else
refuse_data(data) - buffer is useful
L
base1 nextseqnum1
timeout which timer to check?
start_timer udt_send(sndpktbase) udt_send(sndpkt
base1) udt_send(sndpktnextseqnum-1)
rdt_rcv(rcvpkt) corrupt(rcvpkt)
L
rdt_rcv(rcvpkt) notcorrupt(rcvpkt)
base getacknum(rcvpkt)1 If (base
nextseqnum) stop_timer else start_timer
14
GBN receiver extended FSM
Default other cases
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
    packet with highest in-order sequence number
  • may generate duplicate ACKs
  • need only remember expectedseqnum
  • out-of-order packets
  • discard (dont buffer) -gt no receiver buffering!
  • Re-ACK packet with highest in-order sequence
    number

15
GBN in action
Write a Comment
User Comments (0)
About PowerShow.com