BT9G LABS / DHT Deep Dive #10
BEP 9 ut_metadata Dijelaskan: Mengambil Torrent Metadata dari Peer
Pelajari lifecycle BEP 9, metadata_size, request/data/reject, pembagian piece, verifikasi hash, dan scheduling multi-Peer.
BT9G Labs / DHT Deep Dive #10. BEP 9 memungkinkan klien memperoleh info dictionary dari Peer tanpa memiliki file .torrent terlebih dahulu.
Ringkasan cepat
- Topik: BEP 9 ut_metadata Dijelaskan: Mengambil Torrent Metadata dari Peer
- Kata kunci utama: BEP 9, ut_metadata, torrent metadata, metadata_size, BitTorrent extension
- 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
Apa yang ditransfer BEP 9
ut_metadata mentransfer bencoded info dictionary yang diperlukan untuk membangun metadata Torrent, bukan payload file konten. Ukuran metadata diberitahukan melalui extended handshake dan data dibagi menjadi piece berukuran terbatas.
Bagi indexer, ini sangat berguna karena InfoHash dari magnet atau DHT dapat diubah menjadi struktur nama/file/size tanpa mengunduh data konten Torrent itu sendiri.
Lifecycle pesan
Klien meminta nomor piece tertentu dengan pesan request. Peer dapat mengirim data atau reject. Setelah menerima piece, klien menandainya selesai dan menjadwalkan piece lain sampai seluruh metadata terkumpul. Timeout dan disconnect harus ditangani per piece dan per Peer.
Implementasi sebaiknya membatasi jumlah request inflight serta ukuran metadata maksimum untuk mencegah konsumsi memori yang tidak terkendali.
Validasi tidak boleh dilewati
Metadata yang lengkap belum otomatis benar. Untuk v1, raw bencoded info dictionary harus menghasilkan SHA-1 yang sama dengan InfoHash target. Untuk mode lain, gunakan aturan hash yang sesuai dengan versi protokol.
Jika verifikasi gagal, jangan menyimpan hasil tersebut sebagai metadata valid. Catat Peer sumber dan kegagalan agar reputasi/telemetri dapat membantu memilih sumber pada percobaan berikutnya.
Scheduling di banyak Peer
Satu Swarm dapat memiliki beberapa Peer yang mendukung ut_metadata. Scheduler dapat mencoba kandidat secara paralel terbatas, berpindah Peer jika piece lambat, atau mengambil seluruh metadata dari satu Peer yang terbukti cepat.
Hindari parallelism tanpa batas. Bottleneck sering berupa socket, file descriptor, NAT, atau bandwidth, bukan CPU. Ukur success rate dan latency per tahap sebelum menaikkan concurrency.
Sketsa implementasi
{"msg_type": 0, "piece": 0} // request
{"msg_type": 1, "piece": 0,
"total_size": 48321} // data header, followed by bytes
{"msg_type": 2, "piece": 0} // reject
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
- Mengira BEP 9 mengunduh isi file Torrent.
- Tidak membatasi metadata_size.
- Menerima metadata tanpa verifikasi hash.
- Membuka koneksi sebanyak mungkin tanpa backpressure.
Artikel BT9G Labs terkait
- Cara DHT Crawler Menemukan InfoHash: Lookup Aktif, Observasi, dan Desain Bertanggung Jawab
- Dari Magnet Link ke Metadata File: Alur Lengkap Peer dan Metadata
- BEP 10 Extension Protocol: Negosiasi Fitur BitTorrent Tanpa Merusak Kompatibilitas
- Tracker vs DHT vs PEX: Membandingkan Tiga Mekanisme Peer Discovery BitTorrent
Referensi
Artikel ini menjelaskan protokol BitTorrent publik dan pola engineering. Observasi terhadap sebuah Swarm tidak berarti kontennya tersedia, valid, atau diizinkan untuk didistribusikan.