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

Implement tcp_slow_start_after_idle #3085

Open
Menduist opened this issue Jul 25, 2023 · 1 comment
Open

Implement tcp_slow_start_after_idle #3085

Menduist opened this issue Jul 25, 2023 · 1 comment
Labels
Type: Enhancement New functionality or improved design

Comments

@Menduist
Copy link

Menduist commented Jul 25, 2023

As far as I can tell, the shadow TCP stack doesn't handle this kernel option that is enabled by default in linux.
It has a big impact on bursty traffics, since it will effectively ruin the bandwidth after an idle period > RTO.

Kernel source code:
https://github.com/torvalds/linux/blob/0b5547c51827e053cc754db47d3ec3e6c2c451d2/include/net/tcp.h#L1415-L1427
https://github.com/torvalds/linux/blob/0b5547c51827e053cc754db47d3ec3e6c2c451d2/net/ipv4/tcp.c#L674

Relevant RFCs:
https://datatracker.ietf.org/doc/html/rfc2581#section-4.1

Therefore, a TCP SHOULD set cwnd to no more than RW before beginning
transmission if the TCP has not sent data in an interval exceeding
the retransmission timeout.

@stevenengler
Copy link
Contributor

stevenengler commented Jul 27, 2023

Thanks for opening an issue and including the links! We're in the process of rewriting shadow's TCP code, so I'll keep this in mind and try to include it in the rewrite if there's time. It's good that we have a tracking issue for this now, so even if it doesn't get included as part of the rewrite, it should hopefully be straightforward to add later.

@stevenengler stevenengler added the Type: Enhancement New functionality or improved design label Jul 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Enhancement New functionality or improved design
Projects
None yet
Development

No branches or pull requests

2 participants