Monday, December 24, 2007

Menjalankan BitTorrent Client dengan kecepatan tinggi

Apakah BitTorrent ?
BitTorrent merupakan protokol komunikasi untuk P2P (peer-to-peer) file sharing. BitTorrent dapat digunakan untuk mendistribusikan file-file berukuran besar (seperti file movie atau CD /DVDimages). Cara kerjanya kira-kira seperti ini :
  • File-file besar yang akan dishare akan dipecah menjadi ribuan partikel yang kecil2 (antar 64B sd 1MB)
  • Setiap partikel akan dibuatkan checksumnya
  • File Torrent akan dicreate dengan menggunakan sebuah algoritma hashing, isinya tentang informasi setiap partikel
  • File Torrent ukurannya kecil (cuma beberapa KB) bisa ditaruh di mana saja, kemudian informasi mengenai file ini didaftarkan ke Tracker. Tracker ini semacam DNS yang menyimpan semua informasi tentang Torrent, setiap orang bisa menjadi Tracker (nah bisa dibayangkan betapa tinggi availability dari system ini, tracker tidak mungkin down, karena jumlahnya bisa jutaan)
  • Beberapa situs besar mengkhususkan diri sebagai Tracker, dan di situs itu setiap orang bisa mencari file apapun yang dia inginkan, dan mendapatkan file Torrent-nya
  • Setelah torrent didapatkan, sebuah client software akan menemukan semua peer yang memiliki file yang dibutuhkan, baik secara lengkap atau hanya parsial (ingat tadi bahwa file sudah 'dicacah' menjadi ribuan file2 kecil)
  • Client akan terhubung ke ratusan peer yang masing2 akan memberikan sebuah partikel
  • Selama client terhubung, client juga akan saling berbagi partikel yang sudah dia punyai (ada konsep 'saling berbagi untuk keuntungan bersama')
  • Setelah sekian lama, tergantung banyaknya peer & seeder (peer yang punya 1 file utuh) partikel2 akan lengkap membentuk sebuah file
Masalah BitTorrent
BitTorrent menimbulkan masalah network congestion pada ISP manapun.

Lho kenapa ?

Karena setiap bittorrent client akan terhubung dengan ratusan client lain (ada ratusan TCP session), dan masing2 session akan berisi pengiriman partikel tadi. Jadi berapapun bandwidth yang kita punya, bandwidth itu akan dilahap oleh bittorrent.

Sehingga pada umumnya ISP akan melakukan pencekekan terhadap traffic bittorrent ini. ISP bisa mengetahui ini adalah traffic bittorrent berdasarkan TCP port yang digunakan.

Efeknya pencekekan ini adalah traffic bittorrent kita langsung drop jadi kecil. Akibatnya file yang harusnya bisa selesai didownload dalam beberapa jam, mungkin akhirnya bisa selesai setelah beberapa hari/minggu !

Metode pencekekan berdasarkan TCP port ini bisa diakali dengan cara mengubah TCP port dari sisi client. Tapi beberapa ISP punya perangkat canggih (bandwidth limiter) yang bisa mengenali traffic bittorrent meskipun TCP portnya diubah. Akibatnya kita tetap mendapat bandwidth yang kecil :(

ISP lain ada yang menerapkan TCP session limitation. Ini artinya jumlah session TCP dibatasi. Pada umumnya bittorrent bisa punya ratusan session, kalau dibatasi jadi 4 session saja artinya kecepatan bittorrent akan drop sekali. Pembatasan session ini juga bisa membatasi jumlah orang/PC yang terhubung pada satu saat jika kita menggunakan broadband router di rumah (artinya ISP membatasi kebebasan kita sebagai user).... - sebenarnya pembatasan session ini juga masih bisa diakalin pake tunnel.... (hanya kesulitannya mencari server yang bisa jadi tunnel end-nya)

Mengatasi Bandwidth Limiter
Bandwidth limiter bekerja berdasarkan pendeteksian isi dari setiap paket IP (TCP/UDP) yang lewat. Misalnya yang lewat adalah paket yang mengaku sebagai TCP port 80 (web), maka perangkat bandwidth limiter ini akan melihat lebih dalam ke paket tersebut, apakah benar isinya adalah traffic web ?

Bandwidth limiter ini sebenarnya bermacam2. Ada yang sederhana (biasanya murah), ada juga yang canggih banget (biasanya mahal). Nah ISP di Indonesia biasanya cuma pake yang murah2 saja..... - Artinya mungkin masih bisa diakalin lagi :D


Deluge BitTorrent client, running di Linux, merupakan salah satu client yang bisa melakukan encryption the entire stream. Encryption Deluge bagus sekali (paling tidak di PC saya), dan bisa membuat ISP saya meloloskan semua traffic P2P sampai full line rate. Saya langganan 1.5 Mbps, dan saya bisa dapatkan throughput sekitar 180 kBps (mendekati 1.5Mbps) secara konstan jika file yang saya download pake bittorrent sangat populer, padahal saya tahu ISP ini pake bandwidth limiter....

Dengan encryption, bandwidth limiter tidak bisa melihat lebih dalam ke setiap paket TCP yang lewat, sehingga keberadaan bittorrent bisa tidak terdeteksi.

Sebenarnya ada bandwidth limiter yang sangat canggih yang tidak bisa ditipu dengan cara ini, namanya Service Control Engine, equipment untuk deep packet inspection kelas berat. Tapi saya tidak mau membicarakan hal ini ke ISP saya, soalnya kalau mereka pasang nantinya, hidup saya jadi kurang nikmat :p

Good Internet Citizen
Setiap orang bisa punya pendapat berbeda2 ttg bittorrent. Ini pendapat saya pribadi : Bittorrent menghabiskan bandwidth ISP. Sebaiknya menjalankan bittorrent setelah jam 12 malam (jam tidur), supaya para user lain yang sedang internetan secara interaktif tidak terganggu :)

No comments: