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, 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 記事
- Magnet LinkからMetadataへ:Peer DiscoveryとBEP 9/10の完全フロー
- BEP 9 ut_metadata解説:PeerからTorrent Metadataを取得する仕組み
- Tracker vs DHT vs PEX:BitTorrentの3つのPeer Discovery方式を比較
- SeedersとLeechersとは?数字の意味と測定方法
参考資料
- BEP 10 - Extension Protocol
- BEP 9 - Extension for Peers to Send Metadata Files
- BEP 11 - Peer Exchange (PEX)
次の記事: Tracker vs DHT vs PEX:BitTorrentの3つのPeer Discovery方式を比較 →
本記事は公開 BitTorrent プロトコルの挙動を技術・研究目的で解説するものであり、観測されたすべての Swarm が利用可能、正当、または再配布を許可されていることを意味しません。