The main transport layer protocols (TCP, UDP) have been active for 40 years.
TCP is not the best in particular environments.
- TCP is mainly used for reliable data transfer
- Alternative is UDP and implementing reliability in application layer
Some poor workloads for TCP include:
- Long, fat pipes (large data transfers, long distance)
- Utilization for TCP is $\frac{L/R}{RTT + L/R}$ (single packet)
- For large $R$ and large RTT, this ratio can be small (link is underutilized, as TCP link cannot understand what is happening)
- Challenge - many packets are in-flight, loss will shut down pipeline
- Wireless networks
- Similar problem with poor utilization
- Bit errors end up being treated similarly to congestion with TCP
- Challenges - loss due to noisy, wireless links, mobility
- Long-delay links
- Challenges - extremely long RTTs
- Data center networks
- Challenges - latency sensitive
- Background traffic flows
- Challenges - low priority, “background” TCP flows
To deal with these scenarios, transport layers functions were moved to application layer and built on top of UDP
- e.g. HTTP/3 QUIC uses UDP
QUIC - Quick UDP Internet Connections
QUIC is an application-layer protocol built on top of UDP.
- Goal is to increase the performance of HTTP
- Deployed on many Google servers, apps (Chrome, YouTube)
- Referred to as both an application-layer and transport-layer protocol