[tor-dev] Deprecating Tor Protocol Versions

David Goulet dgoulet at torproject.org
Fri May 15 10:53:46 UTC 2020


On 15 May (13:58:06), teor wrote:
> Hi all,
> 
> Nick and I were talking about how we remove legacy features in tor,
> and their corresponding subprotocol versions.
> 
> Here is a list of the current subprotocol versions:
> https://gitweb.torproject.org/torspec.git/tree/tor-spec.txt#n2049
> 
> Here's a recent protocol version proposal, which deals with
> recommending and requiring new features:
> https://gitweb.torproject.org/torspec.git/tree/proposals/303-protover-removal-policy.txt
> 
> But we don't have a similar proposal for removing support for older
> protocol versions from the tor codebase.
> 
> For an example of what that proposal could look like, see our proposal
> for deprecating consensus methods:
> https://gitweb.torproject.org/torspec.git/tree/proposals/290-deprecate-consensus-methods.txt
> 
> Here's the original conversation Nick and I had:
> https://github.com/torproject/tor/pull/1874#discussion_r423713579
> 
> But after reading our consensus methods deprecation proposal, I've
> changed my mind. I think that we should check for "protocol N, and
> any later version" by default.

I agree that this is the right approach imo as well.

> 
> That's what we do for consensus methods, and it seems to work well.
> We can drop the earliest consensus methods, and recent tor versions
> just keep working.
> 
> If we need an incompatible change, we can make it another protocol
> version, and recommend then require support for it.
> 
> So here's an edited version of my notes on that ticket:
> 
> There are a few instances of ">=" and "=" confusion in protocol
> versions. We should try to fix them all.
> 
> It only matters when we remove protocol versions. We haven't
> really specified, tested, or exercised this functionality in
> practice. And so our reviewers lack experience. (And when we did
> discover a need for it with NSS and LinkAuth, it was more complicated
> than we expected.)
> 
> I'd like to see a proposal that tells us how to check future protocol
> versions as they are added. Along with a migration plan for disabling
> protocol versions.
> 
> So let's also open a ticket to check for "any future version".
> We should replace all "=" checks with ">=". Let's make sure we check
> all the places where we use protocol versions, even if they don't
> have a summary flag.
> 
> Overall, I think it would be helpful if future protocol versions were
> orthogonal. Or if they depend on earlier features, that dependency
> should be clearly documented. (For example, Relay=3 IPv6 extends
> depends on Relay=2 EXTEND2 cells. So if we were checking EXTEND2 cell
> support, it would be Relay=2 or Relay=3.)

At the moment, they do depend between each other last time I had that
discussion with Nick. As in the later in your example.

Which means that supporting protocol version with a ">=" is consistent with
our "non-written expectations" that we have now.

So if I understand correctly, we'll need to add a new protocol version let say
N+1 in order to deprecate anything <= N ?

As an example, Relay=4 could mean "deprecate Relay=2 and use only Relay=3"

I'm +1 on this if iiuc.

Cheers!
David

-- 
dApigzB8NtOQEAlKqhqbshxjxOMakjiX9LGU9wvhFqs=
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20200515/79a97542/attachment.sig>


More information about the tor-dev mailing list