peer 2 peer sistemas operativos distribuidos alumno: abel santín
TRANSCRIPT
Peer 2 Peer
Sistemas Operativos Distribuidos
Alumno: Abel Santín
1- Introducción
P2P (Entre iguales)
No tiene clientes y servidores fijos, sino una serie de nodos que se comportan a la vez como clientes y como servidores de los demás nodos de la red.
Todos los nodos se comportan igual y pueden realizar el mismo tipo de operaciones.
A pesar de que el P2P ha sido popularizado por el intercambio de música por Internet, este no es el único uso que se puede dar a esta tecnología. Skype SETI (Search for Extraterrestrial Intelligence Institute). RTVE emisión en directo a través de P2P
Elementos de una Red P2P (I) Par: entidad capaz de desarrollar algún
trabajo útil y de comunicar los resultados de ese trabajo a otra entidad de la red, ya sea directa o indirectamente . Par simple: Sirven a un único usuario final,
permitiéndolo proporcionar servicios desde su dispositivo y empleando los servicios ofrecidos por otros pares de la red
Súper-par: Ayudan a los pares simples a que encuentre otros pares o a otros recursos de los pares
Elementos de una Red P2P (II) Grupo de Pares: Un grupo de pares es un conjunto
de pares formado para servir a un interés común u objetivo dictado por el resto de pares implicados.
Servicios: proporcionan una funcionalidad útil que se consigue mediante la comunicación de los distintos pares Servicios de pares: Funcionalidades ofrecidas por un par
concreto de la red a otros pares Servicios de Grupo de pares: funcionalidades
proporcionadas por varios miembros del grupo consiguiendo así acceso redundante al servicio.
Arquitectura de las redes P2P (I)
Par B (bb.mp3)
Par C (cc.mp3)
Par D (dd.mp3)
ServidorBbb.mp3Ccc.mp3Ddd.mp3
Par A (¿cc.mp3?)
1- ¿cc.mp3?
2- Par C
3- cc.mp3 Conexión directa
Flujo de Datos
Modelo Híbrido o Centralizado (Napster)
Rendimiento ElevadoCoste Alto
Arquitectura de las redes P2P (II)
Par F Par E
Par C – ccc.mp3 Par B
Par D
Par A ¿ccc.mp3?
Conexión directaFlujo de Datos
¿ccc.mp3?¿ccc.mp3?
¿ccc.mp3?
¿ccc.mp3?
ccc.mp3
ccc.mp3 ccc.mp3
Modelo P2P Puro o totalmente descentralizado (Gnutella)
El modelo P2P puro es más robusto al no depender de un servidor central Económico Elevado tiempo y sobrecarga de ancho de banda.El recurso buscado y existente ni siquiera pueda ser encontrado
Arquitectura de las redes P2P (III)Modelo P2P Mixto o semicentralizado
Conexión directaFlujo de Datos
Par A (¿cc.mp3?) Par Z (cc.mp3)Superpar
Z cc.mp3 (¿cc.mp3?) (¿cc.mp3?)
cc.mp3->Z
cc.mp3->Z
Red Escalable Reducción del número de nodos involucrados en el encaminamiento Buen tiempo de respuesta
Búsqueda de Pares, Contenidos y Servicios La búsqueda de información (pares, contenidos y
servicios), dada la ausencia de un conocimiento global de los datos y recursos involucrados, es un aspecto fundamental en entornos P2P Búsqueda en caché: Cada par mantiene una caché de
recursos previamente descubiertos. Búsqueda directa: Pregunta directamente a otros pares de
la red con los que tenga conexión directa (Arquitectura P2P pura)
Búsqueda indirecta: Los superpares actúan como fuente de información de localización de pares y otros recursos conocidos. Además esos hacen la búsqueda en nombre del par (Arquitectura P2P mixta)
Tablas Hash Distribuidas
Una tabla Hash es un conjunto de pares <clave,valor> Sus operaciones básicas son:
Void Almacenar (Clave, Valor) Valor Buscar (Clave)
91-123-45-67Juan Gomez
91-345-67-89Pepe Ruiz
valorclave
Objetivo: Distribuir el contenido de la Tabla Hash entre los distintos pares que forman la red P2P
DHT (Situación Inicial)
08
00
12 04
10
14
06
02
Simplificación de un protocolo DHT para k=4 bits
Distancia entre dos nodos (I)
Def distance (a,b):
If a==b:
Return 0
Else if a<b:
Return b-a;
Else:
Return (2^k) + (b-a)
Distancia entre dos nodos (II)
08
00
12 04
10
14
06
02D
istancia:6
Distancia=(ID destino – ID origen) mod 2k
Distancia entre dos nodos (III)
Tal y como se ha definido la distancia no es recíproca entre dos nodos. Nodo más cercano: Aquel con una distancia menor
08
00
12 04
10
14
06
02D
istancia:10
Distribución de contenidos en DHT Cada nodo es una DHT estándar Las operaciones de consulta y almacenaje se hacen en
el nodo adecuado de la red. Proceso para conocer el nodo adecuado
Aplicamos un algoritmo hash a la clave que queremos almacenar, o recuperar obteniendo una clave de k bits
Buscamos el nodo con ID mas cercana (menor distancia) pero mayor al valor de k bits de la clave
Distribución de contenidos en DHT00
Lalala.mp3Func Hash <05,00> <clave,valor>
El nodo 00 quiere compartir lalala.mp3 ¿Dónde almacena ese dato?Nodo adecuado 06
00 02 04 06
<05,00>
02
¿Lalala.mp3?Func Hash <05,??> <clave,valor>
El nodo 02 quiere saber donde conseguir lalala.mp3 ¿Quién conoce quien guarda ese dato?Nodo adecuado 06
00 02 04 06
<05,00><05,??>
Funciones de Búsqueda y AlmacenajeDef findNode (Start, key)
Current=startWhile distance (current.id , key) > distance (current.next.id, key)
Current=current.nextReturn current
Def lookup(start, key)Node=findNode(start, key)Return node.data[key]
Def store (start, key, value)Node=findNode(start, key)Node.data[key]=value
Unión a una DHT
1. Obtener un ID de nodo no repetido
2. Búsqueda de su ubicación (mismo algoritmo de búsqueda visto)
3. Copia de la información del nodo predecesor que le corresponde al nuevo nodo
4. Actualización del puntero
04 06
<05,00>05
<05,00>
Desunión de una DHT
El nodo antes de abandonar copia la información a su predecesor.
Actualización de los punteros.
04 06
<05,00>
05
<05,00>
Desunión abrupta
En caso de caída de un nodo la información almacenada en dicho nodo deja de estar disponible temporalmente.
Los distintos protocolos establecen mecanismos de almacenamiento de la información pasado un tiempo para que la información vuelva a estar disponible
Mejoras en la búsqueda
Media de número de saltos = (Nº Nodos / 2) O(n) Puede llegar a ser lento si el número de nodos es muy
grande. Solución: Cada Nodo tiene k punteros a otros nodos.
O(log n) Sea x uno de estos punteros (1<=x<=k). El contenido del
puntero x se determina tomando el ID del nodo y buscando el nodo responsable de la clave (id + 2**(x-1) ) mod (2k)
Def update (node):For x in range (x)
oldEntry=node.finger[x]node.finger[x]=findNode (oldEntry, (node.id + (2**x)) % (2**k))
Optimización de la búsqueda
08
00
12 04
10
14
06
02
En este caso el nodo 00 debería apuntar a los nodos 01,02,04 y 08El nodo 04 debe apuntar a los nodos 05,06,08 y 12!!En la tabla de nodos apuntados de 00 aparece 04 pero no a la inversa¡¡
Algoritmo con K punteros
Def findFinger (node,key)Current=nodeFor x in range (k)
If distance (current.id, key) > distance (node.finger[x].id, key)
Current=node.finger[x]Return current
Def lookup (start, key)Current=findFinger (start, key)Next=findFinger(current, key)While distance (current.id, key) > distance (next.id, key)
Current=nextNext=findFinger(current,key)
Return current
Definición de la distancia como XOR Posibilidad para un nodo de añadir mas punteros a
nodos en su tabla, cuando contacta con otros nodos durante la búsqueda
Desafortunadamente, las tablas de punteros que hemos visto son unidireccionales. Un nodo no estará en la tabla de nodos apuntados de los nodos a los que el apunta.
Solución=Calcular distancia mediante la operación XOR
Distancia(A,B)=Distancia(B,A) Si A está en la tabla de punteros de B entonces B está en la tabla de A. Los nodos pueden actualizar sus tablas de punteros guardando la tabla de los nodos a los que consulta.
Kademlia
Una cuestión con el diseño presentado es que si un nodo en la ruta no quiere cooperar. Entre dos nodos hay solo un camino, así que hacer búsquedas entre nodos caídos es imposible. Kademlia DHT resuelve esto ampliando la tabla de punteros a nodos conteniendo j referencias para cada nodo, en lugar de sólo una.
Además Kademlia da preferencia en su tabla de nodos a aquellos que más tiempo llevan, añadiendo tan solo nuevas referencias en caso de que no tenga la tabla llena.
Características y Beneficios del P2P Descentralización Escalabilidad Anonimato Propiedad compartida Rendimiento Seguridad Tolerancia a Fallos Interoperabilidad
JXTA
El proyecto JXTA intenta convertirse en una plataforma modular que provee bloques de construcción simples y esenciales para el desarrollo de un amplio rango de servicios y aplicaciones distribuidas basadas en P2P.
Ambiente descentralizado que minimiza los puntos únicos de fallo y no es dependiente de ningún servidor centralizado.
Los servicios JXTA pueden ser implementados para interoperar con otros servicios. Por ejemplo, un servicio de comunicación P2P de mensajería instantánea puede ser fácilmente agregado a una aplicación P2P de compartición de ficheros si es que ambos soportan protocolos JXTA.
La forma de funcionamiento se basa en un conjunto de protocolos P2P simples y abiertos que permiten que cualquier dispositivo de red se comunique, colabore y comparta recursos.