Page MenuHomeFreeBSD

tcp: Implement RFC 9937 PRR behavior in the RACK TCP stack
Needs ReviewPublic

Authored by nikhilkottoli2005_gmail.com on Thu, Sep 3, 6:46 PM.

Details

Reviewers
rrs
tuexen
Group Reviewers
transport
Summary

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 .

Test Plan

The packet drill test to validate the patch:

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

nikhilkottoli2005_gmail.com created this object with edit policy "Administrators".
nikhilkottoli2005_gmail.com retitled this revision from Implement RFC 9937 PRR behavior in the RACK TCP stack to tcp: Implement RFC 9937 PRR behavior in the RACK TCP stack.