Está en la página 1de 5

1

Redes P2P y Enrutamiento en capa de aplicación

Jairo A. Afanador J.1, Diego F. Ribero N.1, Germán E. Ulloa B.1


System

1Facultadde Ingeniería de Sistemas


Politécnico Grancolombiano
{a_jimene, r_nieto_, u_baron_}@estu.poligran.edu.co
University

I. INTRODUCCIÓN
Peer-to-peer es una arquitectura de red en la que cada computador tiene capacidades y responsabilidades
equivalentes[1], esta es la definición más simple que podemos encontrar y además nos da indicios sobre la
International

arquitectura p2p. En primer lugar, el hecho de que cada computador (nodo) en la red tenga capacidades y
responsabilidades implica que se trata de una red en la cual un servidor no es una parte esencial de ella (con
excepciones como los servidores centrales con funciones de proveer el índice de archivos). El objetivo de este artículo
es seguir una serie de conceptos para llegar a presentar Pastry como solución a los problemas de una red
descentralizada y estructurada.
Whitney

El presente trabajo fue desarrollado en el Politécnico Grancolombiano como ejercicio de aula para la materia
telecomunicaciones, bajo la asesoría del profesor Daniel A. Torres Falkonert.
con

A. Sistemas Centralizados P2P


alianza
Grancolombiano-en

Figura 1. Red p2p centralizada

En un sistema centralizado se hace necesario tener un servidor como centro de conexión, en la mayoría de los casos
Politécnico

la función del servidor es alojar bases de datos con los índices de los archivos que cada usuario tiene y almacenar las
direcciones de cada uno de ellos que se encuentre conectado con él. Cada vez que un usuario se conecte a la red
p2p, el servidor sincroniza la información de cada nodo entre cliente – servidor.

Napster, fue pionero de la tecnología p2p, funciona de una forma centralizada. Este sistema tiene la ventaja de ser
muy rápido para encontrar la información deseada, su problema es que si el servidor tiene algún tipo de inconveniente
o si sufre un ataque, esta red dejara de funcionar.
2

B. Sistemas Descentralizados P2P


System
University
International

Figura 2. Red p2p descentralizada

En una red descentralizada no se depende de la presencia de un servidor para ayudar a los clientes a encontrar la
información requerida y cuál nodo la posee, esta responsabilidad recae completamente en el conjunto de nodos que
conforman la red. Al eliminar el servidor central se elimina una parte clave para realizar ataques a la red que ahora no
Whitney

depende de este punto vulnerable sino del conjunto de clientes que la conforman.

Es en este tipo de redes se requiere una forma de buscar archivos o contenido únicamente con ayuda de los propios
clientes, es así como aparecen dos clases de estructura: estructuradas y no estructuradas.
con

C. Redes P2P estructuradas y no estructuradas


alianza

Las redes P2P se pueden clasificar por tener o no una estructura. Una red P2P estructurada es una red en la que
cada cliente cuenta con su propia tabla de hash (Pastry, por ejemplo). Una tabla de Hash Distribuida es una tabla
Grancolombiano-en

única que tiene cada cliente, en la cual se encuentra el camino más eficiente conocido por este nodo para llegar a
otro en la red.

A diferencia de este tipo de estructura, las redes P2P no estructuradas son redes en las que a los nodos se les
asignan enlaces arbitrariamente, por lo tanto, cuando se ejecuta una búsqueda, se realiza una inundación con la
consulta, es decir, se pide a todos los clientes conocidos por el nodo de origen que emprenda la búsqueda de la
misma forma anterior. Este tipo de funcionamiento tiene algunos inconvenientes como el excesivo tráfico generado en
la red, además, debido a que el alcance de la búsqueda se limita con el tiempo de vida de los paquetes (TTL) no es
seguro que se pueda llegar un nodo con un contenido poco difundido en la red.
Politécnico

II. ROUTING OVERLAYS


“Un problema clave para sistemas peer-to-peer es la colocación de objetos de datos a través de varios hosts y la
subsiguiente provisión de acceso a ellos en una manera que balancee la carga de trabajo y asegure disponibilidad sin
adicionar sobrecargas innecesarias” [2]. El problema principal del modelo centralizado de la primera generación de
arquitecturas p2p era la dependencia de una conexión con un servidor central, sin el cual, los nodos no son
conscientes de la ubicación de sus pares y, mucho menos, de cuáles de ellos disponen de los objetos requeridos.
3

La idea es proveer con una capa de software (middleware para el caso de “routing overlay”) para que sea usada por
los diseñadores y programadores sin que dependan del sistema de p2p que se esté usando, buscando que cada nodo
tenga la información suficiente sobre localización de una porción de pares y de objetos.
System

Routing overlay es un tipo de algoritmo implementado en la capa de aplicación, cuya función es asegurar que cada
nodo encuentre el objeto requerido por él, a través de los demás y sin la utilización de un índice central. Además “…
analizar algoritmos bajo este modelo va a ayudar significativamente en el diseño de algoritmos para redes distribuidas
University

modernas” [3], routing overlays está basado en los trabajos de Plaxton. [3].

Haremos énfasis en una versión: Algoritmo de Pastry (presentado por Rowstron y Druschel [4]), este toma la forma
de un modelo tipo Tabla Hash (DHT, distributed hash table), lo que significa que se hace uso de llaves para acceder
directamente a los datos requeridos en la tabla.
International

III. PASTRY

Pastry utiliza las características de un modelo DHT. “Cada nodo en la cubierta de red de peer-to-peer de Pastry se le
asigna un identificador de nodo (nodeId) de 128-bits” [4] (o Global Unique IDentifier: GUID [2]), estos identificadores
son números en base 16 (hexadecimal). En Pastry se envían mensajes desde un nodo a otro mediante un algoritmo
para buscar la ruta (ver [2]). Cada nodo tiene una tabla de enrutamiento y un vector con los GUIDs e IPs de sus
Whitney

vecinos más cercano, normalmente se registran los ocho menores y los ocho mayores.

Cuando el nodo de interés se encuentra en este vector, se envía directamente el mensaje, sino se utiliza la tabla de
enrutamiento de la siguiente forma:
con

Los dígitos de los GUIDs funcionan como llaves en las tablas de enrutamiento.
alianza

0 0 1 2 3 4 5 6 … F
1 10 11 12 13 14 15 16 … 1F
Grancolombiano-en

2 120 121 122 123 124 125 126 … 12F


3 1230 1231 1232 1233 1234 1235 1236 … 123F

Figura 3: Cuatro primeras filas de la Tabla de enrutamiento del nodo con GUID: 1234

La figura 3 muestra las primeras filas de la tabla de enrutamiento (para GUIDs de 128 bits las tablas tendrán 32 filas)
de un nodo cuyos primeros dígitos de su GUID son 1234. En las celdas de cada fila se hace variar el último dígito,
conservando los anteriores que corresponden al nodo al que pertenece la tabla, así pues, en la fila cero, se tiene una
variación de 0 a F, en la uno todas las celdas empiezan con 1 y variamos entonces el segundo dígito, la fila 2 tiene fijo
el 12 y variamos el tercer dígito una vez más, y continuamos así hasta el final.
Politécnico

La búsqueda de los datos sobre la ubicación del nodo se realiza comparando, hasta donde sea posible, dígito por
dígito entre los GUIDs del nodo actual y el de destino en la tabla de enrutamiento y nos acercamos así a él cada vez
más, si no se puede continuar recorriendo la tabla del nodo actual y no se ha encontrado el GUID exacto del destino,
se envía la búsqueda al nodo que se encuentre en la celda con la llave mas cercada.
4

Por ejemplo: en una celda A379F1 se podría encontrar la IP del nodo A379F14F y podemos inferir que si el mensaje
es enviado a este nodo, la celda pertenecía a la tabla de un nodo con GUID A379FXYZ donde 0≤X≤F tal que X≠1 y
0≤Y,Z≤F. O gráficamente:
Si enviamos un mensaje del nodo 1234 al nodo 134D, el nodo 1234 busca en su tabla la celda con el GUID más
System

cercano al deseado, como podemos ver, no es posible que la búsqueda pase de la segunda fila, ya que los nodos
comparten solamente un digito de sus GUIDs:
University

0 0 1 2 3 4 5 6 … F
1 10 11 12 13 14 15 16 … 1F
2 120 121 122 123 124 125 126 … 12F
Figura 4: Tabla de enrutamiento del nodo 1234
International

La celda 13 contiene la información del nodo más cercano en términos de su GUID al nodo 134D, ahora supongamos
que el GUID de la celda 13 contiene la IP del nodo 135A, nos vamos para ese nodo:

0 0 1 2 3 4 5 6 … F
1 10 11 12 13 14 15 16 … 1F
2 130 131 132 133 134 135 136 … 13F
3 1350 1352 1352 1353 1354 1355 1356 … 135F
Whitney

Figura 5: Tabla de enrutamiento del nodo 135A

Supongamos que llegamos a la celda 134 y en ella encontramos la IP del nodo 134D, aunque podríamos continuar
por ejemplo si se trata del nodo 134F.
con

Por tratarse de una estructura de tipo árbol, en Pastry se logrará llegar al nodo deseado con complejidad O(Log N).
alianza

Cuando un nodo nuevo quiere formar parte de la red, este adquiere su propio GUID o nodeID, luego notifica de su
existencia a otro nodo en su vecindad “Tal nodo puede ser localizado automáticamente, por ejemplo, usando
“expanding ring IP multicast” o ser obtenido por el administrador del sistema a través de canales externos” [4], otra
Grancolombiano-en

opción para la inicialización de nodos en este y otros modelos similares es la propuesta de crear un “anillo universal”
que provea este tipo de servicios[5]. El nodo contactado (A) reenvía el mensaje al nodo más cercano (en términos de
GUID) en su tabla (B), y además podemos asegurar que la primera fila de la tabla de enrutamiento de este nodo (A)
sirve como base para el nuevo nodo (por ser un nodo cercano en cuanto a una métrica de red) y, además, el segundo
(B) y tercer nodo contactado (C) comparten su segunda y tercer fila con el nuevo nodo, y así sucesivamente hasta
formar su tabla de enrutamiento completa. Por otro lado, el vector de vecinos del último nodo le sirve al nuevo nodo ya
que son cercanos.

Cada nodo está continuamente notificando a sus vecinos que está activo, si el nodo falla, los nodos en su tabla
dejarán de recibir la señal y asumirán que se presentó un error, entonces, actualizarán su tabla para reemplazarlo por
Politécnico

otro nodo activo. Por supuesto, si un nodo desea abandonar la red, este notificará voluntariamente a los demás para
que cambien sus tablas. En todas las filas de la tabla de enrutamiento, excepto la última, se hace referencia a uno de
varios nodos posibles, si existe un nodo que pueda ocupar una posición y este se encuentra más cerca (métrica de
red), se cambiará la tabla tanto para hacer referencia al más cercano como para mejorar la eficiencia.

Con la anterior explicación se tiene una idea global del funcionamiento de Pastry como modelo de enrutamiento. Por
supuesto este no es el único foco de trabajo para este tipo de redes, pero es una aproximación interesante para la
solución del tipo de problemas que se pueden presentar en las redes p2p antes descritas. La mayoría de estos
trabajos son relativamente nuevos lo que hace que las implementaciones sean poco difundidas y con algunas
5

limitaciones, para el caso de Pastry se tiene disponible FreePastry [6] desarrollado por Rice University, Houston, USA
bajo el modelo de software libre.

Referencias
System

[1] M. Miller, Discovering P2P, San Francisco London: Sybex, 2001.


[2] G. Coulouris, Distributed Systems: Concepts and design. Estados Unidos: Addison-Wesley, 2005, pp. 397–430.
[3] C. G. Plaxton, R. Rajaraman, y A. W. Richa. Accessing Nearby Copies of Replicated Objects in a Distribute d
Environment. En Proceedings of the 9th Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA),
University

1997.
[4] A. Rowstron, P Druschel. Pastry: Scalable, decentralized object location and routing for large-scale peer-to-peer
systems. En 18th IFIP/ACM International Conference on Distributed Systems Platforms (Middleware 2001).
Heidelberg, Germany, November 2001.
[5] Castro, M., Druschel, P., Kermarrec, A., y Rowstron, A. One ring to rule them all: service discovery and binding in
International

structured peer-to-peer overlay networks. En Proceedings of the 10th Workshop on ACM SIGOPS European
Workshop: Beyond the PC, Saint-Emilion France. 2002.

Sobre los autores

Germán Enrique Ulloa Barón


Whitney

Estudiante de Ingeniería de Sistemas del Politécnico Grancolombiano, becado por excelencia académica.
Miembro fundador del Capítulo Estudiantil ACM del Politécnico Grancolombiano Participante activo del circuito
Redis/Acis de Maratones de programación.
con

Integrante del equipo Yellow[marine] que participó en la XX Maratón Nacional de Programación ACM y clasificó a la
Maratón Regional Suramericana ACM-ICPC 2006.
alianza

socket
Diego Fernando Ribero Nieto

Estudiante de Ingeniería de Sistemas 4.0 semestre, Líder de la célula de investigación de Java de el Politécnico
Grancolombiano-en

Grancolombiano.
Politécnico

También podría gustarte