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

Careful Resume draft-ietf-tsvwg-careful-resume #1654

Open
joergdeutschmann-i7 opened this issue Mar 15, 2024 · 8 comments
Open

Careful Resume draft-ietf-tsvwg-careful-resume #1654

joergdeutschmann-i7 opened this issue Mar 15, 2024 · 8 comments

Comments

@joergdeutschmann-i7
Copy link

joergdeutschmann-i7 commented Mar 15, 2024

FYI: We are working on an implementation of https://datatracker.ietf.org/doc/draft-ietf-tsvwg-careful-resume

It is available here: https://github.com/hfstco/picoquic/tree/careful_resume

Not ready for a pull request yet, but maybe in the near future :-)

@huitema
Copy link
Collaborator

huitema commented Mar 15, 2024

Great! Did you build upon the existing implementation of careful resume that I did when writing the draft?

@hfstco
Copy link
Collaborator

hfstco commented Mar 15, 2024

Not sure what exactly you mean with existing careful resume and to which version of the draft you are refering to, but yes, we are largely using your existing code (notifications, ticket store, seed).

In your current implementation, you jump to a full BDP.

We added the Careful Resume phases (reconnaissance, unvalidated, validating, safe retreat) and tried to follow the latest version of the draft (draft-ietf-tsvwg-careful-resume-07) as closely as possible.
At some points, our modifications conflicted with your jump, so this would probably benefit from some clean-up in the long run.

Also we included some test cases, but this is work in progress.

@huitema
Copy link
Collaborator

huitema commented Mar 15, 2024

I will wait to see the PR do comment more, but the unvalidated/validated transitions were already part of the implementation. The validation was implemented as part of picoquic_validate_bdp_seed. I see that in your branch you rewrote that function to suppress the test of the IP address and the RTT, to check that they match the previous value. I assume that you are moving these tests somewhere else.

@hfstco
Copy link
Collaborator

hfstco commented Mar 15, 2024

I will wait to see the PR do comment more,

I'll let you know again as soon as I have commented more on the code.

but the unvalidated/validated transitions were already part of the implementation. The validation was implemented as part of picoquic_validate_bdp_seed.

I'll take another look at it. We were just surprised that according to the current draft, the path is verified if the RTT is between saved_rtt / 2 and saved_rtt * 10. So we moved the verification to our own implementation.

I see that in your branch you rewrote that function to suppress the test of the IP address and the RTT, to check that they match the previous value. I assume that you are moving these tests somewhere else.

Thanks for the tip, I've already fixed it. Should be changed with the next commit. We are currently only testing with one connection. Accordingly, this has never been noticed.

Keep you up to date here.

@huitema
Copy link
Collaborator

huitema commented Mar 15, 2024

I deliberately did not entirely follow the draft... Especially parts like "between saved_rtt / 2 and saved_rtt * 10". That's way too loose, and will have to change before the draft is published.

The part about "safe retreat" varies depending on the congestion control algorithm. Mostly, I tested this function with BBR, and the safe retreat is automatic. If the server tries to send too fast, packets will be queued or lost. The measured throughput will indicate the actual capacity of the link, which will be the correct value. If packets are lost, BBR will exit startup, go in "draining" mode to clear the excess buffer, and then enter the "probe BW" state with the correct parameters.

@huitema
Copy link
Collaborator

huitema commented Mar 16, 2024

We have a series of tests for the careful resume functionality: all the tests labelled bdp_*, and also the test labelled "satellite_seeded". The test "bdp_ip", for example, verifies that the BDP seeding is not applied if the IP address changed.

@joergdeutschmann-i7
Copy link
Author

Thanks for the discussion at tsvwg/careful-resume#28

We only considered CUBIC (and partly NewReno) so far, but we'll have a look at BBR.
Maybe we can keep this issue open for further picoquic code-related discussions regarding careful resume.

@huitema
Copy link
Collaborator

huitema commented Mar 19, 2024

I already did, and tested, the implementation in BBR. May I suggest that you observe it and enter the issues that you find?

For the other cases, my main concern is replacing an existing implementation by another based on a draft. We risk to have regressions -- but hopefully we can check that by running the tests. We also risk duplication of efforts, but we will see that when reviewing the PR.

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

3 participants