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

Revision 10759, 2.3 kB (checked in by dave, 6 months ago)

rstify bep 0015 from olaf. Remove references to BitTorrent?, Inc. in favor of bittorrent.org.
Update bep 0000 to refer to bep 0015.

Line 
1BEP: 12
2Title: Multitracker Metadata Extension
3Version: $Revision$
4Last-Modified: $Date$
5Author:  John Hoffman <theshadow@degreez.net>
6Status:  Draft
7Type:    Standards Track
8Created: 07-Feb-2008
9Post-History:
10
11
12Metadata Extension
13==================
14
15In addition to the standard "announce" key, in the main area of the
16metadata file and not part of the "info" section, will be a new key,
17"announce-list".  This key will refer to a list of lists of URLs, and
18will contain a list of tiers of announces.  If the client is compatible
19with the multitracker specification, and if the "announce-list" key is
20present, the client will ignore the "announce" key and only use the
21URLs in "announce-list".
22
23
24Order of Processing
25===================
26
27The tiers of announces will be processed sequentially; all URLs in each
28tier must be checked before the client goes on to the next tier.  URLs
29within each tier will be processed in a randomly chosen order; in other
30words, the list will be shuffled when first read, and then parsed in
31order.  In addition, if a connection with a tracker is successful, it
32will be moved to the front of the tier.
33
34Examples: ::
35
36  d['announce-list'] = [ [tracker1], [backup1], [backup2] ]
37
38On each announce, first try tracker1, then if that cannot be reached,
39try backup1 and backup2 respectively.  On the next announce, repeat
40in the same order.  This is meant for when the trackers are standard
41and can not share information.
42
43  d['announce-list'] = [[ tracker1, tracker2, tracker3 ]]
44
45First, shuffle the list.  (For argument's sake, we'll say the list
46has already been shuffled.)  Then, if tracker1 cannot be reached, try
47tracker2.  If tracker2 can be reached, the list is now:
48tracker2,tracker1,tracker3.  From then on, this will be the order the
49client tries.  If later neither tracker2 nor tracker1 can be reached,
50but tracker3 responds, then the list will be changed to:
51tracker3,tracker2,tracker1, and will be tried in that order in the
52future.  This form is meant for trackers which can trade peer
53information and will cause the clients to help balance the load
54between the trackers.
55
56  d['announce-list'] = [ [ tracker1, tracker2 ], [backup1] ]
57
58The first tier, consisting of tracker1 and tracker2, is shuffled.
59Both trackers 1 and 2 will be tried on each announce (though perhaps
60in varying order) before the client tries to reach backup1.
Note: See TracBrowser for help on using the browser.