Problemas técnicos relacionados con P2P

1 Principio de la tecnología P2P

¿Qué es la tecnología peer-to-peer (P2P)? La tecnología P2P pertenece a la categoría de red superpuesta y es un método de intercambio de información de red relativo al modelo cliente/servidor (C/S). En el modelo C/S, se utiliza un servidor dedicado para la distribución de datos y varios clientes obtienen datos de este servidor. La ventaja de este modelo es que la coherencia de los datos es fácil de controlar y el sistema es fácil de gestionar. Sin embargo, la desventaja de este modelo es: debido a que solo hay un servidor (incluso si hay varios servidores, es muy limitado), el sistema es propenso a un único punto de falla cuando un solo servidor enfrenta muchos clientes, debido a la La potencia de la CPU, el tamaño de la memoria y el ancho de banda de la red son muy limitados y la escalabilidad es deficiente. La tecnología P2P es una estructura de red peer-to-peer propuesta para resolver estos problemas. En una red P2P, cada nodo puede obtener servicios de otros nodos y proporcionar servicios a otros nodos. De esta manera, se utilizan enormes recursos del terminal, resolviendo dos inconvenientes del modelo C/S de una sola vez.

Las redes P2P tienen tres estructuras organizativas populares, que se utilizan en diferentes aplicaciones P2P.

(1) Estructura DHT

La tabla hash distribuida (DHT) [1] es una herramienta poderosa. Su propuesta ha provocado un aumento en la investigación sobre DHT en la comunidad académica. Aunque DHT tiene varios métodos de implementación, todos tienen las mismas características, es decir, todos son una estructura de topología de anillo. En esta estructura, cada nodo tiene una identificación de nodo (ID) única, y la ID de nodo es un valor hash de 128 bits. . Cada nodo guarda los ID de otros nodos predecesores y sucesores en la tabla de enrutamiento. Como se muestra en la Figura 1 (a). A través de esta información de enrutamiento, se pueden encontrar fácilmente otros nodos. Esta estructura se utiliza principalmente para compartir archivos y como estructura subyacente para la transmisión de medios en streaming [2].

(2) Estructura de árbol

La estructura de árbol de la red P2P se muestra en la Figura 1(b). En esta estructura, todos los nodos están organizados en un árbol, la raíz del árbol solo tiene nodos secundarios, las hojas solo tienen nodos principales y otros nodos tienen nodos secundarios y nodos principales. El flujo de información fluye a lo largo de las ramas. La estructura de árbol original se utilizó principalmente para transmisión en vivo P2P [3-4].

(3) Estructura de la red

La estructura de la red se muestra en la Figura 1 (c), también llamada sin estructura. Como sugiere el nombre, en esta estructura, todos los nodos están conectados entre sí de manera irregular, no existe una relación estable y no existe una relación padre-hijo. La estructura de malla [5] proporciona a P2P máxima tolerancia y adaptabilidad dinámica, y ha logrado un gran éxito en aplicaciones de transmisión en vivo y bajo demanda. Cuando la red se vuelve muy grande, a menudo se introduce el concepto de supernodos. Los supernodos se pueden combinar con cualquiera de las estructuras anteriores para formar una nueva estructura, como KaZaA [6].

2 Estado actual de la aplicación de la tecnología P2P

Porque puede aliviar en gran medida los problemas de presión excesiva en el lado del servidor y el punto único de falla en la arquitectura tradicional, y puede aprovechar al máximo Los ricos recursos del terminal, P2P La tecnología se utiliza ampliamente en diversos campos de aplicación de las redes informáticas, como la informática científica distribuida, el intercambio de archivos, la transmisión en vivo y bajo demanda, las comunicaciones de voz y las plataformas de soporte de juegos en línea.

(1) Computación científica distribuida

Sabemos que los recursos de CPU de muchas computadoras no siempre mantienen su máximo funcionamiento, e incluso muchas veces la computadora se encuentra en un estado "inactivo", como cuando los usuarios están ausentes temporalmente, etc. La tecnología P2P puede unir los recursos de CPU de muchos terminales para servir a un único cálculo. Este tipo de cálculo es generalmente un cálculo científico que requiere una gran cantidad de cálculo, muchos datos y lleva mucho tiempo. En cada proceso de cálculo, las tareas (incluidas la lógica y los datos, etc.) se dividen en múltiples porciones y se asignan a máquinas de nodos P2P que participan en la computación científica. Sin afectar el uso de la computadora original, las personas utilizan recursos de CPU dispersos para completar tareas informáticas, devolver los resultados a uno o más servidores e integrar muchos resultados para obtener el resultado final.

El sistema informático científico distribuido P2P más famoso del mundo no es otro que el proyecto "SETI@home".

El proyecto SETI@home (denominado S@H o SETI) fue iniciado por la Universidad de California, Berkeley, en 1999. Es el proyecto de computación distribuida de mayor éxito hasta la fecha. SETI@home busca civilizaciones extraterrestres analizando datos de radiotelescopios. Esta es una aplicación "cool" a los ojos de muchos fanáticos de la ciencia ficción e incluso de mucha gente común. Una primera versión de SETI había atraído a 5,43 millones de usuarios en 2005, analizando una gran acumulación de datos. Al igual que la inmensidad del universo, los datos que deben calcularse (es decir, las innumerables señales de radio que existen en el universo) también son enormes. Se puede decir que estos millones de terminales forman una "supercomputadora" que está fuera del alcance de los ordenadores más rápidos y de alto rendimiento.

(2) Compartir archivos

Si preguntas a cien internautas sobre el método de descarga de archivos más popular en China, me temo que 99 de ellos responderán "BT". "BT" es la abreviatura de BitTorrent[7]. Es un protocolo que se basa en el método P2P para compartir y transmitir archivos entre una gran cantidad de usuarios de Internet. El software cliente correspondiente incluye BitTorrent, BitComet y BitSpirit. Debido a su sencilla implementación y facilidad de uso, es ampliamente utilizado entre los usuarios chinos. Cuando un nodo en BitTorrent comparte un archivo, primero lo fragmenta y guarda el archivo y la información de fragmentación en un archivo de tipo flujo (Torrent). Este tipo de nodo se denomina vívidamente nodo "semilla". Cuando otros usuarios descargan el archivo, descargan algunos de los fragmentos del archivo según la información del archivo Torrent y luego comparten los fragmentos descargados entre otros nodos que descargan el archivo, para comunicarse entre sí, realizando así el archivo. distribución rápida. Dado que cada nodo descarga archivos y al mismo tiempo carga fragmentos del archivo para otros usuarios, en general, la velocidad de descarga no disminuirá a medida que aumente el número de usuarios. Por el contrario, cuantas más personas descarguen, más rápida será la velocidad.

BitTorrent es un protocolo de red no estructurado. Además de BitTorrent, existen muchos protocolos conocidos para compartir archivos P2P no estructurados, entre los que se incluyen Gnutella[8] y KaZaA[6].

El protocolo Gnutella es el modelo de red P2P no jerárquico y totalmente distribuido más típico. Los nodos de la red están conectados aleatoriamente a varios otros nodos, llamados "vecinos". Esta estructura puede adaptarse bien a las características dinámicas de los nodos que se unen y salen con frecuencia en la red P2P, porque cualquier nodo puede ser conectado como "vecino" por un nodo recién agregado, y cualquier "vecino" también puede abandonar la red a voluntad. Al mismo tiempo, esta elección de unirse a un nodo y abandonarlo es un comportamiento independiente entre nodos y se distribuye aleatoriamente en la red. Por lo tanto, la red de Gnutella tiene las ventajas de robustez, rendimiento en tiempo real, confiabilidad y equilibrio de carga.

En la red Gnutella existen los siguientes problemas:

Hay muchos mensajes redundantes y hay cierto desperdicio en el consumo de ancho de banda. El protocolo de red Gnutella utiliza un mecanismo de propagación de mensajes por inundación, que produce un número exponencialmente creciente de mensajes redundantes. Según las estadísticas, el software P2P representa entre el 40% y el 70% del ancho de banda operativo en Internet durante el día y, en ocasiones, alcanza el 80% durante la noche.

La eficiencia de búsqueda es baja y la escalabilidad es pobre. El protocolo de búsqueda de la red Gnutella trata todos los recursos y nodos de manera uniforme, no considera las diferencias de rendimiento de los nodos y no utiliza la experiencia histórica de consultas exitosas, lo que hace que la eficiencia de la búsqueda sea baja.

Los nodos en el protocolo KaZaA generalmente están conectados sin estructura. Pero hay un "supernodo" en el protocolo KaZaA. Este tipo de "supernodo" en realidad se deriva de nodos cliente comunes, pero generalmente tienen las características de una gran potencia informática, un gran ancho de banda de acceso y un tiempo de conexión estable. En el protocolo KaZaA, los supernodos asumen algunas tareas del servidor, como administrar algunos nodos ordinarios y ser responsables de reenviar mensajes de búsqueda, etc. Después de que cada nodo se conecte, buscará un supernodo al que afiliarse y se conectará aleatoriamente a otros nodos ordinarios que originalmente estaban afiliados al supernodo para formar una pequeña red no estructurada. El índice de archivos compartidos de los nodos ordinarios se informa al supernodo afiliado.

Por lo tanto, la red KaZaA generalmente puede considerarse como una red no estructurada de dos capas. La capa superior es una red no estructurada compuesta por supernodos y la capa inferior es una pluralidad de redes no estructuradas compuestas por nodos ordinarios, que se dividen en múltiples grupos; a los supernodos adjuntos. Cuando un nodo ordinario inicia una solicitud de búsqueda de archivos, envía el mensaje de solicitud al supernodo adjunto. El supernodo busca archivos calificados en el área a partir de su propia información de índice de archivos compartidos almacenados y reenvía la solicitud de búsqueda a varios nodos en el. Al mismo tiempo, otros supernodos devuelven resultados de búsqueda dentro de su área. Si es necesario, este proceso de reenvío se puede realizar en varios pasos para obtener una gama más amplia de resultados de búsqueda. Una estructura híbrida de este tipo puede "dividir y conquistar" nodos terminales heterogéneos y puede aprovechar al máximo algunos nodos terminales potentes para desempeñar el papel de servidores "pequeños".

Además de estos protocolos de intercambio de archivos P2P no estructurados, casi todas las redes DHT pueden y se han utilizado para implementar aplicaciones para compartir archivos, como Chord, Pastry, KAD y CAN y otras aplicaciones.

(3) Transmisión en vivo

La gente alguna vez pensó que P2P era el más adecuado para compartir archivos, pero ahora todos han descubierto que el modelo P2P es tan adecuado para la transmisión en vivo que investigan The El punto de acceso cambió rápidamente a medios de transmisión P2P en un corto período de tiempo. El primer software de transmisión en vivo P2P en China debería ser Coolstreaming[5] estudiado por el Departamento de Ciencias de la Computación de la Universidad de Ciencia y Tecnología de Hong Kong, AnySee[9] estudiado por el Laboratorio Provincial de Computación en Red y en Clústeres de Hubei de la Universidad de Ciencias de Huazhong y Tecnología y Gridmedia de la Universidad de Tsinghua.

Coolstreaming es un software de transmisión en vivo basado en una topología de red no estructurada en malla, y su nombre chino es "Coolstream". En Coolstreaming, cada nodo ingresa a la red a través de un servidor de inicio de sesión (BS) y obtiene algunas listas de vecinos. Los datos de medios se comparten entre cada nodo y sus vecinos. Los nodos en Coolstreaming comparten datos multimedia basándose en un mecanismo llamado "basado en datos". Primero, se utiliza un "Mapa de búfer" para marcar los datos contenidos en el búfer del nodo: por cada segundo de contenido multimedia, si el nodo lo obtuvo de la fuente del programa o del vecino, marque el segundo dato como "1", de lo contrario está marcado como "0". De esta manera, un búfer con una longitud de 80 segundos corresponde a una tabla de mapeo de búfer con una longitud de 80 bits. En segundo lugar, los nodos intercambian periódicamente sus respectivas tablas de asignación de búfer en forma de "latido" y obtienen los bits de datos que no tienen pero que sí tienen sus vecinos mediante comparación. Luego, basándose en el algoritmo de programación de datos, seleccionan el vecino apropiado y. solicitar los datos correspondientes. Coolstreaming adopta una estructura de malla completa para organizar los nodos en la red. Cada nodo está conectado a unos 20 vecinos. Mientras intercambia periódicamente tablas de mapeo de búfer, también intercambia su propia lista de vecinos. De esta manera, cuando un vecino se va, un vecino cuyo número de conexiones no haya alcanzado el límite superior puede seleccionarse de su lista de vecinos proporcionada recientemente como vecino de "reemplazo" para conectarse. El primer Coolstreaming adopta la estrategia de seleccionar vecinos aleatoriamente, es decir, devolver aleatoriamente algunas listas de nodos actualmente en línea desde BS y luego seleccionar aleatoriamente algunos nodos para la conexión. La selección de vecinos "de reemplazo" también es aleatoria. Esto puede lograr un cierto grado de equilibrio de carga al mismo tiempo, porque el número de vecinos conectados a cada nodo es básicamente uniforme. Sin embargo, las deficiencias de esto también son obvias: dos nodos que están lejos y mal conectados también pueden programarse para convertirse en vecinos, lo que afecta en gran medida la calidad del servicio del sistema.

El Laboratorio Provincial Clave de Computación en Red y en Clústeres de la Universidad de Ciencia y Tecnología de Huazhong es uno de los primeros grupos en China en estudiar la transmisión en vivo P2P. Se espera que el software AnySee desarrollado por él permita a los usuarios Mire en línea en cualquier momento y en cualquier lugar. Puede ver programas multimedia en vivo.

La primera versión de AnySee se basó en una estructura de árbol: la fuente del programa era el nodo raíz de un árbol de multidifusión, y los nodos posteriores se programaban como sus "hijos" o subárboles. Cada nodo solicita datos a su nodo principal y proporciona datos a varios nodos secundarios. Una estructura de este tipo puede permitir que los nodos se unan rápidamente a la red, y se puede construir un árbol de multidifusión IP basado en el principio de proximidad de IP de modo que los nodos que se unan sean todos nodos adyacentes a su propia IP, optimizando así la calidad del servicio.

Después de eso, AnySee lanzó una segunda versión, que combinaba la estructura de árbol original y la popular estructura de malla, de modo que "los datos de control fluyen a través del árbol y los datos de medios fluyen a través de la red", lo que no solo puede ayudar a los nodos a localizar rápidamente el punto de unión. , pero también logra un cierto grado de equilibrio de carga y alivia el problema de la gran diferencia de tiempo de reproducción entre el nodo inferior y el nodo superior en la estructura de árbol pura original. La versión reciente de AnySee canceló la estructura de árbol y evolucionó hacia una estructura de red optimizada (como se muestra en la Figura 2), es decir, cada nodo mantiene un cierto número de miembros vecinos y selecciona el nodo "socio" más adecuado para comunicarse con él. . para intercambiar datos. El número de socios tiene un límite superior y un límite inferior. Cuando no se alcanza el límite inferior, el nodo continuará buscando nuevos nodos adecuados para unirse a la lista de socios; cuando se alcanza el límite inferior, el nodo deja de buscar activamente; para socios, pero puede aceptar otros nodos para agregarlo a la lista de solicitudes de socios; cuando se alcanza el límite superior, el nodo ya no establecerá asociaciones con nuevos nodos.

Además de la investigación académica sobre la transmisión en vivo P2P, en China han surgido muchos productos comerciales exitosos de transmisión en vivo P2P, como PPLive, PPStream, Boiling Point y TVAnts, entre los cuales PPLive es el más famoso. PPLive tiene actualmente cientos de canales. Durante la final de "Super Girl" de 2006, el número de espectadores del canal alcanzó los 100.000, lo que se puede decir que llevó el P2P a su límite. Además, existen muchos estudios sobre transmisión en vivo P2P en el extranjero, como SplitStream [10], etc.

(4) Transmisión de medios bajo demanda

Dado que los usuarios no pueden elegir ver clips específicos cuando miran programas en vivo, cuando la gente estudia con entusiasmo la transmisión en vivo P2P, algunas personas han comenzado a convertir su atención al servicio de streaming P2P bajo demanda. En la actualidad, no hay muchas instituciones que hayan lanzado con éxito la transmisión de medios P2P bajo demanda. Los ejemplos típicos incluyen el sistema GridCast[11] y el sistema bajo demanda PPStream. GridCast es también un sistema de vídeo bajo demanda de igual a igual desarrollado y puesto en uso con éxito por el Laboratorio Provincial Clave de Computación en Redes y Clusters de Hubei en la Universidad de Ciencia y Tecnología de Huazhong en diciembre de 2005. Permite que varias personas compartan videos bajo demanda. clips y seguimiento (guía de usuario de Tracker Server, organización de contenido de estructura de anillo y otras funciones). Dado que generalmente no hay demasiadas personas en un canal a pedido, cuando el usuario realiza operaciones de grabación y reproducción de video (VCR) (es decir, arrastrar el punto de reproducción hacia adelante y hacia atrás, pausar/continuar la reproducción, etc.), ¿se puede posicionado rápidamente para ver el programa en ese momento? Otros usuarios se han convertido en la clave para la tecnología P2P bajo demanda. Para lograr un posicionamiento rápido, GridCast adopta una estructura de organización de contenido de medios en anillo concéntrico. En cada canal de programa, el contenido multimedia se divide en intervalos que aumentan exponencialmente. Por ejemplo, un programa de película de una hora y media se puede dividir en [0, 5], (5, 15], (15, 35). ], (35, 75] y (75, END=90], la unidad es minutos. Cada nodo registra varios nodos que están viendo el contenido entre cada segmento. De esta manera, en una estructura de malla similar a AnySee, estos pueden ser intercambiados regularmente Por lo tanto, cuando un usuario arrastra el punto de visualización, puede ubicar rápidamente el nodo de grabación del segmento correspondiente y obtener una gran cantidad de registros de respaldo del intervalo visto por estos nodos para solicitar los datos multimedia de ese intervalo, GridCast. también optimiza las estrategias de programación de datos según los hábitos del usuario

(5) Comunicación de voz de capa IP

La comunicación de voz de capa IP (VoIP) es un nuevo servicio de comunicación telefónica por Internet, en comparación con la PSTN tradicional. servicios telefónicos, tiene ventajas obvias como buena escalabilidad, fácil implementación y bajo precio. En las aplicaciones de VoIP en todo el mundo, dado que las partes que se comunican pueden estar en diferentes condiciones de red, no solo se utilizan algunas. El problema de la presión excesiva, pero también puede no proporcionar una garantía de calidad de llamada satisfactoria para las partes comunicantes designadas. Por lo tanto, es factible utilizar la tecnología P2P para realizar de forma dinámica y adaptativa el control de enlaces y el reenvío de mensajes basados ​​en las redes de ambas partes comunicantes. Solución

Skype[12], que actualmente es popular en todo el mundo, es un software VoIP P2P típico. Skype es atractivo porque puede proporcionar una calidad de voz clara y servicios gratuitos, y es fácil y rápido. uso Tiene decenas de millones de usuarios en todo el mundo, con 5 millones de usuarios en línea todos los días, y el número de usuarios registrados aumenta en 150.000 cada día.

Básicamente, Skype adopta una topología similar a KaZaA y selecciona algunos supernodos en la red. Cuando la conexión directa entre las partes que se comunican no es efectiva, algunos supernodos adecuados asumirán el papel de nodos de tránsito, crearán conexiones de tránsito para las partes que se comunican y reenviarán los paquetes de comunicación de voz correspondientes.

(6) Plataforma de juegos en línea

Los juegos en línea a gran escala y los juegos de batalla en línea son los favoritos de muchos "net bugs". Sin embargo, debido a las capacidades limitadas del servidor, los juegos en línea a gran escala a menudo necesitan limitar la cantidad de personas en la escena o aumentar continuamente los servidores, y los juegos de batalla en línea también deben limitarse a redes de área local o depender de programas independientes del lado del servidor. y máquinas para realizar deportes electrónicos en Internet. En la actualidad, los investigadores han introducido la tecnología P2P en los juegos en línea y en las plataformas de soporte de juegos en línea.

La plataforma de juegos P2P de mayor éxito actualmente es el sistema PKTown[13] lanzado por el Laboratorio Provincial Clave de Computación en Red y en Clústeres de la Provincia de Hubei en la Universidad de Ciencia y Tecnología de Huazhong. El sistema PKTown es una plataforma P2P que admite una variedad de juegos de batalla en línea. La dificultad de la plataforma de juegos de batalla en red P2P es reunir nodos con estrictas restricciones de retraso, que están determinadas por los requisitos del propio juego de batalla: el retraso es un factor clave que afecta la experiencia del usuario del juego de batalla. Entre muchos usuarios en línea, ¿cómo programar a nuevos usuarios en un entorno rodeado de retrasos? PKTown también adopta el método de anillo concéntrico de crecimiento exponencial que apareció en GridCast, que resuelve muy bien este problema.

PKTown no necesita cambiar el código del juego en sí, sino que forma una LAN virtual entre los usuarios y los vecinos de Internet. Intercepta los paquetes de comunicación enviados por el juego y carga la dirección de la LAN virtual. , los reenvía y el proceso del juego los recibe. Después de eso, se considera que el paquete del juego proviene de la misma LAN y el juego se puede jugar normalmente. PKTown actualmente admite varios juegos como Warcraft, StarCraft y Counter-Strike. Ha sido probado en universidades y celebró con éxito la tercera competencia de juegos Race War de la Universidad de Ciencia y Tecnología de Huazhong, con buena respuesta de los usuarios.

3 Conclusión

Desde la aparición de la tecnología P2P en 1999, ahora se ha desarrollado y prosperado. Muchas de las tecnologías mencionadas en el artículo anterior han madurado, como la construcción de topologías, la distribución de contenido y otras tecnologías relacionadas. Debido a la estructura flexible de P2P y su amplia aplicación, existen infinitos fenómenos de aplicación de P2P a nuevos campos, y los productos de software P2P también están creciendo explosivamente como hongos después de una lluvia.

De la descripción de este artículo se puede ver que los principios básicos de P2P son fáciles de implementar y las direcciones de investigación de las personas también se liberan de las ataduras de los algoritmos de optimización y mantenimiento de infraestructura, y comienzan a profundizar. en la tecnología P2P a las cuestiones fundamentales. Los últimos resultados de la investigación muestran que muchos investigadores han comenzado a cambiar su enfoque hacia la investigación de agregación de retardo de nodos en redes superpuestas, investigación de optimización entre superposiciones, investigación de plataformas de soporte P2P e investigación de seguridad P2P, etc. Creo que con la continua profundización de la investigación sobre la tecnología P2P, las personas pueden tener una comprensión más profunda de la informática P2P y resolver la mayoría de los problemas científicos actuales en el campo P2P. Es previsible que continúe la innovación tecnológica y de aplicaciones que aporta el P2P.