PEER TO PEER

Anuncio
PEER TO PEER
Gustavo Ortega #09-10590
Krysler Pinto #09-10661
AGENDA
1. Definición
2. ¿Por qué P2P?
3. Características
4. Clasificación
5. P2P privado
6. Tablas de Hash distribuidas (DHT)
7. CHORD
8. Skype
9. Bittorrent
DEFINICIÓN
P2P (peer to peer o redes entre pares o iguales) Se
refiere a un tipo de arquitectura de aplicaciones, que
conecta un gran número de ordenadores (nodos)
para compartir cualquier cosa que esté en
formato digital (videos, imágenes, música etc.)
Funcionan sin clientes ni servidores fijos sino una
serie de nodos que se comportan como iguales
entre sí
¿POR QUÉ P2P?
Actualmente, en Internet el ancho de banda o las
capacidades de almacenamiento y cómputo son
recursos caros.
CARACTERÍSTICAS
Escalabilidad: las redes p2p una cobertura mundial
dentro de las cuales millones de usuarios las utilizan
día a día.
Descentralización: son redes entre nodos iguales
Robustez: por ser redes descentralizadas
Repartición de recursos entre usuarios: existe un
intercambio constante de información.
Seguridad: no es una característica muy
desarrollada en las P2P.
Anonimato: En estas redes siempre funciona el
anonimato de los usuarios.
CLASIFICACIÓN
(Acorde a grado de centralización)
REDES CENTRALIZADAS
●
●
●
●
●
●
SE rige bajo un único servidor, que sirve como
punto de enlace entre nodos
Falta de escalabilidad
Todas las comunicaciones dependen de la existencia
del servidor.
Puntos únicos de fallo
Situaciones legales
Consumo de ancho de banda.
REDES DES-CENTRALIZADAS
●
●
●
Los nodos actúan como cliente y como servidor
No existe servidor central que maneje las conexiones
de red
No hay enrutador central que administre las
direcciones
P2P PRIVADO (F2F)
Las redes de P2P Privado peer-to-peer (P2P)solo
permiten que algunos computadores de confianza se
conecten para compartir archivos. Esto se logra a través
de un servidor central o hub para autenticar los clientes
Los usuarios pueden intercambiar passwords con sus
amigos para crear una red descentralizada
Ejemplo: WASTE o OneSwarm
WASTE
WASTE es un protocolo y un software
friend-to-friend que permite la
comunicación y el intercambio de archivos
de forma cifrada en pequeños grupos
de usuarios de confianza
TABLAS DE HASH DISTRIBUIDAS
Proveen un servicio de búsqueda similar al de las
tablas de hash, donde pares (clave, valor) son
almacenados en el DHT, y cualquier nodo participante
puede recuperar de forma eficiente el valor asociado
con una clave dada
La responsabilidad de mantener el mapeo de las claves
a los valores está distribuida entre los nodos.
Ej: BitTOrrent
Las búsquedas por medio de DHTs fueron motivadas
originalmente por los sistemas peer-to-peer como
Napster, Gnutella.
La diferencia entre estos sistemas estaba en cómo
encontraban los datos que tenían sus pares:
Napster : servicio de indexado central
Gnutella : modelo de consultas por inundación.
CHORD
Es un protocolo y algoritmo para las tablas de hash
distribuidas en P2P. Desarrollado en MIT
Un nodo debe almacenar los valores de todas las claves
de las cuales es responsable
Chord específica como son asignadas las claves a los nodos
y como un nodo puede descubrir el valor de una clave
primero ubicando el nodo responsable de dicha clave
Nodos y claves son asignados un identificador de m-bits
utilizando el algoritmo de SHA-1 como función de hash.
NODOS
SHA-1 (DirIP)
CLAVES
SHA-1 (clave)
m: número muy grande para evitar colisiones
Nodos, a través de sus
identificadores son
organizados en un anillo
=> Chord ring
La clave K es asignada al nodo cuyo identificador es igual
o mayor que el identificador de la clave.
Este nodo es llamado successor(k) y es el primer nodo ,
con sentido de las agujas del reloj del nodo K
Localización simple de un nodo
Número de mensajes LINEAL! en el num. de nodos
Información adicional de routing para para acelerar los
lookups
FINGER TABLE
Cada nodo (N) contiene una tabla de routing de m
entradas(m: num de bits del identificador)
La entrada i en la tabla del nodo N, contiene el
primer nodo (S) que corresponde a :
s = successor (n + 2 i-1)
finger[i] = successor(n+ 2 i-1)
i=1
finger[i] = successor(n+ 2 i-1)
i=2
finger[i] = successor(n+ 2 i-1)
i=6
BUSQUEDA CLAVE = 54
BUSQUEDA CLAVE = 54
Numero de mensajes O(log N)
PROTOCOLO DE ESTABILIZACIÓN
Estabilizar(): El nodo N pregunta a su sucesor, por su
predecesor (llamémoslo P ) y decide si P debe ser el
nuevo sucesor de N (Sucede si P se acaba de unir al
sistema)
Notificar(): Notifica al sucesor de N de su existencia,
para que éste pueda cambiar su predecesor a N
Fix_fingers(): actualiza las finger tables
INCLUIR UN NODO
Cada cierto tiempo un protocolo de estabilización corre en
background, actualiza finger tables y sucesores
Caída de nodos
¿Qué sucede si N14,
N21, N32 fallan
simultáneamente?
¿Cómo puede N8 adquirir
a N38 como suceso?
Cada nodo contiene una lista de sucesores de tamaño R.
SKYPE
Historia
● Diseñado en 2003 por el danés Janus Friis y el sueco Niklas
Zennström
● En septiembre de 2005 la empresa fue comprada por eBay
por 2.600 millones de dólares
● Caída del 16 de agosto del 2007 por una actualización de microsoft
windows
● Caída del 22 de diciembre del 2010 por problemas en los super
nodos
● En mayo 2011 Microsoft compra Skype por un valor de 8.5
Billones de dólares
● Noviembre del 2012 Microsoft anuncia retirada de windows live
messenger en marzo del 2013 para dar paso skype como media
de comunicaciones principal de microsoft
Componentes de SKYPE
Nodos-SuperNodos: Características que pueden tomar los usuarios en
la red P2P de Skype
Servidor de Login: Único servidor donde se almacenan el usuario y
la contraseña de los usuarios
Conexion con los Super-nodos: Cado nodo se contiene una tabla local
con las direcciones y los puertos de los Super-nodos.
VozIP: Es un grupo de recursos que hacen posible que las
señales de voz viaje a través de Internet empleando un protocolo
IP
VozIP
Componentes: Clientes, Servidores, Getaway
Estándar VoIP(H.323): Definido en 1996 por la UIT (Unión
Internacional de Telecomunicaciones) proporciona a los diversos
fabricantes una serie de normas con el fin de que puedan
evolucionar en conjunto.
Estándar VoIP(SIP): “Protocolo de Inicio de Sesión" por sus siglas
en Inglés es un protocolo reciente que es en la actualidad el
mayormente utilizado.
Arquitectura de Skype
BitTorrent
Historia
● Protocolo diseñado e implantado por Bram Cohen en
2001, Actualmente es mantenido por la empresa
BitTorrent Inc.
● En 2003 nace The Pirate Bay(TPB) principal web
de descarga de torrents en el mundo
● En noviembre 2004 Bittorrent era el responsable del
35% del tráfico en internet
● En 2009 bittorrent anunció que tiene el mismo
número de usuarios activo que facebook y youtube
juntos
Estructura
Peers(Puntos): Usuarios en la red.
Leechers(Sanguijuelas): Usuarios que están descargando un
archivo pero no lo tiene completo. También se les denomina a
aquellos usuarios que descargan archivos y no los comparten.
Seeders(Semillas): Usuarios que tienen el archivo completo.
Tracker(Rastreadores): Servidor especial que contiene la
información para los peers se conecten unos con otros. Es la
única forma de localizar los peers que contienen los archivos que
se quieren descargar.
Estructura
Swarm(Enjambre): Son los usuarios que descargan un mismo
archivo bajo un mismo tracker.
.torrent: Archivo que contiene la información del archivo que
queremos bajar codificada mediante Bencoding.
● Bencode: Codificación que usa caracteres ASCII, que soporta
tipos como String, enteros, listas y diccionarios. Tiene su
lenguaje en particular pero esta estructurado de la siguiente
manera.
Estructura Bencode
●
●
announce - la URL del tracker
info - esto crea un diccionario cuyas claves son independientes de si uno o más archivos son
compartidos:
●
name - directorio sugerido donde el o los archivos serán guardados
●
piece length - número de bytes por pieza. Es comúnmente 218 = 256 KiB = 262,144 B.
●
pieces - una lista de hash. Esto es la concatenación de cada hash SHA-1 de las piezas.
Debido a que SHA-1 devuelve un hash de 160 bits, pieces será una cadena cuya longitud
será un múltiplo de 160 bits.
●
length - tamaño del archivo en bytes (solo cuando un archivo es compartido)
●
files - una lista de diccionarios cada uno correspondiente a un archivo (solo cuando múltiples
archivos son compartidos). Cada diccionario tiene las siguientes claves:
●
path - una lista de cadenas correspondientes a los nombres de los subdirectorios,
el último de los cuales será el verdadero nombre del archivo
●
length - tamaño del archivo en bytes.
Ejemplo de un archivo torrent
{'announce': 'http://tracker.site1.com/announce',
'info: {
'name': 'directoryName',
'piece length': 262144,
'files': [ {'path': '111.txt', 'length': 111}, {'path': '222.txt', 'length': 222} ],
'pieces': '6a8af7eda90ba9f851831073c48ea6b7b7e9feeb...
8a43d9d965a47f75488d3fb47d2c586337a20b9f'
}
}
Funcionamiento
1. Un usuario baja de un servidor web un archivo .torrent que contiene la información
del fichero que queremos descargar.
2. Este archivo .torrent se abre con algún "programa cliente", que sabe interpretar
dicha información por ejemplo μtorrent, Bitcomet, Vuze.
3. El tracker y el peer se comunican a través de una 'conexión HTTP'. El tracker
informa de la lista de todos los peers y seeds que contienen partes del archivo a
descargar. El tracker se actualiza con la información del nuevo peer que acaba de
ingresar.
4. Una vez que el peer sabe dónde tiene que buscar las partes necesarias, este
peer se comunica con otros mediante 'sockets TCP' o 'UDP' y el archivo empieza a
descargarse en el ordenador del usuario. Cada parte descargada se comparte
automáticamente con otros peers.
Mejoras al protocolo
1. DHT: La idea es que los peers conserven la información de los nodos
vecinos para aliviar al tracker, así se disminuye el cuello de botella.
EL DHT en el protocolo aun no esta totalmente implementado pues
aún se necesita el tracker para conocer los primeros peers.
2. Web Seeding: La idea es usar las paginas web de donde se
descarguen los .torrent como seeds con el archivo completo.
BitTornado.
3. Super Seeding: sirve para que el primer seed que sube un nuevo
archivo pueda reducir el número de piezas que tiene que subir
para crear las primeras semillas y para que los peers que lo están
bajando lo puedan hacer más rápidamente.
Preguntas
Descargar