Swabby: an idea for better connections. Here's a (possibly half-baked) idea I had I'd like to bounce off fellow Gnutelllites (Swabby in particular).
The problem: to save bandwidth, peers no longer pong like they used to which makes friend counts useless. It's become really hard to tell how "well connected" any node may be.
Possible Solution? I think instead you could use the average packet rate and the ratio of "searches" to "results" as a much more useful guide.
For example, have a setting to drop nodes that go below x packets per second over a period of time, and a setting to drop nodes with less than x percent of reply to search packets.
The packet rate lets you guess how active a connection is - the more traffic the more hosts are probably connected. As an added advantage, this can be watched continually and if a formerly "well connected" node looses hosts it'll notice. Friend counts never go down so you never know if a node eventually becomes "friendless".
The search ratio would be a good judge of how many peers were actually sharing files on a node. After all, searching is reason we're connected together to begin with, and a node that returns few results isn't much use. This also might tend to naturally weed out leachers as they'd eventually bubble out to less well connected nodes (perhaps they'd wind up all connected together ;-).
Of course none of this is perfect, but I think it might work much better than using friend counts alone.
The point of all this is you could maintain a good connection using fewer nodes. That saves overhead and places less strain on the winsock (which really suffers under gnutella). Also two or three really well connected hosts tend to stay alive longer and reduce the need to run through the host catcher so often (all the failed attempts when looking for a new connections are one of the major winsock stresses I think).
Anyway, sorry for the long post, but that's the idea - any comments anyone? Maybe I'm way off base, but I think this could help some of the overload and crashing problems. Low resources can cause even a bug-free program to act up, and I think, gnutella being so socket-hungry, it might be a factor in many of the problems users see. |