178 lines
8.1 KiB

Settings in settings_pack concerning DHT things:
name type default
dht_bootstrap_nodes string
This is a comma-separated list of IP port-pairs. They will be added to the DHT node (if it's enabled) as back-up nodes in case we don't know of any.
Changing these after the DHT has been started may not have any effect until the DHT is restarted.
name type default
use_dht_as_fallback bool false
use_dht_as_fallback determines how the DHT is used. If this is true, the DHT will only be used for torrents where all trackers in its tracker list has failed. Either by an explicit error message or a time out. If this is false, the DHT is used regardless of if the trackers fail or not.
name type default
enable_dht bool true
starts the dht node and makes the trackerless service available to torrents.
name type default
enable_dht bool true
starts the dht node and makes the trackerless service available to torrents.
name type default
prefer_rc4 bool false
if the allowed encryption level is both, setting this to true will prefer RC4 if both methods are offered, plain text otherwise
name type default
proxy_hostnames bool true
if true, hostname lookups are done via the configured proxy (if any). This is only supported by SOCKS5 and HTTP.
name type default
proxy_peer_connections bool true
if true, peer connections are made (and accepted) over the configured proxy, if any. Web seeds as well as regular bittorrent peer connections are considered "peer connections". Anything transporting actual torrent payload (trackers and DHT traffic are not considered peer connections).
name type default
auto_sequential bool true
if this setting is true, torrents with a very high availability of pieces (and seeds) are downloaded sequentially. This is more efficient for the disk I/O. With many seeds, the download order is unlikely to matter anyway
name type default
proxy_tracker_connections bool true
if true, tracker connections are made over the configured proxy, if any.
name type default
dht_prefer_verified_node_ids bool true
when this is true, nodes whose IDs are derived from their source IP according to BEP 42 are preferred in the routing table.
name type default
dht_restrict_routing_ips bool true
determines if the routing table entries should restrict entries to one per IP. This defaults to true, which helps mitigate some attacks on the DHT. It prevents adding multiple nodes with IPs with a very close CIDR distance.
when set, nodes whose IP address that's in the same /24 (or /64 for IPv6) range in the same routing table bucket. This is an attempt to mitigate node ID spoofing attacks also restrict any IP to only have a single entry in the whole routing table
name type default
dht_restrict_search_ips bool true
determines if DHT searches should prevent adding nodes with IPs with very close CIDR distance. This also defaults to true and helps mitigate certain attacks on the DHT.
name type default
dht_extended_routing_table bool true
makes the first buckets in the DHT routing table fit 128, 64, 32 and 16 nodes respectively, as opposed to the standard size of 8. All other buckets have size 8 still.
name type default
dht_aggressive_lookups bool true
slightly changes the lookup behavior in terms of how many outstanding requests we keep. Instead of having branch factor be a hard limit, we always keep branch factor outstanding requests to the closest nodes. i.e. every time we get results back with closer nodes, we query them right away. It lowers the lookup times at the cost of more outstanding queries.
name type default
dht_privacy_lookups bool false
when set, perform lookups in a way that is slightly more expensive, but which minimizes the amount of information leaked about you.
name type default
dht_enforce_node_id bool false
when set, node's whose IDs that are not correctly generated based on its external IP are ignored. When a query arrives from such node, an error message is returned with a message saying "invalid node ID".
name type default
dht_ignore_dark_internet bool true
ignore DHT messages from parts of the internet we wouldn't expect to see any traffic from
name type default
dht_read_only bool false
when set, the other nodes won't keep this node in their routing tables, it's meant for low-power and/or ephemeral devices that cannot support the DHT, it is also useful for mobile devices which are sensitive to network traffic and battery life. this node no longer responds to 'query' messages, and will place a 'ro' key (value = 1) in the top-level message dictionary of outgoing query messages.
name type default
dht_announce_interval int 15 * 60
dht_announce_interval is the number of seconds between announcing torrents to the distributed hash table (DHT).
name type default
dht_upload_rate_limit int 8000
the number of bytes per second (on average) the DHT is allowed to send. If the incoming requests causes to many bytes to be sent in responses, incoming requests will be dropped until the quota has been replenished.
name type default
dht_max_peers_reply int 100
the maximum number of peers to send in a reply to get_peers
name type default
dht_search_branching int 5
the number of concurrent search request the node will send when announcing and refreshing the routing table. This parameter is called alpha in the kademlia paper
name type default
dht_max_fail_count int 20
the maximum number of failed tries to contact a node before it is removed from the routing table. If there are known working nodes that are ready to replace a failing node, it will be replaced immediately, this limit is only used to clear out nodes that don't have any node that can replace them.
name type default
dht_max_torrents int 2000
the total number of torrents to track from the DHT. This is simply an upper limit to make sure malicious DHT nodes cannot make us allocate an unbounded amount of memory.
name type default
dht_max_dht_items int 700
max number of items the DHT will store
name type default
dht_max_peers int 500
the max number of peers to store per torrent (for the DHT)
name type default
dht_max_torrent_search_reply int 20
the max number of torrents to return in a torrent search query to the DHT
name type default
dht_block_timeout int 5 * 60
the number of seconds a DHT node is banned if it exceeds the rate limit. The rate limit is averaged over 10 seconds to allow for bursts above the limit.
name type default
dht_block_ratelimit int 5
the max number of packets per second a DHT node is allowed to send without getting banned.
name type default
dht_item_lifetime int 0
the number of seconds a immutable/mutable item will be expired. default is 0, means never expires.
name type default
dht_sample_infohashes_interval int 21600
the info-hashes sample recomputation interval (in seconds). The node will precompute a subset of the tracked info-hashes and return that instead of calculating it upon each request. The permissible range is between 0 and 21600 seconds (inclusive).
name type default
dht_max_infohashes_sample_count int 20
the maximum number of elements in the sampled subset of info-hashes. If this number is too big, expect the DHT storage implementations to clamp it in order to allow UDP packets go through
public subscribe pattern
double identifiers
ID = nickname
Negative Tracker
magnet link
.torrent file
DHT (Kademlia)
peer ID