19. mar. 2007

Pomembne malenkosti o BitTorrent protokolu

Kot vas večina uporablja (predvidevam), vas tista večina že pozna osnovne pojme v torrent industriji. Ne bom dolgočasil in omenjal pojmov kot so datoteke/semena/pijavke/prenos i.t.d. Posvetimo se parim podrobnostim, ki ste jih želeli vedeti, ali pa tudi ne. Vsekakor so sestavine BitTorrent protokola.

Ko se torrent (mišljeno datoteke v njem) prenaša po protokolu (pomeni od seederjev proti leecherjem) se vsa struktura (skupna velikost celega torrenta) deli na majhne koščke. Ti koščki so veliki ponavadi 256 ali 512 kB in imajo vsi isto velikost. Pri večjih torrentih so koščki veliki tudi 2MB ali 4MB. Tile delčki imajo vsi narejen checksum, to pomeni da se preveri integriteta datotek, da ob prenosu ne bi prišlo do napak. Ko prejemnik dobiva bajte, se checksum preverja sproti in poskrbi da se nič ni izgubilo. Koščki imajo tudi hash sistem, to pa pomeni da se naredi nek odtis delčka, ki dobi svojo hash vrednost. Ta vrednost je za naše oči neberljiva in nam ne pove ničesar. Zakaj se uporabljajo koščki? Ideja je jasna. Torrent se prenese veliko hitreje, sproti se lahko preverja checksum in je praktično veliko bolj optimiran.

Wasted data, zasledite jo lahko v torrent klientih pri dolpotegu posameznega torrenta, ni nič drugega kot velikost podatkov, ki so zanič. Zakaj pride do tega? Sedaj v praksi vidimo kako se biti lahko izgubijo, checksum je zaznal nepravilno kombinacijo in je te podatke zavrgel. Seveda protokol torrenta avtomatsko te podatke zahteva še enkrat. Po končanem delu smo uspešno prenesli torrent brez napak, z določeno velikostjo zanič podatkov, ki ne vplivajo na kakovost torrenta.


Vsi vemo kaj je seeding. To je sestavni del protokola, pri katerem uporabnik pošilja podatke (organizirane po koščkih) tistim, ki jih pravimo leecherji. Glede na maksimalno število povezanih uporabnikov na 1 torrent, seeder pošilja podatke v različnem obsegu. Če je seeder samo 1 in leecher samo 1, potem je razmerje 1:1. Če sta leecherja dva, potem protokol izmenično in naključno pošilja podatke med obema. V tem predelu bomo omenili še super-seeding mode. Pri super seedanju ne gre za nič drugo kot to, da program konfigurira torrent tako, da zmanjša velikost podatkov, ki jih more seeder poslati, da bi čimprej dobili dodatnega seederja. Če v super seedingu uploada 1 uporabnik in jih downloada 5, bo protokol poskušal urediti zadevo, da bosta v najmanjšem možnem času uploadala 2 uporabnika. Tako se lahko čas prenosa torrenta bistveno zmanjša. V utorrent klientu se ta opcija imenuje initial-seeding in jo lahko vključite z desnim klikom na prenešen torrent in potem properties.



Definiranje BitTorrent protokola glede na število povezav je zelo preprosta zadeva. Za zgled sem vzel spet utorrent klient, kjer lahko v options/preferences/bittorrent najdete okno, kjer določite števila povezav. Ena povezava je v torrent smislu definirana kot linija z dvema koncema (na enem koncu je uploader, na drugem pa downloader). Ne glede na št. torentov pomeni nastavitev global maximum number of connections v bistvu število vseh povezav ne glede na torrente. Klient jih bo dovolil samo toliko, kolikor jih boste tukaj vpisali (vrednosti so lahko v bistvu različne, vendar se držite meje med 100 in 500). Maximum number of connected peers per torrent je število povezav na en torrent. Priporočena vrednost je nekje do 50. Number of upload slots per torrent je pa število povezav preko katerih seedate torrent. Če je nastavljena na 10, pomeni da boste po 10 linijah naenkrat pošiljali podatke drugim. Kar je skupno za vse - večje število linij ne pomeni hitrejšega prenosa, lahko samo zabaše protokol. Najbolj optimalna odločitev je, da spreminjate vrednosti in opazujete realne rezultate.

P.S.: Demonstracijske slike so iz programa uTorrent, najbolj priljubljenega in razširjenega BitTorrent klienta.

Ni komentarjev: