Re: Using the DHT to find download sources

"pwang708" <[email protected]>
Newsgroups gmane.network.gnutella.devel
Message-ID <[email protected]>
--- In [email protected], Michael Rogers <m.rogers@...> wrote:
>
> pwang708 wrote:
> > I saw many good ideas! Instead of going to the technique details
> > directly, however, I'd like to take a step back and get requirements,
> > etc clear, as I suggested in our email discussion. I think we can save
> > time this way. 
> 
> You're right, I was only thinking about finding download sources but we
> should work out how that fits into the bigger picture.
> 
> > Usage of the DHT:
> > 1) helping Gnutella for keyword searches. A DHT can be used to publish
> > and to search the rare files. We don't want the DHT to handle popular
> > files because Gnutella is already good at searching popular files. And
> > we don't want to overload DHT or create hotspots.
> 
> I'm inclined to agree with Arne here - Gnutella's pretty good at keyword
> searches in the absence of spam, but it's difficult to see how we'd use
> a DHT for keyword searches. Hotspots can't be alleviated by spreading
> the postings for a popular keyword across several nodes (as we were
> discussing with file sources) because you don't know which postings will
> be relevant to a multi-word query until you've intersected them with the
> postings for the other keywords.
> 
> For example if I'm searching for "debian lenny iso", it's not sufficient
> to get all the postings for "debian", all the postings for "lenny" and a
> random sampling of the many postings for "iso", because very few of the
> postings for "iso" are likely to intersect with "debian" and "lenny".
> Unfortunately I can't work out which ones until I've done the
intersection.
> 
> On the other hand if I'm searching for a BitTorrent swarm or alt-locs
> for a specific file, a random sampling is fine.
> 
> But maybe this problem was solved in the DHT literature years ago. :)

For example, say the published DHT value includes the full file name,
then you search the DHT with key=sha1(debian), when you find the
replica roots, send a findValue including the list of keywords, in
this case "debian", "lenny", and "iso". The replica roots search their
database and find the DHT value with filename="debian lenny iso"
matching all the keywords, then return the value. Kad does something
similar. Arne posted a link which explains a lot about Kad. 

> 
> > 2) publishing and searching push-proxies, alt-locs, and magnet links. 
> > 3) serving as distributed tracker for bittorrent enabled clients.
> 
> Yup, I can see how these could all benefit from using the DHT.
> Interestingly they all involve storing node addresses under a key. Are
> there any use cases where we'd want to store something other than a node
> address?
> 

I once had my computer crashed, that made me think about something
like a "remote playlist", where I store my file list in DHT. Only the
metadata are stored. Then when I get a new machine, I can at least get
my file list back, and then client can tell me what files are still
available in the network. The list can also be used if I am away from
my home. A toy idea... :-)

> > 3) Quota system.
> 
> I wonder what kind of identifiers we could use to enforce quotas. Using
> IP addresses as identifiers might cause problems for NATed clients, but
> if we use the IP:port or something generated by the client, such as the
> GUID, then a client could use multiple identifiers to circumvent the
> quota system.
> 

This is always a problem. 

> > 4) Security related. 
> >   i) Data security. E.g., One user's published data must not be
> > deleted by another user; 
> 
> Good point. Do we need a delete operation at all?
> 

Not really a important operation, since DHT values expire. But it
could be useful if we put a quota on each client. I think I should
have used the word "modify" :-) E.g., only I can modify my push proxy
information published in DHT...  

> >   ii) Index poisoning/pollution attack mitigation.
> 
> In my opinion this is another reason to use the DHT for download sources
> but not for keywords: we probably can't prevent attackers from storing
> bogus data in the DHT, so we need to make it pointless to do so, by
> ensuring that anything retrieved from the DHT is easy to verify.
> 
> Keyword results are hard to verify: we can't tell whether a result is
> spam until the user has downloaded (or at least previewed) the file. But
> download sources are easy to verify, provided we know the TTH or
> infohash: as soon as we detect an invalid block we can blacklist the
> node that provided it and ask the DHT for more sources if necessary.
> 
> Of course that doesn't answer the question of how we get the TTH or
> infohash in the first place - we'll need to do a keyword search at some
> point. This is where buddy lists, social clustering and reputation
> systems come in... but let's save that for another thread. ;)
> 

I agree. It is hard to defense. But I hate to cut off features. :-(

BTW what happened to Credence? 

> >   iii) Routing security. I.e., always be able to find the replica
roots.
> 
> Another big problem. :) Have you come across any secure DHT designs that
> don't require a certificate authority?

Unfortunately no. :-( I think some social network based solutions are
promising. I doubt if they are practical. 


Best,
Peng
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.