Elosztott adatbázisok és peerto-peer. Simon Csaba

Hasonló dokumentumok
Hálózatba kapcsolt erőforrás platformok és alkalmazásaik. Simon Csaba TMIT 2017

Hálózatba kapcsolt erőforrás platformok és alkalmazásaik. Simon Csaba TMIT 2017

Hálózatok II 2005/ : Peer-To-Peer Hálózatok II

Elosztott Hash Táblák. Jelasity Márk

Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System

10: Peer-To-Peer Hálózatok I. HálózatokII, 2007

PEER-TO-PEER HÁLÓZATOK

Készítette: Weimann András

Hálózati architektúrák laborgyakorlat

Hálózati Technológiák és Alkalmazások. Vida Rolland, BME TMIT október 29. HSNLab SINCE 1992

Kommunikációs rendszerek programozása. Routing Information Protocol (RIP)

Hálózati Technológiák és Alkalmazások

FORGALOMIRÁNYÍTÓK. 6. Forgalomirányítás és irányító protokollok CISCO HÁLÓZATI AKADÉMIA PROGRAM IRINYI JÁNOS SZAKKÖZÉPISKOLA

Hálózati réteg. WSN topológia. Útvonalválasztás.

V2V - routing. Intelligens közlekedési rendszerek. VITMMA10 Okos város MSc mellékspecializáció. Simon Csaba

Elosztott adatbázis-kezelő formális elemzése

Beállítások 1. Töltse be a Planet_NET.pkt állományt a szimulációs programba! A teszthálózat már tartalmazza a vállalat

4: Az IP Prefix Lookup Probléma Bináris keresés hosszosztályok alapján. HálózatokII, 2007

Elosztott rendszerek

Titkosítás NetWare környezetben

Peer-to-peer alapú elosztott fájlrendszerek

Hálózati architektúrák laborgyakorlat

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Számítógépes Hálózatok

Hálózati réteg. Feladata: a csomag eljusson a célig Több útválasztó Ez a legalacsonyabb rétek, mely a két végpont

Statikus routing. Hoszt kommunikáció. Router működési vázlata. Hálózatok közötti kommunikáció. (A) Partnerek azonos hálózatban

Hálózati architektúrák laborgyakorlat

Programozás alapjai II. (7. ea) C++

Számítógépes Hálózatok 2012

Forgalomirányítás, irányító protokollok (segédlet az internet technológiák 1 laborgyakorlathoz) Készítette: Kolluti Tamás RZI3QZ

Autóipari beágyazott rendszerek. Local Interconnection Network

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

Konfiguráljuk be a TCP/IP protokolt a szerveren: LOAD INETCFG A menüpontokból válasszuk ki a Proctcols menüpontot:

Network front-end. Horváth Gábor. Kovács Róbert. ELTE Informatikai Igazgatóság

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 5. rész: Elnevezési rendszerek

BASH script programozás II. Vezérlési szerkezetek

Számítógépes Hálózatok 2011

Teljesen elosztott adatbányászat alprojekt

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Hálózati rendszerek adminisztrációja JunOS OS alapokon

A számítástechnika gyakorlata WIN 2000 I. Szerver, ügyfél Protokoll NT domain, Peer to Peer Internet o WWW oftp opop3, SMTP. Webmail (levelező)

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Adatszerkezetek 2. Dr. Iványi Péter

Algoritmusok és adatszerkezetek gyakorlat 07

Adatbázis Rendszerek II. 2. Gyakorló környezet

Elnevezési rendszerek. A névtér elosztása (2) 4. előadás. A névfeloldás implementálása (1) A névfeloldás implementálása (2)

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 3. óra. Kocsis Gergely, Kelenföldi Szilárd

Hálózati beállítások Készítette: Jámbor Zoltán 2016

Összefoglalás és gyakorlás

Névfeloldás hosts, nsswitch, DNS

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

VIII. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Az adatfeldolgozás és adatátvitel biztonsága. Az adatfeldolgozás biztonsága. Adatbiztonság. Automatikus adatazonosítás, adattovábbítás, adatbiztonság

Mobilitás és MANET Intelligens közlekedési rendszerek

Hálózatok építése és üzemeltetése

Számítógép hálózatok, osztott rendszerek 2009

Újdonságok Nexus Platformon

Adatbiztonság PPZH május 20.

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Hálózatba kapcsolt erőforrás platformok és alkalmazásaik. Simon Csaba, Maliosz Markosz TMIT 2017

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Számítógép hálózatok gyakorlat

Hálózati Technológiák és Alkalmazások. Vida Rolland, BME TMIT november 5. HSNLab SINCE 1992

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

2011. május 19., Budapest IP - MIKRO MOBILITÁS

Mesterséges intelligencia 2. laborgyakorlat

Kérdés Kép Válasz HIBAS Válasz HELYES Válasz HIBAS Válasz HIBAS Kérdés Kép Válasz HIBAS Válasz HELYES Válasz HIBAS Válasz HIBAS Kérdés Kép Válasz

Az internet ökoszisztémája és evolúciója. Gyakorlat 4

Internet Protokoll 6-os verzió. Varga Tamás

Algoritmusok és adatszerkezetek 2.

A kapcsolás alapjai, és haladó szintű forgalomirányítás. 1. Ismerkedés az osztály nélküli forgalomirányítással

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms. 2. rész: Architektúrák

Alternatív megoldások skálázható útválasztásra mobil környezetben

Unicast. Broadcast. Multicast. A célállomás egy hoszt. A célállomás az összes hoszt egy adott hálózaton

Unicast A célállomás egy hoszt. Broadcast A célállomás az összes hoszt egy adott hálózaton

Az Online Számla rendszere Regisztráció

Sapientia Egyetem, Matematika-Informatika Tanszék.

Elnevezési rendszerek. 7. előadás

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

III. előadás. Kovács Róbert

Hálózati operációs rendszerek II.

Forgalomirányítás (Routing)

Linux kiszolgáló felügyelet: SUSE Manager

Ethernet/IP címzés - gyakorlat

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Dinamikus routing - alapismeretek -

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

21. tétel IP címzés, DOMAIN/URL szerkezete

Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Tartalom. Router és routing. A 2. réteg és a 3. réteg működése. Forgalomirányító (router) A forgalomirányító összetevői

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

E-Freight beállítási segédlet

Programozható vezérlő rendszerek KOMMUNIKÁCIÓS HÁLÓZATOK 2.

Hálózati Architektúrák és Protokollok GI BSc. 10. laborgyakorlat

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Átírás:

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

Legal Download in EU http://index.hu/kultur/2013/10/30/uhd/ 4

CAP tétel CAP = Consistency, Availability, Partition Tolerance Elosztott rendszerekben Egyszerre nem lehet mind a három célt elérni http://www.julianbrowne.com/article/vie wer/brewers-cap-theorem 5

DHT 6

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 7

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 8

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. 9

DHT példa 211-399 200-210 484-799 100-199 400-483 123 0-99 h(x) [0..799] 10

DHT példa 211-399 200-210 484-799 100-199 400-483 123 0-99 h(x) [0..799] 11

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 12

CAN 13

CAN Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, Scott Shenker, A Scalable Content-Addressable Network, Proceedings of the ACM SIGCOMM'01 Conference, San Diego, CA (August 2001). http://citeseerx.ist.psu.edu/viewdoc/sum mary?doi=10.1.1.140.3129 Sylvia Ratnasamy, A Scalable Content-Addressable Network, Ph.D. Thesis, October 2002 http://berkeley.intel-research.net/sylvia/thesis.pdf 5

Content Addressable Network CAN = egy elosztott, Internet szinten skálázható hash tábla Tároló (Insert), kereső (Lookup) és adattörlő (Delete) műveleteket biztosít egy (Kulcs, Érték) paraméter párra CAN tulajdonságok Teljesen elosztott rendszer Skálázható: minden résztvevő csak korlátozott számú állapotot tárol, a résztvevők számától függetlenül Hibatűrő: akkor is működőképes ha a rendszer egy része meghibásodott 6

CAN architektúra A hash-tábla egy d-dimenziós ortogonális (Descartes) koordináta rendszerben kialakított D-tóruszon működik Ciklikus d-dimenziós tér hash(k)=(x1,, xd) 1-dimenziós ciklikus tér 0.5 + 0.7 = 0.2

CAN architektúra A hash-tábla egy d-dimenziós ortogonális (Descartes) koordináta rendszerben kialakított D-tóruszon működik Ciklikus d-dimenziós tér hash(k)=(x1,, xd) Ortogonális (Descartes) távolság

CAN architektúra A hash-tábla egy d-dimenziós ortogonális (Descartes) koordináta rendszerben kialakított D-tóruszon működik Ciklikus d-dimenziós tér hash(k)=(x1,, xd) Ortogonális (Descartes) távolság p1 = 0.2; p2 = 0.8 CartDist (p1, p2) = 0.4

CAN architektúra A hash-tábla egy d-dimenziós ortogonális (Descartes) koordináta rendszerben kialakított D-tóruszon működik Ciklikus d-dimenziós tér hash(k)=(x1,, xd) Ortogonális (Descartes) távolság p1 = 0.2; p2 = 0.8 CartDist (p1, p2) = 0.4 1-dimenziós ciklikus tér 0.5 + 0.7 = 0.2 Koordináta zóna Egy szelet a Descartes térből

CAN architektúra (II) CAN csomópontok Egy CAN csomópont = egy gép a rendszerben Egy CAN csomópont peer A peer-nek itt más jelentése van, lásd Zónák túlterhelése - később Minden CAN csomópont a tér egy külön zónájáért (szeletéjért) felel A csomópont információt tárol az összes olyan állományról mely a saját zónájába hash-elődik A csomópontok egymás között lefedik a teljes teret

CAN szomszédok 2 CAN csomópont szomszéd ha a zónáik átfedik egymást d-1 dimenzió mentén és szomszédosak 1 dimenzió mentén Egy csomópont ismeri az összes szomszédja IP címét Egy csomópont ismeri az összes szomszédos zóna koordinátáit A csomópontok csak a szomszédaikkal tudnak kommunikálni

CAN csatlakozás Egy CAN-nek van egy DNS domain neve Egy vagy több Bootstrap Node IP címére képződik le A Bootstrap Node tárolja néhány résztvevő csomópont IP címét Gateway csomópontok Az új csomópont véletlenszerűen kiválaszt egyet, és rajta keresztül próbál csatlakozni A hash tábla egy szeletét (zónát) az új csomópontnak kell adni A kapcsolódó állományokat, illetve az azokra vonatkozó adatokat tárolni kell az új csomóponton Az új csomópont be kell kapcsolódjon az útválasztásba

CAN csatlakozás (II) Zóna keresése az új csomópont részére 1. Véletlenszerűen választ egy P pontot 2. A JOIN üzenetet a P pontért felelős csomóponthoz küldi 3. A kérést a CAN útválasztást használva továbbítja

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding Az aktuális csomópont: 1. Leellenőrzi hogy a saját vagy a szomszédai zónája tartalmazza-e a P pontot 2. HA NEM a. Rangsorolja a szomszédait a P ponttal szembeni Descartes távolságuk alapján b. Az üzenetet a P ponthoz legközelebb álló szomszédhoz küldi c. Megismétli az 1. lépést 3. HA IGEN A pozitív választ (a keresett állományt) visszaküldi a keresőhöz

CAN routing Hibatűrő útválasztás 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding a. Mielőtt továbbküldené az üzenetet, ellenőrzi a szomszéd készenléti állapotát b. Az üzenetet a rendelkezésre álló legjobb szomszédhoz küldi el

CAN routing Hibatűrő útválasztás 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding a. Mielőtt továbbküldené az üzenetet, ellenőrzi a szomszéd készenléti állapotát b. Az üzenetet a rendelkezésre álló legjobb szomszédhoz küldi el

CAN routing Hibatűrő útválasztás 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding a. Mielőtt továbbküldené az üzenetet, ellenőrzi a szomszéd készenléti állapotát b. Az üzenetet a rendelkezésre álló legjobb szomszédhoz küldi el

CAN routing Hibatűrő útválasztás 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding a. Mielőtt továbbküldené az üzenetet, ellenőrzi a szomszéd készenléti állapotát b. Az üzenetet a rendelkezésre álló legjobb szomszédhoz küldi el

CAN routing Hibatűrő útválasztás 1. Elindul egy tetszőleges pontból 2. P = a K kulcs hash-elt értéke 3. Greedy (mohó) forwarding a. Mielőtt továbbküldené az üzenetet, ellenőrzi a szomszéd készenléti állapotát b. Az üzenetet a rendelkezésre álló legjobb szomszédhoz küldi el A célcsomópontot elérjük ha létezik legalább egy út

CAN csatlakozás (II) Zóna keresése az új csomópont részére 1. Véletlenszerűen választ egy P pontot 2. A JOIN üzenetet a P pontért felelős csomóponthoz küldi 3. A kérést a CAN útválasztást használva továbbítja 4. A P pontért felelős csomópont kettévágja zónáját Az egyik fele az új csomóponté lesz A másik fele megmarad a régi csomópontnál 5. Az elosztás a zóna legnagyobb oldalának megfelelő dimenzió mentén történik Ha két oldal egyenlő, a kisebbik rangú dimenzió mentén osztódik 6. A hash tábla alapján az új csomópont zónájába eső állományokra vonatkozó adatokat átküldi

CAN csatlakozás (II) Zóna keresése az új csomópont részére 1. Véletlenszerűen választ egy P pontot 2. A JOIN üzenetet a P pontért felelős csomóponthoz küldi 3. A kérést a CAN útválasztást használva továbbítja 4. A P pontért felelős csomópont kettévágja zónáját Az egyik fele az új csomóponté lesz A másik fele megmarad a régi csomópontnál 5. Az elosztás a zóna legnagyobb oldalának megfelelő dimenzió mentén történik Ha két oldal egyenlő, a kisebbik rangú dimenzió mentén osztódik 6. A hash tábla alapján az új csomópont zónájába eső állományokra vonatkozó adatokat átküldi

CAN csatlakozás (II) Zóna keresése az új csomópont részére 1. Véletlenszerűen választ egy P pontot 2. A JOIN üzenetet a P pontért felelős csomóponthoz küldi 3. A kérést a CAN útválasztást használva továbbítja 4. A P pontért felelős csomópont kettévágja zónáját Az egyik fele az új csomóponté lesz A másik fele megmarad a régi csomópontnál 5. Az elosztás a zóna legnagyobb oldalának megfelelő dimenzió mentén történik Ha két oldal egyenlő, a kisebbik rangú dimenzió mentén osztódik 6. A hash tábla alapján az új csomópont zónájába eső állományokra vonatkozó adatokat átküldi

CAN csatlakozás (II) Zóna keresése az új csomópont részére 1. Véletlenszerűen választ egy P pontot 2. A JOIN üzenetet a P pontért felelős csomóponthoz küldi 3. A kérést a CAN útválasztást használva továbbítja 4. A P pontért felelős csomópont kettévágja zónáját Az egyik fele az új csomóponté lesz A másik fele megmarad a régi csomópontnál 5. Az elosztás a zóna legnagyobb oldalának megfelelő dimenzió mentén történik Ha két oldal egyenlő, a kisebbik rangú dimenzió mentén osztódik 6. A hash tábla alapján az új csomópont zónájába eső állományokra vonatkozó adatokat átküldi

CAN csatlakozás (II) Zóna keresése az új csomópont részére 1. Véletlenszerűen választ egy P pontot 2. A JOIN üzenetet a P pontért felelős csomóponthoz küldi 3. A kérést a CAN útválasztást használva továbbítja 4. A P pontért felelős csomópont kettévágja zónáját Az egyik fele az új csomóponté lesz A másik fele megmarad a régi csomópontnál 5. Az elosztás a zóna legnagyobb oldalának megfelelő dimenzió mentén történik Ha két oldal egyenlő, a kisebbik rangú dimenzió mentén osztódik 6. A hash tábla alapján az új csomópont zónájába eső állományokra vonatkozó adatokat átküldi

CAN csatlakozás (III) Bekapcsolódás az útválasztásba 1. Az új csomópont megkapja a régi csomópont (kinek a zónáját osztottuk) szomszédainak listáját 2. A régi csomópont frissíti a szomszédait Törli az elvesztett szomszédokat Bejegyzi az új csomópontot 3. Minden szomszéd kap egy frissítő üzenetet, a saját szomszéd-táblája frissítéséhez Törli a régi csomópontot Bejegyzi az új csomópontot

CAN csatlakozás (III) Bekapcsolódás az útválasztásba 1. Az új csomópont megkapja a régi csomópont (kinek a zónáját osztottuk) szomszédainak listáját 2. A régi csomópont frissíti a szomszédait Törli az elvesztett szomszédokat Bejegyzi az új csomópontot 3. Minden szomszéd kap egy frissítő üzenetet, a saját szomszéd-táblája frissítéséhez Törli a régi csomópontot Bejegyzi az új csomópontot

CAN csatlakozás (III) Bekapcsolódás az útválasztásba 1. Az új csomópont megkapja a régi csomópont (kinek a zónáját osztottuk) szomszédainak listáját 2. A régi csomópont frissíti a szomszédait Törli az elvesztett szomszédokat Bejegyzi az új csomópontot 3. Minden szomszéd kap egy frissítő üzenetet, a saját szomszéd-táblája frissítéséhez Törli a régi csomópontot Bejegyzi az új csomópontot

CAN csatlakozás (III) Bekapcsolódás az útválasztásba 1. Az új csomópont megkapja a régi csomópont (kinek a zónáját osztottuk) szomszédainak listáját 2. A régi csomópont frissíti a szomszédait Törli az elvesztett szomszédokat Bejegyzi az új csomópontot 3. Minden szomszéd kap egy frissítő üzenetet, a saját szomszéd-táblája frissítéséhez Törli a régi csomópontot Bejegyzi az új csomópontot

Csomópont távozása Csomópont kilép a rendszerből a. Ha az egyik szomszéd zónája egyesíthető a kilépő csomópont zónájával, akkor ez a szomszéd veszi át az egyesített zóna kezelését egyesíthető = szabályos konvex zóna keletkezik b. Ha nem, akkor az egyik szomszéd két külön zónát kezel majd

Csomópont távozása Csomópont kilép a rendszerből a. Ha az egyik szomszéd zónája egyesíthető a kilépő csomópont zónájával, akkor ez a szomszéd veszi át az egyesített zóna kezelését egyesíthető = szabályos konvex zóna keletkezik b. Ha nem, akkor az egyik szomszéd két külön zónát kezel majd

Csomópont távozása Csomópont kilép a rendszerből a. Ha az egyik szomszéd zónája egyesíthető a kilépő csomópont zónájával, akkor ez a szomszéd veszi át az egyesített zóna kezelését egyesíthető = szabályos konvex zóna keletkezik b. Ha nem, akkor az egyik szomszéd két külön zónát kezel majd Mindkét esetben (a és b): 1. A kilépő csomópont adatai átkerülnek a zónát átvevő csomóponthoz 2. A zónát átvevő csomópont frissíti a szomszédainak listáját 3. Az összes szomszédot értesíti a cseréről, azok pedig frissítik a saját szomszéd-listájukat

Csomópont távozása (II) Ha egy csomópont angolosan távozik (ungraceful departure)... Szabályos időközönként a csomópontok frissítő üzeneteket küldenek a szomszédaiknak A saját zonájuk koordinátái, a szomszédaik listája, illetve azok zónáinak koordinátái Ha egy csomópont egy adott t időn belül nem kapott üzenetet az egyik szomszédjától, elindítja a TAKEOVER procedúrát Megpróbálja átvenni a halottnak hitt csomópont zónáját Egy TAKEOVER üzenetet küld a halott csomópont minden szomszédjának Ha egy csomópont kap egy TAKEOVER üzenetet, összehasonlítja a saját zónáját a küldő zónájával Ha optimálisabb, hogy ő vegye át a zónát, saját maga küld egy új TAKEOVER üzenetet a halott csomópont szomszédainak Az a szomszéd veszi át a zónát, aki nem kap választ a TAKEOVER üzenetére t időn belül A halott csomóponton tárolt adatok nem elérhetőek mindaddig ameddig a forrás nem publikálja újból őket (elküldi az új csomópontnak)

Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan presentation is based on slides by Robert Morris (SIGCOMM 01) presentation is based on slides by Daniel Figueiredo, for Peer-to-Peer and Application-Level Networking Seminar, at the University of Massachusetts at Amherst 50

Motiváció Hogyan találjuk meg az adatot egy elosztott fájl megosztó rendszerben? Publisher Key= LetItBe Value=MP3 data N 1 N 2 N 3 Internet Hatékony keresés a fő probléma! N 5 N 4 Client? Lookup( LetItBe ) 51

Központosított megoldás Központi szerver (pl.: Napster) Publisher Key= LetItBe Value=MP3 data N 1 N 2 N 3 Internet DB N 4 N 5 Client Lookup( LetItBe ) Követelmények: O(M) állapot Központi elem kiesése 52

Elosztott megoldások - I Elárasztás (pl.: Gnutella, Morpheus) Publisher Key= LetItBe Value=MP3 data N 1 N 2 N 3 Internet N 4 N 5 Client Lookup( LetItBe ) Legrosszabb esetben O(N) üzenet per keresés 53

Elosztott megoldások - II Irányított (Routed) üzenetek (Freenet, Tapestry, Chord, CAN, stb ) Publisher Key= LetItBe Value=MP3 data N 1 N 2 N 3 Internet N 4 Kizárólag teljes egyezés N 5 Client Lookup( LetItBe ) 54

Keresés kihívásai Hasznos kulcs egyezőség ( távolság ) Alacsony üzenet továbbítási szám Mérsékelt üzenet továbbítási táblázat méret mérsékelt == pont megfelelő Robosztus működés gyorsan változó résztvevők Chord: Fókuszban: hatékonyság és egyszerűség 55

Chord áttekintés P2P hash keresési szolgálat Lookup(key) IP address Figyelem: a tárolt adatok különválasztva!!! Kérdések: Hogyan talál meg egy csomópontot? Hogyan tartja fenn az üzenet továbbítási táblázatot? Hogyan adaptálódik a résztvevők változásához? 56

Chord jellegzetességei Hatékony: O(Log N) üzenet kersésenként ahol N a kiszolgálók (csomópontok) száma Skálázódik: O(Log N) állapot csomópontonként Robosztus: megbirkózik jelentős résztvevő változással Állítások bizonyításai [tech_report] Feltételezés: nincs rosszakaratú résztvevő 57

Chord Azonosítók (IDs) m bites azonosító tér a kulcsoknak és a csomópontoknak Kulcs azo. = SHA-1(key) KEY= LetItBe! SHA-1 ID=60 Csomópont azo. = SHA-1(IP address) IP= 198.10.10.1! SHA-1 ID=123 Egyenletes eloszlással Hogyan lehet a kulcs azo.-at a csomóponti azo.-khoz rendelni? 58

Konzisztens Hash Konzisztens HASH függvény mind csomóponthoz és kulcshoz egy m bites azonosító SHA 1 algoritmussal (Secure Hash Standard) m tetszőleges szám, elég nagy, hogy az ütközés valószínűsége kicsi legyen KEY ID = SHA-1(key) NODE ID = SHA-1(IP cím) Egyenletes eloszlást követve Értékkészlet: egyazon tartomány 59

Konzisztens Hash-elés [Karger 97] IP= 198.10.10.1 0 K5 N123 K20 K101 Circular 7-bit ID space N32 N90 K60 Key= LetItBe Minden kulcs az őt követő legközelebbi csomópontnál kerül tárolásra 60

Chord: Gyűrű - I Azonosítók egy azonosító gyűrű mentén elhelyezve modulo 2 m Chord ring 61

The Chord algorithm Construction of the Chord ring a key k is assigned to the node whose identifier is equal to or greater than the key s identifier this node is called successor(k) and is the first node clockwise from k. 62

Konzisztens Hash-elés Minden csomópont ismeri az összes többi csomópontot globális információ tárolási kényszer üzenet továbbítási táblák nagyok O(N) Gyors keresés O(1) 0 N10 Where is LetItBe? N123 Hash( LetItBe ) = K60 N32 N90 has K60 K60 N90 N55 63

Chord: alap keresés - I Minden csomópont ismeri az őt követőt a gyűrűn 0 N10 N123 Where is LetItBe? Hash( LetItBe ) = K60 N32 K60 N90 N90 has K60 N55 Keresési idő: O(N) 64

Chord: alap keresés - II // ask node n to find the successor of id n.find_successor(id) if (id 2 (n; successor]) return successor; else // forward the query around the circle return successor.find_successor(id); Keresési idő ~ üzenetek száma: O(N) 65

Mutató táblák - I (finger tables) Minden egyes csomópont m számú további csomópontot tart nyilván Az előre mutató távolság exponenciálisan növekszik N96 N112 80 + 2 4 N16 80 + 2 5 80 + 2 6 80 + 2 3 80 + 2 2 80 + 2 1 80 + 2 0 N80 66

Mutató táblák - II Az i. bejegyzése a mutató táblának az n+2 i. kulcsot követő csomópont címe N120 N112 N16 N96 80 + 2 4 80 + 2 5 80 + 2 6 80 + 2 3 80 + 2 2 80 + 2 1 80 + 2 0 N80 67

Chord: gyors/skálázódó keresés - I A mutató táblák segítségével a keresésnek O(log N) csomópontot kell bejárnia N5 N110 N99 N10 N20 N32 K19 Lookup(K19) N80 N60 68

Chord: gyors/skálázódó keresés - II Minden csomópont m további bejegyzést tartalmaz Minél közelebbi a kulcs annál részletesebb információval rendelkezik róla a csomópont Általában nem biztosítja az azonnali célba jutást 69

Új érkezők Három lépésben (alap működés) Újonnan érkező mutató táblájának feltöltése Gyűrű csomópontok mutató táblájának frissítése Kulcsok cseréje Lusta vagy kevésbé agresszív működés Csak a követő csomópont beállítása Periodikus követő successor, megelőző predecessor ellenőrzés Periodikus mutató tábla frissítés 70

Új érkező: mutató táblák Kiindulás: bármely p ismert csomópontból Kérjük meg p-t, hogy építse fel a mutató táblánkat Táblázat visszaadása N5 N36 N99 N20 1. Lookup(37,38,40,,100,164) N40 N80 N60 71

Új érkező: gyűrű mutató táblák A gyűrű csomópontok mutató tábláinak frissítése új érkező a frissítés funkciót kelti életre a szomszédos csomópontokban csomópontok rekurzívan frissíttetik a további csomópontok mutató tábláit N99 N80 N5 N20 N36 N40 1. N40 successor(n36) 2. N36 értesíti N40-et N36.predecessor N40.predecessor N40.predecessor N36 3. N20 frissít (stabilizál) N20.successor N40.prececessor N60 72

Új érkező: kulcsok kicserélése A követő csomóponttól az megfelelő kulcsok átvétele csak a hozzárendelt tartományhoz tartozó kulcsok átadása N5 N99 N80 N20 N36 N40 K30 K30 K38 K38 Copy keys 21..36 from N40 to N36 N60 73

Új érkezők: keresés Korrekt mutató táblák esetén O(log N) Ha csak a követő lánc helyes, akkor is korrekt, de lassabb működés Hibás követő lánc, szünet majd újra próbálkozni 74

Hibák kezelése - I Csomópontok kiesése (hiba) helytelen keresést eredményezhet N102 N113 N120 N10 N85 Lookup(90) N80 N80 nem ismeri az őt követőt, így a keresés eredménytelen A követő lánc elégséges a keresés sikeréhez 75

Hibák kezelése - II Követő lista Az egyetlen követő helyett r soron követő csomópont regisztrációja Hiba esetén ismeri a soron következő (élő) csomópontot helyes keresés Valószínűségi garancia r megválasztása, hogy a keresési hiba valószínűsége megfelelően alacsony legyen r ~ O(log N) 76

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 Teoretikus eredmények összhangban a numerikus vizsgálatokkal 77

Average Messages per Lookup Keresés Költség: O(log N) összhangban a teoretikus eredményekkel Number of Nodes 78

Robosztusság - I Statikus eset hiba = csomóponti hiba, nincs többszörözve a kulcs Kulcsok egyenletesen elosztva (SHA-1) 79

Robosztusság - II Dinamikus eset: mutató tábla hibás csomópontra mutat hibás útvonal 500 csomópont kezdetben stabilize( ) hívás átlag 30sec 1 keresés/sec (Poisson) x {join fail}/sec (Poisson) 80

Chord implementáció 3000 soros C++ kód Library amely tetszőleges alkalmazáshoz linkelhető Kis Internet teszthálón kipó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 81

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 olyan objektumokat is megtalálhat amelyek nincsenek adott géphez kötve 82

Erősségek Teoretikus eredményeken alapul (konzisztens hash) Bizonyított teljesítmény analízis nagy valószínűséggel Robosztusság 83

Gyengeségek és felvetések Korántsem olyan egyszerű mint amilyennek látszik Új érkezők túl sok üzenet és frissítés (pl. kulcsok cseréje, mutató táblák) konvergencia kérdése ha a lusta frissítést használjuk Legrosszabb esetben a keresés lassú lehet Kulcsok teljes egyezőség kulcsszó vagy regexp keresés Biztonság rosszindulatú adatok (key) rosszindulatú Chord tábla 84

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 85