Skip to content

tcp: Align PRR implementation with RFC 6937 bis-08

Aniket Singh requested to merge anyket/ns-3-dev:prr-bis-08 into master

This MR intends to align current PRR implementation with RFC 6937 bis-08, following changes to the model are made as per RFC specifications:

  • Updated RecoverFS to be initialized as: RecoverFS = pipe (RFC 6675 pipe algorithm).
  • Added a new param isDupAck (which indicates if the latest ACK was DupACK) to ns3::TcpPrrRecovery::DoRecovery, ns3::TcpClassicRecovery::DoRecovery and ns3::TcpRecoveryOps::DoRecovery methods. This param is used for deliveredBytes calculation as per changes in RFC.
  • Removing m_reductionBoundMode as the algorithm now itself decides when to use CRB and when to use SSRB (it uses CRB by default and when the latest ACK is a safeACK, i.e. snd.una advances and no further loss indicated, it uses SSRB).

tcp-cubic-test and tcp-validation-test are failing due to these changes, we have noticed that the behaviour of cwnd has changed which is the reason for these failures. Here are the comparison plots for tcp-cubic-test:

  1. ns3-tcp-cubic-fast-conv ns3-tcp-fast-conv.eps
  2. ns3-tcp-cubic-friendly ns3-tcp-cubic-friendly.eps
  3. ns3-tcp-cubic-no-friendly ns3-tcp-cubic-no-friendly.eps
  4. ns3-tcp-cubic-no-heuristic ns3-tcp-cubic-no-heuristic.eps

Co-authored-by: Aniket Singh aniketsingh84646@gmail.com

Edited by Aniket Singh

Merge request reports

Loading