Hlavní navigace

Peer to peer sítě od A do Z: eXeem, FastTrack a Kademlia

1. 8. 2008
Doba čtení: 9 minut

Sdílet

 Autor: 29
V předcházejících dílech našeho seriálu jsme se seznámili již se sítěmi Gnutella, Ares, Bittorent a eDonkey. Pokračujeme dále a dnes se podíváme na již nefunkční, ale přesto významnou síť eXeem, velice populární FastTrack (Kazaa) a na zcela decentralizovanou síť Kademlia.

Předchozí díl seriálu s popisem sítí Bittorrent a eDonkey vyšel na Lupě před týdnem.

eXeem

Po velkém úspěchu Bittorrentu a zásahu protipirátstkých organizací proti němu se v hlavách programátorů ve společnosti Swarm Systems zrodila spásná myšlenka vytvořit protokol na bázi Bittorrentu, který by však nebyl závislý na trackerech ani jiných centrálních serverech. To však nikdy nebylo 100% splněno, eXeem byl totiž vždy závislý na serveru, na který se klient dotazoval vždy po připojení.

Celá síť je vlastně založena na knihovně libtorrent, kterou používá i výše zmíněný Bittorrent. Tato knihovna je šířena pod velice volnou BSD licencí, takže autorům nic nebránilo v tom, udělat si z eXeemu komerční projekt bez zveřejnění zdrojového kódu. Aby se společnost vyhnula právním zákrokům ze stran filmových studií, zaměstnala jako „maskota“ svého projektu Andreje Prestona, zakladatele dříve známého webserveru s torrenty Suprnova.org, a sama se ukrývala na neznámém místě.

Exeem

Ukázka z již nefunkčního klienta eXeem. Zdroj: Wikipedia.org

Pět tisíc uživatelů serveru Suprnova poté bylo vybráno k betatestu sítě a první veřejná beta verze byla nakonec vydána 21. ledna 2005. Autoři sítě poté hodlali implementovat několik dalších funkcí, například okamžité šifrování a dešifrování, hledání souborů dle hashe, QoS (rovnoměrné vyvažování zátěže sítě) a minimální limit pro upload 5 kByte/s (aby se zabránilo leechereům). Autoři tedy chtěli, aby se síť nadále rozvíjela, doplatila však na několik zásadních chyb. V první řadě byla celá síť kvůli použití zmíněné libtorrent knihovny pouze ne moc povedenou kopií Bittorrentu a FastTracku, navíc s uzavřeným kódem. V druhé řadě doplatila na to, že se jednalo o komerční projekt.

Pro síť existoval jeden oficiální klient eXeem, který navíc obsahoval nepříjemný adware od izraelské společnosti Cydoor. To mělo autorům zaručit výdělek. Spoustu lidí to však odradilo a přinutilo ke kritice. Ačkoli byl kód klienta i sítě uzavřený, vznikly však i dva další klienti, tentokrát bez adware: eXeem Lite a BIT eXeem.

Celá síť fungovala na tzv. superuzlech. Ty přebíraly roli trackerů známých z Bittorrentu. Každý superuzel byl navíc odpovědný za část seznamu souborů, jejich hodnocení a komentáře. V případě, že se tento superuzel odpojil, jeho povinnost byla předána na jiný superuzel. Základ pro kompletní decentralizaci sítě byl tedy vcelku dobrý, bohužel se každý uzel musel po připojení hlásit k centrálnímu serveru, aby zjistil, jaké uzly jsou momentálně v síti. K vypnutí sítě tedy stačilo zrušit tento centrální server, což se ještě na konci roku 2005 událo.

Síť zažila rychlý vzestup, kdy ji mnoho komentátorů označovalo za nástupce bittorrentu a vychvalovalo ji až do nebes, a ještě rychlejší pád, kdy se na ni snesla obrovská vlna oprávněné kritiky, neboť nepřinesla téměř nic, co by nebylo v jiných sítích. Smutný závěr pro síť, které se filmová studia bála jako čert kříže.

FastTrack

V roce 2003 byla nejpoužívanější P2P sítí FastTrack spolu s její nejznámější aplikací Kazaa. V té době dosahovala počtu několika milionů uživatelů a sloužila především pro sdílení hudebních nahrávek. FastTrack na dnešní dobu nepřichází s ničím novým. Navázání předešlého stahování či rozdělení souborů na segmenty, které se poté stahují z různých zdrojů, obsahuje již snad každá obdobná síť. Na druhou stranu FastTrack slibuje, že pokud existuje byť jen jeden uživatel s daným souborem, FastTrack vám ho najde (ale to lze opravdu velice těžko ověřit).

FastTrack vznikl díky myšlence Švéda Niklase Zennströma, Dána Januse Friise a několika estonských programátorů pod vedením Jaana Tallinna. Jedná se vlastně o stejný tým, který roku 2005 vytvořil Skype. První dva jmenovaní dnes také společně pracují na dalším peer-to-peer projektu, tentokrát pro šíření videa, s názvem Joost.

FastTrack představuje takzvanou druhou vlnu P2P sítí a stejně jako většina jemu podobných sítí používá metodu „relaying“, tedy přeposílání dat přes superuzly. Pro stahování jednoho souboru z více zdrojů používá FastTrack hashovací algoritmus UUhash, který dokáže provést kontrolní součet pro objemné soubory během chvíle a to i na slabších počítačích. To je bohužel i jeho slabina, neboť může bez povšimnutí dojít k poškození souboru. Hash je celkově dlouhý 20 bitů a skládá se ze 16bitového MD5 hashe a 4bitového CRC (kontrolního součtu), přičemž pouze prvních 30 0KB dat je hashováno pomocí MD5 hashe, o zbytek se vždy na hranici 1 MB, 2 MB, 3 MB, atd., stará právě CRC. A právě kvůli použití pouze 4bitového kontrolnímu součtu může občas dojít k neodhalenému poškození dat, navíc organizace typu RIAA využívají této slabosti k umísťování falešných souborů na tuto síť.

Kazaa

Takto vypadá nový Kazaa media desktop. Zdroj: gearsbox.com

FastTrack se stejně jako každá síť snaží o to, aby ten, kdo stahuje, také i odesílal. Stejně jako to je v síti eDonkey zajištěno formou přidělování bodů. Na rozdíl od zmíněné sítě eDoneky si FastTrack body přiděluje sám, což otevřelo vrátka pro podvodné klienty, například Kazaa Lite, které si ihned přidělí maximum bodů.

FastTrack je sítí poměrně zastaralou, má mnoho chyb a jeho data jsou náchylná na poškození. Poslední verze nejpopulárnějšího klienta Kazaa vyšla před dvěma lety, takže novinek se zde také moc nedočkáte. Na druhou stranu, web Kazaa.com hlásí opravdu vysoký počet stažení, takže popularita sítě je stále velká.

Kademlia

Kademlia je jak název sítě, tak protokolu. Na bázi tohoto protokolu vznikly některé další sítě, jiné pouze přebraly vybrané funkce. Protokol vytvořili programátoři Petar Maymounkov a David Mazières v roce 2002. Byl napsán v Javě a šířen pod GP licencí. V současné době je tento protokol využit hned v několika sítích. V první řadě tu máme samostatnou síť, tzv. Kad network. Většina uživatelů této sítě je však zároveň připojena i na síť eDonkey, to vše pomocí klienta eMule, který podporuje obě tyto sítě. Ty navíc vzájemně spolupracují. K připojení do sítě tedy můžeme použít již zmíněného klienta eMule či jeho „sourozence“ v podobě aMule.

Kademlia (tedy Kad network) je plně decentralizovaná síť, nevyužívá žádných centrálních serverů. Protokol využívá tzv. DHT (Distributed hash tables) pro hledání souborů. Tyto hashové tabulky jsou rovnoměrně rozdělovány mezi uzly sítě a nalezení požadovaného uzlu je v této síti velice rychlé. Každý uzel v sítí má navíc své vlastní ID ukryté v 160bitovém klíči. Algoritmus Kademlie je pak založen na vypočtení vzdálenosti mezi dvěma uzly. Tato vzdálenost je počítána z ID s využitím logické operace XOR (exkluzivní logické nebo). Vypočtená vzdálenost nemá co dělat s geografickým rozmístěním uzlů, ale znázorňuje vzdálenost v rozmezí ID, takže uzel z druhého konce světa může být náš „soused.“ K nalezení správného uzlu v sítí tvořené počtem 2n uzlů, nám vždy stačí maximálně n opakování požadavku.

Routovací (směrovací) tabulky uzlů obsahují vždy jeden seznam pro každý bit z ID. Každý seznam (v originále k-bucket) pak obsahuje informace o dalším uzlu sítě. Obvykle se jedná o IP adresu, UDP port a ID uzlu. Tyto seznamy jsou pak řazeny podle toho, kdy naposledy se daný uzel ozval. Poslední uzel, který se ozve, je na vrcholku seznamu a uzel, který se dlouho neozývá, se postupně dostává až na spodní hranici seznamu. Pokud dlouho neodpovídá, je vyřazen a nahrazen jiným. Aktivní uzly tak nikdy nejsou ze seznamu vyřazeny. Síť je tak chráněna proti různým DoS útokům a podobně. Každý seznam navíc reprezentuje danou vzdálenost mezi uzly. Pokud tedy shrneme tento odstavec, tak uzel se 160bitovým ID obsahuje 160 seznamů pro 160 různých vzdáleností uzlů v síti.

Všechny soubory v Kademilii také jsou snadno identifikovatelné pomocí klíče (160bitový SHA1 hash). Ty slouží hlavně pro snadnější vyhledání souborů.

Protokol Kademlia se také skládá ze čtyř druhů RPC (Remote procedure call – volání vzdálené procedury). Jsou to PING, STORE, FIND_NODE a FIND_VALUE. PING zjišťuje, zda je daný uzel online, STORE informuje uzel o uložení informací (klíče, hodnoty). FIND_NODE, jak již název napovídá, slouží pro hledání uzlů v síti. ID hledaného uzlu je odesláno na jiný uzel, ten pak odešle zpět informace o třech uzlech (IP, UDP port a ID) ze svého seznamu, které jsou danému uzlu nejblíže. Vše se pak opakuje, dokud nebude daný uzel nalezen. FIND_VALUE se chová stejně jako FIND_NODE, s jednou vyjímkou. Jestliže příjemce již dříve obdržel RPC STORE na daný klíč, vrací přímo jeho hodnotu. Odesílatel RPC zprávy k ní také přiřadí 160bitové náhodné ID a uzel, který na ni odpovídá, odesílá toto ID zpět. Tím je zaručeno, že odpovídá na správný dotaz a snižuje se také riziko padělání těchto zpráv.

Kademlia

Grafické znázornění hledání často se vyskytujících souborů. Zdroj: aqualab.cs.nor­thwestern.edu

Každá hodnota je také uložena hned na několika uzlech, aby bylo zaručeno, že při odpojování a připojování bude daná hodnota vždy alespoň na jednom uzlu. Pro populární hodnoty, na které padá hodně dotazů (resp. hledání), může daný uzel přeposlat její klíč i na jemu blízké uzly. Tento systém se nazývá cacheování a umožňuje tak rychlejší vyhledávání. Klíče se dostávají dále a dále od hodnot a hledající uzel tak může být na hledanou hodnotu (uzel) odkázán z mnohem větší (ID) vzdálenosti.

V posledním odstavci se ještě v krátkosti podíváme na to, jak se dané uzly do sítě přihlašují. Uzel U se snaží připojit do sítě, uzel W již v ní připojen je. V první fázi se uzel U snaží navázat spojení alespoň s jedním uzlem připojeným do sítě, v našem případě je to tedy uzel W. K nalezení prvního uzlu se dá použít spolupráce se sítí eDonkey či stažený seznam uzlů z Internetu (nodes.dat). Uzel U zařadí W do svého seznamu. Poté uzel U provede lookup (vyhledávání) na své vlastní ID. Pošle tedy uzlu W, že hledá určité ID (svoje), ten pak pošle informace o třech nejbližších uzlech (viz. výše). Uzel U o sobě tímto dává vědět a uzly ho mohou přiřazovat do svého seznamu.

BRAND24

Celkově je Kademlia velice propracovaná a kvalitní síť. Řadí se mezi tzv. strukturované sítě využívající DHT. Ty v dnešní době nabízejí kvalitnější hledání a celkově jsou na lepší úrovni než např. zastaralá Gnutella. Mnoho algoritmů z protokolu Kademlia pak bylo využito nejen pro Kad network, ale některé algoritmy byly implementovány i do Bittorrentu (někteří klienti již podporují DHT a nepotřebují tak tracker) a do klienta pro síť Direct connect nazvaného RevConnect. Jak vidno, ve strukturovaných P2P sítích využívajících DHT lze spatřovat budoucnost, neboť kvalita jimi nabízených funkcí je velice dobrá. Abych nezapomněl, na základě protokolu Kademlia vznikla i P2P síť Overnet, o které si povíme v příštím článku.

Po dnešním dílu seriálu jsme si představili již sedm peer-to-peer sítí a příští týden budeme pokračovat sítí Overnet, která je založena na protokolu Kademlia. Dále si povíme i o sítích Manolito a Soulseek, které jsou primárně určeny pro sdílení hudebních souborů.

Používáte některou z jmenovaných výměnných sítí?

Byl pro vás článek přínosný?

Autor článku

Autor je studentem univerzity Pardubice a zaměřuje se předevšim na informační technologie. Občas píše také do magazínu Slunečnice, a na svůj blog, kde se věnuje většinou hudbě.
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).