tcp: Align PRR implementation with RFC 6937 bis-08
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) tons3::TcpPrrRecovery::DoRecovery
,ns3::TcpClassicRecovery::DoRecovery
andns3::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:
- ns3-tcp-cubic-fast-conv ns3-tcp-fast-conv.eps
- ns3-tcp-cubic-friendly ns3-tcp-cubic-friendly.eps
- ns3-tcp-cubic-no-friendly ns3-tcp-cubic-no-friendly.eps
- ns3-tcp-cubic-no-heuristic ns3-tcp-cubic-no-heuristic.eps
Co-authored-by: Aniket Singh aniketsingh84646@gmail.com
Edited by Aniket Singh