Post on 24-Jan-2016
Francisco Gamboa HerreraTanya Pérez Herrera26 Noviembre 2010
Objetivos Implementación de un sistema de
intercambio de archivos mediante una red P2P.
Con el sistema terminado, lograr que se produzca el intercambio eficiente de archivos entre nodos en la red.
Lograr que nuevos nodos se unan a la red y sean capaces de compartir archivos.
Peer to Peer Red de computadoras en la que todos o
algunos aspectos funcionan sin clientes ni servidores fijos, sino una serie de nodos que se comportan como iguales entre sí.
Las redes P2P permiten el intercambio directo de información, en cualquier formato, entre los ordenadores interconectados.
P2P estructurado, mantienen una estructura fuerte (en la mayoría de los casos, un anillo)Ej: Pastry
P2P no estructurado, tipo grafoEj: Napster, Gnutella y KaZaA
Clasificación
¿Por qué Pastry? La mayoría de los sistemas de intercambio
de archivos que conocemos utilizan redes de tipo no estructuradas.
Ej: Bittorrent, Gnutella, KaZaa, eMule, etc. Innovar utilizando un tipo de red no
convencional para sistemas de transferencia de archivos.
Características generales: Estructura de anillo Auto-organizable Balanceo de carga natural Nodos se identifican por nodeID: posición
(rango 0 a 2^128 - 1) Para N nodos, Pastry rutea en menos de log N
pasos
Pastry
Tabla de Estado de un Nodo
Algoritmo de ruteo: Route(Message, clave K) El número de salto es igual al log(N), donde N
es el numero total de nodos en el anillo. Si una gran cantidad de nodos hacen una misma
consulta, éstas se van a repartir entre los nodos del leaf-set
Nodo Y rutea y encuentra el dato en X
Búsqueda de Datos
Algoritmo de Ruteo
Se pasa el dato al nodo más cercano numéricamente al SHA("dato"). El nodo que recibe (la raíz), pasa a todos los nodos de su leaf-set una copia del dato.
xx
0
SHA(“Superman”)=X
X es raiz de Superman
Almacenamiento de Datos
FreePastry Implementación open-source de Pastry para el desarrollo en internet.
Corresponde a una API desarrollada en JAVA.
Para mas información visitar http://www.freepastry.org/
Carta Gantt
Diseño definitivo Ingreso de un nuevo nodo a la red Búsqueda de archivos Catálogo de Búsqueda
Inicialización Limpieza
Réplicas Inicialización Limpieza
Transferencia de archivos Salida de un nodo de la red
Ingreso nuevo nodo a la red
Una vez ingresado el nodo hace SHA de cada archivo que quiere compartir (Ej: SHA(“Superman”) para que el nodo con el id = al resultado tenga la ip del nodo que contiene el archivo.
Búsqueda de archivos Para buscar, el nodo hace SHA(”lo_buscado”)
y va a llegar al nodo que sabe dónde encontrar el archivo.
Si el archivo se encuentra en el sistema se le responde un mensaje con los nodos que tienen dicho archivo (que segmentos tiene cada uno) simulación “tracker” de bittorrent
Catálogo de búsqueda El nodo numéricamente más cercano a la
clave SHA (“nombre”) es el encargado de saber quienes tienen dicho archivo.
El catálogo almacena el nombre del archivo, el nodeID del nodo que lo tiene y el numero de los segmentos que tiene.
Inicialización de catálogo Cuando un nodo ingresa a la red solicita los
catálogos a todo su leaf-set. En base a esto se calcula un rango de
aceptación de una entrada repetida igual a L/2, donde L es el largo del leaf-set.
Nota: Al menos la mitad de su leaf-set debe tener la misma entrada.
Limpieza de Catálogos Con el fin de mantener los catálogos
actualizados Cada cierto tiempo ∆t nodo realiza un tipo de
búsqueda especial para cada una de sus entradas
Esta búsqueda consiste en rutear sha(“archivo”) El nodo que recibe este mensaje verifica si quien
le envió se encuentra en su leaf-set En caso que se encuentre se le avisa que conserve la
entrada
Manejo de Réplicas Cada vez que un nodo decide compartir un
archivo el sistema se encarga de replicar ese archivo a su leaf-set.
La copia se envía a la carpeta “réplica” a la cual el usuario no tiene acceso. Además, se vacía cada vez que ingresa el nodo a la red.
Para mantener actualizadas las réplicas, se utiliza la siguiente estrategia:
Inicialización de la Réplica Cuando un nodo ingresa a la red, solicita a
los nodos de su leaf-set que le envíen un listado de los archivos que cada uno tiene en su carpeta “réplica”.
Nuevamente se considera un rango de aceptación L/2.
De esta forma el nodo construye una lista de los archivos que le corresponde tener.
Finalmente solicita estos archivos.
Limpieza de Réplicas Cada cierto tiempo ∆t el nodo solicita a su
leaf-set un listado de los archivos que tienen en su carpeta “réplica”.
En base a esto se verifica que los archivos del nodo se repitan al menos L/2 veces en las listas enviadas por el leaf-set.
De esta forma se mantiene actualizada la carpeta “réplica”.
Transferencia de archivos Se selecciona un segmento. De la lista de nodos que poseen ese segmento
se elige uno de manera aleatoria. El nodo que está buscando envía una
solicitud de transferencia de archivo enviando el nombre del archivo y el segmento que desea.
Salida de un nodo del sistemaLas salidas de nodos de la red no son
manejadas.El sistema se encarga de mantener nodos
y réplicas actualizadas.
Contribuciones al temaCatálogo de búsqueda
InicializaciónLimpieza
Manejo de réplicasInicializaciónLimpieza
Transferencia de archivosSegmentaciónAlgoritmo de descarga
Contribuciones al tema Permite creación de “nichos” o subredes de
intercambio de archivos.
Futuros trabajos
Existen posibles mejoras, utilizando nuestro sistema como base, por ejemplo: Algoritmo de descarga Creación de un sistema de puntuación para
usuarios
Conclusiones Demostramos que es posible realizar un
sistema de intercambio de archivos utilizando una red P2P estructurada.
Nuestra implementación de Catálogos de búsqueda demostró funcionar eficientemente.
Los sistemas de limpieza creados para nuestra aplicación funcionan de manera eficiente.
Conclusiones Comprobamos experimentalmente que
nuestro sistema es escalable.
La implementación de la descarga por segmentos de archivos escogidos de usuarios al azar le otorga a la red balanceo de carga.
Las réplicas de archivos al leaf-set de un nodo entrega a la red una alta disponibilidad de cada archivo.