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

feat: implement reliable transport #57

Merged
merged 71 commits into from
Feb 2, 2024

Conversation

ainghazal
Copy link
Collaborator

@ainghazal ainghazal commented Jan 24, 2024

Checklist

  • I have read the contribution guidelines
  • Iff you changed code related to services, or inter-service communication, make sure you update the diagrams in ARCHITECTURE.md.
  • Reference issue for this pull request: refactor to use a layered architecture #47

Description

In this PR I implement the reliability algorithm for the OpenVPN protocol:

  • Each reliable packet emitted is subject to retransmission if it's not acked in time. Retransmission follows an exponential backoff - beginning at 2 seconds, with a cap at 60s.
  • Incoming packets are subject to reordering before being passed to TLS.
  • Incoming packets are passed to reliable.moveDownWorker to send ACKs if there's a packet in the outgoing queue.

@ainghazal ainghazal requested a review from bassosimone January 29, 2024 16:39
@ainghazal ainghazal self-assigned this Jan 29, 2024
@ainghazal ainghazal changed the title wip: implementation of reliable transport implementation of reliable transport Jan 29, 2024
@ainghazal
Copy link
Collaborator Author

Removing "wip" label, I think this PR is ready for review. @bassosimone let me know if you prefer that I extract the cmd/entrypoint I used for testing into a different PR.

Copy link
Contributor

@bassosimone bassosimone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐳

@bassosimone bassosimone merged commit 86b9861 into ooni:main Feb 2, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants