Introducción a las Arquitecturas Peer-to-Peer (P2P)

Introducci´on a las Arquitecturas Peer-to-Peer
(P2P)
LSUB
GSYC
28 de abril de 2015
(cc) 2015 Laboratorio de Sistemas,
Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento NoComercial - SinObraDerivada (by-nc-nd). Para obtener la licencia completa, v´
ease
http://creativecommons.org/licenses/. Tambi´
en puede solicitarse a Creative Commons, 559 Nathan Abbott Way,
Stanford, California 94305, USA.
Las im´
agenes de terceros conservan su licencia original.
P2P vs C/S
• En el modelo cliente/servidor tenemos muchos clientes que
piden servicio a un servidor.
• En el modelo Peer-to-Peer (entre iguales), los participantes se
comportan como clientes y tambi´en como servidores.
• Los peers son din´
amicos, aparecen y desaparecen a lo largo del
tiempo.
Modelos
P2P con b´
usqueda centralizada (modelo h´ıbrido):
• Un servidor central contiene el mapa entre peers y contenido,
recursos del peer (ancho de banda, etc.).
• Las altas/bajas en la red se realizan en el servidor central.
• Las b´
usquedas se realizan en el servidor.
• La comunicaci´
on se realiza entre los peers.
• Desventaja: u
´nico punto de fallo en el servidor central.
• Ejemplo: Napster.
Ejemplo: BitTorrent
BitTorrent es la red P2P m´as usada actualmente:
• Es una red P2P h´ıbrida.
• El fichero se parte en trozos de 512/256 Kb. Cada trozo se
identifica y verifica con su hash SHA-1.
• El fichero .torrent contiene inforaci´
on sobre el fichero: nombre,
tama˜
no, bytes por trozo, SHA-1 de los trozos, y URL del
tracker.
• El tracker es un servidor que tiene la lista de los peers que
est´an compartiendo un fichero en concreto. El peer manda su
info al tracker y se baja la info de los otros peers del swarm
(enjambre).
Nota: El tracker puede ser substituido por una DHT (ver m´as
adelante): trackless torrent.
Ejemplo: BitTorrent
• Swarm: conjunto de peers que est´
an compartiendo un fichero
en concreto.
• Seed: un peer que tiene el fichero entero. Para poner un
fichero en BitTorrent tenemos que proporcionar un seed
original
• Cuando un peer consigue el fichero entero se convierte en
seed. Mientras tanto, es un leecher. Todos suben partes del
fichero mientras bajan otras.
Modelos
P2P asim´etrico (Superpeers):
• Existen dos tipos de peers, los normales y los superpeers.
• Los peers contienen los contenidos.
• Los superpeers contienen informaci´
on sobre algunos peers y
los superpeers.
• Los superpeers conocen a todos los dem´
as superpeers y
comparten con ellos la lista de peers que conocen con el
contenido.
• Las altas/bajas se realizan en un superpeer.
• Las b´
usquedas se realizan en un superpeer, que las propaga a
otros superpeers para encontrar un contenidos.
• Normalmente tienen una naturaleza est´
atica y son conocidos.
Modelos
P2P puro (sim´etrico):
• Todos los peers son iguales.
• Redes P2P puras no estructuradas: la red superpuesta
(overlay) es un grafo aleatorio.
• Redes P2P puras estructuradas: la red superpuesta se
construye mediante un algoritmo.
• ¿C´
omo se da de alta/baja un peer en la red?
• ¿C´
omo se busca en la red?
Modelos
P2P puro no estructurado:
• Alta: el peer tiene que conocer al menos un peer para poder
engancharse a la red overlay.
• Baja: baja expl´ıcita en los nodos vecinos o por timeout.
• B´
usqueda b´asica: por caminos aleatorios, por inundaci´on
(campo activo de investigaci´
on con muchas variantes
propuestas).
• Ventajas: overlay robusto ante fallos o ataques.
• Inconvenientes: b´
usqueda complicada y poco eficiente.
• Ejemplo: Gnutella, Kazaa.
P2P pura no estructurada
B´
usqueda por inundaci´
on:
• El peer pregunta a todos sus vecinos.
• Se aplica de forma recursiva: cada peer que recibe la
b´
usqueda la propaga a todos sus vecinos.
• Si un peer tiene el recurso, responde al que pregunta y no
propaga la b´
usqueda.
• Se limita el alcance de la b´
usqueda con una profundidad
m´axima.
• Hay problemas de escalabilidad: la propagaci´
on es exponencial
y los peers se sobrecargan con peticiones de b´
usqueda.
• La b´
usqueda es lenta.
P2P pura no estructurada
B´
usqueda por caminos aleatorios:
• El peer pregunta a uno o varios vecinos elegidos al azar.
• Se aplica de forma recursiva: cada peer que recibe la
b´
usqueda la propaga a uno o varios vecinos elegidos al azar.
• Si un peer tiene el recurso, responde al que le pregunta y no
propaga la b´
usqueda. La respuesta se encamina
• Tambi´
en se limita el alcance de la b´
usqueda con una
profundidad m´axima.
• La b´
usqueda es lenta.
P2P pura estructurada
• Cada peer tiene una posici´
on en la red overlay siguiendo una
topolog´ıa.
• Las b´
usquedas son mucho m´as eficientes.
• La implementaci´
on habitual es una Tabla Hash Distribuida
(DHT).
• Hay distintas DHT con distintos algoritmos de rutas y
diferentes estructuras: Chord, Pastry, Kademliam...
Ejemplo: Chord
• Cada peer tiene un ID u
´nico de m bits, 0 .. 2m − 1.
• Los IDs se ordenan en un c´ırculo (identifier circle) m´
odulo 2m .
• Se define el sucesor de un ID como el siguiente en el c´ırculo
siguiendo las agujas del reloj.
• Un peer conoce a su sucesor y su antecesor.
• P. ej. un c´ırculo con m=3:
Ejemplo: Chord
• Un elemento con clave K se almacena en el peer sucesor (K )
que est´e en la red
Ejemplo: Chord
Routing b´asico:
• Cada peer conoce a sus vecinos (antecesor y sucesor).
• Para llegar al nodo que tiene el elemento, se recorre el c´ırculo,
O(n).
Alternativa: Finger Table
• Un nodo A conoce los nodos:
A, A + 21 , A + 22 , A + 23 , ..., A + 2n
• Para llegar al nodo que tiene el elemento, salta al m´
as cercano
y despu´es se recorre el c´ırculo restante, O(log (n)).
Ejemplo: Chord
Cuando se une un nuevo peer (A), que tiene que conocer a alg´
un
otro peer (B)
• Se elige el ID de A con SHA-1(Ip, Port).
• Se inicializa la finger table y su antecesor (se pide a B que lo
resuelva).
• Se manda actualizar las finger tables y el antecesor del resto
de peers.
• Se manda transferir las claves/valor correspondientes al nuevo
nodo de la red (el antecesor de A se las transfiere a A).
Se ejecuta periodicamente un protocolo de estabilizaci´
on para
mantener los sucesores de los peers actualizados.
Ejemplo: Chord
Fallo de un peer:
• Aunque los pares clave/valor del peer fallido ya no se
encuentren en la tabla, el resto de la tabla tiene que seguir
funcionando.
• Un peer en realidad almacena una lista de los R sucesores m´
as
cercanos en el c´ırculo.
• Si un peer da a su sucesor como fallido, lo reemplaza con el
m´as cercano de la lista que est´e vivo.
• El protocolo de estabilizaci´
on har´a que los sucesores y las
finger tables terminen actualizadas.
• Se pueden guardar r´
eplicas de las clave/valor en los peers de
la lista de R sucesores.
Referencias
Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and
Hari Balakrishnan. Chord: A scalable peer-to-peer lookup
service for internet applications. SIGCOMM Comput.
Commun. Rev. 31, 4 (August 2001), 149-160.
http://doi.acm.org/10.1145/964723.383071