P2P – “Redes compañero a compañero como soporte de sistemas de archivos distribuidos” Mariano Marino [email protected] Alumno de la Universidad Nacional de Luján Resumen Este documento se encuentra dividido en dos partes. La primera parte describe el protocolo Peer to Peer (P2P), explicando su filosofía de trabajo, arquitectura, modo de operación y campos de aplicación. En la segunda parte, se hará un análisis de una aplicación P2P describiendo su funcionalidad, arquitectura y modo de operación. Introducción La arquitectura P2P nace a mediados de 1999 con la aparición de programas como Napster y Gnutella. Su objetivo es el intercambio en forma gratuita de archivos, particularmente musicales, por Internet. La popularización de estos programas permitió que la arquitectura fuera investigada y desarrollada con mayor profundidad. En la actualidad hay decenas de proyectos utilizando P2P, no solo para el intercambio de música, sino también para negocios, educación e investigación. Filosofía P2P se basa en la filosofía de compartir contenidos. Estos pueden ser recursos, como archivos de diferentes tipos, o servicios, como motores de búsqueda de información. Esto se realiza de compañero a compañero, sin requerir los servicios de un servidor central. Es decir, que cada nodo contribuye con contenidos, y si uno no estuviera, el modelo P2P seguiría funcionando. Este es el problema que existe en la arquitectura Client/Server, en donde el éxito del modelo se basa en el buen funcionamiento y potencia del Servidor. P2P está orientado al equipamiento de bajo costo. No necesita software específicos para su implementación; solo requiere un S.O. que soporte TCP/IP. Además, permite que los recursos de cada nodo trabajen en forma conjunta para mejorar el procesamiento de datos y almacenamiento. P2P no utiliza un servidor central, por lo tanto, la tasa de disponibilidad es alta y el trabajo grupal no se perjudica por la ausencia o falla de un nodo. Los métodos de encriptación pueden ser establecidos por los nodos dando una seguridad en el intercambio de información muy alta. Arquitectura (4) Existen cuatro arquitecturas que se diferencias unas de otras por la forma de búsqueda de nodos activos y contenidos: P2P Puro Este modelo implementa una arquitectura en donde los nodos pueden cumplir tres funciones: La de servidor, cuando un nodo requiere información de otro. La de cliente, cuando éste pide información a un par. La de ruteador, cuando el nodo se encuentra como intermediario entre otros dos. Un nodo puede recurrir a diversos algoritmos para realizar la búsqueda, por ejemplo, utilizando una lista de nodos conocidos o enviando un mensaje Multicast o Broadcast a la red. P2P con Servicio de consulta de Nodos Este modelo implementa una arquitectura en donde un nodo, puede realizar una consulta a un servidor para saber cuales están activos en la red. Luego de consultado, el nodo podrá establecer una conexión directa con su par para compartir recursos. La aplicación P2P debe informar a este servidor, su conexión y desconexión para mantener la integridad del servicio. Cabe aclarar que el servidor no es el típico Server de la arquitectura Cliente/Servidor, sino que es un nodo que presta el servicio de consulta de nodos. P2P con Servicio consulta de Nodos y recursos Este modelo implementa, al igual que P2P con Servicio de consulta de Nodos, un equipo central que tendrá la misión de almacenar los nodos activos y los contenidos que éstos comparten. P2P con Servicio de consulta de Nodos, recursos y fuentes de contenidos Este modelo implementa, al igual que P2P con Servidor de consulta de Nodos, un equipo central que cumplirá dos misiones. La primera es tener almacenados los nodos activos y los contenidos que comparten. La segunda, almacenar contenidos para compartir con los nodos conectados. Modo de trabajo (1, 3, 6, 7) En la arquitectura P2P Puro existen tres acciones básicas: la búsqueda de nodos activos, la consulta y la transferencia de contenidos. En la búsqueda, el nodo emite un mensaje Ping en forma Broadcast o Multicast a la red. Este será respondido por los nodos activos con un mensaje Pong. Luego, el nodo enviará una consulta, que será respondida por aquellos nodos que posean los recursos solicitados. Seguido a esto, el usuario podrá seleccionar los recursos a ser transferidos. En la arquitectura P2P Híbrido también existen tres acciones básicas: la registración, la consulta y la transferencia de contenidos. En el proceso de registración, la aplicación P2P indicará al nodo prestador del Servicio de consulta que él está activo y si es necesario, le enviará la información sobre los contenidos que posee para compartir. Cuando una consulta es recibida por el servidor, se procesará. Esto puede realizarse, dependiendo de la arquitectura, mediante la búsqueda en índices o enviando la consulta a los nodos conectados. Luego, la respuesta será enviada al nodo para que el usuario pueda seleccionar los recursos a transferir. P2P Puro P2P Híbrido Consulta de nodos (Ping/Pong) Registración del nodo Búsqueda de recursos Búsqueda de recursos Pedido y transferencia de contenido Pedido y transferencia de contenido Campos de aplicación (2) Los campos de aplicación de la tecnología P2P son variados. Entre ellos podemos nombrar: • • • • • • Comunidad Web. Cualquier grupo con intereses en común, pueden usar P2P para cambiar recursos. e-Business. P2P puede dar nuevas posibilidades, como intercambio más eficiente de información, ya sea con proveedores o con clientes. Motores de búsqueda. Ofrecer información más actualizada. Protección de virus. Permite una colaboración en la detección y eliminación de virus. Educación a distancia. Permite una interacción entre los participantes permitiendo el intercambio de sonido y video. Almacenamiento y procesamiento distribuido. Múltiples clientes ofrecen un espacio de almacenamiento más flexible y fiable. Análisis de OpenNap v0.44 Introducción En esta segunda parte, se realizará un análisis del programa OpenNap v0.44. Este es un servidor Open Source™. Se encuentra escrito en ANSI C y está diseñado para correr en múltiples plataformas, ya sea Linux, FreeBSD, Windows, OS/2, entre otros. OpenNap utiliza parte del protocolo Napster, ya que éste, es un protocolo privado y la información que se conoce de él se ha conseguido a través de ingeniería inversa. Instalación (5) La instalación es simple, solo hay que correr la aplicación Setup o compilar los fuentes. En forma predeterminada, los archivos de configuración se generarán en c:\opennap. Setup pedirá el Usuario (nickname), contraseña y e-Mail del administrador. Una vez ingresados, el programa de instalación finaliza. Luego, se podrá configurar los servidores con los cuales intercambiará la información de los nodos activos. Para ello se utilizará el archivo c:\opennap\servers. El mismo tendrá el siguiente formato: <Server Name> <Password> <Local_Password> Funcionalidades (5) Las funcionalidades principales de OpenNap son: • • • • Permite el intercambio de archivos de cualquier tipo. En caso que se interrumpa el servicio, puede continuar la descarga una vez reestablecido éste. Canales de Chat. No requiere Internet para funcionar. Arquitectura (5) La arquitectura que utiliza el OpenNap es P2P híbrida con Server de consulta de nodos y contenidos. Puede tener varios servidores, ya sea a nivel Local o WAN, que interactúan entre si. OpenNap pone en funcionamiento el puerto 7777 o 8888 para su servicio. La conexión entre dos servidores se realiza mediante el puerto 8875. El Modo de funcionamiento, vista desde el cliente es el siguiente: 1. Conexión al servidor. 2. Enviar de información de los archivos que comparte. (Hasta 100kb, o sea unos 1000 archivos aproximadamente) 3. Realizar una consulta al servidor 4. Seleccionar los archivos a descargar (Dependiendo de la velocidad de conexión, uno o mas de uno a la vez) 5. Conexión con los diferentes nodos para realizar la descarga. 6. Cerrar la conexión. ANEXO - Capturas Se ha analizado el intercambio de mensajes entre dos nodos. Se utilizó para la captura dos PC conectadas de la siguiente manera: Nodos Activos Nombre: Usu1 Puertos abiertos: 1061 (Control) 1066 (download) 1058 (upload) Nombre: Usu2 Puertos Abiertos: 8888 (Server) 2082 (Download) Los mensajes intercambiados entre las partes poseen el siguiente formato: - Código de mensaje (2 bytes): indica que información está transportando. Su codificación es little-endian en donde el primer byte es el último y viceversa. (Ej. 0x1400 = 0x0014) Mensaje: es variable de acuerdo a la información que transporte. Su codificación es en ASCII puro. Nota: En muchos casos, las cadenas de caracteres pueden ser enviadas utilizando comillas dobles delante y detrás. Los datos se separan por un espacio (ASCII 0x20) Conexión - Inicio de sesión del usuario Usu1 cuya password es pass1. - El cliente utilizado es FileNavigator 2.8 A. - La cantidad máxima de resultados es 100 Puerto Origen 1061 1061 8888 1061 8888 Puerto Destino 8888 8888 1061 8888 1061 1061 8888 1061 8888 8888 1061 Id 0x002B 0x0002 0x0003 0x0063 0x026D Mensaje Usu1 pass1 1058 “FileNavigatior 2.8 A” 0 100 anon@red m VERSION OpenNap 0.44 SERVER Server- m There have been 3 connections to this server 1 359 1 0x0064 “C:\Musica\CDLQ–Rómulo y Remo.mp3” A..A 4348163 128 44100 271 n cantidad de mensajes con canciones compartidas… 0x00D6 0x00D6 2 434 1 0x002B Inicio 0x0002 Login Info: <Nick> <password> <port> "<Info-Cliente>" <Tipo-Conexión> [ <num.> ] 0x0003 Login ACK Info: <e-mail> 0x0063 Pedido de Mensaje de bienvenida 0x026D Mensaje de bienvenida Info: Texto normal. 0x002D (m) representa el salto de línea 0x0064 Notificación de archivos compartidos Info: "<Archivo>" <md5> <Tam. (Bytes)> <Bitrate (KBPS)> <FREC. (Hz)> <Dur. (s)> 0x00D6 Pedido/Devolución de Estadísticas Info: <Usuarios conectados> <Cant. Archivos compartidos> <Total Aprox. en GB> Consulta - Búsqueda de canción cuyo nombre es “Malena RMX”. - La cantidad máxima de resultados es 100. Puerto Origen 1061 1061 8888 Puerto Destino 8888 8888 1061 Id Mensaje 0x002E 0x00C8 0x00C9 FILENAME CONTAINS “Malena RMX” MAX_RESULTS 100 “C:\MUSICA\Chocolate – Malena RMX.mp3” 00..00 4132864 8 44100 218 Usu2 50331844 0 0x002E Inicio de consulta 0x00C8 Pedido de archivo Formato: FILENAME CONTAINS <“Artista”> MAX_RESULTS <Max> 0x00C9 Respuesta a consulta Info: <”Archivo”> <md5> <Tam. (bytes)> <Bitrate (KBPS)> <FREC. (Hz)> <Nick> <IP> <Tipo-Enlace> 0x00CA Fin de respuestas Download - Se realiza la transferencia del Archivo “Chocolate - Malena RMX” compartido por el usuario Usu2. El tamaño del mismo es 4.132.864 bytes Puerto Origen 1061 8888 1061 1061 1576 1576 Puerto Destino 8888 1061 1576 1576 1061 1061 Id Mensaje 0x00DA 0x00CC Usu2 “C:\MUSICA\Chocolate – Malena RMX.mp3” Usu2 50331844 1576 “C:\MUSICA\Chocolate – Malena RMX.mp3” 00..00 0 GET Usu1 “C:\MUSICA\Chocolate – Malena RMX.mp3” 0 4132864 ID3... (contenido del archivo) n cantidad de mensajes con el contenido del archivo 0x00DA Pedido de transferencia Formato: <Nick> <”Archivo”> 0x00CC Download ACK Info: <Nick> <IP> <Port> <”Archivo”> <md5> <Vel.Transf.> 0x0075 Fin de transferencia Upload - Se realiza la transferencia del Archivo “Chocolate - Malena RMX” compartido por el usuario Usu1. El tamaño del mismo es 4.132.864 bytes Puerto Origen 8888 1061 2082 2082 1058 1058 Puerto Destino 1061 8888 1058 1058 2082 2082 Id Mensaje 0x025F 0x0260 Usu2 “C:\DOWNLOAD\Chocolate – Malena RMX.mp3” Usu2 “C:\DOWNLOAD\Chocolate – Malena RMX.mp3” GET Usu2 “C:\DOWNLOAD\Chocolate – Malena RMX.mp3” 0 4132864 ID3... (contenido del archivo) n cantidad de mensajes con el contenido del archivo 0x025F Pedido de transferencia Formato: <Nick> <”Archivo”> 0x0260 Upload ACK Info: <Nick> <”Archivo”> Referencias 1. White Paper: Texar Corporation, “Peer-to-Peer Computing: Issues and Opportunities in Information Sharing”, January 2001 2. White Paper: Dr. K.Tutschku, “Management of Peer-To-Peer Networks”, July 2001 3. White Paper: Beverly Yang, Hector Garcia-Molina. “Comparing Hybrid Peer-toPeer System” 4. Document on line: Lance Olson. “.Net P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework”. www.microsoft.com 5. http://opennap.sourceforge.net/ 6. Term Paper: Lisa Gutberlet. “Peer-to-Peer Computing – A Technology Fad or Fact?”. October 2000 7. Document on line: Ross Lee Graham. “P2P Definition”. www.ida.liu.se/conferences/p2p/p2p2001/p2pwhatis.html Otras Referencias - Documento on line: Cho. S. “Understanding P2P file sharing”. www.limewire.com - Document on line: Todd Sundsted. “The practice of peer-to-peer computing. Introduction and history”. www.ibm.com - Case Study: Intel Corp. “Peer to Peer Computing. NetBatch Case Study”. www.intel.com - White Paper: Intel Corp. “Peer to Peer Computing: P2P file-sharing at work in the Enterprise”. March 2001. www.intel.com - Document on line: David Barkai. “Initiatives and Introduction to Peer-to-Peer Computing”. www.intel.com - Document on line: www.openp2p.com - Document on line: The Clipcode Peer Team. “P2P Protocol and Object Model Requirements”. June 2001. www.clipcode.org/peer/p2p_protocol-req/20010601 Andy Oram. “Peer to Peer Technologies: for An Academia”