Trac issueshttps://gitlab.torproject.org/legacy/trac/-/issues2020-06-13T14:05:25Zhttps://gitlab.torproject.org/legacy/trac/-/issues/1754Microdescriptors: caches fetch and server all flavors of consensus2020-06-13T14:05:25ZNick MathewsonMicrodescriptors: caches fetch and server all flavors of consensusRight now, caches only know how to download and use one single consensus flavor. We need them to be able to fetch, parse, store, and serve every flavor. Right now, that means "normal" and "microdesc".
Storing and serving are already i...Right now, caches only know how to download and use one single consensus flavor. We need them to be able to fetch, parse, store, and serve every flavor. Right now, that means "normal" and "microdesc".
Storing and serving are already implemented (I believe) since authorities do them. Parsing and fetching remain are partially implemented in my "microdesc_dl" branch.
See proposals 158 and 162 for more information.Deliverable-Sep2010Nick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/1755Microdescriptors: caches fetch and serve microdescriptors2020-06-13T14:05:26ZNick MathewsonMicrodescriptors: caches fetch and serve microdescriptorsFor microdescriptors to work, clients need to be able to fetch them from the caches. Thus, caches need to fetch microdescriptors and serve them. This is mostly implemented in my "microdesc_dl" branch, but depends on [#1754].
The "cach...For microdescriptors to work, clients need to be able to fetch them from the caches. Thus, caches need to fetch microdescriptors and serve them. This is mostly implemented in my "microdesc_dl" branch, but depends on [#1754].
The "caches fetch and store microdescriptors" code will be reusable for clients.Deliverable-Sep2010Nick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/1756Microdescriptors: clients can fetch and store microdesc consensuses and micro...2020-06-13T14:05:27ZNick MathewsonMicrodescriptors: clients can fetch and store microdesc consensuses and microdescsTo implement microdescriptors (see proposals 158 and 162), we'll need clients to fetch and store microdescriptors and microdescriptor consensuses. The code here will be almost completely the same as that used by caches; see tickets [#17...To implement microdescriptors (see proposals 158 and 162), we'll need clients to fetch and store microdescriptors and microdescriptor consensuses. The code here will be almost completely the same as that used by caches; see tickets [#1754] and [#1755].Deliverable-May2011Nick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/1757Microdescriptors: abstract the notion of "Tor node" in the code2020-06-13T14:05:27ZNick MathewsonMicrodescriptors: abstract the notion of "Tor node" in the codeRight now we have at least 5 things that we use to indicate a Tor node:
* A `const char *` pointing to an ID key digest
* A `routerinfo_t`
* A `routerstatus_t`
* An `extend_info_t`
* An entry in `rephist.c`, though those are mostly...Right now we have at least 5 things that we use to indicate a Tor node:
* A `const char *` pointing to an ID key digest
* A `routerinfo_t`
* A `routerstatus_t`
* An `extend_info_t`
* An entry in `rephist.c`, though those are mostly isolated.
For microdescriptors, we're about to add another thing:
* A `microdescriptor_t`
Making our code work properly with all of these variant things is already a bit hairy. It sure would be nice if we had some kind of abstract node_t that could make it so our code worked well with all of the above.
First, we'll need a basic design here. At the minimum we should make routerstatus_t and routerinfo_t (basically) immutable, and add a node_t that abstracts routerstatus_t and routerinfo_t. Then, we can make it so that its interface can be satisfied by microdescriptor_t as well.Deliverable-Sep2010Nick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/1758Microdescriptors: make clients use microdescriptors instead of router descrip...2020-06-13T14:05:28ZNick MathewsonMicrodescriptors: make clients use microdescriptors instead of router descriptorsThe microdescriptor project ([#1748]) will be done once clients finally use microdescriptors, instead of regular ones, to choose routers and build circuits.
This step needs to come last in the microdescriptor project; it's mainly going ...The microdescriptor project ([#1748]) will be done once clients finally use microdescriptors, instead of regular ones, to choose routers and build circuits.
This step needs to come last in the microdescriptor project; it's mainly going to be figuring out every fool thing we do that requires a routerinfo_t , and making sure that node_t can do it as well using microdescriptor_t.Deliverable-May2011Nick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/1759Microdescriptors: clean out the microdescriptor cache when it gets too big2020-06-13T14:05:28ZNick MathewsonMicrodescriptors: clean out the microdescriptor cache when it gets too bigThe current microdescriptor fetching/cacheing code has no idea of how to forget about microdescriptors once they're too old. Doing this for router descriptors has been a major pain since, like, forever. We should design this more caref...The current microdescriptor fetching/cacheing code has no idea of how to forget about microdescriptors once they're too old. Doing this for router descriptors has been a major pain since, like, forever. We should design this more carefully so that we don't replace one maintenance headache with two.Deliverable-Sep2010https://gitlab.torproject.org/legacy/trac/-/issues/2170Enable microdescriptors on the client side2020-06-13T14:07:27ZNick MathewsonEnable microdescriptors on the client sideAll the logic is in place to let clients fetch microdescriptor consensuses and use microdescriptors in place of descriptors... except for the code to let them turn it on.
See branch "microdesc-use" in my public repository for the implem...All the logic is in place to let clients fetch microdescriptor consensuses and use microdescriptors in place of descriptors... except for the code to let them turn it on.
See branch "microdesc-use" in my public repository for the implementation.Tor: 0.2.3.1-alphahttps://gitlab.torproject.org/legacy/trac/-/issues/3112Only fetch microdescriptors from 0.2.3.1-alpha and later (and authorities)2020-06-13T14:10:22ZNick MathewsonOnly fetch microdescriptors from 0.2.3.1-alpha and later (and authorities)Right now in master, we fetch microdescriptors from authorities and from any host that is running 0.2.3.0-alpha (i.e, the code from git before the 0.2.3.1-alpha release) or later. That's because there are currently (in the consensus I...Right now in master, we fetch microdescriptors from authorities and from any host that is running 0.2.3.0-alpha (i.e, the code from git before the 0.2.3.1-alpha release) or later. That's because there are currently (in the consensus I see) 11 hosts running 0.2.3.0-alpha-dev and none running 0.2.3.1 yet. But at some point soon, we should switch the code so that 0.2.3.1-alpha is required.
The tradeoff here is that 0.2.3.0-alpha-dev hosts are likelier to be broken, but 0.2.3.1-alpha hosts are currently nonexistent.Tor: 0.2.3.x-finalNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/legacy/trac/-/issues/3113Why does starting with -usemicrodescriptors 1 clear out my cached-descriptors?2020-06-13T14:10:22ZNick MathewsonWhy does starting with -usemicrodescriptors 1 clear out my cached-descriptors?So I wanted some A vs B numbers for amount of info downloaded by
I ran without usemicrodescriptors to get a cached-descriptors file, and then I ran with UseMicrodescriptors 1. This seems to have cleared out by cached-descriptors and ca...So I wanted some A vs B numbers for amount of info downloaded by
I ran without usemicrodescriptors to get a cached-descriptors file, and then I ran with UseMicrodescriptors 1. This seems to have cleared out by cached-descriptors and cached-descriptors.new files, which is probably not what we want at all.Tor: 0.2.3.x-finalhttps://gitlab.torproject.org/legacy/trac/-/issues/3560Turn on microdescriptors by default for clients.2020-06-13T14:11:47ZNick MathewsonTurn on microdescriptors by default for clients.All we need to do here is to figure out whether anything breaks when using microdescriptors, fix it, and when there's nothing else big that breaks, change the default in config.c from "UseMicrodescriptors auto" to "UseMicrodescriptors 1".All we need to do here is to figure out whether anything breaks when using microdescriptors, fix it, and when there's nothing else big that breaks, change the default in config.c from "UseMicrodescriptors auto" to "UseMicrodescriptors 1".Tor: 0.2.3.x-finalhttps://gitlab.torproject.org/legacy/trac/-/issues/3599Microdescriptor policy comparison handles "unspec" incorrectly2020-06-13T14:11:59ZNick MathewsonMicrodescriptor policy comparison handles "unspec" incorrectlyIf you start a microdesc client and wait a while, you'll start to see lots of "No exits can handle address [scrubbed]" messages.
This happens because the uint32_t value 0 is used in address policy comparison code to mean both the addres...If you start a microdesc client and wait a while, you'll start to see lots of "No exits can handle address [scrubbed]" messages.
This happens because the uint32_t value 0 is used in address policy comparison code to mean both the address 0.0.0.0 and "no address known". 0.0.0.0 is blocked by everybody, so compare_tor_addr_to_short_policy() says "reject" for everybody.
I'm not currently quite sure why it take so long for this to trigger.Tor: 0.2.3.x-finalhttps://gitlab.torproject.org/legacy/trac/-/issues/3601UseMicrodescriptors 1 breaks hidden service connectivity2020-06-13T14:12:00ZSebastian HahnUseMicrodescriptors 1 breaks hidden service connectivityMaking any kind of hidden service connection attempt gives an immediate "[scrubbed].onion': hidden service is unavailable (try again later)." log message, and the request fails.Making any kind of hidden service connection attempt gives an immediate "[scrubbed].onion': hidden service is unavailable (try again later)." log message, and the request fails.Tor: 0.2.3.x-final