Marino, Mariano - Universidad Nacional de Luján

Anuncio
P2P – “Redes compañero a compañero
como soporte de sistemas de
archivos distribuidos”
Mariano Marino
mmarino@s6.coopenet.com.ar
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”
Descargar