BT9G LABS / DHT 詳解 #11

BEP 10 Extension Protocol:互換性を壊さずBitTorrentを拡張する仕組み

extended handshake、動的 message ID、ut_metadata や PEX を支える BEP 10 の役割を解説します。

BT9G Labs / DHT Deep Dive #11. 各 Peer connection ごとに拡張機能を動的協商することで、古いクライアントとの互換性を維持する設計を理解します。

BEP 10 Extension Protocol:互換性を壊さずBitTorrentを拡張する仕組み

クイックサマリー

  • テーマ: BEP 10 Extension Protocol:互換性を壊さずBitTorrentを拡張する仕組み
  • 主要キーワード: BEP 10, Extension Protocol, extended handshake, ut_metadata, BitTorrent
  • 対象読者: バックエンドエンジニア、プロトコル研究者、検索エンジニア、BitTorrent 実装者
  • 目的: DHT と BitTorrent の仕組みを、実際のクローラ・インデックス・検索基盤の設計判断に使える精度で説明すること。

システム構成

互換性問題をどう解くか

長寿命な P2P protocol は新機能を追加しながら旧 client も壊さない必要があります。BEP 10 は基本 handshake の reserved bits で extension protocol 対応を示し、その後 extended handshake で具体的 capabilities を交換します。

これにより基本 Peer Wire Protocol を大きく変えずに新しい extension を追加できます。

Extended handshake と動的 ID

m dictionary には extension name と、その connection で使う message ID の対応が入ります。client version、listening port、metadata_size なども含まれる場合があります。

重要なのは message ID が connection-local であり、ut_metadata=3 のような固定値を仮定してはいけないことです。

インデクサに重要な理由

Magnet から Metadata を得る多くの実装は BEP 9 に依存し、その ut_metadata capability を BEP 10 で発見します。接続成功、basic handshake、BEP 10 対応、ut_metadata 対応、Metadata complete を別々に計測すると、どこで conversion が落ちているか分かります。

unsupported extension と network failure を同じ error にしないことも重要です。

実装スケッチ

Base handshake
  reserved bit says: extension protocol supported
        |
        v
Extended handshake
  m = { "ut_metadata": 3, "ut_pex": 1 }
  metadata_size = 48321
        |
        v
Extended message 3 now means ut_metadata for this connection

BT9G Labs エンジニアリングノート

BT9G のようなインデックス基盤では、イベント件数そのものより、コンテンツ ID、短命なネットワーク観測、取得状態、検索用ドキュメントを分離することが重要です。DHT や Peer から得た値には取得元と時刻を持たせ、discovery、接続、handshake、拡張対応、Metadata 取得、検証、保存、検索反映を段階別に計測すると、実際のボトルネックを特定しやすくなります。

よくある誤解

  • 全 Peer が BEP 10 をサポートすると仮定する。
  • extension message ID をグローバル固定値にする。
  • extended handshake 前に ut_metadata を送る。
  • unsupported と network failure を同一 error にする。

関連する BT9G Labs 記事

参考資料


次の記事: Tracker vs DHT vs PEX:BitTorrentの3つのPeer Discovery方式を比較 →

本記事は公開 BitTorrent プロトコルの挙動を技術・研究目的で解説するものであり、観測されたすべての Swarm が利用可能、正当、または再配布を許可されていることを意味しません。