Opened 3 years ago

Closed 3 years ago

#22882 closed defect (fixed)

The v4 link protocol requires the initiator to set the most significant bit

Reported by: teor Owned by:
Priority: Medium Milestone: Tor: 0.3.2.x-final
Component: Core Tor/Tor Version:
Severity: Normal Keywords: tor-spec, easy, doc, spec
Cc: Actual Points:
Parent ID: #18856 Points:
Reviewer: Sponsor:


tor-spec.txt says:

   To prevent CircID collisions, when one node sends a CREATE cell to
   another, it chooses from only one half of the possible values based
   on the ORs' public identity keys.  In link protocol version 3 or
   lower, if the sending node has a lower key, it chooses a CircID with
   an MSB of 0; otherwise, it chooses a CircID with an MSB of 1. (Public
   keys are compared numerically by modulus.)

   In link protocol version 4 or higher, whichever node initiated the
   connection sets its MSB to 1, and whichever node didn't initiate the
   connection sets its MSB to 0.

   (An OP with no public key MAY choose any CircID it wishes, since an OP
   never needs to process a CREATE cell.)

But this last sentence is only true for v3. For v4, if the most significant bit is not set by a client, relays close the connection with a message like:

Jul 11 20:20:18.000 [info] command_process_create_cell: Received create cell with unexpected circ_id 2147483647. Closing.

Child Tickets

Change History (3)

comment:1 Changed 3 years ago by teor

Parent ID: #18856

Re-parent spec issues found during to the stem ORPort task to that task

comment:2 Changed 3 years ago by nickm

Keywords: spec added

Add 'spec' keyword to items that are just spec fixes. These can land after the feature-freeze.

comment:3 Changed 3 years ago by nickm

Resolution: fixed
Status: newclosed

Fixed with 3540da456b70c4

Note: See TracTickets for help on using tickets.