I am reading the "Tor directory protocol, version 3" and there are some points that I cannot clearly understand, please help!

there are 4 paragraphs as follows:


Clients, directory caches, and directory authorities all use consensus
   documents to find out when their list of routers is out-of-date.
   (Directory authorities also use vote statuses.) If it is, they download
   any missing server descriptors.  Clients download missing descriptors
   from caches; caches and authorities download from authorities.
   Descriptors are downloaded by the hash of the descriptor, not by the
   relay's identity key: this prevents directory servers from attacking
   clients by giving them descriptors nobody else uses. 


Periodically (currently, every 10 seconds), directory caches check
   whether there are any specific descriptors that they do not have and that
   they are not currently trying to download.  Caches identify these
   descriptors by hash in the recent network-status consensus documents.

   If so, the directory cache launches requests to the authorities for these


Clients try to have the best descriptor for each router.  A descriptor is
   "best" if:
      * It is listed in the consensus network-status document.

       Periodically (currently every 10 seconds) clients check whether there are
       any "downloadable" descriptors.  A descriptor is downloadable if:
          - It is the "best" descriptor for some router.
          - The descriptor was published at least 10 minutes in the past.
            (This prevents clients from trying to fetch descriptors that the
            mirrors have probably not yet retrieved and cached.)
          - The client does not currently have it.
          - The client is not currently trying to download it.
          - The client would not discard it immediately upon receiving it.
          - The client thinks it is running and valid (see section 5.4.1 below).


Each client maintains a list of directory authorities.  Insofar as
   possible, clients SHOULD all use the same list.

   Clients try to have a live consensus network-status document at all times.
   A network-status document is "live" if the time in its valid-until field
   has not passed.

By reading 1st, 2nd and 3rd, what I understand is that all descriptors in the consensus will be checked and updated every 10 seconds basing on their hash values.

But in the last paragraph, what I figure out is that the client download the new consensus every one hour because of the fact that Directory Authorities recently publish the new consensus every one hour. In addition, when I check the "cached-microdesc-consensus" file in my Tor Browser Bundle, the following lines seem to be changed every one hour if I keep my Tor Browser alive for many hours.

network-status-version 3 microdesc
vote-status consensus
consensus-method 18
valid-after 2015-03-17 08:00:00
fresh-until 2015-03-17 09:00:00
valid-until 2015-03-17 11:00:00
voting-delay 300 300

Thank you so much for reading my long question. Best Regards!

1 Answer 1


Good and detailed question, but you're misunderstanding a key point about descriptors. A descriptor doesn't change, once you've downloaded it you don't update it. This is guaranteed by using hashes - if a new descriptor is generated, it will have a new hash value, so the new descriptor is fetched. The check every 10 seconds just means that we'll try to fetch descriptors frequently if we cannot get access to them, not that we re-download anything every 10 seconds.

The consensus document lists these descriptors, so when you get a consensus document and it is fresher than the last one you had, you download the descriptors that are referenced in it. Fetching a consensus document happens every few hours for clients.

For this, the whole new consensus document is fetched again, but there is an active task to support downloading only the differences.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .