ooni / backend

Everything related to OONI backend infrastructure: ooni/api, ooni/pipeline, ooni/sysadmin, collector, bouncers and test-helpers
BSD 3-Clause "New" or "Revised" License
50 stars 29 forks source link

collector: discuss alternative protocols for receiving measurements #625

Open hellais opened 1 year ago

hellais commented 1 year ago

We should discuss this with @bassosimone @ainghazal and whoever else is interested

fortuna commented 1 year ago

It would be cool if Outline clients could report success/failure of server connections to OONI. That way we could better understand what protocols and strategies are working where.

ainghazal commented 1 year ago

After @fortuna suggested it, I've been looking at NEL and the reporting api draft. I have a draft for a OONI experiment spec that defines a quasi-compatible data format (I will open a PR in the coming days.)

With that spec, a collector compatible with a NEL policy would then be ~easy to implement [1]. Actually we could support the two cases: direct reporting to OONI backend, and aggregated submissions via the VPN Provider for the cases that might prefer this options. I think there are solid arguments for both use cases.

Other points to consider are whether the semantics of the errors understood by OONI are totally compatible with the known errors for the reporting API - they should be, but perhaps there are corner cases to review.

The only part that still feels like a stretch is how to specify errors related to the initialization of the tunnel (we need to account for handshake and handshake-less protocols), and checking of initial tunnel "health" (i.e., is it enough to have proof that the tunnel gateway routes to the internet, or do we want to impose any sort of more strict criteria?). We need to depart a bit from semantics that are oriented to fetch resources over HTTP (but we can do by adding a fiew fields, and perhaps abusing the URI like we're doing right now for the openvpn and wireguard experiments).

[1] Alas, the nel-collector package has been marked as archived - we're still not clear about the reasons (vinicius suggested it might not support the latest versions of the spec).