Clarify netflow padding algorithm descriptions

I just had an IRC chat with Mike about padding-spec section 2 in preparation for our work on arti#62 (closed). I'll make some patches to clarify all the issues we covered.

Issues I should resolve include:

  • It appears that we believe netflow logging is directional, so we actually only reset our timers when we write. Not when we read.
  • We reset when we write any cell, including padding.
  • nf_conntimeout_clients applies to circuit prediction timing logic, and probably needs more detail.
  • We currently do padding negotiation after NETINFO, and not at any other time.
    • Clients never have to receive negotiation.
    • Clients respond to negotiation messages by ... dropping? Closing channel? See channelpadding_update_padding_for_channel()
  • We do max(X,X) distribution even though we're being unidirectional.
  • The rationale for randomizing at all is that we want to make it not-completely-trivial to tell if a message is padding.
  • We behave as if the timer reset after every cell sent.
  • If possible, it's better to time based on when our last cell was flushed, not when it was queued. That might not be so easy.
Edited by Nick Mathewson