1 / 91

Peer-to-Peer (P2P) hálózatok

Peer-to-Peer (P2P) hálózatok. 2005 október 12. Tapestry: A Resilient Global-scale Overlay for Service Deployment. Ben Y. Zhao, Ling Huang, Jeremy Stribling, Sean C. Rhea, Anthony D. Joseph, and John Kubiatowicz IEEE Journal on Selected Areas in Communications, January 2004, Vol. 22, No. 1.

erv
Download Presentation

Peer-to-Peer (P2P) hálózatok

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Peer-to-Peer (P2P) hálózatok 2005 október 12

  2. Tapestry: A Resilient Global-scale Overlay for Service Deployment Ben Y. Zhao, Ling Huang, Jeremy Stribling, Sean C. Rhea, Anthony D. Joseph, and John Kubiatowicz IEEE Journal on Selected Areas in Communications, January 2004, Vol. 22, No. 1.

  3. Tapestry • Egy elosztott, hibatűrő, adaptív lokalizáló és útválasztó infrastruktúra • Utótag (suffix) alapú hypercube útválasztás • A Plaxton algoritmus ötletére alapoz • C.G. Plaxton, R. Rajaraman and A.W. Richa, Accessing Nearby Copies of Replicated Objects in a Distributed Environment., 9th Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA '97), pp 311-320, Newport, RI, USA, 1997http://citeseer.ist.psu.edu/plaxton97accessing.html 3

  4. Plaxton/Tapestry címzés • Bármely csomópont lehet: • Szerver – állományokat tárol • Router – csomagokat továbbít • Kliens – kéréseket kezdeményez • Név (cím-) tartomány • Csomópontok és állományok egyaránt • Megfelelően nagy az ütközések elkerüléséhez • 160 bit, 40 hexa számjegy, 1640=2160 cím • ~ Kiegyensúlyozott eloszlás a tartományon belül • Hash algoritmus 4

  5. Neighbour Map • Legyen N egy csomópont (IP cím, ID) • utótag(N, k) = az utolsó k számjegy az ID-ből • Minden csomópontban szomszédossági térkép (neighbour map) • Annyi szint, ahány számjegy az ID-ben • Minden szinten annyi bejegyzés, ahányas számrendszerben címzünk • A j szint (j-1) hosszúságú utótagoknak felel meg • Az i bejegyzés a j szinten – a fizikailag legközelebb álló olyan csomópont IP címe, mely ID-je [„i” + utótag(N, j-1)]-re végződik • Példa: a 2. bejegyzés a 5712 csomópont térképének 3. szintjén az a 212-re végződő ID-jű csomópont IP címe, mely fizikailag legközelebb áll az 5712 ID-jű ponthoz 5

  6. N = “5712” (Octal) 0712 x012 xx02 xxx0 1712 x112 5712 xxx1 2712 x212 xx22 5712 3712 x312 xx32 xxx3 4712 x412 xx42 xxx4 5712 x512 xx52 xxx5 6712 x612 xx62 xxx6 7712 5712 xx72 xxx7 4 3 2 1 Útválasztási szintek Neighbour Map 6

  7. Utótag alapú útválasztás • Pontról pontra való továbbítás, számjegyenként • **** → ***0 → **10 → *510 → 7510 • Hasonlít a longest prefix match alapú IP útválasztásra • Mindegy melyik irányból közelítünk • Az eredeti Tapestry javaslat – utótag alapú • Jelenleg – előtag alapú 7

  8. 7510 4510 3210 5712 0880 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 4 4 4 4 4 5 5 5 5 5 7 7 7 7 7 3 3 3 3 3 6 6 6 6 6 Példa 5712 → 7510 5712 0880 3210 4510 7510 8

  9. Tapestry csomópont N • Neighbour Map • Object Store • A helyileg tárolt állományok • Object Location Pointers • Információk bizonyos állományok tárolási helyéről • <ObjectID, NodeID> • Back Pointers • Azokra a pontokra mutatnak, melyek szomszéduknak tekintik N-t • Hotspot Monitor • <ObjectID, NodeID, Frequency> - segítenek a cache kezelésében 9

  10. Tapestry csomópont 10

  11. Root Node (Plaxton) • Adott egy A állomány (IDA) • Az A állomány gyökere (root node) az az R csomópont, melyre igaz a következő: utótag(IDA, k) = utótag (IDR, k) • és nincs olyan más csomópont X melyre igaz lenne, hogy utótag(IDA, k+1) = utótag (IDX, k+1) • Ha több ilyen pont van, a legnagyobb címmel rendelkező lesz a root 11

  12. A feszítőfa • Root(A) az a pont, ahova mindeki fordul ha A-ra kiváncsi • Minden A állományhoz egy Root(A) gyökerű feszítőfa tartozik • A hálózat bármely pontjáról, véges számú lépés alatt eljutunk a feszítőfa gyökeréhez • Számjegyenként egyre közelebb kerülünk, ameddig egy üres szomszéd bejegyzéshez érünk • Egy utolsó ugrásként egy shortcut vezet a root-hoz • Információt szerzünk az A állományról • Statikus megoldás, a hálózat teljes ismerete szükséges • Az összes shortcut-ot előre ki kell számolni 12

  13. Root node (Tapestry) • Surrogate routing – elosztott megoldás a root kiszámolására • Feltételezi, hogy a IDRoot(A) = IDA • Mivel a címtartomány ritkán „lakott”, valószínüleg nem létezik • Ennek ellenére úgy tesz mintha létezne, arra irányítja a csomagokat • Ha egy üres szomszéd bejegyzésre bukkan, kiválasztja az azon a szinten levő következő nem üres bejegyzést • Ha egy szinten egyetlen bejegyzés sincs saját magán kívül, megáll • Ez a pont lesz a surrogate (root) 13

  14. 3 4 2 NodeID 0x43FE 1 4 3 2 1 3 4 4 3 2 3 4 2 3 1 2 1 2 3 1 Tapestry Mesh - Utótag alapú útválasztás NodeID 0x79FE NodeID 0x23FE NodeID 0x993E NodeID 0x43FE NodeID 0x73FE NodeID 0x44FE NodeID 0xF990 NodeID 0x035E NodeID 0x04FE NodeID 0x13FE NodeID 0x555E NodeID 0xABFE NodeID 0x9990 NodeID 0x239E NodeID 0x73FF NodeID 0x1290 NodeID 0x423E 14

  15. 0111 ? Tapestry – routing NodeID 0000 NodeID 1010 NodeID 0100 NodeID 1000 NodeID 0101 NodeID 1110 NodeID 0001 NodeID 0111 NodeID 1001 NodeID 0011 NodeID 0110 NodeID 1111 NodeID 1011 NodeID 1100 NodeID 1101 NodeID 0010 15

  16. Lokalizáció • Egy szerver S bejelenti hogy rendelkezik az A állománnyal • S elküld egy Publish (ObjectID(A), ServerID(S)) üzenetet a Root(A) felé • Minden közbeeső router tárolja a linket (A→S) • Query(A) → Root (A) felé • Ha útközben valaki tárolta a linket, a kérést azonnal továbbküldi a megfelelő helyre 16

  17. Lokalizáció 17

  18. Hibatűrő útválasztás • Hibadetektálás • Periódikus hello csomagok a szomszédok között • Hibakezelés • Minden bejegyzés a Neighbour Map-ban tartalmaz 2 alternatív útvonalat • Másodlagos szomszédok • Ha hiba történik, nem törli ki a hibás útvonalat • Egy bitet átállítva bejegyzi hibásnak • Egy bizonyos ideig (egy nap) ellenőrizgeti • Ha megjavitották, visszaállítja a bitet • Nem kell költségesen újra beilleszteni • He letelik a tűrési idő, kitörli a Map-ből 18

  19. Dinamikus beillesztés • Több lépésből áll • Feltételezzük, hogy N ismeri egy G gateway címét • Expanding ring search, web, stb • Step 1: Felépíti N Neighbour Map-jét • Üzenetet küld minden közbeeső csomópont (H0..Hi) felé a G→ N’ útvonalon, ahol N’ az N-hez legjobban hasonlító pont (IDN’ ~ IDN) • Hi visszaküldi az i szintű szomszédai listáját • G = H0 • utótag (Hi, i) = utótag (N, i) • N optimizálja azt, ha szükséges • Kiszámolja hogy az elsődleges és másodlagos szomszédok közül ki van fizikailag közelebb • Megváltoztatja a sorrendet, ha szükséges • Ha egy üres bejegyzést talál a Hi -ban a következő ugrásra, megáll • Surrogate routing-al eljut az N’-höz, es az N-hez tartozó adatokat (melyekre N lesz az új root) atmásolja az N-hez 19

  20. 3 2 1 4 3 2 1 3 4 4 3 2 3 4 2 3 1 2 1 3 1 Példa a dinamikus beillesztésre 4 NodeID 0x779FE NodeID 0xA23FE NodeID 0x6993E NodeID 0x243FE NodeID 0x243FE NodeID 0x973FE NodeID 0x244FE NodeID 0x4F990 NodeID 0xC035E NodeID 0x704FE NodeID 0x913FE NodeID 0xB555E NodeID 0x0ABFE NodeID 0x09990 NodeID 0x5239E NodeID 0x71290 Gateway 0xD73FF NEW 0x143FE 20

  21. Dinamikus beillesztés (II) • Step 2: Értesíti jelenlétéről azokat a csomópontokat, melyek üres bejegyzést tárolnak az IDN-re • A surrogate node-tól (N’) visszaindul a backlink-eken • Egészen addig, ahol már megegyezik az utótag • Ezek a csomópontok bejegyzik N-t a saját táblájukba • Step 3: Minden értesített csomópont újrapublikálja az érintett állományokat • Lehet, hogy N lesz az új surrogate egy állomány számára • Értesülnie kell az állomány tárolási helyéről • Step 4: Értesít más pontokat is (elsődleges, másodlagos szomszédok) a jelenlétéről • Ezek lemérik a távolságot N felé, és átírják a táblájukat ha szükséges 21

  22. Irodalom • http://www.cs.ucsb.edu/~ravenben/tapestry/ 22

  23. Kademlia: A peer-to-peer information system based on the XOR metric Petar Maymounkov and David Mazieres New York University Proceedings of the 1st International Workshop on Peer-to-Peer Systems (IPTPS '02), pages 53-65, March 2002.

  24. Kademlia • Kademlia • P2P adattároló hálózat • Kulcs-érték párok tárolása • egyedi, 160 bites kulcsok • Különböző népszerűségű (tárolás, keresés) kulcsok • DHT 24

  25. Kademlia • Kialakítandó környezet • Bármelyik node bármikor eltűnhessen • A node-ok legyenek egyenletesen terheltek • tárolási kapacitás • sávszélesség • Cél • Gyors adatelérés • Minimális számú vezérlő üzenet 25

  26. Node-ok változékonysága • Ideális feltétel • Ha egy node egyszer belépett, soha sem távozik • Életszerűbb feltétel • A node-ok 0,5 valószínűséggel nem távoznak a következő órában 26

  27. DHT-k általánosságban • Minden node-hoz egy egyedi, 160 bites azonosítót rendelünk • Definiálunk egy távolságfüggvényt a 160 bites téren • Minden node másik O(log n) node elérhetőségét tárolja • Egy olyan keresési algoritmust definiálunk, amely megtalálja egy adott kulcshoz legközelebbi azonosítójú node-ot • A távolságfüggvény egyértelműen meg kell hogy határozzon egy ilyen legközelebbi node-ot • Az így meghatározott node-on tároljuk el ill. keressük a kulcs értékét 27

  28. Chord – keresés • Minden lépés felezi a távolságot. • Így a célhoz legfeljebb log n lépés alatt elérünk. 28

  29. Chord – routing tábla • A címteret logaritmikus régiókra osztjuk • A bejegyzett elérhetőségek ezekből a régiókból valók 29

  30. Chord – routing tábla • Merev routing tábla! • Nehezíti a routing tábla helyreállítását node-ok kiesése után • Lehetetlenné teszi a közelségi információ felhasználását 30

  31. Chord – routing tábla • A bejövő és kimenő irányú üzenetek eloszlása éppen ellentétes • Nem lehet a bejövő forgalmat a routing tábla frissítésére használni 31

  32. A Chord – javítás • Két-irányú routing tábla • A tábla kétszer akkorára nő • Kétszerannyi vezérlő üzenetre van szükség 32

  33. Kademlia • A routing-tábla rugalmas • Közelségi alapú routing • Laza követelmények • minimális fenntartás • Bejövő és kimenő üzenetek eloszlása azonos • A hálózat önmegerősítő • Csak log n node elérését kell ismerni 33

  34. 101? Kademlia – routing 1 0 • Minden hop eggyel kisebb ágra visz a cél körül • Az adott ágon belül bármelyik node-hoz ugorhatunk 1 0 1 0 1 0 1 0 1 0 1 0 34

  35. XOR - topológia • Definíció: d(x,y) = x XOR y • A nagyobb helyiértékű bitek eltérése nagyobb távolságot eredményez: • 010101 • 110001, távolság: 32 + 4 = 36 • Geometriai értelmezés: • A közös ágon lévő node közelebb van, mint a többi 35

  36. Routing tábla 1 0 • Rugalmasság kialakítás • Mindegy, hogy kit ismerek az adott tartományban • A kimenő és bejövő eloszlás azonos • A routing tábla log n méretű 1 0 1 0 1 0 1 0 1 0 1 0 36

  37. Adatstruktúrák • Kapcsolatok • (nodeID, IP:UDP_port) párok • k-vödör (k-bucket) • tárolóegység maximum k db. kapcsolathoz • alapból k=20 • Minden node tárol egy k-vödröt olyan node-oknak melyek 2i és 2i+1 közötti távolságra vannak tőle, 0 ≤ i < 160 • Minden k-vödörben a node-ok sorrendben vannak aszerint, melyikről hallottunk legutóbb • Kicsi i értékre a k-vödör általában üres • Nincsenek node-ok az intervallumban • Nagy i értékre a k-vödör lehet nagy • A k legfrissebb node-ot tárolom • Ha egy Kademlia node kap egy csomagot, a küldőt beteszi a megfelelő k-vödörbe • Az a node amelyikről legrégebben hallottam kikerül • Routing tábla • Műveletek: kapcsolat berakása, törlése • Egy k-vödrökből álló fa • Minden vödör egy tartományáért felelős 37

  38. Routing-tábla • A 00…0-s node routing táblája 38

  39. Routing-tábla • A 00…100-s node routing táblája 39

  40. Keresés 000 111 1 0 1 0 1 0 1 0 1 0 1 0 1 0 40

  41. Keresés • Cél: A T célhoz legközelebbi k node megtalálása, ahol T E {0, 1}160 • find_noden(T) : minden olyan címet visszaad n node routing táblájából, amelyik T-hez legközelebbi k-vödörben található • Keresés: • n0: a keresést végző node • N1 = find_noden0(T) • N2 = find_noden1(T) • … • Nl = find_nodenl-1(T) • Ahol ni az Ni halmaz tetszőleges címe • A keresés akkor ér véget, ha Nl csak olyan címeket tartalmaz, amelyeket n0 már megkérdezett 41

  42. Keresés • Minden lépés felezi a távolságot • vagyis: minden lépés felezi a lehetséges célpontok számát • Az egymás utáni find_noden(T) hívások egyre kisebb tartományhoz tartozó k-vödörből adnak választ 42

  43. Párhuzamos keresés • Nagyobb forgalomért cserébe gyorsabb keresés • Cél • A keresés menjen a gyorsabb / közelebbi gépeken keresztül • Kerüljük el a kilépett node-ok miatti timeout-okat • Megoldás: • egyszerre α > 1 párhuzamos find_noden(T) 43

  44. Kapcsolatok fenntartása • Ha egy node nem válaszol, töröljük a routing táblából • Minden egyes node bekerül a routing táblába, amelyiktől hívást kapunk • Az XOR topológia szimmetriája miatt a minket hívó node-ok eloszlása éppen a routing táblánkéval egyező eloszlású lesz 44

  45. Összefoglalás • Topológia • Szimmetrikus: d(x,y) = d (y,x). Kevesebb vezérlő üzenet • Egyértelmű: minden X E {0,1}160 és l E N-hez pontosan egy olyan Y E {0,1}160 létezik, hogy d(X,Y) = l. • Egyirányúság: Egy rögzített X-hez 2i db. Y létezik, melyre d(X,Y) ≤ 2i-1. • Párhuzamos kereséssel kikerülhetőek a lassú linkek 45

  46. Alkalmazások • A Kademliát használó néhány alkalmazás: • Overnet háló: Overnet, eDonkey, mlDonkey • Kad háló: eMule, mlDonkey, aMule • Directconnect: RevConnect • Trackerless BitTorrent: Azureus, Khashmir, BitSpirit, eXeem 46

  47. Hierarchikus keresés • KaZaA – hierarchikus de nem struktúrált • Az útválasztás az Interneten hierarchikus • BGP útválasztás az autonóm rendszerek (AS) között • Intra-AS útválasztó protokollok (RIP, OSPF) a rendszeren belül • Skálázhatóság, adminisztrációs autonómia • CAN, Chord, Tapestry • Nincs hierarchia • Egyenrangú, homogén peer-ek 47

  48. Hierarchikus DHT • Hierarchikus DHT? • A peer-ek csoportokba szerveződnek • Csoportok közötti (inter-group) keresés • Csoporton belüli (intra-group) keresés • Előnyök • Csökkenti az ugrások számát keresésenként • Kihasználja a rendszer heterogeneitását • Adminisztrációs autonómia • A különböző csoportokon belül különböző DHT megoldások 48

  49. Hagyományos DHT • Nincs hierarchia • Heterogén peer-ek • Heterogén kapcsolatok 49

  50. Hierarchikus DHT • A peer-ek csoportokba szerveződnek • Azonos ISP • Fizikai topológiai szomszédság 50

More Related