ooni / ooni/probe

Add support for outage detection

Open
#894 5 comments 0 reactions 1 assignee View on GitHub

@bassosimone is already working on this.

Since Sep 14, 2020.

feature new nettest
Dominant language
No language data
Stars
919
Forks
150
PR merge metrics
No merged PRs in 30d

Description

It was brought up on the #ooni channel by @carrotcypher that we may want to have some sort of very minimal probe which does some low throughput operation over time and sends a signal in case it's unable to do it.

This is similar to what we were discussing in Investigating
Internet Blackouts. From the edge of the network
, where we said:

Outage detection
As a first step we need to have some form of heuristic that allows us to understand that a
particular device is experiencing some form of network outage. This can be used as an indicator
to then trigger more fine-grained and in-depth measurements.
Since this need to be done with a fairly high frequency, it’s crucial that what we do to detect
an outage consumes minimal amounts of network bandwidth and that we reserve the most
bandwidth intensive measurements for the follow-up stage.
Each attempt to fetch some minimal document from HTTPS server is ~6KiB of data sent over
the wire: DNS for A and AAAA, TLS handshake and teardown. That’s ~17MiB a month if the test is
done every ~15 minutes. The value of 15min comes from minimal inexact interval supported by
Android’s AlarmManager.4
Failures should trigger follow-up measurements to ensure that it’s something that looks like
a blackout and not just a temporary OONI service failure or blockage, last-mile failure (heavy
wifi interference, or broken LAN switch, CPE failure), ISP subscription termination (e.g. quota
depletion) or network glitch.

It is quite challenging to do this on mobile, as there are battery consumption constraints to take into account, however with the new desktop app maybe we can do something useful in there.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.