Perhaps, but the first person requesting the file has to wait while it downloads in its entirety between each successive server between them and wherever it is... this is how freenet is preserving anonymity.
So they have issued the request for the file from the network to transfer their file across through five or ten different servers... The latency to do this, before they actually start seeing their little download progress bar move past 0% is the total number of hops times the time to download the file. So a file that takes three minutes to transfer at high speed, but is five hops away, is going to actually take 12 minutes to initiate while you wait for it to propogate to your peer and then three minutes to download. Granted, whoever asks for it next will be served very quickly.
Except that the person who requested it in the first place got bored waiting, thought something was broken, disconnected, reconnected to completely diffetent peers, and is bogging the network down by initiating another request.
ALSO, you can't make the geography assumption here... that a person on freenet in europe will request a file and have it more to be available to everyone in europe. The clustering is arbitrary because it is just a peer network built on IP addresses. One person requesting a file does result in propigation of that file across the net, but it does not necessarily do anything to move it closer to other people with similar interests, geography, or anything.
but that might be an interesting way to optimize a peer network... users connect to users with similar interests. hmm.
I don't really see this as being such a prevalent problem with freenet, because it separates the ideas of search and storage.
Freenet itself simply provides a framework to massively distribute files within a system that (theoretically) makes them fairly easy to access from anywhere and fairly difficult to delete from everywhere. The difference between it and gnutella is that a search mechanism is not central to propogating files. Files propogate simply by being sent across the peer-to-peer network. The filename, or freenet key, or whatever you want to call it is essentially just a capability for the file you want.
Based on this structure, any number of directory services could be built on top of freenet to provide access to, and authenticate capabilities for files within the system. Freenet seems to be a reasonable model to do this, but there is no reason to necessarily tightly couple the search to it.
Come to think about it, there could likely be many ways of searching for files on a system like freenet. There could be a peer-to-peer, gnutella-like search. Perhaps one with the ability for you to prioritize results comming from peers who you trust or have had good experience with in the past (this could get tricky with file propigation in freenet). There might also be a moderated search facility that provided capabilities that had been verified by someone already.
The bottom line with this is that the RIAA or whoever you are afraid might get in the way of good, honest, information sharing might be able to completely bog down a system such as freenet by putting big files on it and requesting them from many disperse locations -- freenet is going to have an incredibly hard time coping with this sort of attack -- but they probably won't be able to interfere too severely with people finding what they are looking for, if it is in fact there.
btw... I posted another note describing differences between freenet gnut and napster a while ago, but did a pretty horrible job with the formatting... there it is if you are more patient that I would likely be.:)
Okay, freenet is anonymous to a degree. Your IP is stripped after one hop on the freenet network, and only your neighbouring nodes know that you are actually connected. This is misleading though, because the notion of neighbours in a peer-to-peer overlay network (such as Freenet, and gnutella) is not the same as that in IP. Neighbouring nodes may actually be many hops away in terms of the underlying IP network. So, if I sit on an arbitrary freenet node and examine traffic going to my freenet server, everyone is certainly anonymous. However, if I sit on a gateway IP node (the carnivore approach) and just sniff freenet packets with a depth (inverse ttl, which is also stored in the freenet header) of zero, I know exactly what you are asking for and what you are sharing. But then, midpoint nodes are well connected, so we don't have to worry about IP sniffing, right? Freenet's author also makes the claim that attempts to locate the source of a file simply further obfuscate it's location by causing the file to propogate more across the network. I think that this may be the true aspect of anonimity in terms of sharing information on freenet. Files are propogated to servers by the network itself, how can I really be responsible for the mp3's on my machine when they are just arbitrary data that has been moved into my cache by the file-sharing protocol i'm using. And besides, if I have a copy of the file, so do a bunch of my neighbours, and their neighbours... Besides, files shared on freenet are not necessarily hosted directly off my machine even from the get go (as in gnutella) I can insert them into the network and then delete them from my local host. So as anonymity goes, I figure the system balances a little both ways. Let's talk about performance for a second though. Freenet is sort of at the far end of a continuum with Napster at the other end and gnutella somewhere in the middle. In napster's case, users log on to a server (or servers) that index everyones files and handle searches. I am always essentially two hops (figuratively speaking) away from a file... I search through the server, who has an index containing a file I want that is also connected to the server. To download though, I establish a direct connection to the machine with my file and leech away. This is good because in all regards traffic is minimized. Everyone talks directly to the central index and downloads direcly from eachother. The problem with this model is that the servers are a central point of failure, and can become overloaded with requests and bog down. They are also vulnerable to failure and other nasty things. Like court injunctions. And when the servers fall, everyone gets upset. In the case of gnutella, the search network is distributed. Everyone connects to a few other people more or less arbitrarily and we all play the telephone game to try to find files. I want a file, so I tell four people, and they all tell four people, and so one... until some number of iterations. But to transfer I still connect directly to a host. Given a well behaving search network (which gnutella's doesn't really seem to be) this is a great model... everyone has to be involved in some amount of the search traffic on the network, but it's pretty small (at least in theory) relative to the resourses that they are using to pull Metallica, ahem, Blueberry muffin recipes, off of the net. The overhead in this system is the search, which as anyone who has used gnutella will tell you can be a little slow at times. Anonyminity is lost also through these direct file transfers... for obvious reasons. In the case of Freenet, everything is routed through the peer-to-peer network, even file transfers. What's more, files are transfered atomically in between nodes. So, If i request a file that is five hops a way on the network, the file has to be copied in its entirety across each of thos intermediate nodes before I see it. This leads to what has got be be a rather shining example of network latency. Of course, the network 'adapts'. Which means that since there are now all these copies of a given file lying around on intermediate nodes, it will be much faster for other people to get copies in the future. In that regard, the model has some great benefits: Files become highly available - a single request results in a file being replicated across all the intermediate hosts. The network is survivable -- if the original machine crashes, and someone has asked for the file before, it is probably kicking around somewhere. But the overhead... By participating in gnutella, your node agrees to forward search requests to all neighbouring nodes. By being anything other than a client-only node in freenet, a host assumes the burden of receiving, (maybe) saving, and passing on entire files. In the case of mp3's... this would be like passing search requests through gnutella that are three to six megs in size each. That is a LOT of overhead. But, maybe the model will work. Maybe you build a network of high-powered hosts across the internet that are capable of routing and caching entire files and just about everyone at home acts strictly in the sense of a client. If you encrypt everything that you put on to this and provide a semantic to make sure that things don't accidentally dissappear forever, it starts to sound like a pretty reasonable highly-available distributed file system. But wait a sec... wouldn't the notion of a smaller set of powerful centralized servers that were inevitably managed by beaurocracies such as ISPs and universities be exactly the sort of points of failure that a peer-to-peer sharing system hopes to avoid? For the simple reason that the organizations that end up owning the big servers will inevitable cave under the pressure of things like, well, court injunctions? The bottom line... if this rant even has one: Freenet looks like a pretty good system, at least the start. I'd love to use something like it to store code and documents for distributed work across the web (it wouldn't be that tricky to build a versioning system on top of it). But I think it's pretty likely to cave under the load of mp3s and isos. Not quite the the right model.
So they have issued the request for the file from the network to transfer their file across through five or ten different servers... The latency to do this, before they actually start seeing their little download progress bar move past 0% is the total number of hops times the time to download the file. So a file that takes three minutes to transfer at high speed, but is five hops away, is going to actually take 12 minutes to initiate while you wait for it to propogate to your peer and then three minutes to download. Granted, whoever asks for it next will be served very quickly.
Except that the person who requested it in the first place got bored waiting, thought something was broken, disconnected, reconnected to completely diffetent peers, and is bogging the network down by initiating another request.
ALSO, you can't make the geography assumption here... that a person on freenet in europe will request a file and have it more to be available to everyone in europe. The clustering is arbitrary because it is just a peer network built on IP addresses. One person requesting a file does result in propigation of that file across the net, but it does not necessarily do anything to move it closer to other people with similar interests, geography, or anything.
but that might be an interesting way to optimize a peer network... users connect to users with similar interests. hmm.
Freenet itself simply provides a framework to massively distribute files within a system that (theoretically) makes them fairly easy to access from anywhere and fairly difficult to delete from everywhere. The difference between it and gnutella is that a search mechanism is not central to propogating files. Files propogate simply by being sent across the peer-to-peer network. The filename, or freenet key, or whatever you want to call it is essentially just a capability for the file you want.
Based on this structure, any number of directory services could be built on top of freenet to provide access to, and authenticate capabilities for files within the system. Freenet seems to be a reasonable model to do this, but there is no reason to necessarily tightly couple the search to it.
Come to think about it, there could likely be many ways of searching for files on a system like freenet. There could be a peer-to-peer, gnutella-like search. Perhaps one with the ability for you to prioritize results comming from peers who you trust or have had good experience with in the past (this could get tricky with file propigation in freenet). There might also be a moderated search facility that provided capabilities that had been verified by someone already.
The bottom line with this is that the RIAA or whoever you are afraid might get in the way of good, honest, information sharing might be able to completely bog down a system such as freenet by putting big files on it and requesting them from many disperse locations -- freenet is going to have an incredibly hard time coping with this sort of attack -- but they probably won't be able to interfere too severely with people finding what they are looking for, if it is in fact there.
btw... I posted another note describing differences between freenet gnut and napster a while ago, but did a pretty horrible job with the formatting... there it is if you are more patient that I would likely be. :)
Okay, freenet is anonymous to a degree. Your IP is stripped after one hop on the freenet network, and only your neighbouring nodes know that you are actually connected. This is misleading though, because the notion of neighbours in a peer-to-peer overlay network (such as Freenet, and gnutella) is not the same as that in IP. Neighbouring nodes may actually be many hops away in terms of the underlying IP network. So, if I sit on an arbitrary freenet node and examine traffic going to my freenet server, everyone is certainly anonymous. However, if I sit on a gateway IP node (the carnivore approach) and just sniff freenet packets with a depth (inverse ttl, which is also stored in the freenet header) of zero, I know exactly what you are asking for and what you are sharing. But then, midpoint nodes are well connected, so we don't have to worry about IP sniffing, right? Freenet's author also makes the claim that attempts to locate the source of a file simply further obfuscate it's location by causing the file to propogate more across the network. I think that this may be the true aspect of anonimity in terms of sharing information on freenet. Files are propogated to servers by the network itself, how can I really be responsible for the mp3's on my machine when they are just arbitrary data that has been moved into my cache by the file-sharing protocol i'm using. And besides, if I have a copy of the file, so do a bunch of my neighbours, and their neighbours... Besides, files shared on freenet are not necessarily hosted directly off my machine even from the get go (as in gnutella) I can insert them into the network and then delete them from my local host. So as anonymity goes, I figure the system balances a little both ways. Let's talk about performance for a second though. Freenet is sort of at the far end of a continuum with Napster at the other end and gnutella somewhere in the middle. In napster's case, users log on to a server (or servers) that index everyones files and handle searches. I am always essentially two hops (figuratively speaking) away from a file... I search through the server, who has an index containing a file I want that is also connected to the server. To download though, I establish a direct connection to the machine with my file and leech away. This is good because in all regards traffic is minimized. Everyone talks directly to the central index and downloads direcly from eachother. The problem with this model is that the servers are a central point of failure, and can become overloaded with requests and bog down. They are also vulnerable to failure and other nasty things. Like court injunctions. And when the servers fall, everyone gets upset. In the case of gnutella, the search network is distributed. Everyone connects to a few other people more or less arbitrarily and we all play the telephone game to try to find files. I want a file, so I tell four people, and they all tell four people, and so one... until some number of iterations. But to transfer I still connect directly to a host. Given a well behaving search network (which gnutella's doesn't really seem to be) this is a great model... everyone has to be involved in some amount of the search traffic on the network, but it's pretty small (at least in theory) relative to the resourses that they are using to pull Metallica, ahem, Blueberry muffin recipes, off of the net. The overhead in this system is the search, which as anyone who has used gnutella will tell you can be a little slow at times. Anonyminity is lost also through these direct file transfers... for obvious reasons. In the case of Freenet, everything is routed through the peer-to-peer network, even file transfers. What's more, files are transfered atomically in between nodes. So, If i request a file that is five hops a way on the network, the file has to be copied in its entirety across each of thos intermediate nodes before I see it. This leads to what has got be be a rather shining example of network latency. Of course, the network 'adapts'. Which means that since there are now all these copies of a given file lying around on intermediate nodes, it will be much faster for other people to get copies in the future. In that regard, the model has some great benefits: Files become highly available - a single request results in a file being replicated across all the intermediate hosts. The network is survivable -- if the original machine crashes, and someone has asked for the file before, it is probably kicking around somewhere. But the overhead... By participating in gnutella, your node agrees to forward search requests to all neighbouring nodes. By being anything other than a client-only node in freenet, a host assumes the burden of receiving, (maybe) saving, and passing on entire files. In the case of mp3's... this would be like passing search requests through gnutella that are three to six megs in size each. That is a LOT of overhead. But, maybe the model will work. Maybe you build a network of high-powered hosts across the internet that are capable of routing and caching entire files and just about everyone at home acts strictly in the sense of a client. If you encrypt everything that you put on to this and provide a semantic to make sure that things don't accidentally dissappear forever, it starts to sound like a pretty reasonable highly-available distributed file system. But wait a sec... wouldn't the notion of a smaller set of powerful centralized servers that were inevitably managed by beaurocracies such as ISPs and universities be exactly the sort of points of failure that a peer-to-peer sharing system hopes to avoid? For the simple reason that the organizations that end up owning the big servers will inevitable cave under the pressure of things like, well, court injunctions? The bottom line... if this rant even has one: Freenet looks like a pretty good system, at least the start. I'd love to use something like it to store code and documents for distributed work across the web (it wouldn't be that tricky to build a versioning system on top of it). But I think it's pretty likely to cave under the load of mp3s and isos. Not quite the the right model.