スキップしてメイン コンテンツに移動

投稿

7月, 2010の投稿を表示しています

新BitTorrentプロトコルµTPを実装するlibutpソースコードの概観

5月21日に、 libutp ソースコードがMITライセンスで 公開された 。libutpとは、 µTP ( Micro Transport Protocol )と呼ばれるプロトコルの実装ライブラリである(BitTorrent.orgでは BEP 29 として提案され、IETFでは LEDBAT として提案された)。今回は、そのコードを見てみたい。 libutpを公開したのは BitTorrent, Inc. で、彼らが配布するBitTorrentクライアント μTorrent のバージョン1.8 betaがµTPを最初に実装した。BitTorrent, Inc.が元々持っていたオリジナルのBitTorrent実装(Mainline)は、Pythonで書かれたソフトウェアとして有名だが、μTorrentはC++で実装されたWindows用ソフトウェアである。μTorrentはスウェーデン人の Ludvig Strigeus 氏が開発したが、2006年にBitTorrent, Incに買収されている。μTorrentが登場したとき、備えている機能に比して、GUIアプリにしては(パックされている可能性を勘案しても)きわめて小さいバイナリサイズに感心した。プログラマの力量を誇示するかのようなコンパクトで尖ったソフトウェアだったので、後日の買収のニュースには、落ち着くところに落ち着いたなと感じたのを記憶している。 従来のBitTorrentによるファイル転送がTCPを経由して行われていたのに対し、µTPは、UDP上に構築されたプロトコルを用いる。既にDHTやトラッカーのプロトコルには UDPが利用されていた (ただしμTorrentによる実装はかなり後になった)が、µTPは、トランスポートプロトコルとしてもUDP上に構築した独自プロトコルを利用する。 BitTorrentクライアントが実装した DHT (分散ハッシュテーブル)は、 Kademlia というアルゴリズムの実装で、トラッカーに依存しないリソース探索が可能となった。Gnutellaライクな、しかしより構造化された分散キー管理により、トラッカーがダウンしていても目的のリソースを保持するピアのリストを得られる。ネットワークの単一障害点を無くすという建前だが、違法にアップロードされたデータを配布するトラッカーが検挙さ