-
Notifications
You must be signed in to change notification settings - Fork 63
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
Create throttling measurement methodology #1296
Comments
For more context, this is what is written in our DRL proposal: Bandwidth throttling is commonly being reported around the world (particularly during elections and large-scale protests), but an open methodology for measuring it in an automated way from local vantage points does not exist yet. Last year, we collaborated with Censored Planet on measuring the throttling of Twitter in Russia, but this was the result of manual tests run by in-country volunteer technologists and included the analysis of packet captures. As part of this activity, we will implement a new open methodology for measuring throttling that will be shipped as part of the OONI Probe apps and run automatically from local network vantage points (without requiring any technical expertise from the user, nor the collection of packet captures). This will enable our global community to automatically measure throttling every day and contribute measurements as open data in real-time, supporting the efforts of advocacy groups worldwide (such as the global #KeepItOn campaign). We have already started experimenting with some possible approaches for measuring the presence of bandwidth throttling. We recently, for example, investigated the throttling of Twitter in Russia amid the war in Ukraine through the analysis of data already present in OONI measurements. Through our analysis, we were able to infer that Russia’s throttling infrastructure appears to be centrally managed. We plan to further systematize the collection and analysis of throttling-related information to detect this form of censorship at scale. In developing our methodology, we plan to collaborate with our partner, the Internet Outage Detection and Analysis (IODA) project of Georgia Tech, who are also planning on extending their platform to measure the presence of bandwidth throttling. OONI and IODA datasets and measurement approaches are different, and will therefore be complementary, offering richer insight into bandwidth throttling. |
I have set a tentative timeline on zenhub which probably needs to be adjusted. |
Here's additional contextual information from: ooni/probe#1680
I am going to close ooni/probe#1680 because it's been superseded by this issue, but I also wanted to include the original Epic text to have all the context into the same place. |
This diff improves the DSL for writing nettests introduced in #5 such that we a single homoiconic representation of the DSL. The internal DSL, written in pure Go, could either perform a measurement directly or could be exported to a JSON-based AST. The external DSL derives from the JSON-serialized AST and runs the same operations as the internal one, except that type checking happens at runtime. Because the internal DSL is in pure Go, we don't need to write custom code for type checking. At the same time, we have now lost the possibility of having a polymorphic HTTP step and we need to cast a TCP, TLS, or QUIC connection to become an HTTP connection by using the proper operation. All the other functionality should be compatible with #5. Obviously, I needed to change the JSON representation to accommodate for minor changes, so the previously serialized JSONs should not be working anymore. This is fine, since we're still in the experimentation stage. To be more confident that dynamic type checking works, this PR added comprehensive [netem](https://github.com/ooni/netem) based QA tests that exercise the most common type conversions happening on success or error. In terms of terminology, I also chose to replace "func" with "stage" (or "stage_name") since it seems more selective to deal with the composition of pipeline stages than with the composition of functions. (The pipeline stages are functions but, by calling them pipeline stages, we further clarify what we're dealing with.) This work is part of ooni/probe#2494 and ooni/ooni.org#1296. The latter issue is related to this PR because we also included support for throttling to the DSL.
This issue is about creating and adding a throttling measurement methodology to ooniprobe. The general idea to move forward is build upon our recent throttling measurements in Russia.
The text was updated successfully, but these errors were encountered: