Transport Layer
Goals:
understand principles
Overview:
transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data
multiplexing/demultiplexing
instantiation and
#2
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
application transport network data link physical network data link physical
network data link physical application transport network data link physical
Transport-layer protocols
Internet transport services: reliable, in-order unicast delivery (TCP)
application transport network data link physical network data link physical
unreliable (best-effort),
network data link physical application transport network data link physical
#4
send side
receive side
Specification
Inputs: sequence of rdt_send(data_ini) Outputs: sequence of deliver_data(data_outj) Safety: Assume L deliver_data(data_outj) For every i e L: data_ini = data_outi Liveness (needs assumptions): For every i there exists a time T such that data_ini = data_outi
Reliable Data Transfer #8
sender, receiver
state: when in this state next state uniquely determined by next event
event causing state transition actions taken on state transition event actions
state 1
state 2
#9
Rdt1.0:
underlying channel perfectly reliable no bit erros, no loss or duplication of packets, FIFO LIVENESS: a packet sent is eventually received. separate FSMs for sender, receiver: sender sends data into underlying channel receiver read data from underlying channel
#10
event rdt_rcv(datak+1)
one more packet received and delivered. one less packet in the channel
#12
continuously sending data packets, udt_send() eventually, an uncorrupted data packet received.
Reliable Data Transfer #13
If
sender FSM
receiver FSM
Reliable Data Transfer #14
sender FSM
receiver FSM
Reliable Data Transfer #15
sender FSM
receiver FSM
Reliable Data Transfer #16
What to do?
Assume it was a NACK -
Data was delivered Needs to return to wait for call Data was not delivered. Needs to re-send data.
retransmit, but this might cause retransmission of correctly received pkt! Duplicate. Assume it was an ACK continue to next data, but this might cause the data to never reach the receiver! Missing. Solution: sender ACKs/NACKs receivers ACK/NACK. What if sender ACK/NACK corrupted?
Reliable Data Transfer #21
number to each packet sender retransmits current packet if ACK/NACK garbled receiver discards (doesnt deliver up) duplicate packet stop and wait Sender sends one packet, then waits for receiver response
#22
#23
#24
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
#25
rdt2.1, using ACKs only instead of NACK, receiver sends ACK for last pkt received OK
sender FSM
duplicate ACK at
checksum, seq. #, ACKs, retransmissions will be of help, but not enough sender waits until certain data or ACK lost, then retransmits feasible?
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 requires countdown timer
Reliable Data Transfer #28
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.
#29
rdt3.0 sender
#30
#31
rdt3.0 in action
#32
rdt3.0 in action
#33
#34
#35
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!
#38