Re: Possible improved host cache idea I've got another idea.
You would need an algorithm to decide which are the fastest and best accessible Ultrapeers.
So every 30 Minutes or so, every ultrapeer sends the IPs of all peers it currently has outgoing connections to + a number of top ranked ultrapeers in his own host cache (I will explain later how that could be created) through all his incoming connections (including leaves).
The incoming/outgoing distinction is done, because we don't want peers, who don't allow incoming connections to profit of this algorithm.
When a servent receives such an host list, it adds them to its host cache and keeps counting which hosts his has been sent most often during the last 5 hours. If any servent wants to connect to a new host, it tries the first host on its list. If it fails (=the host is unreachable and NOT the host does not allow further incoming connections, for in that case it will send a number of hosts, ideally hosts it is currently connected to via X-Try), this host is deleted from the host cache.
Thus you will have a couple of good hosts throughout the gnutella network, which everyone would connect to. This would keep the network together tightly and might even allow the network to stay online easily if all big gnutella host cachers are being shut down. |