The main changes implemented in the TCP RACK stack (rack.c and tcp_rack.h) are:
- Early return when no new data is delivered (changed == 0). (RFC 9937 6.2)
- Switching from PRR-CRB to PRR-SSRB only when both SND.UNA advances and no further loss is indicated (SafeACK heuristic). (RFC 9937 4, RFC 9937 6.2)
- Accounting for sequence ranges SACKed before entering recovery in RecoverFS calculation. (RFC 9937 4, RFC 9937 6.1)
- Force a fast retransmit upon entering recovery when prr_out is 0 AND SndCnt is 0. (RFC 9937 4, RFC 9937 6.2)
- Update snd_cwnd per ACK during recovery (snd_cwnd = pipe + prr_sndcnt). (RFC 9937 6.2)
This work was contributed by a team from the National Institute of Technology Karnataka (NITK), under the guidance of Dr. Mohit P. Tahiliani. Team members: @nikhilkottoli2005_gmail.com, @mohnishhemanthkumar_gmail.com, , @manishagarwal428728_gmail.com , and @ppal61679_gmail.com .