A UNIX Parameter
$cat tcp_sack
1
$
Parameter Definition
tcp_sack - BOOLEAN
Enable select acknowledgments (SACKS).
SACK is defined by RFCs 2018, 2883, and 3517 (see Resources for
links to these RFCs). Plain TCP (in other words, non-SACK)
acknowledgments are strictly cumulative-an acknowledgment of N
means that byte N and all previous bytes have been received. The
problem SACK is meant to address is this "all or nothing" nature of
the plain cumulative acknowledgment. For instance, even if packet
2 (in a sequence 0 to 9, say) is the only packet lost during a
transfer, the receiver can issue a plain ACK only for packet 1,
because that is the highest packet it received without a gap. A
SACK receiver, on the other hand, can issue an ACK for 1 plus a
SACK option for packets 3 through 9. This extra information helps
the sender determine that the losses are fairly minimal and that it
only needs to retransmit a little bit of data. Without this extra
information, it would need to retransmit much more data and slow
down its sending rate to accommodate what looks like a high-loss
network.
source: http://www.ibm.com/developerworks/linux/library/l-tcp-sack/index.html
Parameter Code Internals
/* If data was SACKed, tag it and see if we should send more data.
* If data was DSACKed, see if we can undo a cwnd reduction.
*/
if (TCP_SKB_CB(skb)->sacked) {
flag |= tcp_sacktag_write_queue(sk, skb, prior_snd_una);
newly_acked_sacked = tp->sacked_out - prior_sacked;
tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked,
is_dupack, flag);
}
Related From Research Paper
Abstract—The standard transmission control protocol(TCP)
can not distinguish between the random packet losses due to
high bit error rate(BER) and the packet losses due to network
congestion. TCP responds to all losses by invoking congestion
control and avoidance algorithms, resulting in degraded
end-to-end performance in wireless and lossy systems.
Meanwhile, the performance of TCP would be deteriorated
very much when it suffered from multi-packets losses in a
single transmission window. This paper propose a
modification over TCP_SACK version,we called it MSACK.
When MSACK cooperates with the router configured with
explicit congestion notification(ECN), it is capable of
distinguishing the wireless packet losses from the congestion
packet losses, and reacting accordingly. At the same time,
MSACK adopts available bandwidth algorithm at data sender
to optimize cwnd and ssthresh in order to avoiding lower slow
start threshold when packet losses occured. On the other hand,
the performance of MSACK in wireless environment can be
improved by taking advantage of retransmission and
restoration in SACK version when TCP encountered
multi-packets losses in a single transmission window. The
simulations in this paper show that the modification of TCP is
feasible, and the performance of TCP is improved actually.
source :
Performance Research and Improvement of TCP_SACK in Wireless Environment
Hu Han
Physics & Electronics Information Technology Department
Xiangfan University
Xiangfan?China
xfhuhan@163.com