sábado, 28 de julio de 2012

COMUNICACIÓN VIRTUAL A TRAVÉS DE UN SISTEMA DISTRIBUIDO



Las condiciones que debe cumplir un sistema Distribuido:


  • Escalabilidad
  • . Las redes P2P tienen un alcance mundial con cientos de millones de usuarios potenciales. En general, lo deseable es que cuantos más nodos estén conectados a una red P2P, mejor será su funcionamiento. Así, cuando los nodos llegan y comparten sus propios recursos, los recursos totales del sistema aumentan. Esto es diferente en una arquitectura del modo servidor-cliente con un sistema fijo de servidores, en los cuales la adición de clientes podría significar una transferencia de datos más lenta para todos los usuarios. 
  • Robustez
  • . La naturaleza distribuida de las redes peer-to-peer también incrementa la robustez en caso de haber fallos en la réplica excesiva de los datos hacia múltiples destinos, y —-en sistemas P2P puros—- permitiendo a los peers encontrar la información sin hacer peticiones a ningún servidor centralizado de indexado. En el último caso, no hay ningún punto singular de falla en el sistema.
  • Descentralización
  • . Estas redes por definición son descentralizadas y todos los nodos son iguales. No existen nodos con funciones especiales, y por tanto ningún nodo es imprescindible para el funcionamiento de la red. 
  • Distribución de costes entre los usuarios
  • . Se comparten o donan recursos a cambio de recursos. Según la aplicación de la red, los recursos pueden ser archivos, ancho de banda, ciclos de proceso o almacenamiento de disco.
  • Anonimato
  • . Es deseable que en estas redes quede anónimo el autor de un contenido, el editor, el lector, el servidor que lo alberga y la petición para encontrarlo, siempre que así lo necesiten los usuarios. Muchas veces el derecho al anonimato y los derechos de autor son incompatibles entre sí, y la industria propone mecanismos como el DRM (gestión Digital de Derechos) para limitar ambos.
  • Seguridad
  • . Es una de las características deseables de las redes P2P menos implementada. Los objetivos de un P2P seguro serían identificar y evitar los nodos maliciosos, evitar el contenido infectado, evitar el espionaje de las comunicaciones entre nodos, creación de grupos seguros de nodos dentro de la red, protección de los recursos de la red.



Para el caso del  ejemplo  Skype, se podría pensar en una red de compartición de archivos P2P por ejemplo para la docencia (aunque las redes p2p actuales son más generales y podria uno pensar que ya incluyen este tipo de usos), aqui se puede pensar en que los clientes tengan una porción del software (softwatre cliente), que existan servidores de bases de datos (en donde esten los procesos de autenticación de los clientes y talvez los repositorios de datos) y servidores intermedios que hacen las labores de enrutamiento, administración y control del servicio. 

Las operaciones a centralizar deberian ser las normales repositorios de datos y bases de datos de autenticación de usuarios (por facilidades de administración y por seguridad dado que es más facil diseñar un esquema fuerte de seguridad para algunos equipos centralizados y mucho más complejo para los equipos distribuidos)

APLICACIONES DISTRIBUIDAS EN EL MUNDO REAL



Para ejemplos de aplicaciones distribuidas en el mundo real, y como interés personal el sistema de voz IP de Microsoft (skype), los usuarios finales son los clientes, debe tener granjas completas de servidorees encargados de recolección, enrutamiento y control del servicio, en otra capa deben tener los servidores d autenticación (sobre bases de datos), y en otra capa deben estar los servidores de Gateway que se usan como puente de comunicación entre los usuarios).


Skype, consideramos que un verdadero sistema P2P conecta a todos los nodos en una red de manera dinámica para participar en el enrutamiento de tráfico, el procesamiento y las tareas intensivas de ancho de banda que de otro modo estarían administradas por servidores centrales.

Un aplicación P2P real permite a los pequeños equipos con buenas ideas desarrollar software y negocios que compitan con éxito con los originados en compañías más grandes. La verdadera tecnología P2P aplicada a mercados maduros y consolidados, se transforma en tecnología revolucionaria.
Las redes descentralizadas P2P tienen varias ventajas sobre las redes cliente-servidor tradicionales. Estas redes crecen indefinidamente sin aumentar el tiempo de búsqueda y sin necesidad de usar recursos centralizados y costosos. Utilizan el poder de la conexión a redes y del procesamiento de las máquinas de los usuarios finales debido a que la cantidad de dichos recursos siempre aumenta en proporción directa al crecimiento de la propia red.
Cada nuevo nodo que se agrega a la red le añade ancho de banda y poder de procesamiento potencial. De este modo, al descentralizar los recursos, las redes P2P de segunda generación (2G) han podido eliminar casi por completo los gastos relacionados con una infraestructura centralizada y grande.

¿Cómo usa Skype la red de comunicación P2P?



El equipo de Skype tuvo éxito en las comunicaciones P2P porque fue capaz de usar todos los recursos disponibles en la red y evitó utilizar recursos centralizados y costosos.


Arquitectura Skype


La arquitectura Skype se basa en un tipo de red llamada “overlay network” o red de aplicación que es un ejemplo de red P2P.
La red overlay de Skype tiene 3 tipos de nodos:
a) Nodo Normal: nodo donde se ejecuta una aplicación o cliente Skype (SC) que se puede utilizar para realizar llamadas de voz y para enviar mensajes del texto
b) Supernodo: nodo con una dirección IP pública que tiene suficiente CPU, memoria, y ancho de banda de red.
c) Skype login Server (Servidor de conexión): Servidor único y única entidad central dentro del esquema de Skype asegurándose de que los nombres de la conexión seanúnicos a través del espacio de nombres de Skype. Su principal función es la de permitir la autentificación del usuario y almacenar los nombres de forma única y las contraseñas del usuario. Un nodo normal debe conectar con un supernodo y debe registrase en el servidor de conexión de Skype para una conexión exitosa.


Skype usa las siguientes técnicas de comunicaciones basadas en IP:

Firewall y NAT (traducción de direcciones de red) transversal

Los clientes que no usen firewalls y los que se encuentren en direcciones IP enrutables en forma pública pueden ayudar a los nodos que cuenten con NAT a comunicarse por medio del enrutamiento de llamadas. Esto permite que hablen entre sí dos clientes que de otra manera no podrían comunicarse. Las llamadas están cifradas de origen a destino y se eligen los servidores proxy con recursos sobrantes, de modo que el rendimiento para estos usuarios no se vea afectado.
Además, hemos desarrollado diversas técnicas para evitar la configuración por parte del usuario final de las puertas de enlace y de los firewalls, que de otro modo no permitirían que los usuarios se comunicaran exitosamente a través de una red P2P. En resumen, Skype funciona con cualquier firewall o puerta de enlace sin necesidad de configuración especial alguna.

Directorio de usuarios descentralizado e internacional

La mayoría de los software de comunicación o mensajes instantáneos requieren algún tipo de directorio centralizado para establecer una conexión entre los usuarios finales para asociar un nombre de usuario estático y una identidad con un número IP que puede cambiar.
Este cambio puede darse cuando un usuario vuelve a conectarse o ingresa en una red con una dirección IP dinámica. La mayoría de las herramientas de comunicación basadas en Internet rastrean a los usuarios con un directorio central que registra cada nombre de usuario y número IP y que lleva cuenta de si los usuarios están conectados o no. Los directorios centrales son extremadamente costosos cuando la base de usuarios supera el millón. Al descentralizar esta infraestructura dependiente de recursos, Skype puede orientar todos sus recursos al desarrollo de una funcionalidad innovadora.
Las tecnologías de red P2P utilizadas por las aplicaciones de uso compartido de archivos serían más apropiadas para descentralizar esto, pero esas redes son fragmentadas por naturaleza, es decir, una búsqueda no llega a todos los nodos de la red.
Es claro que para poder proporcionar comunicaciones de alta calidad al precio más bajo posible era necesario que se desarrollara tecnología de tercera generación P2P ("3G P2P") o índice global (Global Index, GI), y este desarrollo representa otro cambio paradigmático en el concepto de redes escalables. La tecnología de índice global es una red de varios niveles en la que los supernodos se comunican de tal manera que cada nodo de la red tiene conocimiento total de todos los recursos y usuarios disponibles con mínima latencia.

¿Cómo mantiene Skype la calidad de las llamadas?

Al usar todos los recursos posibles, el sistema P2P que admite las comunicaciones de Skype puede enrutar en forma inteligente las llamadas cifradas por medio de la ruta más efectiva. Skype incluso mantiene abiertas varias rutas de conexión y escoge en forma dinámica la más apropiada para un determinado momento. Esto tiene el efecto evidente de reducir la latencia y de aumentar la calidad de la llamada a través de la red.

¿Skype es seguro?

Skype es tan seguro como podemos hacerlo. Cuando usted llama a otra persona en Skype, su llamada está cifrada, lo que garantiza su privacidad. Lo mismo ocurre con sus videos, mensajes instantáneos y archivos compartidos.

En este link encontramos más información al respecto: http://www.uv.es/~montanan/redes/trabajos/skype.pdf

ANÁLISIS DE UN SISTEMA DISTRIBUIDO


En la actualidad, encontramos diversos sistemas distribuidos sobre la red ,  empresas reconocidas como:  De remate.com, Skype, Correo electrónico: gmail, hotmail, yahoo.

La persistencia y escalabilidad deberían ser características intrínsecas a un buen sistema distribuido, dado que la red abarca múltiples países y tecnologías, el manejo de la información y el uso de bases de  datos, son características propias de un servidor de archivos el cual proporciona el uso compartido de almacenamiento no volátil a las aplicaciones, así como la tolerancia a fallas, migración de archivos, seguridad. La información debe estar organizada y de manera permanente con lo cual nos permite: almacenar, recuperar, compartir y proteger.

  
Por otro lado, la escalabilidad, se refiere a la capacidad de crecer de un sistema a través de tres dimensiones:
Tamaño: la capacidad de agregar fácilmente más recursos y usuarios al sistema.
Geográfica: la capacidad de que usuarios y recursos se encuentren a distancias considerables
Administración: La capacidad de mantener una administración fácil a pesar del crecimiento.




Por otro lado, uno podría pensar en realizar la implementación a través de Internet (con la característica de que el sitio tendría visibilidad publica, que puede que no sea una característica deseable, dependiendo del tipo de sistema) o a través del mismo estándar TCP/IP pero implementado a través de redes WAN sobre canales privados de datos (mucho más costoso) o de nuevo realizarlo sobre internet pero restringir el ingreso a través de conexiones por VPN (debidamente autenticadas y controladas) que sería como un esquema intermedio entre el público (web) y el privado (WAN Privada).


Como característica del sistema debería ser un aplicativo web lo cual es una gran ventaja en las organizaciones actuales por ser un canal con ventaja competitiva, teniendo en cuenta las tendencias actuales 

de Arquitectura, 


la variedad de fabricantes de Bases de Datos, 

y de fabricantes de pasarelas.  




Por lo tanto la aplicación web se distribuye en tres niveles.(independiente del esquema de conexión, cliente-servidor, dado que facilita la actualización y el mantenimiento pensado desde el punto de vista de soporte a clientes en varios países, etc.),

Se distinguen tres componentes básicos de software:
·         Presentación.- Tiene que ver con la presentación al usuario de un conjunto de objetos visuales y llevar a cabo el procesamiento de los datos producidos por el mismo y los devueltos por el servidor.
·         Lógica de aplicación.- Esta capa es la responsable del procesamiento de la información que tiene lugar en la aplicación.
·         Base de datos.- Esta compuesta de los archivos que contienen los datos de la aplicación.



En donde se puede contemplar inclusive varios servidores por capa o redundancia en todas ellas, dependiendo del número de clientes a acceder y el nivel de disponibilidad que queramos del sistema distribuido al esquema ya planteado.