Opened 6 years ago

Last modified 5 years ago

#977 new defect

Continious uptime in hidden mode results in netdb-wasting

Reported by: DISABLED Owned by: zzz
Priority: minor Milestone:
Component: router/netdb Version: 0.9.6
Keywords: Cc:
Parent Tickets: Sensitive: no

Description

First of all, sorry for my not-decent-enough english.

When i run my router continiously, routerInfos in my netDB come to an end, and since i've set it up to use 0.0.0.0 as a reseed host, it does not reseeds.
So i have such assumptions:

  • 1. Sharing routers do filter me because i open too many tunnels in their opinion.
  • 2. Sharing routers do filter me because i have too small window size (though i don't download anything bigger than texts so far).
  • 3. I say to ff-s that i'm hidden, so they don't announce me. Thus, new routers don't know me, old routers ban me (or i ban them, because i've used them), ffills don't want to give me something because they gave me enough in their opinion.
  • 4. Routers cannot pool me because i'm under NAT.
  • 5. I filter sharing routers because i think they are bad. Reasons: they do not answer, they are comparingly bad, they are used, or some other thing in algorithm that does filtering.
  • 6. Combinations.

Network:
Connection is stable, so RIs are deleted not because it's unable to connect with routers because it's unable to connect with clearnet.
My provider NAT-s me, and network topology is also strange (LAN router is actually outside my LAN and FreeBSD does not have an working connection without some defaultroute hacking). Can't say more since i'm bad at networks and OSI stuff. (yet)

Some settings:
i've got maxWindowSize set to 16 (interactive mode) since i don't download multimedia, rather just read\write some text.
I use 3 input and 3 output tunnels for each connection, all of them have 2 hops.
router.maxParticipatingTunnels=0
router.publishPeerRankings=false
streaming.answerPings=false
streaming.connectDelay=-1

Though i do remember those problems without having such narrow settings, when i was just hidden.

Possible solutions, mine suggestions:

  1. Make routerInfo-s last longer on our side and adjust things that delete useless infos to work only if we have more than 500 of them (that is average number of them when we start our router after shutdown (so we can pool ffill-s again) )
  2. Adjust limits for ffils, make them give more RI-s to hidden routers
  3. Adjust limits for routers that share their connections, make them more tolerant (should be customizable, i suppose)
  4. Adjust some setting that makes angry other routers
  5. ???

Also, one more quick suggestion - make routerconsole more detailed, geeky and customizable, that obviously makes it easier (and more interesting) to understand how i2p is really working, makes it easier to hack it without having to download bytecode compiler\linker and learning java. If you afraid of angry users like "IT'S TOO HARD TO UNDERSTAND!!! MAKE IT AS SIMPLE AS CHROME!!1" just implement advanced mode, though i don't feel that i2p-community is that stupidWunexperienced.

Subtickets

Change History (4)

comment:1 Changed 6 years ago by DISABLED

Component: unspecifiedrouter/netdb
Owner: set to zzz

comment:2 Changed 6 years ago by DISABLED

  • 7. Possibly, reason is even more simple: we don't pool ffills much because we are hidden (so we need to use less routers), and the problem is implementation of algorithms that are specific to hidden mode.

comment:3 in reply to:  description Changed 6 years ago by DISABLED

Replying to guest:

When i run my router continiously, routerInfos in my netDB come to an end, and since i've set it up to use 0.0.0.0 as a reseed host, it does not reseeds.

So you're saying that when in hidden mode your i2p router fails to download new RIs, and eventually runs out of peers to connect to?
Why have you disabled reseeds?

  • 1. Sharing routers do filter me because i open too many tunnels in their opinion.

Only the first hop in a tunnel would be able to discover this, and it shouldn't happen anyway.

  • 2. Sharing routers do filter me because i have too small window size (though i don't download anything bigger than texts so far).

Again, there is no concept of 'filtering' in i2p. All tunnels are equal priority.

  • 3. I say to ff-s that i'm hidden, so they don't announce me. Thus, new routers don't know me, old routers ban me (or i ban them, because i've used them), ffills don't want to give me something because they gave me enough in their opinion.

If you're telling them you're hidden, of course they won't announce you - that's what hidden mode is for! It's up to your node to find peers rather than them to find you. There is no reason to manually ban routers, and they don't ban you because of the reason mentioned above - they can't see who opens the tunnel!

  • 4. Routers cannot pool me because i'm under NAT.

No, routers don't pool you because you're in hidden mode, which you have manually set.

  • 5. I filter sharing routers because i think they are bad. Reasons: they do not answer, they are comparingly bad, they are used, or some other thing in algorithm that does filtering.

This is true - i2p regularly checks up on the availability of peers to see which are the most reliable. Unreliable ones are removed from the 'High Speed' tier rather than being removed outright.

Possible solutions, mine suggestions:

  1. Make routerInfo-s last longer on our side and adjust things that delete useless infos to work only if we have more than 500 of them (that is average number of them when we start our router after shutdown (so we can pool ffill-s again) )
  2. Adjust limits for ffils, make them give more RI-s to hidden routers
  3. Adjust limits for routers that share their connections, make them more tolerant (should be customizable, i suppose)
  4. Adjust some setting that makes angry other routers
  5. ???

Also, one more quick suggestion - make routerconsole more detailed, geeky and customizable, that obviously makes it easier (and more interesting) to understand how i2p is really working, makes it easier to hack it without having to download bytecode compiler\linker and learning java. If you afraid of angry users like "IT'S TOO HARD TO UNDERSTAND!!! MAKE IT AS SIMPLE AS CHROME!!1" just implement advanced mode, though i don't feel that i2p-community is that stupidWunexperienced.

Many config options are well documented here and elsewhere

comment:4 Changed 5 years ago by str4d

Milestone: 0.9.8

Possibly related: #1038

Note: See TracTickets for help on using tickets.