Opened 3 years ago

Last modified 11 months ago

#24837 new enhancement

Allow Relay Searches for Additional Flags

Reported by: teor Owned by: metrics-team
Priority: Medium Milestone:
Component: Metrics/Onionoo Version:
Severity: Normal Keywords:
Cc: Actual Points:
Parent ID: Points:
Reviewer: Sponsor:


I just tried to search for all the FallbackDirs on Relay Search to find out if they had been updated.

But I didn't get any results with a simple search: "flag:FallbackDir".
And the Advanced Search doesn't have the additional flags as options.

Child Tickets

Change History (6)

comment:1 Changed 3 years ago by irl

Component: Metrics/Relay SearchMetrics/Onionoo

Currently these are generated by Relay Search. We should move these into Onionoo so that other clients can benefit from them (e.g. metrics-bot) and so that searching works too.

comment:2 Changed 3 years ago by iwakeh

Type: defectenhancement

comment:3 Changed 3 years ago by karsten

Fallback directories are a special case, because Onionoo doesn't even have this data. We'd have to add the data first before adding this additional flag to search parameters.

The other additional flags would be easier. Would you mind adding a list and precise specification for each of them here?

comment:4 Changed 3 years ago by irl

I'll add a list and make individual tickets for these.

Version 0, edited 3 years ago by irl (next)

comment:5 Changed 3 years ago by irl

The following flags are synthesised by Relay Search:

NotRecommended This relay is running a version of tor that is not recommended by the directory authorities
Unmeasured This relay has not been measured by at least 3 bwauths
Hibernating This relay indicated that it is hibernating in its last known descriptor
FallbackDir This relay is listed as a fallback directory in the tor source code
ReachableIPv6 This relay has been confirmed as reachable via IPv6 in the consensus
UnreachableIPv4 This relay was not reachable on at least one IPv4 address published in the server descriptor
UnreachableIPv6 This relay was not reachable on at least one IPv6 address published in the server descriptor
IPv6 Exit This relay allows exit connections to IPv6 hosts

The relevant code in Relay Search is:

/* Synthetic Additional Flags */
var additional_flags = []
if (!((typeof relay.recommended_version !== 'undefined') ? relay.recommended_version : true)) additional_flags.push("Not Recommended");
if (!((typeof relay.measured !== 'undefined') ? relay.measured : true)) additional_flags.push("Unmeasured");
if (((typeof relay.hibernating !== 'undefined') ? relay.hibernating : false)) additional_flags.push("Hibernating");
if (IsFallbackDir(relay.fingerprint)) additional_flags.push("FallbackDir");
if (relay.or_v6_addresses.length > 0) additional_flags.push("ReachableIPv6");
if (relay.unreachable_or_v4_addresses.length > 0) additional_flags.push("UnreachableIPv4");
if (relay.unreachable_or_v6_addresses.length > 0) additional_flags.push("UnreachableIPv6");
if (relay.exit_policy_v6_summary !== null) additional_flags.push("IPv6 Exit");

For the Onionoo protocol, I would prefer it if these flags are kept separate from the dir-spec flags in a new "additional_flags" field, but for searching it would be good to still have "flag:X" work. I don't know if this introduces a lot more complexity in Onionoo though.

Things that would need to be done as I understand it:

  • Add a new "additional_flags" field to Onionoo's relay details documents
  • Extend the "flag" parameter to also search in this new field, as well as the existing "flags" field
  • Synthesise each of the flags:
    • NotRecommended, Hibernating and Unmeasured are all based on boolean values already in the document
    • ReachableIPv6, UnreachableIPv4 and UnreachableIPv6 will require checking the "or_addresses" and "unreachable_or_addresses" fields
    • IPv6 Exit will require checking the exit policies
    • FallbackDir will depend on #24436

comment:6 Changed 11 months ago by karsten

I just commented on #24436 that we might not have to block on CollecTor providing fallback directory information.

Two more ideas I had when reading this ticket today:

  • We should also add a new "fallback_directory" (or similarly named) field in details documents, rather than just the entry in "additional_flags".
  • Rather than extending the "flag" parameter, which would require a major protocol update, we could as well introduce a new "additional_flag" parameter that searches just additional flags. Users would then have to know whether a flag is one set by the directory authorities or by Onionoo, but that's not necessarily a bad requirement. And we wouldn't need a major protocol update.
Note: See TracTickets for help on using tickets.