peer-to-peer (p2p) hálózatok
DESCRIPTION
Peer-to-Peer (P2P) hálózatok. BMEVITT9176 Választható tárgy 2006 március 6. Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications. Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan - MIT. Teljesítmény elemzés. Gyors keresés nagy rendszerekben - PowerPoint PPT PresentationTRANSCRIPT
Peer-to-Peer (P2P) hálózatok
BMEVITT9176
Választható tárgy
2006 március 6
Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications
Ion Stoica, Robert Morris, David Karger,M. Frans Kaashoek, Hari Balakrishnan - MIT
2006 március 6P2P hálózatok 3
Teljesítmény elemzés
Gyors keresés nagy rendszerekben Alacsony szórással a keresési időben Robosztus, még gyakori csomóponti hibák
esetén is
2006 március 6P2P hálózatok 4
Chord implementáció
3000 soros C++ kód Library amely tetszőleges alkalmazáshoz
linkelhető Kis Internet teszthálón kipróbálva Funkciók:
lookup(key): azon csomópont IP címe amely a kulcsért felelős
kulcs-felelősség változások terjesztése
2006 március 6P2P hálózatok 5
Alkalmazás: Chord-DNS
DNS keresési szolgálat host name IP cím
Chord-based DNS: nincsenek root serverek nincs manuális routing information menedzsment nincs naming structure
2006 március 6P2P hálózatok 6
Irodalom
I. Stoica, R. Morris, D. Karger, F. Kaashoek, H. Balakrishnan, "Chord: A Scalable Peer-To-Peer Lookup Service for Internet Applications," AC Sigcomm2001, http://www.acm.org/sigcomm/sigcomm2001/p12.html
The Chord Projecthttp://www.pdos.lcs.mit.edu/chord/
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.
2006 március 6P2P hálózatok 8
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
2006 március 6P2P hálózatok 9
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
2006 március 6P2P hálózatok 10
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
2006 március 6P2P hálózatok 11
Neighbour Map
N = “5712” (Octal)
Útválasztási szintek1234
xxx1
5712
xxx0
xxx3
xxx4
xxx5
xxx6
xxx7
xx02
5712
xx22xx32
xx42
xx52
xx62
xx72
x012
x112
x212
x312
x412x512
x612
5712
0712
1712
2712
3712
4712
5712
6712
7712
2006 március 6P2P hálózatok 12
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ú
2006 március 6P2P hálózatok 13
Példa
5712
0880 3210
7510
4510
5712 0 1 2 3 4 5 6 7
0880 0 1 2 3 4 5 6 7
3210 0 1 2 3 4 5 6 7
4510 0 1 2 3 4 5 6 7
7510 0 1 2 3 4 5 6 7
5712 → 7510
2006 március 6P2P hálózatok 14
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
2006 március 6P2P hálózatok 15
Tapestry csomópont
2006 március 6P2P hálózatok 16
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
2006 március 6P2P hálózatok 17
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
2006 március 6P2P hálózatok 18
Root node (Tapestry)
Surrogate routing – elosztott megoldás a root kiszámolására 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)
2006 március 6P2P hálózatok 19
4
2
3
3
3
2
2
1
2
4
1
2
3
3
1
34
1
1
4 3
2
4
Tapestry Mesh - Utótag alapú útválasztás
NodeID0x43FE
NodeID0x13FENodeID
0xABFE
NodeID0x1290
NodeID0x239E
NodeID0x73FE
NodeID0x423E
NodeID0x79FE
NodeID0x23FE
NodeID0x73FF
NodeID0x555E
NodeID0x035E
NodeID0x44FE
NodeID0x9990
NodeID0xF990
NodeID0x993E
NodeID0x04FE
NodeID0x43FE
2006 március 6P2P hálózatok 20
Tapestry – routing
NodeID0001
NodeID0000
NodeID1010
NodeID0100
NodeID1000
NodeID0101
NodeID1110
NodeID0111
NodeID1001
NodeID1011
NodeID0011
NodeID0110
NodeID1111
NodeID1100
NodeID1101
NodeID0010
0111 ?
0101 x001 xx01 xxx0
0101 1001 0101 0000
1101 x101 xx11 xxx1
1101 0101 0011 0101
0111 x011 xx01 xxx0
0111 0011 1101 0010
1111 x111 xx11 xxx1
1111 1111 1111 1111
0011 x011 xx01 xxx0
0011 0011 1001 1110
1011 x111 xx11 xxx1
1011 1111 0011 0011
0000 x000 xx00 xxx0
0000 0000 0000 0000
1000 x100 xx10 xxx1
1000 0100 1010 0101
2006 március 6P2P hálózatok 21
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
2006 március 6P2P hálózatok 22
Lokalizáció
2006 március 6P2P hálózatok 23
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
2006 március 6P2P hálózatok 24
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
2006 március 6P2P hálózatok 25
Példa a dinamikus beillesztésre
NodeID0x243FE
NodeID0x913FENodeID
0x0ABFE
NodeID0x71290
NodeID0x5239E
NodeID0x973FE
NEW0x143FE
NodeID0x779FE
NodeID0xA23FE
Gateway0xD73FF
NodeID0xB555E
NodeID0xC035E
NodeID0x244FE
NodeID0x09990
NodeID0x4F990
NodeID0x6993E
NodeID0x704FE
4
2
3
3
3
2
1
2
4
1
2
3
3
1
34
1
1
4 3
2
4
NodeID0x243FE
2006 március 6P2P hálózatok 26
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
2006 március 6P2P hálózatok 27
Irodalom
http://www.cs.ucsb.edu/~ravenben/tapestry/