Hlavní řada DHT - Mainline DHT

Hlavní řada DHT je jméno dané Kademlia -na základě Distribuovaný hashovací stůl (DHT) používaný BitTorrent klienti najít kolegy prostřednictvím Protokol BitTorrent. Myšlenka použití DHT pro distribuované sledování byla poprvé implementována[1][2] v Azureus 2.3.0.0 (nyní známý jako Vuze ) v květnu 2005, u kterého si získal značnou popularitu. Nesouvisející, ale podobně načasované BitTorrent, Inc. vypustili do svých podobných podobných DHT klient, nazvaný Mainline DHT, a tak popularizoval použití distribuovaného sledování v BitTorrent Protocol. Měření ukazují, že uživatelé Mainline DHT v roce 2013 jsou od 10 milionů do 25 milionů, s denní churn minimálně 10 milionů.[3]

Popis

Mainline DHT je založen na populárním Kademlia DHT design.[4] Předchozí použití DHT pro distribuci vrstevníků, sledovače byly jedinou metodou hledání vrstevníků. Klíčovým rysem používání DHT přes trackery je, že decentralizovaný přístup upřednostňuje povahu protokolu BitTorrent. DHT funguje na základě distribuce seznamů vrstevníků označených SHA-1 hash torrentu.

Úkon

SHA-1 hash torrentu, infohash, je synonymem klíče Kademlia, který se používá k hledání vrstevníků (hodnot) v overlay síti. Za účelem nalezení vrstevníků v roji pošle uzel a get_peers dotaz s klíčem infohash jako klíčem (ekvivalent Kademlia FIND_VALUE) k nejbližším známým uzlům (s ohledem na vzdálenost klíče). Stejně jako Kademlia, pokud uzel nevrátí hodnotu (rovnocenné), přetrvává dále v iterační operaci. Po vyčerpání vyhledávání však klient poté také vloží vzájemné kontaktní informace pro sebe do odpovídajících uzlů s ID nejblíže k infohash torrentu.

Žeton

Uzly používají další opatření známé jako žeton aby ostatní nezaregistrovali jiné hostitele pro torrenty. Vrácená hodnota pro dotaz pro partnery zahrnuje tuto neprůhlednou hodnotu. Aby uzel oznámil, že jeho kontrolující partner stahuje torrent, musí v nedávném dotazu pro partnery prezentovat token přijatý od stejného dotazovaného uzlu. Když se uzel pokusí „oznámit“ torrent, dotazovaný uzel zkontroluje token proti IP adrese uzlu dotazu.

Mainline DHT používá hash SHA1 IP adresy zřetězené na tajemství, které se každých pět minut mění pro hodnotu tokenu. Přijímají se žetony staré až deset minut.

KRPC

Uzel v hlavní řadě DHT se skládá z kombinace IP a portů. Uzly komunikují prostřednictvím RPC protokol - KRPC. KRPC je jednoduchý protokol, který se skládá z uzlů odesílajících zprávy (dotazy, odpovědi a chyby) obsahující BEkódované slovníky UDP.

Zpráva KRPC je jediný slovník se dvěma klíči společnými pro každou zprávu a dalšími klíči v závislosti na typu zprávy. Každá zpráva má klíč „t“ s řetězcovou hodnotou představující ID transakce. Toto ID transakce je generováno dotazovacím uzlem a je odráženo v odpovědi, takže odpovědi mohou být korelovány s více dotazy na stejný uzel. ID transakce by mělo být zakódováno jako krátký řetězec binárních čísel, obvykle stačí 2 oktety, protože pokrývají 2 ^ 16 nevyřízených dotazů. Další klíč obsažený v každé zprávě KRPC je "y" s hodnotou jednoho znaku popisující typ zprávy. Hodnota klíče „y“ je jedna z „q“ pro dotaz, „r“ pro odpověď, nebo "E" pro chybu.

Dotazy

Dotazy nebo slovníky zpráv KRPC s hodnotou „y“ „q“ obsahují dva další klíče; „q“ a „a“. Klíč „q“ má řetězcovou hodnotu obsahující název metody dotazu. Klíč „a“ má hodnotu slovníku obsahující pojmenované argumenty dotazu.

Odpovědi

Odpovědi nebo slovníky zpráv KRPC s hodnotou „y“ „r“ obsahují jeden další klíč „r“. Hodnota „r“ je slovník obsahující pojmenované návratové hodnoty. Zprávy s odpověďmi se odesílají po úspěšném dokončení dotazu.

Chyby

Chyby nebo slovníky zpráv KRPC s hodnotou „y“ „e“ obsahují jeden další klíč „e“. Hodnota „e“ je seznam. První prvek je celé číslo představující chybový kód. Druhým prvkem je řetězec obsahující chybovou zprávu. Chyby nelze odeslat, pokud dotaz nelze splnit.

Směrovací tabulka

Vědra jsou strukturována odlišně od kbelíků v Kademlii. Namísto seznamu 160 segmentů začíná BitTorrent pouze s jedním segmentem. Když se kbelík naplní, může se stát jedna ze dvou věcí:

  1. Kbelík je rozdělen
  2. Staré uzly jsou pingovány (jako v Kademlii)

Rozdělení je operace, která nastane, pouze pokud naše vlastní ID uzlu spadá do rozsahu kbelíku. Rozdělovaný segment je nahrazen dvěma novými segmenty, každý s polovičním rozsahem oproti starému segmentu, a uzly ze starého segmentu jsou rozděleny mezi dva nové.

Implementace segmentu má 2 výhody:

  • Méně paměti se používá pro směrovací tabulku s méně než 160 kbelíky
  • Při vyhledávání segmentů není nutné načítat další uzly ze sousedních segmentů, protože je zaručeno, že v aktuálním segmentu je dost

Rozšíření protokolu BitTorrent

Protokol BitTorrent byl také rozšířen na výměnu čísel portů UDP uzlu mezi partnery, které jsou zavedeny sledovačem. Tímto způsobem mohou klienti automaticky nasazovat své směrovací tabulky prostřednictvím stahování běžných torrentů. Nově nainstalovaní klienti, kteří se na první pokus pokusí stáhnout sledovací torrent, nebudou mít ve své směrovací tabulce žádné uzly a budou potřebovat kontakty obsažené v souboru torrentu.

Partneři podporující DHT nastavili poslední bit 8bajtových vyhrazených příznaků vyměněných v handshake protokolu BitTorrent. Peer příjem handshake označující vzdálený peer podporuje DHT by měl poslat PORT zprávu. Začíná to bajtem 0x09 a má dvoubajtové užitečné zatížení obsahující port UDP uzlu DHT v pořadí bajtů v síti. Jednotlivci, kteří obdrží tuto zprávu, by se měli pokusit provést ping na uzel na přijatém portu a IP adrese vzdáleného partnera. Pokud je přijata odpověď na ping, uzel by se měl pokusit vložit nové kontaktní informace do své směrovací tabulky podle obvyklých pravidel.

Torrenty

Slovník torrentů bez sledování nemá soubor "oznámit" klíč. Místo toho má torrent bez sledování "uzly" klíč, který funguje jako seznam Zaváděcí uzly (v případě, že jsme se ještě nepřipojili k overlay síti). Tento klíč je obvykle nastaven na K. nejbližší uzly ve směrovací tabulce klienta generující torrent.

A "soukromé" neoficiálně byl zaveden také příznak, který klientům říká, aby omezili používání decentralizovaného sledování bez ohledu na přání uživatele. Příznak je záměrně umístěn v informační části torrentu, takže jej nelze deaktivovat nebo odebrat bez změny identity torrentu. Účelem příznaku je zabránit sdílení torrentů s klienty, kteří nemají přístup k trackeru.

Implementace

Mainline DHT byl poprvé zahrnut ve verzi 4.2.0 BitTorrent (software) (Listopad 2005). Od té doby ji implementovala řada dalších klientů:

Reference

  1. ^ Jones, Ben (7. června 2015). „BitTorrent's DHT Turns 10 Years Old“. TorrentFreak. Citováno 2015-07-05.
  2. ^ "Vuze Changelog". Azureus.sourceforge.net.
  3. ^ Wang, Liang; Kangasharju, Jussi. (2013). „Měření rozsáhlých distribuovaných systémů: případ BitTorrent Mainline DHT“ (PDF). IEEE Peer-to-Peer. Citováno 26. října 2013.
  4. ^ , Andrew. „http://bittorrent.org/beps/bep_0005.html“. bittorrent.org. Citováno 2015-06-10. Externí odkaz v | název = (Pomoc)
  5. ^ http://dev.deluge-torrent.org/wiki/About#Whataboutfeatures

externí odkazy