ピア交換

ピア交換（ピアこうかん、, PEX）とは、BitTorrentファイル共有プロトコルを補完する通信プロトコルである。これは、特定のファイルを共有するために協力しているユーザー（ピア）のグループが、より迅速かつ効率的に共有を行えるようにするものである。

BitTorrentプロトコルの当初の設計では、ファイル共有グループ（スウォーム）内のピア（ユーザー）は、トラッカーと呼ばれる中央のコンピュータサーバに依存して互いを見つけ、スウォームを維持していた。PEXは、各ピアが現在スウォームに存在する他のピアの情報を直接伝達できるようにすることで、トラッカーへの依存を大幅に軽減する。中央集権的なトラッカーへの依存を減らすことで、PEXはBitTorrentプロトコルの速度、効率、および堅牢性を高める。

概要
ファイルのコピーを取得したいユーザーは通常、共有されるファイルを記述するトレントファイルと、それに記載された、ファイルを現在共有しているピアのリストを管理するトラッカーと呼ばれる一つまたは複数の中央コンピュータのURLを最初にダウンロードする。BitTorrentの元の設計では、その後、ピアはこの中央トラッカーに依存して互いを見つけ、スウォームを維持していた。後に分散ハッシュテーブル（DHT）が開発されることで、ピアの部分的なリストをスウォーム内の他のコンピュータが保持できるようになり、中央トラッカーの負荷が軽減された。PEXは、ピアがトラッカーやDHTに問い合わせ（ポーリング）を行わずに、スウォームに関する情報を直接交換できるようにする。これにより、PEXは接続されているピアに対し、そのピアが接続している他のピアのアドレスを尋ねることで情報を得る。この方法は、単一のトラッカーに依存するよりも高速かつ効率的であり、トラッカーの処理負荷を減らす。また、トラッカーがダウンしている場合でもスウォームの維持が可能になる。

PEX単体では新しいピアをスウォームに参加させることはできない。スウォームと初めて接触するには、各ピアはファイルを用いてトラッカーに接続するか、と呼ばれるルーターコンピュータを使用してスウォームのピアリストを記述する分散ハッシュテーブル（DHT）を見つける必要がある。大多数のBitTorrentユーザーにとっては、BitTorrentクライアントを起動してファイルを開くことで、DHTとPEXは自動的に機能し始める。例外として、「プライベートトレント」は自由に利用できないものであり、これらではDHTが無効化されるのが一般的である。

ピア交換の規約
PEXのようなBitTorrent拡張は、通常、AZMPまたはLTEPという二つの一般的な拡張プロトコルのいずれかを用いて実装される。両方式とも、スウォームに追加すべきピア群および削除すべきピア群を含むメッセージを送信する。

AzureusとμTorrentの開発者の間で、上記いずれかのメカニズムを実装するクライアントは、以下の制限を守るよう努力するという合意がなされた。

 任意のPEXメッセージにおいて、追加されるピアと削除されるピアはそれぞれ最大50までとする。
 ピア交換メッセージの送信は1分に1回を超えてはならない。

一部のクライアントは、これらの制限を強制し、それを無視するクライアントからの接続を切断することもある。

DHT
均一に分布するピア選択を提供するPEXプロトコルを作成するには、トレントにローカルな小規模の分散ハッシュテーブル（DHT）を構築することが考えられる。新たなピアを一つ得るごとに、一様にランダムなキーを探索し、そのキーを担当するノードを新しいピアとして利用する。これは概念的には単純であるが、大きなオーバーヘッドが発生する可能性がある。

「トラッカーレス」トレントにおいては、PEXが有用であるかは明確ではない。なぜなら、Mainline DHTが必要に応じて負荷を分散できるからである。各DHTノードはトラッカーとして機能し得るが、保持するピアのリストはDHTノードの負荷によって制約される「最大部分集合」であり、単一のピアの視点による制限は存在しない。プライベートトレントではDHTが無効化されることが一般的であり、この場合、PEXはトラッカーから十分な数のピアを得られるならば有用となる可能性がある。

バージョン
互換性のない3つのPEX実装が存在し、それぞれがスウォーム内で異なるネットワークを形成している。

 Vuze – Azureusで導入された。
 BitComet – プロプライエタリ – BitCometで導入され、バージョン1.19からBEP11をサポートし、メインラインと互換性がある。
 メインライン – μTorrentで導入された。

ピア交換をサポートするクライアント
ほとんどのBitTorrentクライアントは、トラッカーやDHTに加えてピア交換（PEX）を用いてピアを収集している。Vuzeの3.0.5.0リリースにより、すべての主要なBitTorrentクライアントが互換性のあるピア交換機能を持つようになった。

以下のクライアントは、それぞれ何らかのPEX実装を搭載している：
aria2 - μTorrent PEXをサポート
Vuze（旧Azureus）およびそれに基づくクライアント（Vuze PEXはTransmissionクライアントとのみ互換性がある。他のクライアントとのPEXはVuzeおよびAzureusのバージョン3.0.4.3以降に実装された）
BitComet - 古いバージョンではプロプライエタリなプロトコルによるPEXをサポートしている。バージョン1.19以降では、拡張プロトコルに基づいたμTorrent/メインラインのPEX実装もサポートされている

BitTorrentBitTorrent User Manual - Appendix A: The BitTorrent Interface - Miscellaneous - Torrent Properties - General - Other Settings - Peer Exchange 
KTorrentは2.1 RC1からμTorrent PEXを完全にサポートしている
libtorrentおよびそれに基づくクライアント（Deluge、qBittorrent、MooPolice）はμTorrentと互換性あり
Tixati
μTorrent
Opera 9.5 - μTorrent PEXをサポート
qBittorrent - μTorrent PEXをサポート
rTorrent
Transmission - μTorrentおよびVuzeの両実装と互換性あり
XTorrent - Transmissionのソースコードに基づいており、バージョン1.0（v40）以降、VuzeおよびμTorrentの実装を完全にサポートしているXtorrent P2P (for Mac OS X)

脚注

Category:BitTorrent