TCP-SACK

TCP Selective ACK options
Patrick Hamilton
Aaron Sproul
1
Introduction
Context


TCP is in Layer 4, the Transport Layer, of the OSI model.
TCP is responsible for:
 Flow control
 Congestion control
 Reliability
 Sequenced delivery

TCP Selective Acknowledgement (SACK) builds on TCP Reno
by adding SACK options to the TCP header options.
2
Introduction
Problem solved overview

Multiple dropped packets has a catastrophic effect on TCP
throughput in a cumulative ACK environment.
Solution overview

TCP SACK reduces congestion/overhead due to multiple dropped
packets.
Results overview

The benefits of TCP SACK are most noticeable in a lossy high delay
internet path.
3
Background and Motivation
Background

Builds on existing TCP Reno.
Motivation

To reduce retransmission congestion and overhead in the network.
Substantiating arguments/results


In a low loss environment TCP SACK creates overhead.
Processing strain is put on the receiver rather than the sender.
4
The Problem Statement
Problem description



TCP Reno has a cumulative ACK, which means that a sender can only learn
about a single lost packet per RTT.
Large overhead due to multiple packet losses.
Packet loss due to delay from media, faulty media, or from a high
throughput to a low throughput network.
5
Data Sender Behavior
Algorithm


When a SACK option is received, the sender should record
for future reference.
Does SACK implement any additional congestion control over
standard TCP?
NO!
Details

One implementation is to use a flag bit “SACKed”.
6
Data Receiver Behavior
Algorithm



A SACK-Permitted option is negotiated with the 3-way handshake.
Every ACK which isn’t the highest sequence number in the
receiver’s queue receives SACK options.
The receiver transmits the most recent segments in its buffer
queue in the first SACK block. The TCP option space can hold at
most 4 SACK blocks.
 Does the order that segments are reported in the SACK block matter?
NO!

Maximum available option space is not always large enough to
report all blocks in the receivers queue.
7
Data Receiver Behavior
Theory


If the highest sequence number is reported to the sender,
the sender knows the most recent changes to the receiver's
buffer queue.
Will reduce overhead and congestion on the network over a
standard TCP implementation.
8
Examples of TCP SACK
Assume the left window edge is 5000 and that the data
transmitter sends a burst of 8 segments, each containing
500 data bytes.


The first 4 segments are received but the last 4 are dropped.
What type of ACK and ACK sequence number will the receiver
return?
A. The data receiver will return a normal TCP ACK segment
acknowledging sequence number 7000, with no SACK option.
9
Examples of TCP SACK
Assume the left window edge is 5000 and that the data
transmitter sends a burst of 8 segments, each containing 500
data bytes.

The first segment is dropped but the remaining 7 are received.
ACK Left Edge Right Edge
*lost*
5000
5500
6000
5000
5500
6500
5000
5500
7000
5000
5500
7500
5000
5500
8000
5000
5500
8500
5000
5500
9000
10
Performance Evaluation Model
Simulations/experiments/analysis

Recent simulation studies demonstrate the strength of TCP
with SACK over the non-SACK Tahoe and Reno TCP
implementations.
Efficiency and Worst Case Behavior


Worst case exists when only one or consecutive packets are
lost and TCP SACK increases the overhead.
If the return path carrying ACKs and SACK options were
lossless, one block per SACK option packet would always be
sufficient.
11
Related Work
What applications can SACK be used in?

Modification of TCP for a wireless or satellite environment.
Why can SACK be used in that
environment?

Packet loss is not necessarily an indication of congestion.
12
Critique
Limitations of solutions


Hard to implement, because all end users must support the
same options as the receiver.
Dependence on the receiver.
13
Summary and Conclusions
TCP SACK is best utilized in a multi-packet loss
environment.
TCP SACK helps to relieve congestion in networks
with multiple packet loss, by resending only lost
packets and not every packet after the first loss.
14