-
Notifications
You must be signed in to change notification settings - Fork 142
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
webconnectivity: write prototype of new test helper #1729
Comments
Here is the spec we used to guide the first implementation: New Web Connectivity Test Helper Spec
This document describes a draft specification for the new web connectivity test For brevity, we will not delve into rationale and other menial details here. When we're more confident about this document, we'll publish it inside an Request messageThe request message is exactly as in the current test helper:
See below for a definition of Response messageThe response message contains a list of
The
The The
where The
An
An
The The The The
where
See The
The
Test Helper AlgorithmThe test helper resolves the domain in the Otherwise, the test helper merges the endpoints provided by the client inside At this stage, the test helper has constructed an For each endpoint obtained merging the client and the test helper endpoints, the The measurement will consist of the usual steps: TCP connect to the endpoint, These steps will generate an When all the endpoints have been measured, the test helper will determine To decide whether it could perform more measurements, or whether it should Otherwise, the test helper will determine whether it could perform To determine whether it should try QUIC endpoints, the test helper will For a value of The value obtained from Likewise, for any We will not bother with caching the results of previous domain name As an implementation note, if it's possible to obtain better URLs for LimitationsThis draft specification does not address these issues:
These problems will be solved at a later time. |
Spec moved here: ooni/spec#219 |
This is the extension of #431, and my final deliverable for GSoC 2021. The diff introduces: 1) The new `testhelper` which supports testing multiple IP endpoints per domain and introduces HTTP/3 control measurements. The specification of the `testhelper` can be found at ooni/spec#219. The `testhelper` algorithm consists of three main steps: * `InitialChecks` verifies that the input URL can be parsed, has an expected scheme, and contains a valid domain name. * `Explore` enumerates all the URLs that it discovers by redirection from the original URL, or by detecting h3 support at the target host. * `Generate` performs a step-by-step measurement of each discovered URL. 2) A prototype of the corresponding new experiment `websteps` which uses the control measurement of the `testhelper` to know which URLs to measure, and what to expect. The prototype does not yet have: * unit and integration tests, * an analysis tool to compare the control and the probe measurement. This PR is my final deliverable as it is the outcome of the trials, considerations and efforts of my GSoC weeks at OONI. It fully integrates HTTP/3 (QUIC) support which has been only used in the `urlgetter` experiment until now. Related issues: ooni/probe#1729 and ooni/probe#1733.
This commit introduces an alpha-quality spec for the new websteps experiment. See ooni/probe#1729
My main concern here is to remind contributors (_including myself_) about the documents they should have read and that every change may entail also changes in ooni/spec. This work counts as a cleanup before closing ooni/probe#1729.
This work is now completed. We have an alpha spec and prototype code to learn and improve over the initial concept. |
I've spent some time thinking about redirects, and concluded that it would probably be best to treat redirects as separate tests. A redirect may change the domain name. So associating the results of the new domain name with the original domain is not accurate and makes analysis significantly more complex. I need to write code to undo the conflation of the results, but often data is lost. For instance, we can't tell the IP address that was used to make the intermediate connections. Following redirects is also less efficient. The first step is all you need to make conclusions about the original URL. Edit: I guess the top-level urls field is already treating the results as separate tests. Though you don't really need to redo DNS tests when redirects are within the same domain. Will you output the cached results for all same-domain entries? Also, consider checking for circular redirects. |
For |
For errors, I believe it would help to have a nested structure to indicate the chain of errors. For example, a HTTP fetch error may be caused by a TLS error. It may also be helpful to capture protocol-specific values, such as the RCODE, or the HTTP status. |
It seems like there's a meta measurement and protocol-specific measurements. |
This is the extension of ooni#431, and my final deliverable for GSoC 2021. The diff introduces: 1) The new `testhelper` which supports testing multiple IP endpoints per domain and introduces HTTP/3 control measurements. The specification of the `testhelper` can be found at ooni/spec#219. The `testhelper` algorithm consists of three main steps: * `InitialChecks` verifies that the input URL can be parsed, has an expected scheme, and contains a valid domain name. * `Explore` enumerates all the URLs that it discovers by redirection from the original URL, or by detecting h3 support at the target host. * `Generate` performs a step-by-step measurement of each discovered URL. 2) A prototype of the corresponding new experiment `websteps` which uses the control measurement of the `testhelper` to know which URLs to measure, and what to expect. The prototype does not yet have: * unit and integration tests, * an analysis tool to compare the control and the probe measurement. This PR is my final deliverable as it is the outcome of the trials, considerations and efforts of my GSoC weeks at OONI. It fully integrates HTTP/3 (QUIC) support which has been only used in the `urlgetter` experiment until now. Related issues: ooni/probe#1729 and ooni/probe#1733.
My main concern here is to remind contributors (_including myself_) about the documents they should have read and that every change may entail also changes in ooni/spec. This work counts as a cleanup before closing ooni/probe#1729.
This issue is about writing a prototype of the new test helper along with a specification of its behavior.
The text was updated successfully, but these errors were encountered: