Hi isis,

On 14 Dec 2017, at 12:46, isis agora lovecruft <isis@torproject.org> wrote:

6.1. New Subprotocols and Subprotocol Versions

  This proposal introduces, following prop#264, the following new
  subprotocol numbers and their uses.

6.1.1. Relay Subprotocol

    "Relay 3" -- The OP supports all of "Relay 2", plus support for CREATE2V
      and CREATED2V cells and their above specification for link-layer
      authentication specifiers.

We usually specify that the numbers will be allocated when the proposal
is merged. That avoids gaps in the numbering, and weird semantics like
"4 doesn't support 3".

In particular, an upcoming IPv6 proposal will need a new Relay protover,
and it might get merged in 0.3.3.

6.1.2. Link Subprotocol

    "Link 5": The OP supports all of "Link 1-4", plus support for the new
      EXTEND2 semantics.  Namely, it understands that an EXTEND2 cell whose
      "hlen" field is greater than 505 will be followed by further "hdata"
      in fragmented EXTEND2 cells which MUST follow.  It also understands
      that the following combination of EXTEND2 payload specifiers
      indicates that the cell is a continuation of the earlier payload
      portions:

          nspec = 0;
          htype = 0xffff;
          hlen = 0;

Link version 5 is link padding, which was merged in 0.3.2:
https://gitweb.torproject.org/torspec.git/tree/tor-spec.txt#n571

6.1.3. Handshake Subprotocol

  Additionally, we introduce a new subprotocol, "Handshake" and the
  following number assignments for previously occuring instances:

    "Handshake 1" -- The OP supports the TAP handshake.

    "Handshake 2" -- The OP supports the ntor handshake.

  We also reserve the following assignments for future use:

    "Handshake 3" -- The OP supports the "hybrid+null" ntor-like handshake
      from prop#269.

    "Handshake 4" -- The OP supports a(n as yet unspecified) post-quantum
      secure hybrid handshake, that is, the "hybrid+null" handshake from
      "Handshake 3", except with "null" part replaced with another (as yet
      unspecified) protocol to be composed with the ntor-like ECDH-based
      handshake.

  Further handshakes MUST be specified with "Handshake" subprotocol
  numbers, and MUST NOT be specified with "Relay" subprotocol numbers.  The
  "Relay" subprotocol SHALL be used in the future to denote changes to
  handshake protocol handling of CREATE* and EXTEND* cells, i.e. CREATE,
  CREATED, CREATE_FAST, CREATED_FAST, CREATE2, CREATED2, CREATE2V,
  CREATED2V, EXTEND, EXTENDED, EXTEND2, and EXTENDED2.

  Thus, "Handshake 1" is taken to be synonymous with "Relay 1", and
  likewise "Handshake 2" is with "Relay 2".

Since this is a new protover field, it's ok to reserve numbers :-)

6.2. Subprotocol Recommendations

  After the subprotocol additions above, we change to recommending the
  following in the consensus:

     recommended-client-protocols […] Link=5 Relay=3 Handshake=2
     recommended-relay-protocols  […] Link=5 Relay=3 Handshake=2

I don't think we will want to jump straight to recommending the highest
protovers.

Is there a reason for this?
Does it lead to warnings on clients or relays?

     required-client-protocols    […] Link=4-5 Relay=2-3 Handshake=1-2
     required-relay-protocols     […] Link=3-5 Relay=1-3 Handshake=1-2

T