Skip to content

WIP: TCP CUBIC

Tom Henderson requested to merge tomhenderson/ns-3-dev:tcp-cubic-new into master

This provides the current WIP of ns-3's TCP CUBIC model.

The following need to be completed, in my opinion, before merging to ns-3-dev:

1) Implement ECN response

2) Implement appropriate byte counting

3) Write test/example program that validates against Linux DCE. See this suggested test plan: https://docs.google.com/document/d/1QiDqBo94wKr1eptTFe6xAB0RWWlwYOy8VLOWrpVAie8/edit?usp=sharing

4) Write Sphinx documentation, highlighting similarities/differences with respect to the RFC and to Linux

Update: Dec 7 2020. I pushed three commits to fix and re-align DCTCP's behavior with Linux, resulting from the introduction of the CWR state and removal of ReduceCwnd API.

  • Added a trace source for DCTCP so that evolution of the alpha variable can be tracked
  • Added a 'CongestionOps' Pointer attribute to TcpSocketBase so that TcpCongestionOps objects can be accessed by trace paths
  • Made DCTCP inherit from LinuxReno
  • Remove TcpCongestionOps::ReduceCwnd() method

The current alignment with Linux (DCE kernel 4.4) is very good; any resulting differences are probably largely due to pacing differences. See:

https://drive.google.com/drive/folders/1mnW9h_yUh5jcGT6jlhJ2c-m3lDRywzMJ?usp=sharing

Update: Dec 22 2020. The DCTCP updates have been pushed to ns-3-dev, and this CUBIC code is now rebased on it.

Edited by Tom Henderson

Merge request reports