Documente Academic
Documente Profesional
Documente Cultură
Transfer
Reliable Data #1
Transport Layer
Goals:
Overview:
understand principles
multiplexing/demultiplexing
instantiation and
implementation in the
Internet
multiplexing/demultiplexing
connectionless transport: UDP
principles of reliable data
transfer
connection-oriented transport:
TCP
reliable transfer
flow control
connection management
Reliable Data #2
network
data link
physical
network
data link
physical
rt
po
ns
network
data link
physical
a
tr
network
data link
physical
nd
-e
nd
network
data link
physical
e
al
ic
application
transport
network
data link
physical
g
lo
logical communication
between app processes
running on different hosts
transport protocols run in end
systems
transport vs network layer
services:
network layer: data transfer
between end systems
transport layer: data
transfer between processes
provide
application
transport
network
data link
physical
Transport-layer protocols
real-time
bandwidth guarantees
reliable multicast
network
data link
physical
network
data link
physical
rt
po
ns
unordered unicast or
multicast delivery: UDP
services not available:
network
data link
physical
a
tr
unreliable (best-effort),
network
data link
physical
nd
-e
nd
congestion
flow control
connection setup
network
data link
physical
e
al
ic
application
transport
network
data link
physical
g
lo
application
transport
network
data link
physical
Reliable Data #4
characteristics of unreliable channel will determine complexity of reliable data transfer protocol
(rdt)
Reliable Data #5
send
side
deliver_data(): called by
rdt to deliver data to upper
receive
side
Reliable Data #6
Packet loss:
Packet duplication:
Reordering of packets
Is channel FIFO?
Reliable Data #7
Specification
Inputs:
sequence of rdt_send(data_ini)
Outputs:
sequence of deliver_data(data_out j)
Safety:
Assume L deliver_data(data_outj)
Reliable Data #8
sender, receiver
state
1
state
2
Reliable Data #9
Rdt1.0:
Proof:
Next event rdt_send(datam+1)
one more packet in the channel
Liveness assumption:
sender FSM
receiver FSM
Reliable Data #14
sender FSM
receiver FSM
Reliable Data #15
sender FSM
receiver FSM
Reliable Data #16
udt_send(NACK)
udt_send(NACK)
udt_send(NACK)
udt_send(ACK)
Claim I holds.
If sndpkt is corrupted,
happened at receiver!
If ACK was corrupt:
What to do?
Assume it was a NACK
rdt2.1: discussion
Sender:
seq # added to pkt
two seq. #s (0,1) will
suffice. Why?
must check if received
ACK/NACK corrupted
twice as many states
Receiver:
must check if received
packet is duplicate
not
same functionality as
duplicate ACK at
Channel uc 3.0
FIFO:
Data packets and Ack packets are delivered in
order.
Errors and Loss:
Data and ACK packets might get corrupt or lost
No duplication: but can handle it!
Liveness:
If continuously sending packets, eventually, an
uncorrupted packet received.
rdt3.0 sender
Extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK[0])
udt_send(ACK[0])
udt_send(ACK[1])
Wait for 0
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
udt_send(ACK[1])
rdt_rcv(rcvpkt)
&& corrupt(rcvpkt)
Wait for 1
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
Extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK[1])
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)
udt_send(ACK[0])
rdt3.0 in action
rdt3.0 in action
rdt_rcv(ACK1)
rdt_rcv(data,seq1)
rdt_rcv(data, seq0)
rdt_rcv(ACK0)
rdt_send(data)
udt_send(data,seq1)
Performance of rdt3.0
rdt3.0 works, but performance stinks
example: 1 Gbps link, 15 ms e-e prop. delay, 1KB packet:
Ttransmit =
8kb/pkt
= 8 microsec
10**9 b/sec
8 microsec
fraction of time
=
= 0.00015
Utilization = U = sender busy sending
30.016 msec
1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link
transport protocol limits use of physical resources!