BT9G LABS / DHT Deep Dive #11

BEP 10 Extension Protocol: Negosiasi Fitur BitTorrent Tanpa Merusak Kompatibilitas

Pahami extended handshake BEP 10, mapping extension ID, capability negotiation, dan mengapa mekanisme ini penting untuk ut_metadata serta fitur modern lain.

BT9G Labs / DHT Deep Dive #11. BEP 10 memberi BitTorrent cara memperkenalkan extension baru tanpa mengubah wire protocol dasar untuk setiap fitur.

BEP 10 Extension Protocol: Negosiasi Fitur BitTorrent Tanpa Merusak Kompatibilitas

Ringkasan cepat

  • Topik: BEP 10 Extension Protocol: Negosiasi Fitur BitTorrent Tanpa Merusak Kompatibilitas
  • Kata kunci utama: BEP 10, BitTorrent extension protocol, extended handshake, ut_metadata, capability negotiation
  • Untuk pembaca: engineer backend, peneliti protokol, search engineer, dan pengembang implementasi BitTorrent
  • Tujuan: Menjelaskan protokol dan desain sistem dengan cukup presisi agar dapat diterapkan pada pipeline discovery, metadata, indexing, dan search di dunia nyata.

Gambaran sistem

Masalah kompatibilitas

Protokol P2P hidup lama dan berbagai klien diperbarui pada waktu berbeda. Jika setiap fitur baru membutuhkan perubahan wire protocol yang tidak kompatibel, ekosistem akan cepat terfragmentasi. BEP 10 menyediakan mekanisme extension yang dapat dinegosiasikan setelah handshake dasar.

Klien yang tidak memahami extension tertentu tetap dapat berbicara protokol dasar, sedangkan dua klien yang sama-sama mendukung extension dapat mengaktifkan fitur tambahan.

Extended handshake

Setelah bit extension protocol dinegosiasikan pada handshake BitTorrent, Peer dapat mengirim extended handshake. Dictionary m memetakan nama extension seperti ut_metadata ke message ID lokal untuk koneksi tersebut. Field tambahan dapat membawa metadata seperti client version atau metadata_size.

Message ID adalah hasil negosiasi. Jangan mengasumsikan ut_metadata selalu memakai nomor yang sama pada semua Peer.

Capability bersifat dinamis

Satu Peer dapat mendukung ut_metadata, Peer lain mungkin mendukung extension berbeda, dan sebagian tidak mendukung extension protocol sama sekali. Karena itu state machine koneksi harus memeriksa capability sebelum mengirim pesan extension.

Parser juga harus toleran terhadap field tambahan yang tidak dikenal selama formatnya valid. Extension protocol dirancang agar ekosistem dapat berkembang tanpa semua implementasi mengetahui setiap key.

Mengapa indexer peduli

Metadata acquisition bergantung pada hubungan BEP 10 dan BEP 9. Tanpa extended handshake yang benar, worker tidak tahu message ID ut_metadata atau ukuran metadata. Banyak kegagalan 'metadata timeout' sebenarnya berasal dari negosiasi extension yang tidak ditangani tepat.

Pisahkan metrik connect success, basic handshake, extension handshake, capability detected, piece transfer, dan verification. Dengan observability seperti ini, tuning menjadi jauh lebih akurat.

Sketsa implementasi

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

Catatan engineering BT9G Labs

Untuk sistem indeks seperti BT9G, metrik yang paling berguna bukan sekadar jumlah paket atau jumlah InfoHash yang terlihat. Pisahkan identitas konten, observasi jaringan, status akuisisi, metadata terverifikasi, serta dokumen pencarian menjadi lapisan data yang berbeda. Simpan sumber dan waktu observasi untuk data yang datang dari DHT atau Peer. Dengan begitu, bottleneck dapat dilacak dari tahap discovery, koneksi, handshake, negosiasi extension, pengambilan metadata, validasi, penyimpanan, hingga indexing.

Kesalahan umum

  • Menganggap semua Peer mendukung extension protocol.
  • Meng-hardcode message ID ut_metadata.
  • Gagal menangani field extension yang tidak dikenal.
  • Mencatat semua kegagalan sebagai satu kategori metadata timeout.

Artikel BT9G Labs terkait

Referensi


Artikel berikutnya: Tracker vs DHT vs PEX: Membandingkan Tiga Mekanisme Peer Discovery BitTorrent →

Artikel ini menjelaskan protokol BitTorrent publik dan pola engineering. Observasi terhadap sebuah Swarm tidak berarti kontennya tersedia, valid, atau diizinkan untuk didistribusikan.