图片

Internet Computer Blockchain se basa en el protocolo peer-to-peer (P2P), que distribuye mensajes (artefactos) entre nodos en cada subred. El protocolo es un conjunto de protocolos que ejecutan Internet Computer Blockchain, incluido el Internet Computer Consensus Protocol. Protocolo DKG (generación de claves distribuidas) o protocolo de sincronización de estado.

Cada uno de estos protocolos genera artefactos y requiere que la capa P2P los distribuya a los pares en la subred. Representamos cada uno de estos protocolos como clientes P2P, que sirven como actualizaciones por encima de la capa P2P.

图片
Figura 1: Arquitectura general de las computadoras de Internet

Después de la introducción de una capa P2P separada para la sincronización de estado, se está introduciendo una nueva capa P2P para todos los demás clientes P2P en la pila de protocolos informáticos de Internet. Esta nueva capa P2P proporciona un rendimiento de red mejorado, asegurando el nodo garantizado requerido y más fácil de detectar. mal comportamiento.

La nueva capa P2P propuesta utiliza la nueva capa de transporte recientemente lanzada basada en QUIC. Por lo tanto, con la migración a esta nueva capa, la capa P2P de las computadoras de Internet dejará de usar TCP por completo. El cambio a QUIC también significa un cambio completamente asincrónico. Capa P2P. Transformación realizada.

Cada solicitud se envía como un nuevo flujo QUIC y se procesa independientemente de otras solicitudes, lo que evita posibles problemas de bloqueo de cabecera que, al menos en teoría, podrían causar problemas de vida.

La nueva capa P2P introduce el uso de una novedosa estructura de datos abstracta llamada tabla de ranuras, que facilita el control de la distribución de artefactos a los pares mientras mantiene una entrega suficiente a cada par en función de la calidad de la conexión sin afectar a otros pares. también facilita la detección de mala conducta entre pares.

A medida que se acepte la nueva capa P2P propuesta, cada cliente utilizará una instancia separada del protocolo P2P, donde la sincronización de estado usará una instancia específicamente diseñada para ello, y el resto de los clientes usarán una instancia separada de la nueva capa P2P que Se discutirá en este artículo descrito en detalle.

El lanzamiento de la nueva capa P2P propuesta comienza con la adopción de una serie de propuestas NNS que hacen la transición de la distribución de artefactos de llamadas salientes HTTPS para usar la nueva capa P2P, después de lo cual todos los clientes restantes se moverán, incluido el protocolo de consenso, y eventualmente usarán la antigua. La capa P2P está obsoleta.

Antecedentes: la capa P2P de las computadoras de Internet

En un nivel muy alto, el protocolo P2P es responsable de distribuir cualquier artefacto presente en el grupo de artefactos verificados de cada cliente a pares en la misma subred, contra la cual el cliente transmite esos artefactos a sus pares.

图片
Figura 2: Interfaz entre la capa P2P y sus clientes

La Figura 2 muestra la interfaz entre P2P y los clientes encima, que pueden cambiar arbitrariamente el grupo de artefactos cada vez que se llama a on_state_change().

En última instancia, cada llamada de este tipo devuelve un conjunto de ChangeActions que corresponden a agregar y eliminar artefactos del grupo de artefactos validados de ese cliente, y la capa P2P debe usar esta información para propagar el contenido del grupo validado a sus pares.

Los protocolos P2P existentes para computadoras de Internet se basan en el flujo de artefactos de cada nodo a sus pares. Cada vez que se agrega un artefacto a un grupo verificado, se transmite un anuncio a todos los pares. El anuncio es una pequeña descripción de la información del artefacto. .

Al enviarlo en lugar del artefacto en sí como medida de ahorro de ancho de banda para que el receptor pueda decidir si descargar el artefacto (potencialmente grande), el nodo emisor mantiene un flujo TCP para cada par al que se envían anuncios (y luego en función de la información solicitada). artefacto).

La capa P2P debe garantizar la entrega de artefactos entre nodos honestos y nodos operativos y ser resistente a comportamientos maliciosos de nodos potencialmente maliciosos.

Todos los clientes relacionados con el consenso en la capa P2P tienen dos propiedades importantes:

  • P1: número limitado de artefactos activos: el conjunto de artefactos validados tiene un tamaño finito en cualquier momento y el protocolo de consenso utiliza puntos de control para purgar los artefactos periódicamente, por lo que el tamaño máximo C del conjunto se puede utilizar como intervalo de punto de control ( medido en bloques) ) y tamaño de subred.

  • P2: Caducidad explícita de los artefactos: si un artefacto se elimina del grupo (se elimina), ya no es necesario propagarlo a los pares o, desde el punto de vista del receptor, si ningún par posee un artefacto, se garantiza que El receptor no requiere el artefacto aunque no pudo recibirlo cuando fue eliminado por todos los demás pares.

Estas dos propiedades se enfatizan aquí porque respaldan importantes decisiones de diseño, que se explicarán en breve.

Contrapresión de la red

En las aplicaciones tradicionales cliente-servidor, el concepto de contrapresión se usa ampliamente: si el receptor se ralentiza en el consumo de mensajes, el búfer del remitente se llena y luego la capa de red del remitente debe adoptar las tres siguientes Una de las rutas:

  • Propagar la contrapresión a la capa de la aplicación, lo que hace que la aplicación ralentice la producción de datos.

  • Mensajes en buffer (posiblemente indefinidamente)

  • descartar mensajes de salida

En una cadena de bloques esto se vuelve más complicado, imagine que el remitente experimenta contrapresión por parte de un par que puede ser honesto o no, adoptar cualquiera de los enfoques anteriores puede conducir a un problema grave:

  • Ralentizar la producción de datos significa ralentizar la cadena de bloques, permitir que este comportamiento sería un vector de ataque de Denegación de Servicio (DoS);

  • Los buffers (posiblemente indefinidos) también se convertirán en un vector de ataque;

  • Descartar mensajes de salida puede significar que no se garantiza la entrega de mensajes a nodos honestos pero lentos.

Debido a los riesgos de seguridad de las opciones 1 y 2, la mayoría de las cadenas de bloques eligen la opción 3; sin embargo, la opción 3 tiene el riesgo de que la cadena de bloques esté viva (es decir, si se eliminan suficientes mensajes, puede quedarse atascada), proporcionando a Internet la nueva capa P2P. propuesto por Computer supera el riesgo sin perder mensajes.

Nueva capa P2P

La nueva capa P2P funciona de manera muy diferente a la existente: en primer lugar, no siempre utiliza publicidad; si los artefactos son lo suficientemente pequeños, se enviarán inmediatamente sin publicidad; en segundo lugar, no utiliza un solo flujo sino que utiliza las mismas conexiones QUIC; múltiples flujos; tercero, debido a que no utiliza un solo flujo, administra el envío de artefactos de manera muy diferente; cuarto, introduce un protocolo ligeramente diferente para la comunicación entre pares;

Demos un paso atrás y veamos el propósito de la capa P2P al servir protocolos de consenso y otros clientes con necesidades similares (es decir, sincronización no estatal). El objetivo es, para cada nodo honesto, garantizar que los pares puedan recibir cualquier cosa que el. El nodo tiene en su grupo de artefactos validados, por supuesto, mientras mantiene todo seguro, escalable y con rendimiento.

La nueva capa P2P logra esto mediante la introducción de una novedosa estructura de datos abstracta llamada tabla de ranuras, que se utiliza para rastrear el contenido de un grupo de artefactos validados y el proceso de actualización de los pares sobre ese contenido. La estructura de datos de la tabla de ranuras es muy simple, pero. proporciona exactamente lo que se necesita para cumplir los requisitos.

Estructura de datos de la tabla de ranuras

La tabla de ranuras es una estructura de datos abstracta que mantiene cada nodo en el lado emisor y que cada nodo en el lado receptor infiere. El tamaño de la tabla de ranuras en el lado emisor corresponde exactamente al número de artefactos activos en el grupo de validación. , si recuerda la propiedad P1 anterior, esto significa que la tabla de ranuras está limitada a alguna constante C.

Cada vez que se agrega un artefacto al grupo de validación, se agrega a una ranura vacía en la tabla de ranuras en el lado emisor. Se envía un mensaje de actualización de ranura a todos los pares informándoles que el contenido de la ranura ha cambiado en el lado receptor. En el lado, cada par rastrea el estado de cada una de sus tablas de espacios en función de la llegada de nuevos mensajes de actualización de espacios.

Sin embargo, tenga en cuenta que la congestión de la red y la contrapresión pueden causar retrasos en estas actualizaciones, por lo que la vista del receptor solo eventualmente coincide con la tabla de espacios del remitente.

Además de la información del artefacto, cada ranura también tiene un número de versión que se incrementa globalmente con cada actualización del grupo de validación, de modo que los destinatarios puedan recibir mensajes de actualización aceptando únicamente números de versión superiores a los suyos para saber si es así. una nueva actualización o una actualización antigua.

图片
Figura 3: Ejemplo de estructura de datos abstracta de la tabla de ranuras

La Figura 3 muestra un ejemplo de este proceso: el remitente genera los artefactos A a F, también elimina algunos de ellos en el proceso y, dado que las eliminaciones no necesariamente se propagan a los pares, se colocan en la tabla de ranuras de sus pares. Es posible que aún haya eliminado artefactos en la vista, y esto es correcto porque el contenido de la ranura eventualmente se actualizará y propagará.

Para cada ranura en el lado del remitente, se genera un nuevo conjunto de tareas asincrónicas (es decir, subprocesos verdes): una tarea por ranura por igual y, dado que las tareas son muy livianas, también se pueden escalar para subredes más grandes. Cada tarea es responsable. para enviar de manera confiable la actualización de la ranura, mensajes a la ranura correspondiente y al par correspondiente.

Esto significa que la tarea volverá a intentar enviar la actualización hasta que reciba un acuse de recibo, y cada vez que cambie el contenido de la ranura, la tarea dejará de intentar enviar el contenido antiguo y comenzará a intentar enviar el contenido nuevo, que los pares lentos pueden recuperar lentamente. Se actualiza, pero no interfiere con pares más rápidos.

Este enfoque es algo así como una combinación de los enfoques 2 y 3 en la discusión anterior sobre la contrapresión (almacenar mensajes en la capa de red y descartar mensajes), y resuelve el problema de la contrapresión sin renunciar a la resiliencia y la vitalidad.

La exactitud de este enfoque surge de la propiedad P1 del cliente mencionada anteriormente, es decir, el número limitado de artefactos activos, lo que garantiza que las ranuras C sean suficientes en cualquier caso y, por lo tanto, las ranuras se puedan reutilizar.

El protocolo anterior no solo permite a los pares sincronizar el contenido de sus grupos de artefactos verificados, sino que también permite a los nodos asegurarse de que sus pares no anuncien más de C artefactos a la vez. Si el número de ranura del mensaje de actualización es mayor que C. el receptor puede inferir inmediatamente un comportamiento inapropiado por parte del remitente.

Cuando un nodo nota en el extremo receptor que un artefacto ya no existe en las tablas de ranuras de cualquiera de sus pares, el nodo puede eliminar de forma segura el artefacto del grupo de artefactos no validados (si todavía existe) o detener cualquier intento de recuperarlo. artefacto si aún no se ha recuperado.

Propiedad P2: la caducidad explícita de los artefactos mencionados anteriormente garantiza que ningún par ya no los necesita, por lo que la tabla de ranuras también impone un límite implícito en el tamaño del grupo de artefactos no validados: el grupo no validado puede contener como máximo artefactos C de honestos. pares (ya que deberían tener aproximadamente el mismo contenido en el grupo autenticado) y, como máximo, artefactos C de cada par malicioso, ya que puede usar C. Un artefacto completamente diferente envía spam al IC.

Menos de 1/3 de los nodos son potencialmente maliciosos, por lo que el tamaño total del grupo no validado no puede exceder los artefactos C*4*n/3.

Es posible que haya notado que la descripción del diseño anterior solo se refiere a artefactos y no menciona publicidad. La razón es que la publicidad es solo una optimización para mejorar la utilización del ancho de banda y la nueva capa P2P solo usa publicidad para artefactos grandes (el umbral actual está establecido en). 1 KB).

Los artefactos menores que el umbral se envían en un mensaje de actualización de ranura y, por lo tanto, el receptor no los solicita explícitamente más adelante; para los artefactos mayores que el umbral, se genera un anuncio y se envía en un mensaje de actualización; el cliente receptor puede decidir si quiere solicitarlo y de qué par se solicita.

Mejorar el rendimiento

La implementación asincrónica mediante QUIC y el envío directo de artefactos más pequeños mejora el rendimiento de la red y, por tanto, el rendimiento del consenso.

图片图片
Figura 4: (Arriba, capa P2P existente / abajo, nueva capa P2P) Tasa de bloqueo a lo largo del tiempo en una subred de 60 nodos con y sin carga de subred pesada y latencia de enlace aumentada artificialmente; la línea vertical indica el final de la carga alta.


La Figura 4 muestra los resultados de un experimento que realizamos para comparar el rendimiento de la capa P2P existente y la nueva capa P2P. En este experimento, ejecutamos una carga de solicitudes de 200 x 100 KB por segundo en un centro de datos. Una subred de 60 nodos. y se midió la tasa de bloqueo por consenso.

El gráfico muestra la tasa de bloqueo a lo largo del tiempo con una línea para cada nodo. Agregamos manualmente un retraso de enlace de 80 ms de ida y vuelta a todos los enlaces de red en ambos experimentos para simular subredes distribuidas geográficamente.

El gráfico anterior muestra la tasa de bloqueo de la capa P2P existente. Aunque la subred progresó con éxito, la tasa de bloqueo era muy inestable cuando la carga era alta. Una vez finalizada la carga, volvió a la normalidad, pero durante la carga alta, esto significa. la tasa de bloqueo en toda la subred es menor y, por lo tanto, la latencia percibida por el usuario es mayor.

La siguiente figura muestra la solidez de la tasa de bloqueo de la capa P2P recientemente propuesta, con la subred operando a una tasa de bloqueo muy estable incluso bajo carga pesada.

en conclusión

La nueva capa P2P para clientes de consenso y similares aumenta el rendimiento de las computadoras de Internet, permite una mejor escalabilidad, reduce la complejidad del código y mejora el comportamiento en condiciones de red imperfectas.

Ya está habilitado en algunas subredes solo para artefactos relacionados con llamadas HTTPS, y la Fundación DFINITY pronto presentará una propuesta para habilitarlo para otros clientes.

Si se acepta e implementa, toda la capa P2P de las computadoras de Internet pasaría a utilizar QUIC en lugar de TCP, haciendo que la capa de red de las computadoras de Internet sea más robusta, escalable y eficaz.

Obtenga más información sobre las computadoras con Internet:

图片图片

#内容挖矿 >#P2P >#ICP

Contenido IC que te interesa

Progreso tecnológico | Información del proyecto | Eventos globales

Recopila y sigue el canal IC Binance

Manténgase actualizado con la información más reciente