Elosztott adatbázisok és peerto-peer (P2P) Simon Csaba simon@tmit.bme.hu
Miről lesz szó? Mi a P2P? Kell-e nekünk és miért? Struktúrálatlan P2P ----------- DHT ----------- Elosztott P2P adatbázisok 2
P2P
Mi a P2P? P2P - napjaink egyik legforróbb témája Alkalmazások Kazaa minden idők legtöbbször letöltött alkalmazása > 300 millió letöltés Az Internet forgalom 50-70% P2P Nehezen mérhető, az eredmények nem megbízhatóak FastTrack, edonkey, imesh > 7 millió felhasználó (2004. február 8) Felhasználói statisztikák: http://www.slyck.com/ 4
P2P (II) Kutatás 3rd IEEE International Conf. on P2P Computing P2P Tutorial és P2P szekció Infocom, Sigcomm, stb. P2P Research Group IRTF (Internet Research Task Force) http://www.irtf.org/charters/p2prg.html Internet2 http://p2p.internet2.edu/index.html Stanford, Berkeley, stb. 5
Definíció Peer to Peer (P2P): egy alkalmazáscsoport mely kihasználja az Internet peremén levő felhasználók erőforrásait: Tárolás merevlemez kapacitás CPU számítási kapacitás Tartalom adatok, informaciók megosztása Bármilyen más megosztható erőforrás, szolgáltatás, funkció Egy alkalmazás rétegbeli Internet a fizikai Internet topológia fölött 6
Definíció (II) Peer-to-peer network = egyenrangú hálózat Peer = veled egyenrangú felhasználó Kommunista rendszer mindenki egyenlő A kliens-szerver architektúra ellentéte 7
Ádámtól Ádámig A. Oram, editor. Peer-to-Peer : Harnessing the Power of Disruptive Technologies. O'Reilly & Associates, 2001. 8
Jellemzők Minden résztvevő peer egyszerre kliens és szerver Nincs központi vezérlés Nincs központi adatbázis Senkinek nincs globális képe a hálózatról A rendszer globális működése a lokális kölcsönhatások eredménye 9
Jellemzők (II) Bármilyen megosztott erőforrás elérhető bárki által Akkor férhetsz mások erőforrásaihoz, ha megosztod a sajátaidat A peer-ek függetlenek egymástól A peer-ek és a kapcsolatok alapvetően megbízhatatlanok Gyakori be- és kilépés 10
Mire jó? P2P fájlcsere Sokminden más: Elosztott adatbázisok Elosztott számítás (distributed computing) Elosztott hálózati szuperszámítógépek (grid computing) Instant Messaging CSCW (Computer Supported Cooperative Work) Vezetéknélküli ad-hoc hálózatok Alkalmazás rétegbeli multicast szolgáltatás E-commerce, e-business alkalmazások Stb, stb, stb... 11
Miről lehet beszélni P2P kapcsán? Gnutella WinMX ICQ BearShare FastTrack imesh Pastry Freenet Yoid MP2P CAN edonkey DirectConnect OverCast Jxta Jabber Morpheus Chord Blubster Shareaza @SETI Grokster RockitNet ebay Napster OceanStore emule BitTorrent SoulSeek Mojo Nation IRC Farsite Piolet Tapestry LimeWire Kazaa 12
Pontosabban... Visszatekintés korabeli P2P rendszerek Usenet, DNS, Telnet, FTP az Internet átalakulása az új generációs P2P rendszerek megjelenése A P2P hálózatok sajátosságai: Szolgáltatás felderítés, topológia felépítés Keresés, útvonalválasztás Hozzáférhetőség, megbízhatóság Biztonsági kérdések 13
És még... P2P architektúrák: Központosított rendszerek Napster Elosztott, sík rendszerek Gnutella Hierarchikus topológiák Kazaa Más fájlcserélő alkalmazások BitTorrent, stb. Elosztott hash táblákra (DHT) alapuló keresők: CAN, Chord, Pastry, Tapestry 14
Továbbá... Alkalmazás rétegbeli multicast P2P hálózatokon A csoportos kommunikáció sajátosságai A hálózati rétegbeli multicast rövid attekintése Alkalmazás rétegbeli multicast Háló-alapú (mesh-first) módszerek Narada, Gossamer Fa-alapú (tree-first) módszerek HMTP, TBCP, Yoid, Overcast, ALMI Implicit módszerek CAN-Multicast, Scribe, Bayeux, NICE Pletykára alapuló járványszerű átvitel SCAMP, SWIM, Bi-modal multicast P2P 15
P2P és elosztott adatbázisok
Hypothesis End 2 End arguments in network community Implement a feature on upper layer as much as we can to have easier deployment for Internet Fast development of applications Moore law in computer hardware Relatively slow change in Internet core Not too many industrial researchers who work on core networking. (http://www.icir.org/floyd/talks/nsf-jan03.pdf)
Key problem: Location and Routing Hard problem in a system like this: Locating and messaging to resources and data Goals for a wide-area overlay infrastructure Easy to deploy Scalable to millions of nodes, billions of objects Available in presence of routine faults Self-configuring, adaptive to network changes Localize effects of operations/failures
The promise of P2P computing Reliability: no central point of failure Many replicas Geographic distribution High capacity through parallelism: Many disks Many network connections Many CPUs Automatic configuration Useful in public and proprietary settings
20
DHT implementation challenges 1. Scalable lookup 2. Balance load (flash crowds) 3. Handling failures 4. Coping with systems in flux 5. Network-awareness for performance 6. Robustness with untrusted participants 7. Programming abstraction 8. Heterogeneity 9. Anonymity 10. Indexing Goal: simple, provably-good algorithms Chord
Pond JNI for crypto, SEDA stages, 280+kLOC Java
Strukturálatlan P2P 23
Visszatekintés A P2P nem egy új ötlet A kezdeti Internet peer-to-peer volt ARPANET - Advanced Research Projects Agency Network 1969 US Department of Defense (DoD) University of California at Los Angeles (UCLA) Stanford Research Institute (SRI) University of California Santa Barbara (UCSB) University of Utah Különböző operációs rendszerek, egyenrangú felhasználók 24
A kezdeti hálózat 25
70-es évek újabb és újabb egyetemek, kutató laboratóriumok csatlakoznak TCP/IP kidolgozása Telnet, FTP 26
ARPANET - 1977 27
80-as évek 1983. 01. 01 IP az ARPANET-en 1984 MILNET (DoD) 1986 NSFNET NSF National Science Foundation 1990 Az ARPANET bezár 28
MILNET - 1989 29
Irodalom A History of The Internet: 1962 1992 http://www.computerhistory.org/exhibits/internet_history/ Hobbes' Internet Timeline http://www.zakon.org/robert/internet/timeline/ The Request for Comments Reference Guide http://www.ietf.org/rfc/rfc1000.txt History of Arpanet http://www.dei.isep.ipp.pt/docs/arpa.html 30
A kezdeti hálózat Egyenrangú felhasználók Bármely két gép képes volt kommunikálni egymással Egy nyított és szabad rendszer Tűzfalak nem léteztek a 80-as évek végéig Egyetemi kutatók játszótere Biztonsági gondok nem léteztek... 31
Az első P2P alkalmazások Telnet, FTP Nem vérbeli P2P alkalmazások Szigorúan nézve, kliens/szerver rendszerek Egy Telnet kliens bejelentkezik egy szerverre Egy FTP kliens fájlokat küld / tölt le egy FTP szerverről De... Bárki lehetett kliens is, szerver is Szimetrikus rendszer 32
Usenet A mai P2P alkalmazások nagypapija... 1979 Központi vezérlés nélkül fájlokat másol gépek között Tom Truscott, Jim Ellis University of North Carolina, Duke University 3 gépből álló hálózat Unix-to-Unix Control Protocol (UUCP) Egy UNIX gép automatikus felhívott egy másik gépet Fájlokat cseréltek Megszüntették az összeköttetést Levelek, fájlok, programok cseréje 33
Usenet (II) Csoportok különböző témakörök körül Newsgroups A helyi felhasználók a helyi newsgroup szerverre csatlakoznak A szerverek periodikusan kicserélik információikat Egy felhasználó üzenete minden érdeklődőt elér A szerverek egy P2P hálózatot alkotnak 34
Usenet (III) A hálózat ma hatalmas Több ezer szerver Több tízezer témakör Több millió felhasználó A rendszert skálázhatóva kellett tenni Egy szerver csak bizonyos csoportokra iratkozik fel A szerverek csak az üzenetek fejlécét továbbítják Ha valaki kiváncsi, lekéri a teljes üzenetet Korlátozott időtartamú tárolás 35
Usenet - jellemzők Elosztott rendszer Nincs központi vezérlés Egy új témacsoport létrehozása Demokratikus szavazás alapján Javaslat küldése a news.admin csoportnak Vita, szavazás Bárki szavazhat e-mail-ben Ha elfogadják, a szerverek elkezdik terjeszteni Megengedett anarchia Szavazás nélkül nyitható egy alt.* csoport 36
Usenet Network News Transport Protocol (NNTP) TCP/IP alapú Optimalizált elárasztás Útvonal az üzenetek fejlécében Egy szerver csak egyszer kap meg egy üzenetet Sok új P2P rendszerből hiányzik Gnutella 37
Usenet fájlcsere Eredetileg csak text fájlok cseréje Bináris fájlok átalakíthatóak Gond túl hosszú fájlok 700 Mb film 15 millió sor Szerver korlátok 10.000 soros üzenetek Több részre vágott fájlok 38
DNS Domain Name System Hierarchikus információs rendszer Fájlmegosztásra találták ki (1983) hosts.txt 39
IP útvonalválasztás IP útvonalválasztók (routerek) peer-ek Felfedezik és fenntartják a topológiát Egy router nem kliens és nem szerver Folyamatosan kommunikálnak egymással Függetlenek egymástól 40
Aztán robbant a Net Robbant a felhasználók száma Tudományosból kereskedelmi hálózat Biztonsági intézkedések váltak szükségessé Tűzfalak Megjelentek az otthoni felhasználók Egy modemes csatlakozó nem volt többé egyenrangú Elfogytak az IP címek Dinamikus IP címek, NAT Megjelent a Web Új kommunikációs szokások (webkliens webszerver) 41
Mégis P2P? Újabb fordulat a kommunikációs szokásokban Elkülönül a szerző és a forgalmazó Nem csak a saját maguk által készített adatokat (pl. weboldal) osztják meg a felhasználók MP3 mérföldkő a P2P tekintetében Lehetővé válik a zenefájlok cseréje DivX kódolás 1999-ben megjelenik a Napster 42
Napster 43
Napster Kronológia 1999 május Shawn Fenning és Sean Parker megalapítják a Napster-t 1999 december a RIAA elindítja az első pert a Napster ellen Recording Industry Association of America (RIAA) 2000 április Előbb a Metallica, majd Dr. Dre perlik a Napster-t 2000 július A bíróság felszólítja a Napster-t a bezárásra 2001 február 12 A bíróság a megosztott fájlok szűrésére kötelezi a Napster-t 2001 február 20 1 milliárd dolláros ajánlat a lemezcégeknek 2001 március 2 Bevezetik a szűrőket, a felhasználók elpártolnak 44
Napster Módosítás fizetős változat $9,95 havi bérlet 99 egy fájl http://www.napster.com/ Apple itunes http://www.apple.com/itunes/ 45
46
Boldog zenészek? P2P hálózatok 47
Egy CD költségei Forgalmi adó - 1000 Ft Nyereség - 540 Ft Jogdíj - 900 Ft Kulturális járulék - 60 Ft Gyártás - 300 Ft Design - 100 Ft Stúdió és marketingköltség - 800 Ft Terjesztési díj - 300 Ft Kiskereskedelmi árrés - 1000 Ft P2P hálózatok 48
A Napster működése Nem igazi P2P rendszer Központi szerver tárolja a megosztott fájlok listáját Keresés a központi szerveren Közvetlen letöltés a peer-ek között 49
Példa Napster szerver 1. Bejelentkezés (Alíz, Fájl lista) 2. Keresem a ricky.mp3 fájlt 3. Alíztól kérd Alíz 4. Közvetlen letöltés Barbara P2P hálózatok 50
A Napster jellemzői Hátrányok: Rossz skálázhatóság Szerverfarmon belüli terheléselosztás A szerver szűk keresztmetszet Könnyen perelhető Titkosság hiánya Freeriding lehetőség Előnyök Gyors keresés Ismert topológia 51
DC++ 52
DirectConnect Központosított rendszer Több száz hub Korlátozott belépés Megosztott tartalom mérete (több Gb) IP címtartomány Hozzáférési sebesség Neo Modus DC http://www.neo-modus.com/ 53
DC++ Nyílt forrású (open source) kliens DirectConnect hálózatot használja Előnyök DC++ Barátságosabb GUI Több hub-os párhuzamos csatlakozás, keresés Spyware, adware kiiktatva http://www.indx.f2s.com/index.html http://www.broadbandreports.com/faq/dc 54
edonkey Központosított hálózat 286 magán szerver A szerverek nem kommunikálnak egymással Több szerverre lehet feliratkozni egyszerre server.met a szerverek IP címlistája Folyamatosan kell frissíteni Elosztott letöltés Megosztáskor egy hash-t (azonosítót) csatol a fájl-hoz A szerver tárolja a hash-eket Kereséskor egy listát kapunk a lehetséges peer-ekről A fájl darabjait külön helyekről, párhuzamosan tölthetjük le 55
edonkey Kliens X ricky.mp3 (abcdefg) ricky.mp3 (d) Kliens Y ricky.mp3 (abc) Kliens Z ricky.mp3 (fg) ricky.mp3 (g) Kliens W ricky.mp3 () http://www.thedonkeynetwork.com/ 56
emule Népszerű edonkey kliens Open source változat Nincs spyware, adware http://www.emule-project.net/ 57
Gnutella 58
Gnutella Kronológia 2000 március 14 Justin Frankle, Nullsoft (winamp) Eredetileg receptek cseréje volt a cél GNU General Public License - Nullsoft web szerver Pár óra után az AOL letiltotta Több száz példányt már letöltöttek Kód-visszafejtés (reverse engineering) segítségével Több új kliens jelent meg 59
Gnutella Elosztott rendszer, központi szerver nélkül (v0.4) Elárasztás alapú keresés Minden peer... Megoszt állományokat Továbbítja a szomszédai felé a kapott Query csomagokat Válaszol a Query üzenetekre, ha rendelkezésére áll a keresett fájl 60
Gnutella Keresés Válasz 61
Gnutella fejléc Byte 0 15 : Message ID Egyéni azonosító V 0.6 Byte 8: 11111111, Byte 15: 00000000 Byte 16 : Function ID Az üzenet tipusa Byte 17 : TTL (Time To Live) Hányat ugorhat még Byte 18 : Hops Hányat ugrott már Byte 19 22 : Payload Length A fejléc utáni adatrész hossza Max csomag hossz: 4 kb 62
Üzenettipusok Function ID 0x00 Ping : peer-ek keresése a gnutella hálózaton 0x01 Pong : válasz egy Ping-re IP cím, port, megosztott fájlok száma, megosztott könyvtár mérete 0x80 Query : keresés indítása Keresési kritérium (szöveg), minimum sávszélesség 0x81 Query Hit : válasz találat esetén IP cím, port, sávszélesség, fájl név, fájl hossz 0x40 Push : feltöltés kérése egy tűzfal mögül Kért fájl adatai, cél IP cím/port http://rfc-gnutella.sourceforge.net/developer/stable/ 63
Előnyök Robusztusság, nincs szűk keresztmetszet Egyszerűség Jogilag nehezen támadható Nincs perelhető központi entitás 64
Hátrányok Az elárasztás nem skálázható megoldás TTL-t használva (valamilyen szinten) áthidalható Nem minden szomszédnak küldjük tovább az üzeneteket A Message ID alapján, egy üzenetet csak egyszer továbbít egy peer Egy peer többször megkaphat egy üzenetet 65
Többszöri kézbesítés 66
Hátrányok (II) Nagy hálózati forgalmat generál Példa: 4 link L / peer TTL = 7 Max csomag szám: 2 TTL i= 0 L ( L 1) i 26240 csomag 67
Hátrányok (III) A keresés időtartama nem behatárolható A keresés sikerének valószínűsége nem ismert A topológia ismeretlen, az algoritmusok nem tudják felhasználni A peer-ek hírneve nincs figyelembe véve Freeriding... 68
Freeriding Adar, Huberman, Freeriding on Gnutella, 2000 Sept. http://www.firstmonday.org/issues/issue5_10/adar/index.html 24 órás mérések: a kliensek 70%-a nem oszt meg semmit a válaszok 50%-át a peer-ek 1%-a szolgáltatja Társadalmi, és nem technikai probléma Következmények A rendszer hatákonyságának romlása (skálázhatóság?) A rendszer sebezhetőbb Központosított Gnutella jogi problémák 69
Freeriding (II) Mérések elemzése A felhasználók nagy hányada freerider A freerider-ek egyenlően en oszlanak el a hálózatban Bizonyos peer-ek olyan fájlokat osztanak meg, melyek senkit sem érdekelnek 70
Gondok és megoldások Freeloading: A Gnutella hálózat elérhető volt weboldalakról Webes keresés, letöltés, megosztás nélkül Megszakadó letöltések Hosszú letöltési idők a modemes hozzáférés miatt Csak rövid ideig futtaták a gnutella kliens-t (keresés ideje) Megoldás: Nálam van, de foglalt vagyok. Próbalkozz kesőbb 2000 végén letöltések 10%-a sikeres 2001 a letöltések 25%-a sikeres Megoldás? 71
Gondok és megoldások Kis méretű elérhető hálózat 2000: átlagosan 400-800 elérhető peer Modemes felhasználók kis sávszélesség a keresések továbbítására routing black holes Megoldás: Peer hierarchia kialakítása Csatlakozási preferenciák Nagy sávszélességű peer-ek előnyben Nagyméretű megosztott állománnyal rendelkezők előnyben Gnutella v0.6 és más hierarchikus rendszerek 72
Irodalom http://www.gnutella.com/ http://www.limewire.com/developer/ P2P hálózatok 73
KaZaa 74
KaZaa A jelenleg legelterjedtebb P2P alkalmazás A FastTrack hálózatot használja 4 millió felhasználó 3,000 terabyte megosztott adat > 50% az Internet forgalmának Leginkább az USA-ban népszerű A RIAA legnagyobb célpontja 30-40% csökkenés 2003 végén 75
Kronológia Niklas Zennström ötlete 2001 márciusa - Jaan Tallinn, Ahti Heinla és Priit Kasesalu FastTrack, KaZaa - fejlesztés Észtországban Holland cég megbízása KaZaa BV 2001 Sharman Networks megveszi a FastTrack-et Székhely: Vanuatu - sziget a Csendes Óceánban Titkos igazgatótanács, titkos részvényesek Kazaa.com LEF Interactive, Ausztrália LEF Liberté, Egalité, Fraternité Alkalmazottak mindenhol a világban, nehezen fellelhetők 76
KaZaa vs. RIAA Nemzetközi macska-egér játék Az amerikai jog nem érvényes máshol Nincs központi entitás, nincs kit perelni Megoldások? (Amerikai) felhasználókat perelni? Denial-of-Service (DoS) támadások Vírusok a rendszerben Hash linkekkel elkerülhetőek Weben keresztül megszerezhető hash-ek 77
Architektúra Hierarchikus architektúra A peer-ek egy supernode-hoz csatlakoznak supernode = supernode, hypernode A supernode-ok egyenrangúak A supernode ismeri a hozzá tartozó peer-ek IP címeit, és a megosztott fájl-ok listáját Mini Napster/Gnutella hub 78
Architektúra (II) Titkos forráskód Kód visszafejtés: peer supernode kommunikáció A supernode supernode kommunikáció alig ismert Egy supernode ismer sok más supernode-ot Majdnem teljes háló (complete mesh) Bárki lehet supernode Számítási kapacitás, sávszélesség Automatikus kiválasztás Kb 10.000 supernode Kb 200-500 peer/supernode 79
Supernode választás Lehetséges supernode-ok IP címei az alkalmazás letöltésekor Csatlakozás után egy működő supernode keresése Aktuális supernode lista letöltése Ping 5 supernode felé Választás a legkisebb RTT alapján RTT = Round Trip Time Ha a supernode meghal, új választás 80
Keresés Kulcsszó alapján A felhasználó beállítja max. hány találatot vár (x) A keresést a supernode-hoz küldi Ha a supernode-nál van x találat, vége Ha nincs, a kérést a supernode más supernode-oknak küldi Ha van x találat, vége Ha nincs, újabb supernode-ok kapják meg a kérést Valószínüleg a kezdeményező supernode indítja az újabb keresést (nem rekurzív) Válaszok hullámokban 81
Kazaa Keresem a ricky.mp3 fájlt B-nek megvan Közvetlen letöltés B A 82
Párhuzamos letöltés Ha több találat, a felhasználó párhuzamos letöltést választhat A fájl több részre osztva HTTP byte-range header alapján különbözö részek különböző peer-ektől Új szerver peer választása automatikusan, ha az előző meghal 83
Előnyök Skálázható Egy központi szerver helyett több ezer supernode Csak a supernode-ek között történik elárasztás Sorbanállás kezelése Előnyt élveznek azok, akiktől sokat töltenek le Hátrány a kis sávszélességgel rendelkezőknek lassan kerülnek kiszolgálásra Jogilag nehezen támadható 84
Más hierarchikus rendszerek FastTrack Kazaa Lite http://www.k-lite.tk/ imesh http://imesh.com/ Grokster http://www.grokster.com/ P2P hálózatok 85
Más hierarchikus rendszerek Gnutella v0.6 LimeWire http://www.limewire.com Shareaza http://www.shareaza.com/ BearShare http://www.bearshare.com/ Morpheus http://www.morpheus.com/ 86
BitTorrent
BitTorrent 2002 Bram Cohen, San Francisco Python kód, open source Népszerű nagyméretű adatok elosztott letöltése Nincs saját keresőmotor Webes keresés Nincsenek megosztott könyvtárak Letöltés közben feltöltés mások számára 88
BitTorrent Hagyományos webes keresés.torrent fájl Tracker Hash információ Egy tracker szerver címe A csatlakozó peer-nek megad egy véletlenszerű listát a lehetséges peer-ekről Default 50 Altalaban egy peer 20-40 peer-el tart kapcsolatot (peer lista) Statisztika Ha 20 alá csökken, újra a trackerhez fordul A Peer-ek idıkozonkent jelentenek a Trackernek Hány letöltés Hány peer-nél van a teljes fájl Hány peer-nél vannak fájl részek 89
BitTorrent Seed (mag) A kezdeti forrás Egy peer akinél a teljes allomány megtalálható Leech (pioca) A peer akinél a letöltés folyamatban van Swarm (raj) Egy adott fájl esetében a seed-ek és leech-ek halmaza együtt A fájl több részre osztva 64 KB és 4 MB kozott Ha túl nagy, kisebb a torrent, de nem annyira hatékony Általában 256 KB Minden rész hash információja a.torrent fájlban SHA-1 A részek tovabbi alrészekre osztva 90
Alapelvek Párhuzamos letöltés és feltöltés Leech resistance piócák kiszűrése Minél nagyobb a feltöltési sávszélesség, annál több peer-től tölthetsz le részeket párhuzamosan Megbízhatóság maximizálása Csökkenteni a sikertelen letöltések esélyét Bizonyos részek eltünnek, a fájl használhatatlan A működés ezen alapelveknek van alárendelve 91
Hogyan működik? Egy rész teljes letöltése Ha egy rész egy alrészét letöltjük, a következő alrészek előnyben részesülnek más részek alrészeivel szemben Gyors letöltést biztosít egy rész számára Ha a rész teljes, a peer ellenőrzi a hash-t Ha OK, jelzi a Tracker-nek A rész feltölthetővé válik mások számára 92
Mit töltsek? A legritkább legelőbb (rarest first) Előnyök Azt a részt tölti le előbb, mellyel a legkevesebb peer rendelkezik Növeli a letöltés globális sikerét Ha az a néhány peer (esetleg az egyedüli seed) meghal, továbbra is elérhetőek lesznek a ritka részek Biztosítja a további feltöltési kéréseket Ha egy ritka résszel rendelkezem, mások tőlem fogják azt kérni Növelem a letöltési sebességem Növeli a globális letöltési sebességet A seed-től külön részeket kér le minden peer Ugyanazt a részt nem kell többször feltöltenie a seed-nek Különösen előnyös ha lassú seed 93
Mit töltsek? Véletlenszerű első (4) rész Ameddig nincs mit feltölteni tőlem, letölteni is nehezen tudok kevés peer-t ismerek Cél egy részt minél gyorsabban megszerezni Egy ritka részt lassan tudok letölteni Kevés peer rendelkezik az alrészekkel Ha letöltöm, sokan kérik majd, nő a letöltési sebességem Egy népszerű rész letöltése gyors, de nem olyan hasznos Kevesen fogják majd tőlem kérni Nem tudom növelni a letöltési sebességem Megoldás: véletlenszerű választás 94
Mit töltsek? Choking/unchoking blokkolas/feloldas Minden peer korlatolt szamu peer-nek tolt fel Alapertelmezesben 4 slot Azokat oldom fel, akiknek a legnagyobb a feltöltési sebessége felém és kérnek tőlem valamit 10 másodpercenként újraszámolom a 4 leggyorsabbat Optimistic unchoking 30 másodpercenként feloldok egy véletlen peert is aki kért tőlem valamit Hátha nagy sebességgel tudnék letölteni tőle a jövőben Maximum 5 upload slot Az új peereket háromszor nagyobb valószínűséggel Bootstrap mechanizmus 95
Tulajdonságok Lassú indulás Változó letöltési sebesség Függ a feltöltés alatt álló résszel rendelkezők számától, feltöltési sebességétől Sikeres letöltés után illik az alkalmazást tovább futtatni Ekkor a peer seed-ként működik Jogilag könnyen támadható A tracker szolgáltatása, IP címe nyilvános Felelősségre vonható Trackerless BitTorrent 96
BitTorrent vs. edonkey Hasonló elveken működnek Részekre osztott fájlok Párhuzamos letöltés A BitTorrent-ben csak egy fájl-t töltünk le egyszerre Nagyobb a rendelkezésre álló sávszélesség minden peer-nél (Elvileg) gyorsabb letöltés Az edonkey-ban nincs piócaszűrés A feltöltésből nincs igazán haszna a peer-nek A BitTorrent-ben nincs keresőmotor A.torrent fájlt weben kell megkeresni Jogilag könnyen támadható A tracker szolgáltatása, IP címe nyílvános Felelősségre vonható 97
Egyszerű interfész P2P hálózatok 98
BitTorrent linkek Hivatalos oldal http://bitconjurer.org/bittorrent Protokoll specifikáció FAQ http://bitconjurer.org/bittorrent/protocol.html http://www.dessent.net/btfaq/#what Torrent-ek http://www.suprnova.org/ 2004 végén bezárták http://isohunt.com/ 159k tracker, 6.8mill aktív torrent, 161mill fájl, 12.2 PB adat, 25.8mill peer 99
irate Bay Az egyik legnépszerőbb weboldal a neten 2003 novemberben indult 2006. május 31-én a svéd rendőrség lefoglalja a szervereket A per 3 napig offline a weboldal 2009. április 17-én a szolgáltatás működtetőit (Peter Sunde, Fredrik Neij, Gottfrid Svartholm, Carl Lundstrom) 1 év börtönre és 30mill SEK (~700mill HUF) büntetésre ítélik Fellebbezés, a bírót elfogultsággal vádolják 4 millio regisztrált (2009 dec.) felhasználó > 25mill peer (2008 nov.) A letöltéshez nem kell regisztrálni csak a kommentekhez és a feltöltéshez Pirate Party 7.1 % a svéd EU parlamenti választásokon 100
Anonimitás elosztott módon P2P 101
Anonimitás Első lépés Követők, lehallgatók összezavarása Nem tudják, hogy ki is tölt le P2P módon együttműködnek a felhasználók relay 102
Tor P2P Tor 103
Tor P2P 104
Tor 105
Anonimitás elosztott módon P2P 106
Anonimitás Második lépés Követők, lehallgatók összezavarása P2P rendszerben történik a routolás is Adatot is szétosztjuk ELOSZTOTT ADATBÁZIS Igazából egy elosztott cache Keresés 107
Freenet Ian Clarke, végzős hallgató University of Edinburgh Teljesen elosztott, egyenrangú hálózat A peer-ek tárolófelületet és sávszélességet ajánlanak fel a rendszernek Nem tudják a rendszer mit tárol ott Minden adat kódolva van Freenet földrajzilag elosztott nagyméretű virtuális merevlemez, névtelen (anonymous) hozzáféréssel
Freenet Biztosítja a szerzők és az olvasók anonimitását Nem lehet megállapítani az adatok forrását és célállomását Az adatokat kulcsok azonosítják A peer-ek nem tudják mit tárol a rendszer a gépükön Nem (vagy nehezen) vonhatóak felelősségre A keresést abba az irányba továbbítja, ahol a legvalószínűbb a találat Nincs központi szerver (Napster) Nincs elárasztás (Gnutella) A fájlok azonosítása tárolási helyüktől független
Freenet Az adatok dinamikus elosztása a rendszerben A hálózati topológia (gráfstruktúra) folyamatosan változik Új kapcsolatok jönnek létre a peer-ek között Az állományok vándorolnak a rendszerben Dinamikus, adaptív útválasztás
Freenet fejléc UniqueID (64 bit) Azonosítja az üzenetet A hurkok elkerülésére szolgál Hops To Live Depth Source Még hányszor lehet továbbküldeni a csomagot Hányat ugrott már a küldés óta Az üzenet forrását azonosítja
Üzenet típusok HandshakeRequest Kapcsolatot kezdeményez egy peer-el HandshakeReply Válasz a HandshakeRequest-re DataRequest DataReply A megadott kulcsnak megfelelő adatot kéri Válasz a DataRequest-re A közbeeső peer-ek cache-ben tárolják az adatot A következő hasonló kérésre már tudnak közvetlenül válaszolni RequestFailed Sikertelen keresés esetén
Üzenet típusok InsertRequest Megegyezik a DataRequest-el Azt ellenőrzi, hogy a megadott kulcsnak megfelelő fájl megtálalható-e a rendszerben Ha igen, egy DataReply érkezik Ha nem, egy InsertReply üzenet DataInsert Kérés a megadott adat és kulcs tárolására a rendszerben Az InsertRequest útvonalán halad Ott tárolja ahol majd keresni fogják A közbeeső peer-ek cache-ben tárolják az adatot
Data Store Minden peer-nek tudnia kell... Merre továbbítani egy kérést Merre továbbítani egy választ Meddig tárolni egy adott dokumentumot
Data Store Lista tetején friss, gyakran kért fájlok Kulcs, adat, származási cím Lista alján régi, ritkán kért fájlok Kulcs, elérhetőségi cím Ha egy kulcs lefele mozog a listán, egy idő után az adatok törlődnek
Keresés A peer-ek által tárolt kulcsok alapján Korlátozott számú ugrás, de nagyobb mint a Gnutella esetében Tipikusan 500 Az üzenetek azonosítója alapján szűri a hurkokat Egy kérés érkezésekor Ha már kezelte a kérést (hurok), visszaválaszol hogy a küldő próbálja másfelé továbbítani ( next-best choice ) Ha rendelkezik az állománnyal, válaszol Ha nem, továbbküldi a keresett kulcshoz legközelebb álló kulcsnak megfelelő cím felé
Keresés (II) Ha egy válasz érkezik A kulcs és az adat bekerül a cache-be A legrégebbi kulcs kikerül a data store-ból Találat esetén az állomány küldése nem pont-pont közötti A keresés útvonalán terjed vissza Segíti a cache működését Növeli az anonimitást
Keresés - példa Start DataRequest DataReply RequestFailed Data
Keresés Az elején a Data Store üres A peer véletlenszerűen választja ki merre küldje a keresési, illetve adatbeviteli kéréseit Az adatok eloszlása is véletlenszerű lesz A keresés (útválasztás) minősége idővel javul Lavina effektus Egy tárolt fájl alapján a peer bekerül más peer-ek adatbázisába, a megfelelő kulccsal Hasonló kulcsok iránti kérések elkezdenek érkezni A válaszok bekerülnek a cache-be Egyre több hasonló kulcsú állományt tárol A peer nem döntheti el milyen kulcstartományra specializálódik A többi peer által tárolt kulcsoktól függ Növeli a rendszer ellenőrizhetetlenségét
Freenet keresés - példa k10 k9 AB k10 k36 k10 k36 k9 k7 CA CB B k36 k9 A B k7 k9 k11 k10 A B A F C k36 k41 k9 k11 k9? E D k34 k9 A k9 k11 F k11 k34 C k34 D k9 A
Freenet keresés - példa k9 k7 B k9 k7 k10 k9 k36 k10 k36 k7 AB CA CB k10 k9 k36 k10 A B k7 k9 k11 A B F C k36 k41 k9 E D k7? k7 k34 k9 k11 A F k9 k7 k34 k9 A C A
Lavina effektus példa Animáció, klikkelj a vonalkódra
Keresések eloszlása Slashdot effektus (http://slashdot.org/) Népszerű számítástechnikai hírportál News for nerds, stuff that matters Ha egy érdekes hír jelenik meg rajta, mindenki ráklikkel a linkre A hirtelen terhelés megbéníthatja a kisebb kapacitású gépeket A Freenet elkerüli a Slashdot effektust A cache-elés miatt a keresések eloszlanak A források nem kerülnek túl nagy terhelés alá A kulcsok hash-ek Szemantikailag egymáshoz közel álló tartalmak teljesen különböző kulcsokat kaphatnak Egy hot topic -hoz tartozó különböző állományok eloszlanak a rendszerben
Hash függvény Nagy értelmezési tartományt képez le egy szűk értékkészletre Változó hosszúságú x paramétert képez le fix hosszúságú h = H(x) értékre Kriptografikus hash függvények Ha adott x, H(x) relatív egyszerűen kiszámítható H(x) egyirányú Ha adott h hash érték, túlzottan számításigényes olyan x-et találni, amire H(x) = h H(x) ütközésmentes H gyengén ütközésmentes ha egy adott x-re, túlzottan számításigényes egy olyan y megtalálása (x y), melyre H(x) = H(y) H erősen ütközésmentes ha túlzottan számításigényes bármilyen olyan x és y értékeket találni (x y), melyre H(x) = H(y)
Hash függvény Népszerű algoritmusok MD5 (Message Digest Algorithm 5) Ronald Rivest (MIT), 1991 http://www.ietf.org/rfc/rfc1321.txt SHA-1 (Secure Hash Algorithm) http://www.itl.nist.gov/fipspubs/fip180-1.htm
Kulcsok Minden állományt egy kulcs azonosít A kulcs egy globális azonosító része Uniform Resource Identifiers (URIs): freenet:keytype@data Több fajta kulcs létezik Keyword Signed Key (KSK) Signature Verification Key (SVK) SVK Subspace Key (SSK) Content Hash Key (CHK)
Keresés A kereséshez tudni kell az adott kulcsot A publikáló félnek ezt nyílvánosan meg kell hírdetni Anonymous hirdetési lehetőség Freenet portálokon Rövid leírás, kulcs Freenet levelező listákon Freenet IRC csatorna irc.freenode.net #freenet Privát e-mail, web Graffiti, hőlégballonon, repülő által húzott reklámszalagon
Anonimitás A peer-ek véletlenszerűen hazudhatnak a kérésekkel kapcsolatban A Depth és a Hop-To-Live értékek változtathatóak Lehetetlen kideríteni kitől kapod meg a dokumentumot A forrás címet bármely csomópont az útvonalon átírhatja a sajátjára Lehetetlen kideríteni ki publikált először a rendszerben egy adott fájlt Igyekeznek a réseket is betömni the Javascript exploit mentioned would not have worked on Freenet because Freenet removes Javascript by default. Nem biztosít igazi anonimitást A nem triviális támadások ellen valószínűleg nem képes védekezni Forgalomanalízis, nagyszámú csomópont kompromittálása
Előnyök Teljesen elosztott rendszer Nagy hibatűrés Robusztus, skálázható Másolatok automatikus generálása Jól alkalmazkodik a felhasználók dinamizmusához Adaptív, hatékony útválasztás Anonim szerzők és olvasók Freeriding nem lehetséges
Hátrányok Nem garantálható a keresések ideje Nem garantálható a keresések sikere Ismeretlen topológia A kereső algoritmusok nem tudják ezt kihasználni Nem biztosítja a tartós tárolást Egy ma publikált fájl holnapra lehet hogy kihal a rendszerből Nagyméretű állományoknál nem előnyös egy hosszú útvonal mentén küldeni a választ Nagy a hibalehetőség Elpocsékolt sávszélesség
Anonimitás vs. hatékonyság A Freenet fő célja a cenzúra elkerülése és az anonimitás, nem a hatékonyság Főként kisméretű fájlok, szöveges dokumentumok tárolására és terjesztésére kiváló Freenet China http://freenet-china.org/
Irodalom I. Clarke, O. Sandberg, B. Wiley, T. W. Hong,, "Freenet: A distributed anonymous information storage and retrieval system", in Workshop on Design Issues in Anonymity and Unobservability, Berkeley, CA, July 2000. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.4919 2000 legtöbbször hivatkozott cikke a Citeseer-ben Jelenleg 773 hivatkozás a Citeseer-ben, 2236 hivatkozás a Google Scholar-ban The Free Network Project http://www.freenetproject.org/ http://freenetproject.org/papers.html
P2P 133
P2P Keresés Strukturálatlan P2P rendszerek Gnutella, KaZaa, stb... Véletlenszerű keresés Nincs információ a fájl lehetséges tárolási helyéről Példa: koncentrikusan szélesedő keresés Expanding Ring Search (ERS) Nagy terhelés a rendszeren Minél több helyen tárolva, annál kisebb a keresés által generált terhelés 134
P2P Keresés (II) Strukturált P2P rendszerek Irányított keresés Kijelölt peer-ek kijelölt fájlokat (vagy azok fele mutató pointereket) kell tároljanak Mint egy információs pult Ha valaki keresi a fájlt, tudja kit kérdezzen Elvárt tulajdonságok Elosztottság Felelősség elosztása a résztvevők között Alkalmazkodás A peer-ek ki és bekapcsolódnak a rendszerbe Az új peer-eknek feladatokat osztani A kilépő peer-ek feladatai újraosztani 135
Elosztott hash táblák - DHT Distributed Hash Tables DHT Egy hash függvény a keresett fájlhoz egy egyéni azonosítót társít Példa: h( P2P_előadás ) -> 123 A hash függvény értékkészletét elosztja a peer-ek között Egy peer-nek tudnia kell minden olyan fájlról, melynek a hash-elt értéke a saját értékkészletébe tartozik Vagy saját maga tárolja a fájlt... Vagy tudja ki tárolja a fájlt. 136
DHT példa 211-399 200-210 484-799 100-199 400-483 123 0-99 h(x) [0..799] 137
DHT példa 211-399 200-210 484-799 100-199 400-483 123 0-99 h(x) [0..799] 138
DHT útválasztás Minden peer mely információt tartalmaz egy fájlról elérhető kell legyen egy rövid úton Korlátozott számú lépésen belül A kereső peer által A fájlt tároló peer-ek által Korlátozott számú szomszéd Skálázható a rendszer méretétől függetlenül A különböző DHT megoldások lényégében az útválasztásban térnek el CAN, Chord, Pastry, Tapestry 139