NAME
Net::BitTorrent::DHT - Kademlia based Distributed Hash Table
Constructor
Methods
add_node ( { [...] } )
-
Adds a single node to the routing table. Expects a hashref with the following keys:
ip
-
The hostname/IP address of the remote node.
port
-
The port the remote node has open for DHT.
This is an advanced method and should not (normally) should not be used.
node_id ( )
-
Get the Node ID used to identify this client in the DHT swarm.
nodes ( )
-
Returns a list of nodes from the routing table in a format suitable for handing off to add_node( ) one by one.
as_string ( [ VERBOSE ] )
-
Returns a 'ready to print' dump of the object's data structure. If called in void context, the structure is printed to
STDERR
.VERBOSE
is a boolean value.
Bugs
In this alpha, there are a number of places where I break away from the specification. These will all be fixed in a future version.
The routing table is flat.
Notes
While bandwidth to/from DHT nodes will probably never be limited like other traffic, in the future, it will be taken into account and "drained" from the rate limiter. If there's a burst of DHT traffic, the peer traffic may be limited to avoid the total to exceed the global limit.
See Also
I have used a number of references for implementation second opinions:
- The Kademlia Paper
-
http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf
- BEP 5: DHT
-
http://www.bittorrent.org/beps/bep_0005.html
- Notes about the BitTorrent DHT Protocol from GetRight
-
http://getright.com/torrentdev.html
Author
Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/
CPAN ID: SANKO
License and Legal
Copyright (C) 2008-2009 by Sanko Robinson <sanko@cpan.org>
This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or http://www.perlfoundation.org/artistic_license_2_0. For clarification, see http://www.perlfoundation.org/artistic_2_0_notes.
When separated from the distribution, all POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See http://creativecommons.org/licenses/by-sa/3.0/us/legalcode. For clarification, see http://creativecommons.org/licenses/by-sa/3.0/us/.
Neither this module nor the Author is affiliated with BitTorrent, Inc.