Customer is facing issues with intermittent connection drops. This was found out to be due to TCP small window attack protection feature on NetScaler.
In the non-working trace we see the following:
The ACK is getting dropped after the initial SYN, SYN-ACK. Here we are able to see the retransmitted packet is the ACK packet.

Also the counter is matching the time of the issue:May 18 01:53:49 2016
nsconmsg -K /var/nslog/newnslog -g tcp_cur_SW
reltime:mili second between two records Wed May 18 01:53:07 2016
Index rtime totalcount-val delta rate/sec symbol-name&device-no&time
135 0 1258237 1 0 tcp_err_SW_init_pktdrop Wed May 18 01:53:07 2016
136 7000 136 1 0 tcp_cur_SW_pcbs Wed May 18 01:53:14 2016
137 7000 1258239 2 0 tcp_err_SW_init_pktdrop Wed May 18 01:53:21 2016
138 0 132 -4 0 tcp_cur_SW_pcbs Wed May 18 01:53:21 2016
140 0 1258241 2 0 tcp_err_SW_init_pktdrop Wed May 18 01:53:49 2016
141 7000 134 4 0 tcp_cur_SW_pcbs Wed May 18 01:53:56 2016
142 0 1258247 6 0 tcp_err_SW_init_pktdrop Wed May 18 01:53:56 2016
143 7000 1258248 1 0 tcp_err_SW_init_pktdrop Wed May 18 01:54:03 2016
144 0 133 -1 0 tcp_cur_SW_pcbs Wed May 18 01:54:03 2016
145 14000 134 1 0 tcp_cur_SW_pcbs Wed May 18 01:54:17 2016
146 7000 130 -4 0 tcp_cur_SW_pcbs Wed May 18 01:54:24 2016
147 7000 133 3 0 tcp_cur_SW_pcbs Wed May 18 01:54:31 2016
148 7000 132 -1 0 tcp_cur_SW_pcbs Wed May 18 01:54:38 2016
149 7000 131 -1 0 tcp_cur_SW_pcbs Wed May 18 01:54:45 2016
150 7000 129 -2 0 tcp_cur_SW_pcbs Wed May 18 01:54:52 2016
151 14000 130 1 0 tcp_cur_SW_pcbs Wed May 18 01:55:06 2016
152 14000 129 -1 0 tcp_cur_SW_pcbs Wed May 18 01:55:20 2016
153 7000 130 1 0 tcp_cur_SW_pcbs Wed May 18 01:55:27 2016
154 7000 129 -1 0 tcp_cur_SW_pcbs Wed May 18 01:55:34 2016
155 7000 130 1 0 tcp_cur_SW_pcbs Wed May 18 01:55:41 2016
156 7000 128 -2 0 tcp_cur_SW_pcbs Wed May 18 01:55:48 2016
157 7000 129 1 0 tcp_cur_SW_pcbs Wed May 18 01:55:55 2016
If a Client with an Initial Sequence Number (ISN) advertises a window size in the final ack which is less than the MSS, then such clients ISN will be put into a hash table and marked as malicious. Before marking the packet as malicious it will send keep alives to the client in order to open up the window or send a higher window size packet.
Further if NetScaler receives a connection request with an ISN matching the entry in the hash table from same or different client it will be silently dropped in the final ACK of such transaction.In NetScaler, we can see following two counters increment when the TCP small window packets are received and dropped silently:
tcp_cur_SW_pcbs
tcp_err_SW_init_pktdrop
We can disable the small window option through nsapimgr command:
root@ns# nsapimgr_wr.sh -ys small_window_protection=0
Number of PEs running: 1
Changing Connection startup small window protection from 1 to 0 ... Done.
Note: nsapimgr are developers specific and these commands needs to be run only under the advice of Citrix Support. Kindly contact Citrix Support before applying any nsapimgr commands.