BEP: | XXX |
---|---|
Title: | Extensions supported by tracker |
Version: | |
Last-Modified: | |
Author: | Constantine Kovalensky <kovalensky@evergarden.ru> |
Status: | Draft |
Type: | Standards track |
Content-Type: | text/x-rst |
Created: | 09-September-2023 |
To reduce the load by constantly sending GET parameters which are not supported by the tracker and agreeing on the settings for future extensions, trackers could return additional information about the status of implemented features.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119.
In the BitTorrent protocol standards, there are several extension parameters sent to the tracker without knowing exactly the support status for them.
To solve this issue, clients MAY send an additional supported_extensions key to trackers in the GET parameter during the first announce.
Request example:
GET /announce?supported_extensions=1&info_hash=cccccccccccccccccccc&peer_id=cccccccccccccccccccc&port=1337&left=0&downloaded=334&uploaded=223
Trackers, in return, MAY add the bencode key called extensions, which will include list of extensions implemented in the tracker software.
Response with ipv6 and crypto_peers extensions support:
d8:completei1e10:extensionsl4:ipv612:crypto_peerse10:incompletei0e8:intervali2400e5:peers:cccccccccc
If the tracker didn't send the extensions key, then requests SHOULD continue in the standard order.
Trackers MUST include only implemented extensions, all others are considered unsupported.
It is RECOMMENDED to include extensions list in tracker failure responses if supported_extensions parameter persists.
Current list of returned extension keys:
'compact' => Compact peer lists. 'peer_obfs' => Peer list obfuscation. 'external_ip' => Returning external IP address. 'scrape' => Scrape extension. 'crypto_peers' => Returning a list of peers with client-supported protocol obfuscation. 'peer_id' => peer_id parameter is required. 'bt_v2' => BitTorrent v2 support (including untruncated info-hashes).
This document has been placed in the public domain.