Re: Questions regarding Mojito
[email protected] Sat, 8 Aug 2009 23:09:33 +0000 (UTC)
| Newsgroups | gmane.network.gnutella.devel |
|---|---|
| Organization | Home, Grenoble, France |
| Message-ID | <[email protected]> |
Quoting garethdanielsmith <[email protected]> from ml.gnutella.dev-forum: :I would be grateful if anyone could help me increase my understanding of the Mojito DHT. : :My questions are as follows: : :* Must security tokens always be 4 bytes long? That there is a length field :suggests otherwise, but my tests have shown that limewire only accepts 4 byte :ones. Yes, in theory in could be anything. Gtk-gnutella will accept whatever length you put in there, even 0 (meaning no security token) but emits 4-byte tokens. :* What is the meaning of contact instance ids? My guess is the number of times :that the node/contact has been restarted or lost and regained connectivity. I was never able to figure out what it meant and never got any clarification on that field, so gtk-gnutella simply ignores this field and puts "1" in there. :* What is the meaning of request_load on Find Value Responses. It seems to be :some measure of the popularity of the specified key, but what is its purpose, and :should it respect any invariants? Gtk-gnutella computes the exponential moving average of "FETCH" requests for a given key, with a smoothing factor of 0.25. The number of requests during one minute is buffered and the EMA is updated each minute. What a key is "loaded" (value set to 5.0 in gtk-gnutella), then STORE requests for that key are going to get the following error codes: STORE_SC_LOADED if the key is not also full STORE_SC_FULL_LOADED if the key is both full and loaded. See also: http://groups.yahoo.com/group/the_gdf/message/23498 http://groups.yahoo.com/group/the_gdf/message/23502 for a complete definition of the used STORE status codes in gtk-gnutella. :* What are the meanings of versions on: : - Messages? I guess the protocol version. Yes. : - Contacts? Protocol version again? Yes, their advertised protocol version. : - DHT Values? Some sort of *version tag* for the value? No, this defines the *format* of the DHT value. It's a version number for that specific DHT value. :* What is the meaning of secondary keys? Currently I am making the following :assumptions regarding them: : - secondary keys are node-local and can be calculated arbitrarily, but consistently. : - If no secondary keys are sent on a Find Value Request, then all secondary :keys are to be considered. : - No more values should be stored for a single kuid than the number such that :all values can have either the value or the secondary key sent back within a :single Find Value Response message. The secondary key is the KUID of the publisher of a given value. Since more than one publisher can submit values under a given Kademlia key (primary key), a given value can be uniquely index by the tuple (primary key, secondary key). This means a given publisher can only publish ONE value of a given type for each key. Raphael