![]() |
Searching the Smart way In an rather old article, it is suggested that 70% of the servants are not sharing: http://www.firstmonday.dk/issues/iss...dar/index.html Think of it - if the 70% figure is right, then 91% of the bandwith consumed by serchrequests today is wasted. Why? Because 91% (1 - 0.3*0.3) of the requests goes either from freeloader to freeloader, from freeloader to sharer or from sharer to freeloader. All of these should be shaved away. In my opinion - this is the area where Gnutella clients could develop the most. I am not a developer of Gnutella clients, I just have some ideas: Don't send serchrequests to Freeloaders. That is, you should not drop the freeloaders from your list of connected hosts. Doing that would damage the network. But, you should test and rate the hosts with some methods; Brainstorming - Send a search that is build up using frequent words in the users shared directory and/or earlier searchs, set the TTL to 1 and register the number of files returned. Using this number as a rating, the hostlist should become better and better for the user. So, what happens with the freeloaders (the "glue" of our community)? They would be given a rating of 0, using the above mentioned method. That would put them in the same group as those who share files that I am not interested in. You should allow them to connect to your servant. You should answer and forward their serches. But you should never send the users searches to them. So, what would happen if all the clients used this strategy? I think the searches would become much more efficient and everyone would live happily ever after. Stig Eide |
bad idea You will partly stop routing search queries and eighther make the network inoperable or less operable. If a freeloader is between you and a sharer of a file you want, you never get it with your routing rules. Superpeers and query caches can help to reduce traffic, while freeloader are usually modem users they can be shielded behind a super peer. See also my list of Anti-freeloading features for alternative ideas against freeloading http://www.gnutellaforums.com/showth...9&pagenumber=3 Greets, Moak |
Quote:
If everybody sendes the requests to those who are on their "buddy-list" (those who share files you like), then the number of hits will be much higher. I am sure this can be proven both mathematically and by simulation, but today being the first day of the rest of my life, I could not bother ;) Stig |
Hmm without new statistics/simulation I doubt it. I think your idea will decrease horizon and availability, while super nodes together with caches will increase horizon. |
What is a supernode? Isn't that just a centralized server in disguise? |
Supernodes, Superpeers, Ultrapeers (different names, all the same) The forum search will e.g. give you this thread: "Improving Gnutella performance" http://www.gnutellaforums.com/showth...&threadid=5254 A very short summary about super peers and other ideas arround (if you're interested): 1. A superpeer concept for dynamic traffic routing = reducing backbone traffic + improves network toplogy + increases horizon (more available files) 2. Search-caches for reducing double/multiple routed traffic = reducing high amout of search backbone traffic 3. Swarming technology = make use of the high amout of wasted bandwith + will spread often requested files + balance load + less "busy" servants (more available files) 4. Add more ideas here.... brainstorming is allways fine :) |
A freeloader may provide a path to non-freeloaders. Even though it may also prove a path to freeloaders, cutting the path in its entire will cut off all of these non-freeloaders, decreasing the available files even more. Also remember that a freeloader may be connected to more than one other node, increasing this possibility even more. |
Quote:
|
If you don't send a search request to a freeloader, everyone else connected to that freeloader, whether non-freeloader or not, will never see that request, thus reducing the amount of responses you will get even more. That's why it will hurt. |
It is true that those who is connected to freeloaders won't see the query. But thats not an error its a feature! ;) OK, time for some mathematics. Say you send out a query with TTL (time to live) 4. Lets say everyone is connected to 3 hosts. The old, inefficient and stupid way: Your query will reach 3**4 + 3**3 + 3**2 + 3**1 = 81 + 27 + 9 + 3 = 120. But since only 30% of these are sharing, the sharing hosts you reach is 36. The network is fed with 120 queries, and you reach 36 hosts that have more than one file to share. The new, efficient and Smart way: Since only one of the three hosts is sharing, you only send the query to that host. He again, sends it only to the sharing hosts in his list as well. This means that you can send a query with a TTL of 120 and still cause as much network traffic as the old way. Since this will reach 120 sharing hosts, you will reach 3.33 times as many files as the old method. This is obvious! ;) Stig |
In practice, the best way to manage this is to have two hostlists. One that you receive queries from (as today) and one that you send searchs to. This new list should always become better as you drop those that do not respond to your searches and/or som automatic test-searches performed by the client, based on your shared directory. As for the freeloaders, noone would want to use them on the list over hosts to send searches to. But that is good for them, less traffic over their modems. |
Quote:
IMHO you are treating the symptoms, perhaps it is better to encourage sharing as suggest in other threads. |
Keeping to your example (TTL of 4, 3 connected hosts at each node), you gave us this: Quote:
BUT, that is only in the current scenario, where you send a query to each connected node, regardless it is a freeloader or not. Under the scenario you are proposing, to refrain sending a query to a node known as a freeloader, you will end up with a different number. If 70% of the 3 connected nodes would be a freeloader (2.1 ~ 2), then you'll end up with 1 (0.9) non-freeloader per 3 nodes. So: 1^4 + 1^3 + 1^2 + 1^1 = 10. 10 possible nodes, in comparision to 36 possible nodes is a drastic reduction in my opinion. In both your and my case, we're also assuming an even spread of freeloaders, which is obviously never the case. What if 3 out of 3 connected nodes turn out to be freeloaders - you'd not be sending out *any* queries to anyone. However, I can agree that you could have a preference for nodes that seem to return more results on average, although you should never refrain from sending a Query message. -- Mike -- Mike |
Anyways, thanks for your input. Stig Eide |
Every Input is welcome! :) |
Just one more thing though. A TTL of 120 will not survive long, as most clients will drop messages after 7~10 hops. -- Mike |
Also, say you are connected to three other nodes, and they are all freeloaders. Where does the search go now? |
My measurements have shown that even if you use a TTL greater than 7 you won't get back packages with a TTL > 7 with very high probability ( I talk about 99.9% I haven't calculated that number exactly yet). So you horizon today is "aways" 7 hops in the gntella network. So cutting out the freeloaders from your searches will give you less hits. Raising the TTL won't help. But as you might know there are other ways how to to priorotize a search/hit ... like eDonkey does. @blb: Searches contain a TTL time, which is a number of how often the search is forwarded in the network. So the freeloaders will forward the Search if TTL > 1 ... |
First, I know that a request with TTL=120 will (thank God) not survive - it was just to make a comparison between the old, inefficient method and my Smart method. It is easier to compare the efficiency of two methods if they consumes the same amount of bandwidth. Anyways, you have to admit that the current method of sending searches blindly is inefficient? My (Smart ;) ) method would use two lists of hosts for each client: One list to send and forward queries to. This list should be cultiv8ted by hosts that responds to your searches. This way you have the great benefit of being close to hosts that hosts files that you want. One list to receive queries from This list, you should not care who is on. But you know that these hosts prefer your files, if they are using the Smart method. My claim is, that this method will make the searches much more efficient because: Searches is only send to those who actually have files. The probability that the hosts that see your search will return a hit is bigger, because they are closer to you in "taste". You can think of it as insiders and outsiders. The outsiders are freeloaders and sends the requests to the insiders. The insiders sends the requests to other insiders. A cute picture: http://www.geocities.com/stigeide/s.html Peace! Stig Eide |
Quote:
|
But think of the underlying issue though: bandwidth. At least, I think that is your concern here. The ones who carry the biggest burden with Queries, is those who cannot responde to them but merely broadcast them. So, that would always be the freeloader. In my opinion, that is not such a bad thing at all. A much better solution to this issue would be to deny sending a result to a freeloader. Queryhits are usually bigger, even when the broadcasted Queries are summed up. By refraining from sending a Queryhit to someone known as a freeloader, you will: 1) reduce bandwidth 2) give the freeloader incentive to contribute I've followed some discussions here about that as well. The best one I've seen, and also something I'm looking to implement in my client, is a "rating". When the user runs his Gnutella client for the first time, his rating is 50/50. But the more he dowloads without uploading, his ratio drops. Below a certain ratio, he/she is assumed a "freeloader". This data can easily be sent with a Query. Obviously, there are a few drawbacks to that method. The first would be those who figure out what to edit to increase their ratio. The second would be where the user shares stuff that, in general, is not popular. There's a third one too, where the user could rename junk/text files to popular files in order to increase his ratio. However, with the introduction of what is known as HUGE (a hashing system), this will most likely not survive for long. -- Mike |
Quote:
Quote:
I personally do not believe in Mojos: IMHO Gnutella should be designed to stand against bad clients/abuse, be free as possible (think about the web, free and easy information access was the success) and we still have many other unused possibilites left to prevent freeloading. Greets, Moak |
Quote:
It would only be "harmful" if other clients relied on Query Hits for passive searching. Quote:
-- Mike |
I agree with Mike pretty much , though I also doubt that there is a bulet-proof way for rating that can not be faked. Since I am following the discussion here, I think somehow that we talk about 2 things: One is bandwidth the other is how to "do something against freeloaders" ... and I don't get the point what the two things have to do with each other ... at least freeloaders do not cause are "needed" to keep the network together (though they might lower your effective horizon cause of "unnecessary" hops = freeloaders in your network path). I think the bandwidth problem is a Gnutella Protocol issue not a freeloader issue ... Quote:
Another thing: cutting out those who do not respond to your queries may lead to a "smaller network"/ smaller horizon for your client but this smaller horizon may have more clients with files you look for ... or am I fascinating totaly now :) ? |
Quote:
|
Quote:
|
Hi Mike! Quote:
Moaky Moak PS: I know I repeat myself, I believe superpeers and swarming will be a better solution to decrease bandwith and handle with "useless" nodes. I personally follow a way of encouraging people to share instead of tolerating freeloading. I see freeloading as a selfish symptom, ppl do it because they can't see the bigger context, that they hurt themselfs. |
Quote:
But cracking in general: whatever tickles your fancy :) -- Mike |
Quote:
Assuming that there's a freeloader between you and me: -- If you send a search request, I will still send a search result - because the destination is not the freeloader. -- If the freeloader sends out a search request, neither you nor me will send a search result, because the destination is the freeloader. I only refrain from sending the search hit if the *destination* is the freeloader. Anyone before or after this freeloader will still receive his search hits. -- Mike |
Hi Mike, ah I understand. Just to make sure, does this mean you want to block freeloaders from receiving any search result? |
Moak: Yes. |
Can I summarize your idea as: Let freeloader connect, but don't send/route search results targeted to them (drive them crazy). *asking* |
All times are GMT -7. The time now is 11:09 PM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.
Copyright © 2020 Gnutella Forums.
All Rights Reserved.