I've done some work on bootstrapping. You might be interested in the results:

1. Address detection issues: bias in the automated bootstrapping timings.

The seednodes are not NATed, however the majority of nodes on the network are. 
Announcement results in an exchange of noderefs between the announcer and the 
nodes that it ends up connecting to, but if the announcer's IP address is not 
known, UDP hole punching won't work, and we won't connect. On most new nodes, 
UPnP and JSTUN will determine the IP address of the node, but on the 
bootstrap tester, neither of these plugins is loaded, so announcement was 
taking much longer than it should, making it look like bootstrapping was a 
much bigger problem than it really is.

I have made two changes:
- You can pass in your IP address to the automated testing code.
- We can now pick up our IP address from connected seednodes as well as from 
normal connected nodes (but not from seed clients for security reasons).

The latter may help some nodes where JSTUN and UPnP don't work, but 
announcement does, and may save a few seconds on a new node.

2. Getting rid of persistently non-connecting noderefs.

The seednodes tester now logs which nodes connect or fail to connect to a 
file, and will, once enough data is available, complain loudly about nodes 
which haven't connected in the last week. So from next Wednesday, I will be 
able to look at this data, remove nodes that haven't worked for a week, and 
ask their operators to fix them. Since we only try to connect to 15 seednodes 
at once, removing the non-working seednodes should help performance slightly.

3. Small speedup.

After announcing to a bunch of nodes, normally we wait 30 seconds to see if 
the added peers will connect. We were waiting for 30 seconds even if no peers 
had been added. Yes this happens sometimes: a typical announcement goes 
through many nodes, the vast majority of whom don't need a new connection and 
so don't send their noderef back. So now if we do a group of announcements 
and no peers have been added at all, we immediately attempt another group of 
announcements (to different seednodes).

4. Minor stuff.

We now tell the user (on the alerts page, so only advanced users realistically 
speaking) when the node isn't yet announcing due to not knowing its IP 
address.


With the above changes, and announcement taking typically around 2:30 to reach 
10 peers, IMHO bootstrapping is sorted for the time being - except that we 
still need more seednodes, and we need to prune those which don't work.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080902/391b9e81/attachment.pgp>

Reply via email to