![]() |
|
Register | FAQ | The Twelve Commandments | Members List | Calendar | Arcade | Find the Best VPN | Today's Posts | Search |
General Gnutella Development Discussion For general discussion about Gnutella development. |
![]() |
| LinkBack | Thread Tools | Display Modes |
| |||
![]() 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! |
| ||||
![]() 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
__________________ ![]() -> put this banner into your own signature! <- -- Erst im Spiel lebt der Mensch. Nur ludantaj homoj vivas. GnuFU.net - Gnutella For Users Draketo.de - Shortstories, Poems, Music and strange Ideas. |
| |||
![]() 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! |
| ||||
![]() 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).
__________________ ![]() -> put this banner into your own signature! <- -- Erst im Spiel lebt der Mensch. Nur ludantaj homoj vivas. GnuFU.net - Gnutella For Users Draketo.de - Shortstories, Poems, Music and strange Ideas. |
![]() |
| |