tcp_sack – BOOLEAN

A UNIX Parameter

$cat tcp_sack

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


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

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s