This relay was last included in a consensus on 2017-05-31 at 22:00:00 UTC. It was listed there with version 0.3.0.6 which was not a recommended server version at the time. That's why recommended_version is false.
The relay may have uploaded a server descriptor with "Tor 0.3.0.7 on FreeBSD" as platform string after that (I haven't checked when that was), but that descriptor never made it into a consensus.
We only look at the consensus for determining recommended versions, which is also what Tor clients do.
This is not a bug in Onionoo, just a rare edge case of which there are probably a dozen more. Closing as not-a-bug. Thanks for the report anyway!
Trac: Status: new to closed Resolution: N/Ato not a bug
thanks for your prompt reply, since the ticket has been closed I'm answering here.
We display whatever version was last uploaded by the relay but we only care about what made it into the consensus.
What do you think about also just displaying whatever made it into the consensus so there is no mismatch between what atlas displays and what is actually in the consensus?
Sounds plausible to me. I'm currently focusing on metrics-lib, so I'm reopening this ticket for now.
Trac: Resolution: not a bug toN/A Summary: recommended_version is false but it should be true to Include relay version listed in consensus in addition to platform line from server descriptor Type: defect to enhancement Status: closed to reopened
I suggest we add a new "version" field in addition to the existing "platform" field. For relays we include the version listed in the consensus in that field. Then we have both versions: "platform" with the version from the server descriptor and "version" with the version from the consensus.
And for bridges we include the version substring from the "platform" line. That's somewhat redundant. But in some cases it might be easier for clients to process that version string without the rest of the rest of the "platform" line around it. No harm in adding that new field to both relay and bridge details documents.
Hmm, you might have found something here, but I'm not certain yet. (And I have too many other things going on to take a closer look.)
For the record, recommended server versions as of your comment were: 0.2.5.16, 0.2.5.17, 0.2.9.14, 0.2.9.15, 0.3.0.13, 0.3.0.14, 0.3.1.9, 0.3.1.10, 0.3.2.8-rc, 0.3.2.9.
fingerprint: the relay fingerprint, limited to the relays you listed
timestamp: the timestamp when a descriptor was published or after which a status was declared valid
descriptor: "server" for server descriptors published by the relay, "vote" for network status votes, "consensus" for network status consensuses
authority: authority nickname in case of a vote and blank otherwise
version: tor software version
Again, I'm not certain yet, but it looks like there's a delay of a few hours between relays publishing a server descriptor with a new tor software version number and authorities including that version in their votes. This delay is different between authorities, with some authorities picking up the change earlier than others.
If this is true, and somebody would have to look through the attached file in detail, that's a bug in the authorities. Totally wild guess: authorities might consider platform changes "cosmetic" and continue using an older descriptor of the relay until that gets too old.
However, from Onionoo's perspective I think we don't have a bug here. Onionoo uses whatever version it sees in the consensus to say whether a relay runs a recommended version or not. If the authorities don't update that version number properly, that's not something that Onionoo can fix.
Want to analyze this more and possibly open a ticket in Core Tor/Tor if you can confirm that this is a bug in tor? (But please don't move this ticket to that component, because 90% of what's discussed above is irrelevant for the issue you may have found.)
Hmm, I don't see how Onionoo would be the issue here. The preliminary analysis that I did in comment 11 above is not based on Onionoo, but on a new analysis made using metrics-lib.
I am waiting for some more examples in the Core Tor ticket.
Did you check the CSV file that is attached to this ticket? That just contains the relays above. I'm going to upload the full file with all relay fingerprints now and will post the link here in 10-20 minutes.
So, from the discussion in #24864 (moved) it sounds like this is either a bug in the tor daemon or somewhat non-intuitive behavior of the tor daemon. But I don't see where Onionoo would be doing something wrong here. If there's no bug, we should close this ticket again.
I believe there is still something that is related to onionoo regardless of the other related tickets.
If onionoo says tor_version:some good tor version
and it displays recommended_version:false
than there seems to be a mismatch.
Onionoo should display the tor version it uses to compare against the list of recommended_versions
and not any other version. If it does, this mismatch will disappear, right?
Onionoo displays the platform from the descriptor.
But it uses the relay version and recommended versions list from the consensus to calculate the relay recommended version field.
This is a correct behaviour.
make Onionoo parse the platform field in the descriptor and compare it to the consensus version
Yes, it would be great if onionoo includes both and atlas could then display a clear info when they are not the same (and display only one if they are the same, so to not confuse operators).
It updates the Onionoo documentation for recommended_version. The versions used in recommended_version come from the consensus or bridge networkstatus. I checked the code for relays and bridges.
make Onionoo parse the platform field in the descriptor and compare it to the consensus version
Yes, it would be great if onionoo includes both and atlas could then display a clear info when they are not the same (and display only one if they are the same, so to not confuse operators).
I am not sure if this fix is a good idea. We don't trust descriptors when they are not in a consensus. (Their details can be wrong.) So why are any of our tools using them? And what should Onionoo do if a relay has multiple descriptors?
And I don't have time to write this fix. It looks like new feature that involves at least one new field. Or a rethink of how we parse descriptors and which ones we should parse.
For an alternative fix where Onionoo stops parsing untrusted descriptors, see #24932 (moved).
It updates the Onionoo documentation for recommended_version. The versions used in recommended_version come from the consensus or bridge networkstatus. I checked the code for relays and bridges.
Thanks for providing that patch! Merged with trivial tweaks, and deployed.
make Onionoo parse the platform field in the descriptor and compare it to the consensus version
Yes, it would be great if onionoo includes both and atlas could then display a clear info when they are not the same (and display only one if they are the same, so to not confuse operators).
I am not sure if this fix is a good idea. We don't trust descriptors when they are not in a consensus. (Their details can be wrong.) So why are any of our tools using them? And what should Onionoo do if a relay has multiple descriptors?
And I don't have time to write this fix. It looks like new feature that involves at least one new field. Or a rethink of how we parse descriptors and which ones we should parse.
In theory, this should be as simple as checking whether the "platform" string starts with "Tor " + version_field_content + " ". This could already be done in Relay Search and doesn't require a new Onionoo field. At least it could be a start, if we really care.
For an alternative fix where Onionoo stops parsing untrusted descriptors, see #24932 (moved).
Indeed, this is worth thinking about. I'll comment on the ticket why this might be tricky to implement, though. But it seems like something we should do.
Okay, I think with the documentation patch merged and #24864 (moved) and #24932 (moved) still open, it's safe to close this ticket now. Doing so. Thanks, everyone!
Trac: Status: needs_review to closed Resolution: N/Ato fixed