Prepare metrics for IPv6
Rumours came up that IPv4 addresses are out and we should prepare for IPv6. Here's an initial (and probably incomplete) list of metrics parts that currently rely on Tor being IPv4-only:
- Tor, geoip database: Directory mirrors count directory requests and resolve the connecting IP addresses to country codes. We use Maxmind's IPv4-based geoip database for this task. Part of the IPv6 integration involves comparing Maxmind's IPv6 database to other databases.
- metrics-db, bridge descriptor sanitizer: We remove all sensitive information from bridge descriptors before publishing them. As part of this process we replace IP addresses with a cryptographic hash value based on the original IP address. We'll have to think about whether we can simply extend this algorithm, or if that reveals too much about our bridges.
- metrics-web, relay search: Our relay search supports lookups by IPv4 address which needs to be extended. It's unclear how well IPv6 is supported by PostgreSQL and by our database schema in particular.
- ExoneraTor: We have a web page, a Java application, and a Python script that allow looking up whether an IP address was registered as relay in the Tor network at a given time.
- VisiTor: We have a Java application and a Python script to parse web server logs to find out what fraction of requests came from Tor users.
- Exit lists: We need a new exit list format with IPv6 support for VisiTor and maybe in the future for ExoneraTor, too.