root / dotorg / trunk / html / beps / bep_0021.rst

Revision 11067, 2.4 kB (checked in by dave, 3 months ago)

Add Greg and Aaron as authors.

Line 
1BEP: 21
2Title: Extension for partial seeds
3Version: $Revision$
4Last-Modified: $Date$
5Author:  Arvid Norberg <arvid@bittorrent.com>, Greg Hazel <greg@bittorrent.com>, Aaron Grunthal
6Status:  Draft
7Type:    Standards Track
8Created: 8-May-2008
9Post-History:
10
11The purpose of this extension is to allow further optimizations of
12bittorrent swarms when peers are *partial seeds*. A partial seed
13is a peer that is incomplete without downloading anything more. This
14happens for multi file torrents where users only download some of
15the files.
16
17Extension Header
18================
19
20A peer that is a partial seed SHOULD include an extra header in the extension
21handshake (specified in `BEP 0010`_), 'upload_only'. Setting the value of
22this key to 1 indicates that this peer is not interested in downloading anything.
23
24Example extension handshake message::
25
26        {'m': {'ut_metadata', 3}, 'upload_only': 1}
27
28Tracker Scrapes
29===============
30
31The tracker scrape conventions defines three values per torrent, 'complete',
32'incomplete' and 'downloaded'. The purpose of this extensions is to let clients
33distinguish between partial seeds and downloaders, both of which currently would
34be classified as *incomplete*.
35
36If the tracker supports this extension, it MUST add a fourth field, 'downloaders'.
37This field is the number of active downloaders in the swarm, it does not include
38partial seeds. The number of partial seeds can be calculated by:
39``incomplete - downloaders``.
40
41Tracker Announce
42================
43
44In order to tell the tracker that a peer is a partial seed, it MUST send an
45``event=paused`` parameter in every announce while it is a partial seed.
46
47Rationale
48=========
49
50Allowing peers to scrape a tracker and distinguish between active downloaders
51and partial seeds makes it more efficient to determine what to seed based
52on the downloader/seed ratio.
53
54The reason why every announce should contain ``event=paused`` is to avoid
55relying on the state being stored in the tracker. In case there's a failure
56and a backup tracker is used, it can recover all of the swarm state because
57the clients are announcing that they are partial seeds.
58
59References
60==========
61
62.. _`BEP 0010`: http://www.bittorrent.org/beps/bep_0010.html
63
64
65Copyright
66=========
67
68This document has been placed in the public domain.
69
70
71..
72   Local Variables:
73   mode: indented-text
74   indent-tabs-mode: nil
75   sentence-end-double-space: t
76   fill-column: 70
77   coding: utf-8
78   End:
Note: See TracBrowser for help on using the browser.