Skip to content

Instantly share code, notes, and snippets.

@kovalensky
Last active December 22, 2023 03:31
Show Gist options
  • Save kovalensky/2d0e6e6b52c50cc96b8bdc4809f4db44 to your computer and use it in GitHub Desktop.
Save kovalensky/2d0e6e6b52c50cc96b8bdc4809f4db44 to your computer and use it in GitHub Desktop.
BEP: Extensions supported by tracker
BEP: XXX
Title: Extensions supported by tracker
Version: $Version$
Last-Modified: $Date$
Author: Constantine Kovalensky <kovalensky@evergarden.ru>
Status: Draft
Type: Standards track
Content-Type: text/x-rst
Created: 09-September-2023

Abstract

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.

Overview

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

Clarifications

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).

Copyright

This document has been placed in the public domain.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment