Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor Cubic, D-Cubic and Prague code #1794

Open
huitema opened this issue Dec 1, 2024 · 0 comments
Open

Refactor Cubic, D-Cubic and Prague code #1794

huitema opened this issue Dec 1, 2024 · 0 comments

Comments

@huitema
Copy link
Collaborator

huitema commented Dec 1, 2024

The code supports multiple congestion control algorithms, spread onto multiple binaries: cc_common.c, newreno.c, cubic.c and prague.c. The common and newreno parts are well tested, but the coverage of cubic.c and prague.c is limited. For cubic.c, we have some duplication of code between the standard version and the delay based version, dcubic. Code inspection also shows that the "recovery" state of cubic is not well implemented. The prague code is very similar to the new reno code, the main difference being the handling of ECN signals.

These algorithms all have the same basic state machine:

  • a startup phase, implemented as hystart, using code from cc_common.c,
  • a congestion avoidance phase, during which different algorithms use different logic,
  • a recovery phase, during which the congestion control state is frozen until acknowledgement of new packets is received.

That commonality could be used to put more code components in common.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant