Our tor-spec left me pretty mystified what the 'recognized' field actually was. It discussed what to do when it was zero, but not what the field was or what non-zero meant. Thankfully Roger filled me in over tasty, tasty pizza.
Patch available in the 'recognized' branch of my repo...
As Roger said on IRC: recognised is very likely zero if the cell is decrypted and destined for this hop. But there is a 1 in 2^32 chance of zero even if the cell is not destined for this hop.
Trac: Keywords: N/Adeleted, doc, tor-spec added Status: needs_review to needs_revision
Thanks, atagar! I think this is as improvement over the existing spec.
I've merged it, and made a couple of small tweaks in ef91cd6a595128. The main one is that I don't think MAY is right here either: as I read RFC 2119, "MAY "is for things that implementations are allowed to do, not for circumstances that will periodically occur.
I've gone with this tweak on your wording:
+ When receiving and decrypting cells the 'recognized' will always be+ zero if we're the endpoint that the cell is destined for. For cells+ that we should relay, the 'recognized' field will usually be nonzero,+ but will accidentally be zero with P=2^-32.
Thanks again for the spec fix!
Trac: Resolution: N/Ato fixed Status: needs_review to closed