Gnutella Forums

Gnutella Forums (https://www.gnutellaforums.com/)
-   General Gnutella Development Discussion (https://www.gnutellaforums.com/general-gnutella-development-discussion/)
-   -   "Algorithm" to avoid "islands" in network?? (https://www.gnutellaforums.com/general-gnutella-development-discussion/88299-algorithm-avoid-islands-network.html)

reyiyo October 18th, 2008 01:49 AM

"Algorithm" to avoid "islands" in network??
 
Hello everybody!

We're in a project for college based in a p2p network with gnutella protocol 0.4 in ANSI C.

What we need is an "algorithm" to avoid "island" in the reconnections of the servers.

i.e. when a server falls down, it has to reconnect to another trying to avoid "islands" in the network.

Do you have any idea where can I find it?

Thanx a lot!

arne_bab October 19th, 2008 12:23 AM

Before anything else: If you want a scaleable network, please use Gnutella 0.6.
- Short reasoning why it scales: Why Gnutella scales quite well - Gnufu
- Principles behind it: Gnutella for Users - Gnufu
- Specification: GDF - LimeWire

In Gnutella we don't use a dedicated island-avoidance-algorithm, since that would require knowledge about the whole network.

Instead we now have high-outdegree (32 connections per ultrapeer) which makes islands _very improbable_.

And if you don't implement strong connection preferencing, the experience in real usage shows that islands aren't a big problem.

But Gnutella 0.6 offers some ways which could be used for island detection. For example disconnecting, when you get your own queries back with only marginally higher hops (that's loop avoidance which leads to a better connectivity and has the sideeffect of making islands less probable, and avoiding small islands altogether).

One major problem with island detection is that a Gnutella client must not completely trust any other Gnutella client (it's an open network, and any possible exploits will be exploited someday), so it must not use unsure information for critical algorithms.

For an implementation of Gnutella 0.6 in C/C++ please have a look at gtk-gnutella: http://gtk-gnutella.sf.net

reyiyo October 19th, 2008 02:59 AM

Thanx but..
 
Hi!

Tanks for your answer but as I told, I'm in a project for college and in the specifications says that we must use Gnutella 0.4 protocol and we also know that the islands are very improvable but this algorithm is a requirement of the project.

Regards!

arne_bab October 19th, 2008 07:20 PM

Then please talk to your supervisors - using Gnutella 0.4 doesn't make that much sense.

But if you can't change that requirement, you might want to have a look at pygnutella; it implements Gnutella 0.4 (aside from now connecting with a Gnutella 0.6 handshake to be able to test it with regular Gnutella clients).

That's also code with which I could provide help since I took some time hacking on it for fun.

- SourceForge.net: pygnutella

That one is in Python, not in ANSI C, though (which makes it far easier to experiment with it).


All times are GMT -7. The time now is 06:32 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.