Tor re-tries directory mirrors that it knows are missing microdescriptors
When a microdescriptor for a relay changes, it takes a while to propagate to directory mirrors. In this time, a client can:
- Download a consensus that references the new microdescriptor
- Try a directory mirror that has an older consensus, and therefore doesn't have that microdescriptor
- Repeat 2
This is a particular issue when:
- the client first bootstraps, and the fallback or authority provides a newer consensus than any of its directory mirrors
- the client has been asleep for a while, and its consensus has expired, so it fetches one straight away
- only 1/3 of a client's directory guards has the new consensus
We can fix this by:
- making clients try the same directory mirror for their consensus and microdescriptors
- making clients avoid directory mirrors with missing microdescriptors
- making clients use a fallback when all of their directory mirrors don't have a microdescriptor
This issue affects primary guards and v3 onion services.