NAME

Net::BitTorrent::DHT - Kademlia based Distributed Hash Table

Constructor

new ( [ARGS] )

Creates a Net::BitTorrent::DHT object. This constructor should not be used directly.

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.