SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
        Departament d’Arquitectura de Computadors




                                        Peer-to-Peer




  Peer-to-Peer
    Peer-to-Peer
     – Necesidad de compartir para recibir
     – Los nodos de una P2P son máquinas de usuarios finales
     – El tiempo de servicio de estos nodos no es continuo
            • se conectan/desconectan según las necesidades de cada usuario final
    Peer-to-Peer versus Cliente/Servidor
     – Los nodos de una P2P son clientes y servidores al mismo tiempo
     – En P2P la información esta distribuida entre los nodos de los usuarios finales
            • En la arquitectura C/S la información está centralizada en el servidor ( que puede ser un
              cluster)
     – En P2P un cliente que quiere un fichero no sabe donde encontrarlo y pregunta al
       sistema quien puede dárselo
            • En la arquitectura C/S un cliente sabe quien tiene el fichero (un servidor)


                                                                              FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                    Departament d’Arquitectura de Computadors - UPC
                                                                                                                          2
Componentes básicos en toda red P2P
    Localización de los contenidos (ficheros) en la red P2P
     – Es como un DNS a nivel de aplicación.
     – Hay que tener en cuenta como se realiza la publicación y eliminación de contenidos
  Gestión de la red
     – Tiene en cuenta aspectos como: enrutamiento de mensajes, mantenimiento de la red,
       procedimiento para que un usuario pueda darse de alta en la red, procedimiento para
       darse de baja, control de vecinos...
  Transferencia de la información
     – En las P2P iniciales la unidad de transferencia es el fichero
            • Para ficheros grandes este mecanismo genera muchos fallos en la transferencia
     – En las P2P actuales la unidad de transferencia no es el fichero sino un bloque



                                                                         FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                               Departament d’Arquitectura de Computadors - UPC
                                                                                                                     3




  Napster (Inicio del P2P)
  Modelo
     – Cada usuario final comparte un subconjunto de ficheros de música
     – Cada usuario puede bajarse ficheros de todos los usuarios finales de la red
  Servicio de localización centralizado
     – Asume la existencia de servidores que mapean ficheros (canciones) a máquinas de
       usuarios finales conectados a la red
  ¿Cómo encontrar un fichero (canción)?
     – Consulta al servidor -> devuelve una máquina conectada que comparte el fichero
            • Idealmente es la máquina más cercana/menos cargada
     – Transferencia ftp del fichero directamente de la máquina del usuario final conectado
  Ventajas:
     – Simplicidad, fácil implementar motores de búsqueda sofisticados en el servidor
  Desventajas:
     – ¿Robustez? ¿Escalabilidad?

                                                                         FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                               Departament d’Arquitectura de Computadors - UPC
                                                                                                                     4
Napster: Example (Fuente: Lecture20.ppt / Ion Stoica)


                                         m5


                 m6                            E


                      F                                               D
                          E?              m1   A
                               E          m2   B           m4
                                          m3   C
                                          m4   D
                                   E?     m5   E
                                    m5    m6   F

                                                                  C
                               A
                                                   B      m3
                          m1
                                              m2



                                                                FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                      Departament d’Arquitectura de Computadors - UPC
                                                                                                            5




  Napster: how did it work (Keith W. Ross / Dan Rubenstein)
        Application-level, client-server protocol over point-to-point TCP
        Centralized directory server

  Steps:
     connect to Napster server
     upload your list of files to server.
     give server keywords to search the full list with.
     select “best” of correct answers. (pings)




                                                                FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                      Departament d’Arquitectura de Computadors - UPC
                                                                                                            6
Napster (Fuente: Keith W. Ross / Dan Rubenstein)
                          napster.com
  1. File list            centralized directory

     and IP
     address is
     uploaded




                                          FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                Departament d’Arquitectura de Computadors - UPC
                                                                                      7




  Napster (Fuente: Keith W. Ross / Dan Rubenstein)

                           napster.com
  2. User                  centralized directory
     requests
     search at
     server.                Query
                              and
                            results




                                          FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                Departament d’Arquitectura de Computadors - UPC
                                                                                      8
Napster (Fuente: Keith W. Ross / Dan Rubenstein)
                                 napster.com
 3. User pings                   centralized directory

    hosts that
    apparently
    have data.

             Looks for
             best transfer      pings
                                                                 pings

             rate.


                                                       FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
 v.2007.02                                            Departament d’Arquitectura de Computadors - UPC
                                                                                                   9




   Napster (Fuente: Keith W. Ross / Dan Rubenstein)

                                        napster.com
 4. User chooses                        centralized directory
    server

Napster’s
centralized
server farm had
difficult time               Retrieves
                                file
keeping
up with traffic

                                                       FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
 v.2007.02                                            Departament d’Arquitectura de Computadors - UPC
                                                                                                  10
Gnutella (Historia)
  Los desarrolladores fueron Justin Frankel y Tom Pepper en el año 2000
  mientras trabajaban en Nullsoft
  El código fuente iba a salir bajo licencia GNU pero AOL se interpuso. La
  ingeniería inversa se puso en funcionamiento. Se tardó 6 días.
  Este protocolo se presentaba como la gran esperanza tras la caída en
  picado de Napster en 2001.
     – ¿Por qué pudo cerrase Napster?
  Actualmente su desarrollo se lleva a cabo por el GDF
     – http://groups.yahoo.com/group/the_gdf/
            • The Gnutella Developer Forum (GDF) is a neutral, open forum for communication between
              Gnutella developers on topics of common interest.
  Gnutella2
            • http://es.wikipedia.org/wiki/Gnutella2

                                                                            FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                  Departament d’Arquitectura de Computadors - UPC
                                                                                                                       11




  Gnutella
  Servicio de localización descentralizado por inundación (flooding)
  ¿Cómo encontrar un fichero?
     – Consulta a los nodos a los que está conectado. Estos a su vez harán un forwarding de
       la petición si no pueden satisfacerla
     – Transferencia http del fichero directamente de la máquina del usuario final conectado
  Ventajas:
     – Totalmente descentralizado
     – Bastante robusto
  Desventajas:
     – ¿Escalabilidad?
            • La red entera puede ser inundada con la petición (para aliviar el problema TTL)
     – ¿Garantías de encontrar fichero aunque se encuentre en la red?

                                                                            FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                  Departament d’Arquitectura de Computadors - UPC
                                                                                                                       12
Gnutella: ¿Cómo funciona?
  Un nodo A se conecta a otro B, mediante un mecanismo de bootstrap
  (autosuficiente), dirección bien conocida o algún mecanismo similar.
     – Debe conocerse un nodo conectado a la red de Gnutella
     – Gnutella no define cómo encontrar un nodo conectado
  B envía a A una lista de nodos actualmente activos en la red

  A se conectará a un número determinado de ellos (normalmente 5) y
  guarda el resto

  Cuando A realice una búsqueda manda las peticiones a los nodos a los
  que está conectado. Estos a su vez harán un forwarding de la petición

  Al encontrar resultados se reenvían hacia A directamente o bien
  indirectamente
                                                                     FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                           Departament d’Arquitectura de Computadors - UPC
                                                                                                                13




  Gnutella: Example (Fuente: Lecture20.ppt / Ion Stoica)


            Assume: m1’s neighbors are m2 and m3; m3’s
            neighbors are m4 and m5;…
                                           m5


                m6                              E


                     F                                                     D
                              E                      E?
                                                          E?    m4

                                           E?

                                      E?

                                                                       C
                                  A
                                                     B         m3
                         m1
                                                m2
                                                                     FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                           Departament d’Arquitectura de Computadors - UPC
                                                                                                                14
Gnutella (protocolo)
        “The annotated Gnutella Protocol Specification v0.4”.
            – http://rfc-gnutella.sourceforge.net/developer/stable/index.html
        Inicializar la conexión
            – El nodo A establece una conexión TCP con el nodo B
              GNUTELLA CONNECT/0.6
              GNUTELLA CONNECT/0.6
              User-Agent: BearShare/1.0
              User-Agent: BearShare/1.0




                                                GNUTELLA/0.6 200 OK
                                                GNUTELLA/0.6 200 OK
                                                User-Agent: BearShare/1.0
                                                User-Agent: BearShare/1.0


                GNUTELLA/0.6 200 OK
                GNUTELLA/0.6 200 OK




                                                                             FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                   Departament d’Arquitectura de Computadors - UPC
                                                                                                                        15




  Gnutella (protocolo v0.4)
     Cabecera
        – Una vez conectados dos nodos, se pueden comunicar utilizando mensajes del
          protocolo.
        – Cada mensaje es precedido de una cabecera de mensaje de 23 bytes

                Message Payload                 TTL          HOPS           Payload
                  ID     Type                                               Lenght

               • Message ID: identificador único de mensaje (16 bytes)
               • Payload Type: Ping, Pong, Bye, Push, Query, Query Hit (1 byte)
               • TTL: número de veces que se puede hacer forwading (1 byte)
               • HOPS: el número de veces que ha sido forwarded (1 byte)
               • Payload Lenght: longitud del mensaje de protocolo (4 bytes)

                                                                             FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                   Departament d’Arquitectura de Computadors - UPC
                                                                                                                        16
Gnutella (protocolo v0.4)
  5 tipos principales de mensajes:
     – Ping. Se emplea para descubrir nodos nuevos en la red
            • Un nodo que recibe un Ping, se espera que responda con uno o varios mensajes Pong
     – Pong. Es la respuesta a un Ping
            • Incluye la dirección de un nodo Gnutella e información sobre los datos que comparte
     – Query. Mecanismo principal de Búsqueda en la red
            • Un nodo responderá con un mensaje QueryHits si tiene la información pedida
     – QueryHits. La respuesta a un mensaje Query
            • Provee la suficiente información como para recuperar los datos solicitados
     – Push. Permite a los nodos detrás de un cortafuegos (firewall) proveer datos




                                                                           FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                 Departament d’Arquitectura de Computadors - UPC
                                                                                                                      17




  Gnutella (protocolo v0.4)
  Ping (Payload Type = 0x00)
     – Estos mensajes no llevan Payload
     – Cada nodo que reciba un mensaje Ping debe responder generando
       mensajes Pong (pueden ser n) donde anuncien su presencia ó de otros
       nodos que ellos conozcan
     – Ejemplo mensaje Ping (hexadecimal)
            • 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 00 07 00 00 00 00 00
            • Mensaje
               – Message ID : 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62
               – Payload Type : 00
               – TTL : 07
               – Hops : 00
               – Payload Lenght : 00 00 00 00
                                                                           FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                 Departament d’Arquitectura de Computadors - UPC
                                                                                                                      18
Gnutella (protocolo v0.4)
  Pong (Payload Type = 0x01)
     – Emitidos en respuesta a un mensaje Ping. Un Ping puede provocar el envío de 1 o
       más mensajes Pong de respuesta
     – Un nodo al recibir mensajes Pong puede abrir nuevas conexiones con otros nodos lo
       que le permite conocer más nodos de la red y darle una mayor estabilidad a su
       presencia en la red Gnutella
     – La cabecera debe tener el mismo ID que la cabecera del Ping que ocasiona el Pong
     – Payload (después de la cabecera):
            • Port Number: puerto para las conexiones de entrada
            • IP Address: dirección IP del host
            • Shared Files Number: número de ficheros compartidos
            • Shared Files Size: tamaño en KB’s de ficheros compartidos


                                                                           FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                 Departament d’Arquitectura de Computadors - UPC
                                                                                                                      19




  Gnutella (protocolo v0.4)
  Pong (Payload Type = 0x01)
     – Ejemplo mensaje Pong (hexadecimal)
            • 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 01 07 00 0E 00 00 00
              CA 18 AA D2 62 95 03 00 00 00 0A 00 00 00
            • Mensaje
                – Message ID : 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62
                – Payload Type : 01
                – TTL : 07
                – Hops : 00
                – Payload Lenght : 0E 00 00 00
            • Carga
                – Port Number : CA 18
                – IP Addres : AA D2 62 95
                – Shared Files Number : 03 00 00 00
                – Shared Files Size : 0A 00 00 00

                                                                           FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                 Departament d’Arquitectura de Computadors - UPC
                                                                                                                      20
Gnutella (protocolo v0.4)
  Uso del Ping y el Pong
     – Cuando se recibe un Ping con TTL>1 y ha pasado más de 1 segundo desde el
       anterior se debe responder con 1 o más Pong. 10 es un número razonable.

     – Los hosts deben minimizar el número de Pings y Pongs para no consumir
       bandwidth

     – Un Ping con TTL=1 y Hops=0 se utiliza para probar al host remoto de una conexión.
       Debe responderse con un Pong

     – Un Ping con TTL=2 y Hops = 0 se denomina “Crawler Ping”. Se debe responder
       con varios Pong que contengan la información del host que recibió el Ping y de sus
       vecinos. (La información de sus vecinos se puede generar en el propio host o bien
       reenviando el Ping original a sus vecinos.)

                                                                     FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                           Departament d’Arquitectura de Computadors - UPC
                                                                                                                21




  Gnutella (protocolo v0.4)
  Query (Payload Type = 0x80)
     – Mecanismo para realizar búsquedas por la red.
     – Si hay éxito se responde con un Query Hit
     – Si no hay éxito el mensaje Query se reenvía a todos los nodos
       excepto al que nos lo envió
     – Payload (después de la cabecera):
            • Minimun Speed: velocidad mínima en kb/s a la que debe responder el receptor
              del mensaje
            • Search Criteria: criterio de búsqueda de longitud variable. Terminado en 0x00




                                                                     FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                           Departament d’Arquitectura de Computadors - UPC
                                                                                                                22
Gnutella (protocolo v0.4)
  Query (Payload Type = 0x80)
     – Ejemplo mensaje Query (hexadecimal)
            • 28 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62
                80 07 00 06 00 00 00 00 00 2A 2E 61 00
            • Mensaje
                – Message ID : 28 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62
                – Payload Type : 80
                – TTL : 07
                – Hops : 00
                – Payload Lenght : 06 00 00 00
            • Carga
                – Minimun Speed : 00 00
                – Search Criteria : 2A 2E 61 00
                             (*.a + carácter nulo)
                                                                      FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                            Departament d’Arquitectura de Computadors - UPC
                                                                                                                 23




  Gnutella (protocolo v0.4)
  QueryHit (Payload Type = 0x81)
     – Los Query Hit deben enviarse como respuesta a un Query siempre que haya un
       matching entre la información local y el Search Criteria, por la misma ruta por la que
       llegó al nodo
     – Un Query Hit tendrá el mismo Message ID que el Query que lo genera.
     – El método de matching para el Search Criteria no se especifica.
     – Un Query con TTL = 1, HOPS = 0 y Search Criteria = “ “ indica a un host que
       debe enviar toda la información sobre sus archivos compartidos a través de Query
       Hits
     – Payload (después de la cabecera):
            •   Hits Number: número de Query Hits en el Result Set
            •   Port: el puerto por el que aceptar peticiones HTTP
            •   IP Address: dirección del responding host
            •   Speed: velocidad en KB/s del responding host
                       ...

                                                                      FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                            Departament d’Arquitectura de Computadors - UPC
                                                                                                                 24
Gnutella (protocolo v0.4)
  Evitando tráfico excesivo:
     – Para evitar transmisiones duplicadas, cada nodo mantiene una lista de
       mensajes recibidos recientemente
     – Los mensajes Query se reenvían a todos los nodos excepto al que nos
       lo envió
     – Los mensajes QueryHits se encaminan sólo hacia el nodo del que se
       recibió el mensaje Query con el mismo campo ID
     – Los duplicados con el mismo campo ID y tipo de mensaje se descartan
     – Los mensajes QueryHits con un campo ID para el que no se haya visto
       un mensaje Query correspondiente se descartan


                                                                        FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                              Departament d’Arquitectura de Computadors - UPC
                                                                                                                   25




  Gnutella (protocolo v0.4)
  Después de recibir mensajes QueryHits:
     – El peticionario elige la mejor respuesta QueryHits.
     – Inicia una petición HTTP directamente a la IP+puerto del nodo que contestó:
            GET /get/<índice fichero>/<nombre fichero>/HTTP/1.0rn
            Connection: Keep-Alivern
            Range: bytes=<desplazamiento desde comienzo>-rn
            User-Agent: Gnutellarn
            rn
     – El nodo que lo recibe responde:
            HTTP/1.0 200 OKrn
            Server: Gnutella/0.4rn
            Content-Type: application/binaryrn
            Content-Length: 4356789rn
            rn
            <datos del fichero>

                                                                        FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                              Departament d’Arquitectura de Computadors - UPC
                                                                                                                   26
Gnutella (protocolo v0.4)
  No hay servidores
  Los nodos en la red mantienen “vecindades”, constituyendo
  grafos superpuestos
  Los nodos almacenan sus propios ficheros
  Las peticiones (mensajes Query) se difunden, con TTL
  restringidos
  Las respuestas (mensajes QueryHits) se encaminan en sentido
  inverso al que llevaron las peticiones
  Soporta transferencia de ficheros a través de cortafuegos
  Ping-Pong periódicos para mantener la lista de vecinos al día, a
  pesar de los nodos uniéndose, abandonando o fallando.
                                                                          FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                Departament d’Arquitectura de Computadors - UPC
                                                                                                                     27




  BitTorrent
  BitTorrent es el nombre del protocolo de distribución de archivos mediante
  peer–to-peer creado por Bram Cohen.
  Se refiere también a la aplicación cliente original.
  Y al tipo de archivos .torrent
  Servicio de localización
     – La búsqueda es realizada por el usuario que consigue un archivo .torrent y lo carga en
       su aplicación cliente
     – El archivo .torrent es creado por el usuario que quiere compartir un archivo
     – El archivo .torrent enlaza al cliente con el fichero a descargar:
            • Nombre del archivo, tamaño y el hash de cada bloque del archivo.
            • La dirección de un servidor “tracker”.
            • Otras informaciones, como instrucciones para el cliente
     – Se distribuyen archivos .torrent mediante email o en websites

                                                                          FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                Departament d’Arquitectura de Computadors - UPC
                                                                                                                     28
BitTorrent
  ¿Cómo funciona?
     – Seeds (semilla)
            • Clientes que tienen un archivo completo compartido para que el resto de los usuarios lo
              puedan descargar
     – Tracker (rastreador)
            • servidores que recopilan información de los clientes que comparten un archivo (swarm),
              así como de todas las semillas que se están moviendo.
            • El tracker indicado por el archivo mantiene un log de cuales usuarios están bajando el
              archivo y donde están el archivo y sus fragmentos.
            • Los trackers son servicios que responden a HTTP/HTTPS request, usando un URL con
              método GET, la respuesta es en texto plano e incluye una lista de peers que ayudan al
              cliente a participar en el torrent
     – Swarm (enjambre)
            • Conjunto formado por todos los clientes que comparten un archivo .torrent, tanto los que
              aún tienen el archivo incompleto como las semillas

                                                                            FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                  Departament d’Arquitectura de Computadors - UPC
                                                                                                                       29




  BitTorrent (Fuente: Keith W. Ross / Dan Rubenstein)
                                                       url                                    tracker




                1. GET file.torrent                 2. GET             3. list of
                                                                         peers

                                                                4.

file.torrent info:
• length
• name
• hash
• url of tracker
                                                                            FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                                  Departament d’Arquitectura de Computadors - UPC
                                                                                                                       30
BitTorrent
  Transferencia de la información
     – El archivo es roto en bloques pequeños (256 Kb estándar) los peers
       bajan los fragmentos entre ellos y mandan los que ya posean a los que
       lo requieran.
     – El protocolo escoge la conexión más buena disponible para los
       fragmentos que requiere.
     – Para incrementar la eficiencia los clientes piden los fragmentos que
       están disponibles en el menor número de peers, evitando cuellos de
       botella.
     – Los clientes comienzan a mandar los fragmentos antes de terminar de
       bajar el archivo.

                                                                       FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                             Departament d’Arquitectura de Computadors - UPC
                                                                                                                  31




  BitTorrent
        Los BitTorrent trackers asisten la comunicación entre peers.
        Los clientes deben comunicarse con estos para empezar a
        bajar los archivos.
        Si todas las semillas son quitadas, el archivo no podrá ser
        bajado nuevamente
        La propiedad “leech resistance” de BitTorrent provee a los
        que mandan más información el mejor desempeño al bajar
        los archivos
            – Leech (sanguijuelas)
               • Exprimir las descargas al máximo compartiendo lo mínimo posible. Al
                 finalizar la descarga mueven el archivo para evitar la subida de partes.

                                                                       FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                             Departament d’Arquitectura de Computadors - UPC
                                                                                                                  32
Implementaciones
        Gnutella
            – MLDonkey: Linux, Mac y Windows. Licencia GNU GPL
            – Limewire: Java. Licencia GNU GPL
            – Shareaza: Windows. Licencia GNU GPL
        BitTorrent
            – aZureus: Java. Licencia GNU GPL
            – µTorrent: Windows. Código cerrado.
        BitTorrent y eDonkey2000
            – Lphant: Linux, Mac y Windows. Licencia Freeware con Adware.
        Kadmelia y eDonkey2000
            – eMule: Windows. Licencia GNU GPL
                                                          FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS
v.2007.02                                                Departament d’Arquitectura de Computadors - UPC
                                                                                                     33

Más contenido relacionado

La actualidad más candente

Manual Básico de Redes
Manual Básico de RedesManual Básico de Redes
Manual Básico de RedesAntonio Anil
 
Administrador de Red
Administrador de RedAdministrador de Red
Administrador de RedNeovictril
 
Red de computadores
Red de computadoresRed de computadores
Red de computadoresACarolina4
 
Redes informaticas
Redes informaticasRedes informaticas
Redes informaticasanton083
 
Cindy Informatica
Cindy InformaticaCindy Informatica
Cindy Informaticacindy marin
 
Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)
Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)
Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)Miizael Mybl
 
Judith investigacion
Judith investigacionJudith investigacion
Judith investigacioneleazar dj
 
Introducción a la redes
Introducción a la redesIntroducción a la redes
Introducción a la redesJose
 
Comunicaciones y redes
Comunicaciones y redesComunicaciones y redes
Comunicaciones y redesamadamartinez
 
Redes, tipos de redes, componentes
Redes, tipos de redes, componentesRedes, tipos de redes, componentes
Redes, tipos de redes, componentesDeYcito BbitOo
 

La actualidad más candente (17)

Pdf referencias automaticas
Pdf referencias automaticasPdf referencias automaticas
Pdf referencias automaticas
 
Manual Básico de Redes
Manual Básico de RedesManual Básico de Redes
Manual Básico de Redes
 
Administrador de Red
Administrador de RedAdministrador de Red
Administrador de Red
 
Red de computadores
Red de computadoresRed de computadores
Red de computadores
 
Ntics
Ntics Ntics
Ntics
 
Ntics
NticsNtics
Ntics
 
Redes informaticas
Redes informaticasRedes informaticas
Redes informaticas
 
Cindy Informatica
Cindy InformaticaCindy Informatica
Cindy Informatica
 
Arquitectura ssdd
Arquitectura ssddArquitectura ssdd
Arquitectura ssdd
 
Cableadode datos
Cableadode datosCableadode datos
Cableadode datos
 
Redes lan
Redes lanRedes lan
Redes lan
 
Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)
Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)
Introduccionalasredesdecomputadoras 091129210658-phpapp02 (1) (1)
 
Judith investigacion
Judith investigacionJudith investigacion
Judith investigacion
 
Introducción a la redes
Introducción a la redesIntroducción a la redes
Introducción a la redes
 
Comunicaciones y redes
Comunicaciones y redesComunicaciones y redes
Comunicaciones y redes
 
Redes, tipos de redes, componentes
Redes, tipos de redes, componentesRedes, tipos de redes, componentes
Redes, tipos de redes, componentes
 
Redes
RedesRedes
Redes
 

Destacado

Destacado (9)

Redes peer to peer
Redes peer to peerRedes peer to peer
Redes peer to peer
 
Programacion aniversario definitiva
Programacion aniversario definitivaProgramacion aniversario definitiva
Programacion aniversario definitiva
 
Peer to Peer
Peer to PeerPeer to Peer
Peer to Peer
 
1.2. arquitectura de redes
1.2. arquitectura de redes1.2. arquitectura de redes
1.2. arquitectura de redes
 
Redes peer to peer. mmg
Redes peer to peer. mmgRedes peer to peer. mmg
Redes peer to peer. mmg
 
Redes peer to pee p2 p
Redes peer to pee p2 pRedes peer to pee p2 p
Redes peer to pee p2 p
 
Arquitetura peer to-peer (p2p)
Arquitetura peer to-peer (p2p)Arquitetura peer to-peer (p2p)
Arquitetura peer to-peer (p2p)
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Peer-to-Peer Systems
Peer-to-Peer SystemsPeer-to-Peer Systems
Peer-to-Peer Systems
 

Similar a Fsd p2 p (20)

M3
M3M3
M3
 
Redes de sensores inalámbricos (wsn)
Redes de sensores inalámbricos (wsn)Redes de sensores inalámbricos (wsn)
Redes de sensores inalámbricos (wsn)
 
Unidad 5. tecnología de redes
Unidad 5. tecnología de redesUnidad 5. tecnología de redes
Unidad 5. tecnología de redes
 
modelo OSI
modelo OSImodelo OSI
modelo OSI
 
Unidad 3 sistemas en redes
Unidad 3 sistemas en redesUnidad 3 sistemas en redes
Unidad 3 sistemas en redes
 
Conceptos básicos de redes en general
Conceptos básicos de redes en generalConceptos básicos de redes en general
Conceptos básicos de redes en general
 
Trabajo bdd
Trabajo bddTrabajo bdd
Trabajo bdd
 
Tipos de redes
Tipos de redesTipos de redes
Tipos de redes
 
Tipos de redes
Tipos de redesTipos de redes
Tipos de redes
 
00005505
0000550500005505
00005505
 
Modelo OSI Alexis Almao
Modelo OSI Alexis AlmaoModelo OSI Alexis Almao
Modelo OSI Alexis Almao
 
RD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y RedesRD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y Redes
 
Chapter1
Chapter1Chapter1
Chapter1
 
Topologias
TopologiasTopologias
Topologias
 
Servicios en red 1
Servicios en red 1Servicios en red 1
Servicios en red 1
 
Coronel maria victoria 3 u vespertino
Coronel maria victoria 3 u vespertinoCoronel maria victoria 3 u vespertino
Coronel maria victoria 3 u vespertino
 
Control sensores socket
Control sensores socketControl sensores socket
Control sensores socket
 
Unidad 2 sistemas en red introduccion
Unidad 2 sistemas en red   introduccionUnidad 2 sistemas en red   introduccion
Unidad 2 sistemas en red introduccion
 
Unidad 2 sistemas en red introduccion
Unidad 2 sistemas en red   introduccionUnidad 2 sistemas en red   introduccion
Unidad 2 sistemas en red introduccion
 
Act 3
Act 3Act 3
Act 3
 

Más de marcusito

Cuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivosCuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivosmarcusito
 
Cuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivosCuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivosmarcusito
 
La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...marcusito
 
La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...marcusito
 

Más de marcusito (6)

Parte b
Parte bParte b
Parte b
 
Fsd p2 p
Fsd p2 pFsd p2 p
Fsd p2 p
 
Cuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivosCuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivos
 
Cuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivosCuál es la mejor manera de compartir nuestros archivos
Cuál es la mejor manera de compartir nuestros archivos
 
La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...
 
La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...La descarga directa es una forma de descarga desde un servidor en el que el u...
La descarga directa es una forma de descarga desde un servidor en el que el u...
 

Fsd p2 p

  • 1. FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors Peer-to-Peer Peer-to-Peer Peer-to-Peer – Necesidad de compartir para recibir – Los nodos de una P2P son máquinas de usuarios finales – El tiempo de servicio de estos nodos no es continuo • se conectan/desconectan según las necesidades de cada usuario final Peer-to-Peer versus Cliente/Servidor – Los nodos de una P2P son clientes y servidores al mismo tiempo – En P2P la información esta distribuida entre los nodos de los usuarios finales • En la arquitectura C/S la información está centralizada en el servidor ( que puede ser un cluster) – En P2P un cliente que quiere un fichero no sabe donde encontrarlo y pregunta al sistema quien puede dárselo • En la arquitectura C/S un cliente sabe quien tiene el fichero (un servidor) FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 2
  • 2. Componentes básicos en toda red P2P Localización de los contenidos (ficheros) en la red P2P – Es como un DNS a nivel de aplicación. – Hay que tener en cuenta como se realiza la publicación y eliminación de contenidos Gestión de la red – Tiene en cuenta aspectos como: enrutamiento de mensajes, mantenimiento de la red, procedimiento para que un usuario pueda darse de alta en la red, procedimiento para darse de baja, control de vecinos... Transferencia de la información – En las P2P iniciales la unidad de transferencia es el fichero • Para ficheros grandes este mecanismo genera muchos fallos en la transferencia – En las P2P actuales la unidad de transferencia no es el fichero sino un bloque FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 3 Napster (Inicio del P2P) Modelo – Cada usuario final comparte un subconjunto de ficheros de música – Cada usuario puede bajarse ficheros de todos los usuarios finales de la red Servicio de localización centralizado – Asume la existencia de servidores que mapean ficheros (canciones) a máquinas de usuarios finales conectados a la red ¿Cómo encontrar un fichero (canción)? – Consulta al servidor -> devuelve una máquina conectada que comparte el fichero • Idealmente es la máquina más cercana/menos cargada – Transferencia ftp del fichero directamente de la máquina del usuario final conectado Ventajas: – Simplicidad, fácil implementar motores de búsqueda sofisticados en el servidor Desventajas: – ¿Robustez? ¿Escalabilidad? FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 4
  • 3. Napster: Example (Fuente: Lecture20.ppt / Ion Stoica) m5 m6 E F D E? m1 A E m2 B m4 m3 C m4 D E? m5 E m5 m6 F C A B m3 m1 m2 FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 5 Napster: how did it work (Keith W. Ross / Dan Rubenstein) Application-level, client-server protocol over point-to-point TCP Centralized directory server Steps: connect to Napster server upload your list of files to server. give server keywords to search the full list with. select “best” of correct answers. (pings) FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 6
  • 4. Napster (Fuente: Keith W. Ross / Dan Rubenstein) napster.com 1. File list centralized directory and IP address is uploaded FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 7 Napster (Fuente: Keith W. Ross / Dan Rubenstein) napster.com 2. User centralized directory requests search at server. Query and results FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 8
  • 5. Napster (Fuente: Keith W. Ross / Dan Rubenstein) napster.com 3. User pings centralized directory hosts that apparently have data. Looks for best transfer pings pings rate. FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 9 Napster (Fuente: Keith W. Ross / Dan Rubenstein) napster.com 4. User chooses centralized directory server Napster’s centralized server farm had difficult time Retrieves file keeping up with traffic FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 10
  • 6. Gnutella (Historia) Los desarrolladores fueron Justin Frankel y Tom Pepper en el año 2000 mientras trabajaban en Nullsoft El código fuente iba a salir bajo licencia GNU pero AOL se interpuso. La ingeniería inversa se puso en funcionamiento. Se tardó 6 días. Este protocolo se presentaba como la gran esperanza tras la caída en picado de Napster en 2001. – ¿Por qué pudo cerrase Napster? Actualmente su desarrollo se lleva a cabo por el GDF – http://groups.yahoo.com/group/the_gdf/ • The Gnutella Developer Forum (GDF) is a neutral, open forum for communication between Gnutella developers on topics of common interest. Gnutella2 • http://es.wikipedia.org/wiki/Gnutella2 FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 11 Gnutella Servicio de localización descentralizado por inundación (flooding) ¿Cómo encontrar un fichero? – Consulta a los nodos a los que está conectado. Estos a su vez harán un forwarding de la petición si no pueden satisfacerla – Transferencia http del fichero directamente de la máquina del usuario final conectado Ventajas: – Totalmente descentralizado – Bastante robusto Desventajas: – ¿Escalabilidad? • La red entera puede ser inundada con la petición (para aliviar el problema TTL) – ¿Garantías de encontrar fichero aunque se encuentre en la red? FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 12
  • 7. Gnutella: ¿Cómo funciona? Un nodo A se conecta a otro B, mediante un mecanismo de bootstrap (autosuficiente), dirección bien conocida o algún mecanismo similar. – Debe conocerse un nodo conectado a la red de Gnutella – Gnutella no define cómo encontrar un nodo conectado B envía a A una lista de nodos actualmente activos en la red A se conectará a un número determinado de ellos (normalmente 5) y guarda el resto Cuando A realice una búsqueda manda las peticiones a los nodos a los que está conectado. Estos a su vez harán un forwarding de la petición Al encontrar resultados se reenvían hacia A directamente o bien indirectamente FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 13 Gnutella: Example (Fuente: Lecture20.ppt / Ion Stoica) Assume: m1’s neighbors are m2 and m3; m3’s neighbors are m4 and m5;… m5 m6 E F D E E? E? m4 E? E? C A B m3 m1 m2 FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 14
  • 8. Gnutella (protocolo) “The annotated Gnutella Protocol Specification v0.4”. – http://rfc-gnutella.sourceforge.net/developer/stable/index.html Inicializar la conexión – El nodo A establece una conexión TCP con el nodo B GNUTELLA CONNECT/0.6 GNUTELLA CONNECT/0.6 User-Agent: BearShare/1.0 User-Agent: BearShare/1.0 GNUTELLA/0.6 200 OK GNUTELLA/0.6 200 OK User-Agent: BearShare/1.0 User-Agent: BearShare/1.0 GNUTELLA/0.6 200 OK GNUTELLA/0.6 200 OK FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 15 Gnutella (protocolo v0.4) Cabecera – Una vez conectados dos nodos, se pueden comunicar utilizando mensajes del protocolo. – Cada mensaje es precedido de una cabecera de mensaje de 23 bytes Message Payload TTL HOPS Payload ID Type Lenght • Message ID: identificador único de mensaje (16 bytes) • Payload Type: Ping, Pong, Bye, Push, Query, Query Hit (1 byte) • TTL: número de veces que se puede hacer forwading (1 byte) • HOPS: el número de veces que ha sido forwarded (1 byte) • Payload Lenght: longitud del mensaje de protocolo (4 bytes) FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 16
  • 9. Gnutella (protocolo v0.4) 5 tipos principales de mensajes: – Ping. Se emplea para descubrir nodos nuevos en la red • Un nodo que recibe un Ping, se espera que responda con uno o varios mensajes Pong – Pong. Es la respuesta a un Ping • Incluye la dirección de un nodo Gnutella e información sobre los datos que comparte – Query. Mecanismo principal de Búsqueda en la red • Un nodo responderá con un mensaje QueryHits si tiene la información pedida – QueryHits. La respuesta a un mensaje Query • Provee la suficiente información como para recuperar los datos solicitados – Push. Permite a los nodos detrás de un cortafuegos (firewall) proveer datos FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 17 Gnutella (protocolo v0.4) Ping (Payload Type = 0x00) – Estos mensajes no llevan Payload – Cada nodo que reciba un mensaje Ping debe responder generando mensajes Pong (pueden ser n) donde anuncien su presencia ó de otros nodos que ellos conozcan – Ejemplo mensaje Ping (hexadecimal) • 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 00 07 00 00 00 00 00 • Mensaje – Message ID : 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 – Payload Type : 00 – TTL : 07 – Hops : 00 – Payload Lenght : 00 00 00 00 FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 18
  • 10. Gnutella (protocolo v0.4) Pong (Payload Type = 0x01) – Emitidos en respuesta a un mensaje Ping. Un Ping puede provocar el envío de 1 o más mensajes Pong de respuesta – Un nodo al recibir mensajes Pong puede abrir nuevas conexiones con otros nodos lo que le permite conocer más nodos de la red y darle una mayor estabilidad a su presencia en la red Gnutella – La cabecera debe tener el mismo ID que la cabecera del Ping que ocasiona el Pong – Payload (después de la cabecera): • Port Number: puerto para las conexiones de entrada • IP Address: dirección IP del host • Shared Files Number: número de ficheros compartidos • Shared Files Size: tamaño en KB’s de ficheros compartidos FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 19 Gnutella (protocolo v0.4) Pong (Payload Type = 0x01) – Ejemplo mensaje Pong (hexadecimal) • 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 01 07 00 0E 00 00 00 CA 18 AA D2 62 95 03 00 00 00 0A 00 00 00 • Mensaje – Message ID : 27 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 – Payload Type : 01 – TTL : 07 – Hops : 00 – Payload Lenght : 0E 00 00 00 • Carga – Port Number : CA 18 – IP Addres : AA D2 62 95 – Shared Files Number : 03 00 00 00 – Shared Files Size : 0A 00 00 00 FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 20
  • 11. Gnutella (protocolo v0.4) Uso del Ping y el Pong – Cuando se recibe un Ping con TTL>1 y ha pasado más de 1 segundo desde el anterior se debe responder con 1 o más Pong. 10 es un número razonable. – Los hosts deben minimizar el número de Pings y Pongs para no consumir bandwidth – Un Ping con TTL=1 y Hops=0 se utiliza para probar al host remoto de una conexión. Debe responderse con un Pong – Un Ping con TTL=2 y Hops = 0 se denomina “Crawler Ping”. Se debe responder con varios Pong que contengan la información del host que recibió el Ping y de sus vecinos. (La información de sus vecinos se puede generar en el propio host o bien reenviando el Ping original a sus vecinos.) FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 21 Gnutella (protocolo v0.4) Query (Payload Type = 0x80) – Mecanismo para realizar búsquedas por la red. – Si hay éxito se responde con un Query Hit – Si no hay éxito el mensaje Query se reenvía a todos los nodos excepto al que nos lo envió – Payload (después de la cabecera): • Minimun Speed: velocidad mínima en kb/s a la que debe responder el receptor del mensaje • Search Criteria: criterio de búsqueda de longitud variable. Terminado en 0x00 FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 22
  • 12. Gnutella (protocolo v0.4) Query (Payload Type = 0x80) – Ejemplo mensaje Query (hexadecimal) • 28 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 80 07 00 06 00 00 00 00 00 2A 2E 61 00 • Mensaje – Message ID : 28 08 3F 71 49 B2 D4 11 88 23 00 80 AD 40 4E 62 – Payload Type : 80 – TTL : 07 – Hops : 00 – Payload Lenght : 06 00 00 00 • Carga – Minimun Speed : 00 00 – Search Criteria : 2A 2E 61 00 (*.a + carácter nulo) FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 23 Gnutella (protocolo v0.4) QueryHit (Payload Type = 0x81) – Los Query Hit deben enviarse como respuesta a un Query siempre que haya un matching entre la información local y el Search Criteria, por la misma ruta por la que llegó al nodo – Un Query Hit tendrá el mismo Message ID que el Query que lo genera. – El método de matching para el Search Criteria no se especifica. – Un Query con TTL = 1, HOPS = 0 y Search Criteria = “ “ indica a un host que debe enviar toda la información sobre sus archivos compartidos a través de Query Hits – Payload (después de la cabecera): • Hits Number: número de Query Hits en el Result Set • Port: el puerto por el que aceptar peticiones HTTP • IP Address: dirección del responding host • Speed: velocidad en KB/s del responding host ... FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 24
  • 13. Gnutella (protocolo v0.4) Evitando tráfico excesivo: – Para evitar transmisiones duplicadas, cada nodo mantiene una lista de mensajes recibidos recientemente – Los mensajes Query se reenvían a todos los nodos excepto al que nos lo envió – Los mensajes QueryHits se encaminan sólo hacia el nodo del que se recibió el mensaje Query con el mismo campo ID – Los duplicados con el mismo campo ID y tipo de mensaje se descartan – Los mensajes QueryHits con un campo ID para el que no se haya visto un mensaje Query correspondiente se descartan FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 25 Gnutella (protocolo v0.4) Después de recibir mensajes QueryHits: – El peticionario elige la mejor respuesta QueryHits. – Inicia una petición HTTP directamente a la IP+puerto del nodo que contestó: GET /get/<índice fichero>/<nombre fichero>/HTTP/1.0rn Connection: Keep-Alivern Range: bytes=<desplazamiento desde comienzo>-rn User-Agent: Gnutellarn rn – El nodo que lo recibe responde: HTTP/1.0 200 OKrn Server: Gnutella/0.4rn Content-Type: application/binaryrn Content-Length: 4356789rn rn <datos del fichero> FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 26
  • 14. Gnutella (protocolo v0.4) No hay servidores Los nodos en la red mantienen “vecindades”, constituyendo grafos superpuestos Los nodos almacenan sus propios ficheros Las peticiones (mensajes Query) se difunden, con TTL restringidos Las respuestas (mensajes QueryHits) se encaminan en sentido inverso al que llevaron las peticiones Soporta transferencia de ficheros a través de cortafuegos Ping-Pong periódicos para mantener la lista de vecinos al día, a pesar de los nodos uniéndose, abandonando o fallando. FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 27 BitTorrent BitTorrent es el nombre del protocolo de distribución de archivos mediante peer–to-peer creado por Bram Cohen. Se refiere también a la aplicación cliente original. Y al tipo de archivos .torrent Servicio de localización – La búsqueda es realizada por el usuario que consigue un archivo .torrent y lo carga en su aplicación cliente – El archivo .torrent es creado por el usuario que quiere compartir un archivo – El archivo .torrent enlaza al cliente con el fichero a descargar: • Nombre del archivo, tamaño y el hash de cada bloque del archivo. • La dirección de un servidor “tracker”. • Otras informaciones, como instrucciones para el cliente – Se distribuyen archivos .torrent mediante email o en websites FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 28
  • 15. BitTorrent ¿Cómo funciona? – Seeds (semilla) • Clientes que tienen un archivo completo compartido para que el resto de los usuarios lo puedan descargar – Tracker (rastreador) • servidores que recopilan información de los clientes que comparten un archivo (swarm), así como de todas las semillas que se están moviendo. • El tracker indicado por el archivo mantiene un log de cuales usuarios están bajando el archivo y donde están el archivo y sus fragmentos. • Los trackers son servicios que responden a HTTP/HTTPS request, usando un URL con método GET, la respuesta es en texto plano e incluye una lista de peers que ayudan al cliente a participar en el torrent – Swarm (enjambre) • Conjunto formado por todos los clientes que comparten un archivo .torrent, tanto los que aún tienen el archivo incompleto como las semillas FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 29 BitTorrent (Fuente: Keith W. Ross / Dan Rubenstein) url tracker 1. GET file.torrent 2. GET 3. list of peers 4. file.torrent info: • length • name • hash • url of tracker FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 30
  • 16. BitTorrent Transferencia de la información – El archivo es roto en bloques pequeños (256 Kb estándar) los peers bajan los fragmentos entre ellos y mandan los que ya posean a los que lo requieran. – El protocolo escoge la conexión más buena disponible para los fragmentos que requiere. – Para incrementar la eficiencia los clientes piden los fragmentos que están disponibles en el menor número de peers, evitando cuellos de botella. – Los clientes comienzan a mandar los fragmentos antes de terminar de bajar el archivo. FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 31 BitTorrent Los BitTorrent trackers asisten la comunicación entre peers. Los clientes deben comunicarse con estos para empezar a bajar los archivos. Si todas las semillas son quitadas, el archivo no podrá ser bajado nuevamente La propiedad “leech resistance” de BitTorrent provee a los que mandan más información el mejor desempeño al bajar los archivos – Leech (sanguijuelas) • Exprimir las descargas al máximo compartiendo lo mínimo posible. Al finalizar la descarga mueven el archivo para evitar la subida de partes. FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 32
  • 17. Implementaciones Gnutella – MLDonkey: Linux, Mac y Windows. Licencia GNU GPL – Limewire: Java. Licencia GNU GPL – Shareaza: Windows. Licencia GNU GPL BitTorrent – aZureus: Java. Licencia GNU GPL – µTorrent: Windows. Código cerrado. BitTorrent y eDonkey2000 – Lphant: Linux, Mac y Windows. Licencia Freeware con Adware. Kadmelia y eDonkey2000 – eMule: Windows. Licencia GNU GPL FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS v.2007.02 Departament d’Arquitectura de Computadors - UPC 33