Réseaux pair à pair

Transcription

Réseaux pair à pair
Bref historique
✦
✦
P2P
introduit par napster (serveur musique), S. Fanning 1999
idée: partage contenu, stockage et bande passante des
utilisateurs (domestiques)
Plusieurs types
✦
✦
Classement selon les ressources partagées
✦
calcul: seti@home, folding@home
✦
fichiers: napster, gnutella, freenet, edonkey,...
Modèle
✦
✦
✦
Classement selon l’organisation
✦
non structurée: pas d’ordre entre les pairs
✦
structurée: organisation des pairs
chaque utilisateur :
✦
stocke un sous-ensemble de fichiers
a accès à (télécharge) des fichiers distribués
sur l’ensemble des pairs du système
chaque nœud est à la fois client et serveur
Défis
✦
Napster
retrouver où se trouve un fichier particulier...
✦
✦
✦
✦
✦
passage à l’échelle: gestion de millions de machines
dynamique : machines peuvent apparaître/disparaître
sans préavis
✦
Suppose un système d’index centralisé qui associe les
fichiers aux machines actives
Recherche d’un fichier E:
✦ recherche dans l’index➭machine contenant E (la + proche, la - chargée)
✦ transfert par ftp
Avantages: simplicité, facile d’implémenter un moteur
de recherche au dessus du gestionnaire d’index
Inconvénients: robustesse, passage à l'échelle
Exemple
3
Napster
1
4
2
Principes
✦
Gnutella
✦
✦
✦
✦
nœuds égaux avec 3 rôles:
✦ producteur/consommateur/routeur
nœud connaît son voisinage immédiat
✦ réseau logique (overlay network)
échange messages pour maintenir infrastructure
et faire recherche
chaque nœud est forcément routeur
transfert de fichiers par http
Gnutella
✦
système totalement décentralisé
✦
protocole
Recherche de fichier
✦
difficile (par inondation)
✦
envoi requête à tous les voisins
✦
de partage de fichiers sur un réseau
✦
redistribution des requêtes par multicast
✦
remplace napster en le décentralisant
✦
réponse d’une machine qui a le fichier
✦
tolérant aux pannes
✦
Bearshare, limewire, gnucleus
✦
pb: tout le rx peut être saturé de requêtes (résolu par attribution TTL, en gl TTL=7)
V(A)={B,C}
V(B)={D,E}
V(A)={B,C}
V(C)={D,E}
TTL=3
V(A)={B,C}
V(C)={D,E}
TTL=2
V(A)={B,C}
V(C)={D,E}
TTL=1
Inondation
Pare-feu
✦
✦
✦
✦
nœuds ne connaissent que leurs voisins
communication par transmission de voisin en
voisin limitée par TTL (horizon)
✦
possibilité de cycles dans le réseau; résolu par
mémorisation des messages antérieurs (cache
limité dans le temps) sinon risque de surcharge
Effectue un filtrage des paquets
✦ en entrée (destiné à un processus local)
✦ en sortie (permet de contacter un service distant)
En général, filtrage en entrée:
✦ machine distante ne peut contacter le processus local (P)
✦ (P) initie la connexion par un message push
✦ le pair sans firewall répond au push initié par (P); permet
le téléchargement fichier sur machine derrière le pare-feu
par un upload
✦ ne fonctionne pas si les 2 pairs sont derrière un pare-feu.
5 types de messages
✦
✦
✦
✦
✦
Ping: nœud signale son existence et cherche ses
voisins (inondation)
Pong: réponse à un ping
Query: recherche fichier correspondant à des
critères (inondation)
QueryHit: réponse: liste url ayant fichier
Push: message pour initier le transfert pour un
pair situé après un pare-feu ou un NAT.
Connexion
✦
Comment trouver ses voisins?
✦
✦
client se connecte à un nœud bien connu
(gnutellahost.com, router.limewire.com port 6346) et ping
propagé par inondation
✦
pairs répondent par un pong (voisins)
✦
nœud bien connu ferme la connexion
Plus un nœud reste longtemps dans le réseau, plus il
devient connecté
Problèmes
Freenet
inondation ne passe pas à l'échelle (nœud limité par son
horizon)
✦
✦
recherche fichier seulement par nom pas par contenu
✦
✦
part importante de messages de routage
✦
✦
✦
id nœuds =(IP,port) si panne temporaire, impossible de
retrouver le nœud
protocole de téléchargement http primitif (source
unique, pas //)
✦
✦
✦
conçu pour tolérance aux pannes et l’intimité
(privacy) axé sur le stockage et non la recherche
I. Clarke (Edinbourgh, 1999)
documents chiffrés, découpés et mis en cache sur
certains nœuds
utilisateurs
✦ fournissent disque et bande passante
✦ ignorent ce qu’ils stockent et où
https://freenetproject.org/faq.h
Architecture
Freenet
✦
✦
chaque fichier repéré par un identifiant unique
chaque machine stocke un ensemble de fichiers et
conserve une table de routage pour router les
requêtes
Structure de données
✦
✦
Pile maintenue par tt nœud
✦ id: ident. fichier
✦ next_hop: autre nœud
conservant l’id
✦ file: fichier id stocké sur le nœud
Forwarding
✦ chaque message contient l’id
auquel il se réfère
✦ si id est stocké localement stop
✦ sinon, chercher l’id le + proche
dans la pile et transmettre au
next_hop
id
next_hop
Exemple
file
Requête
✦
API: file=query(id)
✦
A réception d’une requête pour id
✦
✦
chercher si le fichier est stocké localement
✦
si oui, le renvoyer (de proche en proche)
✦
sinon retransmettre message
Utilisation TTL comme gnutella
Insertion
✦
✦
API: insert(id,file)
En 2 étapes:
✦ chercher le fichier à insérer (comme requête mais nœud
répond directement au demandeur)
✦ si non trouvé, l’ajouter
✦ en suivant le chemin aller et en l’ajoutant sur tous les
nœuds
✦ un nœud se substitue aléatoirement au demandeur
pour en empêcher l’identification
Exemple
✦
Insertion
insert(10,f10) non trouvé selon le chemin
insert(10, f10)
n2
n1
10 n1 f10
4 n1 f4
12 n2
10 n1 f10
9 n3 f9
n3
3 n1 f3
14 n4 f14
5 n3
Insertion
n4
n5
14 n5 f14
13 n2 f13
3 n6
4 n1 f4
11 n5 f11
8 n6
Insertion
n2 se substitue à n1 comme source
insert(10, f10)
n1
10 n1 f10
4 n1 f4
12 n2
orig=n1
insert(10, f10)
n2
n1
9 n3 f9
n3
3 n1 f3
14 n4 f14
5 n3
n4
n5
14 n5 f14
13 n2 f13
3 n6
4 n1 f4
11 n5 f11
8 n6
10 n1 f10
4 n1 f4
12 n2
n2
10 n1 f10
9 n3 f9
orig=n2
n3
3 n1 f3
14 n4 f14
5 n3
n4
n5
14 n5 f14
13 n2 f13
3 n6
4 n1 f4
11 n5 f11
8 n6
Insertion
Résumé
✦
insert(10, f10)
n2
n1
10 n1 f10
4 n1 f4
12 n2
10 n1 f10
9 n3 f9
orig=n2
n3
10 n2 10
3 n1 f3
14 n4
n4
n5
14 n5 f14
13 n2 f13
3 n6
4 n1 f4
11 n5 f11
8 n6
✦
.../...
Avantages
✦ fournit de l’anonymat
✦ entièrement décentralisé➭robuste et passe à
l’échelle
✦ interdit la suppression malicieuse
Inconvénients
✦ ne garantit pas qu’un fichier soit trouvé même
s’il existe sur le réseau➭↑TTL
✦ beaucoup de tables de routage
Insertion
Insert(10, f10)
n1
10 n1 f10
4 n1 f4
12 n2
n2
10 n1 f10
9 n3 f9
n3
10 n2 10
3 n1 f3
14 n4
n4
n5
10 n2 f10
14 n5 f14
13 n2
10 n4 f10
4 n1 f4
11 n5
P2P structuré
Structuration
✦
pour éviter la centralisation napster ou la jungle
gnutella
✦
affecter un contenu donné à un nœud donné
✦
extension des concepts freenet
✦
utilise des tables de hachage avec gestion des
collisions
Principe
✦
sha-1(file)= clé k de 160 bits
✦
envoi message insert(k,file) aux nœuds
✦
✦
message retransmis de nœud en nœud jusqu’à
trouver celui qui prend en charge la clé k selon
le découpage de l’espace des clés; stockage de
(k,file)
recherche à la freenet
Hashtables distribuées
✦
✦
✦
✦
✦
✦
associe une clé à un élément
stockage de l’elt dans la table à l’indice de clé
collision➭rangement dans une chaîne
DHT: cellules tables correspondent à des nœuds ≠
P2P à base de DHT, nombre nœuds variable donc le
nombre de cases aussi
solution par hachage consistant
✦ # val possibles ne dépend pas du # nœuds
✦ elt va sur nœud de val. hachage la plus proche
Protocoles
✦
CAN
✦
Chord
✦
Pastry
✦
...
Utilisé par
✦
BitTorrent : la distribution de fichiers
✦
TheCircle : partage fichiers et chat
✦
Dijjer: style freenet
✦
eMule: partage de fichiers
✦
I2P: intimité
✦
akamai: serveur de distributions (P2P en 2007)
P2P de calcul
Résumé
✦
concilie beaucoup d’avantages
✦
très étudié (et utilisé) en ce moment
✦
bcp évaluations protocole
Principe
✦
✦
utiliser CPU PCs sous-utilisés comme nœuds de
calculs pour calcul distribué
sur la base du volontariat (utilisateur installe
logiciel qui demande des tâches à traiter à un
serveur)
✦
extensibilité
✦
robuste à la très grande affluence
✦
architecture très centralisée (maître esclave)
✦
robuste à la disparition de source
✦
pas de communication entre les pairs
Seti@home
✦
✦
le pionnier
expérience scientifique en radio-astronomie exploitant la puissance
inutilisée de millions d'ordinateurs connectés via Internet dans un
projet de Recherche d'une Intelligence Extra-Terrestre (Search for
Extra-Terrestrial Intelligence)
Xgrid
✦
✦
basé sur système P2P
transforme ensemble machines LAN en
supercalculateur
✦
passage au wan possible
✦
analyse par FFT les données recueillies par radio-télescopes
✦
maître OS X
✦
peu de résultats
✦
clients unix
Distributed.net
✦
✦
✦
✦
créé en 1997 pour casser exhaustivement RC5-64
terminé en 2002 après 1757 jours de calcul
160 000 PC
problème de vérification de l’information
renvoyée, gestion des pannes...
Autres applications
✦
VoIP (Skype, Jabber, iChat, Gtalk, MSN)
✦
stockage archivage
✦
environnements collaboratifs (Groove)
✦
messagerie instantanée (MSN, AOL, iChat,...)
✦
publication robuste à la censure (ethernity, freenet)
http://2005.jres.org/slides/152.pdf
Organisation
Skype
✦
protocoles propriétaires
✦
par reverse engineering:
✦
✦
constitué en réseau logique (overlay network)
hiérarchique
chaque pair est classé comme super-pair ou pair
ordinaire.
51
Généralités
✦
application VOIP en P2P avec plusieurs millions
d’utilisateurs simultanés
✦
Par les créateurs de Fastrack et Kazaa
✦
Vendu à eBay en 2005 pour 2.6 milliards $
✦
racheté par Microsoft en mai 2011 pour 8.5
milliards $
50
Rôle super-pairs
✦
gèrent index de la relation (utilisateur, IP, port)
✦
✦
✦
distribués sur les super-pairs
organisation précise des index pas claire, probablement
sous forme DHT
assurent la fonction de relai (pour établir communication
quand les pairs sont derrière un nat ou firewall)
✦
attribution à la connexion d’un super-pair (init derrière
nat) qui gère la demande de connexion
52

Documents pareils