Peer exchange

Last updated

Peer exchange or PEX is a communications protocol that augments the BitTorrent file sharing protocol. It allows a group of users (or peers) that are collaborating to share a given file to do so more swiftly and efficiently.

Contents

In the original design of the BitTorrent file sharing protocol, peers (users) in a file sharing group (known as a "swarm") relied upon a central computer server called a tracker to find each other and to maintain the swarm. PEX greatly reduces the reliance of peers on a tracker by allowing each peer to directly update others in the swarm as to which peers are currently in the swarm. By reducing dependency on a centralized tracker, PEX increases the speed, efficiency, and robustness of the BitTorrent protocol.

Description

Users wishing to obtain a copy of a file typically first download a torrent file that describes the file(s) to be shared, as well as the URLs of one or more central computers called trackers that maintain a list of peers currently sharing the file(s) described in the .torrent file. In the original BitTorrent design, peers then depended on this central tracker to find each other and maintain the swarm. Later development of distributed hash tables (DHTs) meant that partial lists of peers could be held by other computers in the swarm and the load on the central tracker computer could be reduced. PEX allows peers in a swarm to exchange information about the swarm directly without asking (polling) a tracker computer or a DHT. By doing so, PEX leverages the knowledge of peers that a user is connected to by asking them for the addresses of peers that they are connected to. This is faster and more efficient than relying solely on one tracker and reduces the processing load on the tracker. It also keeps swarms together when the tracker is down. [1]

Peer exchange cannot be used on its own to introduce a new peer to a swarm. To make initial contact with a swarm, each peer must either connect to a tracker using a ".torrent" file, or else use a router computer called a bootstrap node to find a distributed hash table (DHT) which describes a swarm's list of peers. For most BitTorrent users, DHT and PEX will start to work automatically after the user launches a BitTorrent client and opens a .torrent file. A notable exception is "private torrents" which are not freely available; these will commonly disable DHT.

Peer Exchange Conventions

Extensions to BitTorrent such as PEX are typically implemented using one of two common extension protocols, AZMP [2] or LTEP. [3] Both types of peer exchange send messages containing a group of peers to be added to the swarm and a group of peers to be removed.

It was agreed between the Azureus and μTorrent developers that any clients which implement either of the mechanisms above try to obey the following limits when sending PEX messages: [4]

Some clients may choose to enforce these limits and drop connections from clients that ignore them. [4]

DHT

To create a PEX protocol providing a uniformly-distributed peer selection, one could form a small distributed hash table (DHT) local to a torrent. For each desired new peer one would look up a (uniformly) random key, and use the node responsible for the key as a new peer. This is conceptually simple but would require quite some overhead.[ citation needed ]

For "trackerless" torrents, it is not clear if PEX provides any value[ citation needed ] since the mainline DHT can distribute load as necessary. Each DHT node acting as a tracker may store only a subset of the peers, but these are maximal subsets constrained only by DHT node load rather than by a single peer's view. Private torrents commonly disable the DHT, and for this case, PEX might be useful provided the peer obtains enough peers from the tracker.

Versions

There are three incompatible PEX implementations (making distinct "networks" in swarm)[ citation needed ]


Clients supporting peer exchange

Most BitTorrent clients use PEX to gather peers in addition to trackers and DHT. With the 3.0.5.0 release of Vuze, all major BitTorrent clients now have compatible peer exchange.

Each of these clients implement some version of peer exchange:

Related Research Articles

BitTorrent is a communication protocol for peer-to-peer file sharing (P2P), which enables users to distribute data and electronic files over the Internet in a decentralized manner.

An anonymous P2P communication system is a peer-to-peer distributed application in which the nodes, which are used to share resources, or participants are anonymous or pseudonymous. Anonymity of participants is usually achieved by special routing overlay networks that hide the physical location of each node from other participants.

The Invisible Internet Project (I2P) is an anonymous network layer that allows for censorship-resistant, peer-to-peer communication. Anonymous connections are achieved by encrypting the user's traffic, and sending it through a volunteer-run network of roughly 55,000 computers distributed around the world. Given the high number of possible paths the traffic can transit, a third party watching a full connection is unlikely. The software that implements this layer is called an "I2P router", and a computer running I2P is called an "I2P node". I2P is free and open sourced, and is published under multiple licenses.

<span class="mw-page-title-main">BitComet</span> BitTorrent, FTP and HTTP client

BitComet is a cross-protocol BitTorrent, HTTP and FTP client written in C++ for Microsoft Windows and available in 52 different languages. Its first public release was version 0.28. The current BitComet logo has been used since version 0.50.

<span class="mw-page-title-main">Magnet URI scheme</span> Scheme that defines the format of magnet links

Magnet is a URI scheme that defines the format of magnet links, a de facto standard for identifying files (URN) by their content, via cryptographic hash value rather than by their location.

In file sharing, super-seeding is an algorithm developed by John Hoffman for the BitTorrent communications protocol that helps downloaders become uploaders more quickly, but it introduces the danger of total seeding failure if there is only one downloader.

A BitTorrent tracker is a special type of server that assists in the communication between peers using the BitTorrent protocol.

<span class="mw-page-title-main">KTorrent</span> Free and open source BitTorrent client

KTorrent is a BitTorrent client that is part of the KDE Gear.

The UDP tracker protocol is a high-performance low-overhead BitTorrent tracker protocol. It uses the stateless User Datagram Protocol (UDP) for data transmission instead of the HTTP protocol regular trackers use. The data is in a custom binary format instead of the standard bencode algorithm BitTorrent uses for most communication.

Protocol encryption (PE), message stream encryption (MSE) or protocol header encrypt (PHE) are related features of some peer-to-peer file-sharing clients, including BitTorrent clients. They attempt to enhance privacy and confidentiality. In addition, they attempt to make traffic harder to identify by third parties including internet service providers (ISPs). However, encryption will not protect one from DMCA notices from sharing not legal content, as one is still uploading material and the monitoring firms can merely connect to the swarm.

qBittorrent Free and open source BitTorrent client

qBittorrent is a cross-platform free and open-source BitTorrent client written in native C++. It relies on Boost, Qt 6 toolkit and the libtorrent-rasterbar library, with an optional search engine written in Python.

<span class="mw-page-title-main">Vuze</span> BitTorrent client

Vuze is a BitTorrent client used to transfer files via the BitTorrent protocol. Vuze is written in Java, and uses the Azureus Engine. In addition to downloading data linked to .torrent files, Azureus allows users to view, publish and share original DVD and HD quality video content. Content is presented through channels and categories containing TV shows, music videos, movies, video games, series and others. Additionally, if users prefer to publish their original content, they may earn money from it.

The following is a general comparison of BitTorrent clients, which are computer programs designed for peer-to-peer file sharing using the BitTorrent protocol.

This is a glossary of jargon related to peer-to-peer file sharing via the BitTorrent protocol.

A scrape, or tracker scrape, is a request sent by a BitTorrent client to a tracker. A request is sent, connection to the tracker is established, information is exchanged, then the connection is closed. The request does something like a "wipe" or a "pass" over the tracker, and then the tracker sends information back to the client.

libtorrent

libtorrent is an open-source implementation of the BitTorrent protocol. It is written in and has its main library interface in C++. Its most notable features are support for Mainline DHT, IPv6, HTTP seeds and μTorrent's peer exchange. libtorrent uses Boost, specifically Boost.Asio to gain its platform independence. It is known to build on Windows and most Unix-like operating systems.

Micro Transport Protocol or μTP is an open UDP-based variant of the BitTorrent peer-to-peer file sharing protocol intended to mitigate poor latency and other congestion control problems found in conventional BitTorrent over TCP, while providing reliable, ordered delivery.

In the BitTorrent file distribution system, a torrent file or meta-info file is a computer file that contains metadata about files and folders to be distributed, and usually also a list of the network locations of trackers, which are computers that help participants in the system find each other and form efficient distribution groups called swarms. A torrent file does not contain the content to be distributed; it only contains information about those files, such as their names, folder structure, sizes, and cryptographic hash values for verifying file integrity. Torrent files are normally named with the extension ".torrent".

Mainline DHT is the name given to the Kademlia-based distributed hash table (DHT) used by BitTorrent clients to find peers via the BitTorrent protocol. The idea of using a DHT for distributed tracking in BitTorrent was first implemented in Azureus 2.3.0.0 in May 2005, from which it gained significant popularity. Unrelated but around the same time, BitTorrent, Inc. released a similar DHT into their client called Mainline DHT, and thus popularized the use of distributed tracking in the BitTorrent protocol. Measurement showed that by 2013, the concurrent number of users of Mainline DHT is from 16 million to 28 million, with intra-day changes of at least 10 million.

μTorrent Proprietary adware BitTorrent client

μTorrent, or uTorrent, is a proprietary adware BitTorrent client owned and developed by Rainberry, Inc. The "μ" in its name comes from the SI prefix "micro-", referring to the program's small memory footprint: the program was designed to use minimal computer resources while offering functionality comparable to larger BitTorrent clients such as Vuze or BitComet. μTorrent became controversial in 2015 when many users unknowingly accepted a default option during installation which also installed a cryptocurrency miner.

References

  1. "Peer Exchange - VuzeWiki".
  2. "Azureus messaging protocol - VuzeWiki". wiki.vuze.com. Retrieved 2019-11-20.
  3. "extension_protocol.rst". www.rasterbar.com. Retrieved 2019-11-20.
  4. 1 2 "BitTorrentPeerExchangeConventions - Theory.org Wiki". wiki.theory.org. Retrieved 2019-11-20.
  5. <the8472.bep@infinite-source.de>, The 8472. "bep_0011.rst_post". www.bittorrent.org. Retrieved 2021-05-23.
  6. "Bitcomet - Changelog".
  7. "Ubuntu Manpage: Aria2c - the ultra fast download utility". Archived from the original on 2015-04-02. Retrieved 2015-03-29.
  8. "utorrent PEX in Vuze". Vuze Wiki website. Retrieved 2010-08-15.
  9. "PEX in BitComet". BitComet Wiki website. Retrieved 2010-02-23.
  10. "Release notes for BitComet". BitComet official website. Retrieved 2010-02-23.
  11. "Bitflu configuration example" . Retrieved 2007-03-30.
  12. BitTorrent User Manual - Appendix A: The BitTorrent Interface - Miscellaneous - Torrent Properties - General - Other Settings - Peer Exchange Archived 2014-07-06 at the Wayback Machine
  13. "What's new in 2.1?". KTorrent official website. Archived from the original on 2006-04-02. Retrieved 2007-03-30.
  14. "Deluge 0.5.1 Beta 1 changes". Archived from the original on 2008-12-25. Retrieved 2007-09-11.
  15. "qBittorrent official website" . Retrieved 2007-05-14.
  16. "MooPolice official website" . Retrieved 2007-03-30.
  17. "μTorrent 1.4.1 beta and 1.4.2 beta changes". Archived from the original on 2006-11-25. Retrieved 2007-09-11.
  18. "Opera 9.5 BitTorrent support" . Retrieved 2007-09-04.
  19. "Details of qBittorrent package". Debian Packages. Retrieved 2011-04-15. μTorrent-compatible Peer eXchange (PeX)
  20. "libTorrent 0.11.8 and rTorrent 0.7.8 Changelog". Archived from the original on 2007-11-03. Retrieved 2007-09-11.
  21. "NEWS (rev 1579)". Transmission SVN. Archived from the original on 2007-08-24. Retrieved 2007-03-30.
  22. Xtorrent P2P (for Mac OS X)