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