Transport Layer
Transport layer handles reliability and is end-to-end

Basics
Reliability Principles
Correctness
- All packets should be delivered (if not, inform the application about failure)
- No duplicates to be delivered
- Packets are delivered in order
Performance
- Low latency / high throughput
- Respect memory constraints of receiver
- Fairness
Sources of Error
Bit Error
- Noise
- Interference
- Fading
Packet Loss due to Congestion
- No more memory to accept the next packet in queue, hence drop it
Bottleneck Bandwidth

Bottleneck Bandwidth: smallest bandwidth among the links through routers that limits the data rate from the server
- Calculating bottleneck bandwidth:

- Package injection (in between
and ) will cause the value to be overestimated - Backlog queue
will cause the value to be underestimated ( waits in a queue while catches up) - So we want to do multiple trials and take the max (or 95%)
Available Bandwidth
- There might be more number of flows through another link (even if that link bandwidth is larger)
Reliable Transfer Protocol Design
- No error at all
- Bit errors in the packets
NACKresend the packet ACKsend next packet
When receiver receives
- Error detection code
- Error correction code
Dealing with Various Errors
Bit Error
- Error when sending
NACKis not a problem - Error when sending
ACKcauses duplication - Solution: introduce sequence # in packets in transport layer header
- Keep 1 bit
- Alternate every time
Bit Error + Packet Loss
- Wait for a while (timeout (T/O)), if an
ACKpacket does not come then re-transmit- TCP Protocol uses a single timer for timeouts
Bit Error + Packet Loss + Delay
- Increase available sequence numbers so that they don't wrap in the same sender to receiver session
- Estimate the max Round Trip Time (RTT) from sender S to receiver R
Efficiency & Pipelining
Efficiency
- For max efficiency, the sender must send no more than
packets until the first ACKreturns
Pipelining
- The number of unacknowledged packets that we can have
Sender can sendpackets without an ACKfrom the receiver
where
Pipelining Protocols
Sliding Window Protocols

(An example of
Go Back N (GBN)
Transmit
- Receiver
has no buffer and drops out-of-order packets - Transmitter
uses a fixed - Receiver
sends in-order cumulative ACK - Transmitter
resends all packets upon timeout or lost packet
Example
Selective ACK (SACK)
For packet
can buffer out-of-order packets also have a window will only ACKpackets that has been received (not cumulative)will re-transmit the packet for which it has timed out will only re-transmit the packets that have timed out

Window Size
We want to pick the correct window size
The available bandwidth is constantly changing
