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

richer input: riseupvpn as a use case #2502

Closed
bassosimone opened this issue Jul 13, 2023 · 1 comment
Closed

richer input: riseupvpn as a use case #2502

bassosimone opened this issue Jul 13, 2023 · 1 comment
Assignees
Labels
enhancement improving existing code or new feature funder/drl2022-2024 methodology issues related to the testing methodology needs investigation This issue needs extra data and investigation ooni/probe-engine priority/high research prototype

Comments

@bassosimone
Copy link
Contributor

This issue is related to ooni/probe-cli#1125 and explores how it would look like to redesign the RiseupVPN experiment using the richer input (and, specifically, the DSL introduced in ooni/2023-05-richer-input#7. RiseupVPN is an interesting use case because this experiment is developed in collaboration with Riseup developers such as @cyBerta. We will consider this issue done when we'll have sketched out how RiseupVPN could look like when using richer input and we have gathered feedback on the strawman design. (This work goes hand in hand with the review of ooni/probe-cli#1125 and informs some of the cherry-picking choices we may apply in this respect.)

@bassosimone bassosimone added enhancement improving existing code or new feature priority/high research prototype methodology issues related to the testing methodology needs investigation This issue needs extra data and investigation ooni/probe-engine funder/drl2022-2024 labels Jul 13, 2023
@bassosimone bassosimone self-assigned this Jul 13, 2023
bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 13, 2023
bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 13, 2023
bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 13, 2023
By making it explicit that we want to include the HTTP body into a
measurement we highlight that including the body should only be done
when the actual content of the body matters. It makes sense, for
example, for Web Connectivity but it does not make sense to do so
in many other contexts.

Noticed when working on ooni/probe#2502
bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 13, 2023
By making it explicit that we want to include the HTTP body into a
measurement we highlight that including the body should only be done
when the actual content of the body matters. It makes sense, for
example, for Web Connectivity but it does not make sense to do so in
many other contexts.

Noticed when working on ooni/probe#2502
bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 13, 2023
bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 14, 2023
@bassosimone
Copy link
Contributor Author

bassosimone commented Jul 14, 2023

Okay, I have implemented it and merged the implementation. Here's how it works:

  1. The backend periodically runs pkg/x/cmd/riseupvpn, which calls the proper bootstrap APIs and generates a DSL including both the API targets and the gateway targets;

  2. The backend will serve to ooniprobes the DSL defining how to run riseupvpn nettests. Possibly, the probe would cache this information for some time (a week?) to allow for running backend-less measurements for some time.

  3. The probe runs the experiment by interpreting the DSL.

As I am going to argue in ooni/probe-cli#1125, the implementation I wrote here does not write toplevel test keys.

Note that riseupvpn is the perfect candidate nettest to be upgrade to the DSL because it is currently disabled out of false positive concerns. My rough plan to move forward is the following:

  1. stop creating toplevel keys such that we focus on collecting data and reckon with the fact that we cannot reliably flag riseupvpn directly in the probe (the implementation in https://github.com/ooni/2023-05-richer-input already does not have toplevel keys, so we've already done this step);

  2. have the check-in v1 API serve us the DSL for riseupvpn (remember that the check-in v1 API response is compressed and note that the DSL compresses quite nicely);

  3. import into probe-cli the dsl package and write the missing unit tests;

  4. rewrite the riseupvpn experiment to use the DSL by copying from the prototype repository https://github.com/ooni/2023-05-richer-input;

  5. write additional netem based tests if needed;

  6. teach the probe to cache the riseupvpn DSL on the local key-value store;

  7. the experiment implementation proper will read the DSL from the local key-value store and then interpret the DSL.

I think it should be possible to include this revamped riseupvpn in v3.19.0.

To conclude: because I was able to write a complete prototype, I think we can consider this activity done.

bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 14, 2023
bassosimone added a commit to ooni/2023-05-richer-input that referenced this issue Jul 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement improving existing code or new feature funder/drl2022-2024 methodology issues related to the testing methodology needs investigation This issue needs extra data and investigation ooni/probe-engine priority/high research prototype
Projects
None yet
Development

No branches or pull requests

1 participant