Explora Cardano:  3. Red Cardano: c. Red de pares (P2P)

Los nodos de Cardano y las interacciones entre ellos se combinan dentro de una capa de red, que distribuye la información sobre las transacciones y la creación de bloques entre todos los nodos activos. De este modo, el sistema valida y añade bloques a la cadena y también verifica las transacciones. Una red distribuida de nodos debe mantener los retrasos en la comunicación al mínimo, y ser lo suficientemente resistente para hacer frente a los fallos o a las limitaciones de capacidad.

En el sistema federado Byron, los nodos estaban conectados por una configuración estática que se definía en un archivo de topología. Desde la introducción de Shelley, el sistema funciona en modo híbrido. Al pasar del estado federado de conectividad de la red al híbrido, añadimos una red peer-to-peer (P2P) construida manualmente de nodos de retransmisión de operadores de grupos de participación (SPO). Esto significa que los nodos centrales de SPO pueden conectarse tanto a los nodos de retransmisión federados como a otros nodos de retransmisión gestionados por SPO. Esta conectividad no está automatizada, pero permite el intercambio de información sobre bloques y transacciones sin depender de los nodos federados. Durante esta etapa, los nodos de retransmisión federados se están apagando gradualmente para que los SPO puedan conectarse a los relés de los demás.

Para garantizar una comunicación eficiente entre los nodos, es esencial habilitar las conexiones automáticas de los relés SPO entre sí, de modo que se necesite menos configuración estática. Esto se está logrando actualmente mediante actualizaciones de la estructura de la red, que en última instancia permitirán una topología P2P completa para todos los nodos de Cardano. La comunicación P2P mejorará el flujo de información entre los nodos, reduciendo así (y en última instancia eliminando) la dependencia de la red de los nodos federados, y permitiendo la completa descentralización de la red Cardano.

Nota: El despliegue de P2P se encuentra actualmente en fase de pruebas. El equipo está centrado en la entrega de las funciones finales para los SPO y en la preparación de las pruebas de simulación de QuickCheck. El despliegue completo de P2P tendrá lugar más adelante en 2021. Esta documentación describe la funcionalidad P2P sólo con fines informativos antes de su lanzamiento.

 

Capacidades de P2P

La estructura de la red se somete a una serie de mejoras para lograr la resistencia deseada de la red. Estas mejoras no requieren un cambio de protocolo, sino que permiten la selección automática de pares y la comunicación entre pares y nodos.

La red P2P es posible gracias al uso de los siguientes componentes:

  • Gobernador P2P - gestiona el inicio automático de las conexiones entre pares.
  • Gestor de conexiones - se integra con el gobernador P2P para supervisar las nuevas conexiones y protocolos, lo que garantiza una comunicación eficaz y un mejor seguimiento de los fallos.
  • Server ‒ acepta conexiones y limita las tasas dinámicas sincronizándolas con el gestor de conexiones.
  • Gobernador de protocolo de entrada - recibe datos del gestor de conexiones para iniciar o reiniciar miniprotocolos de respuesta en conexiones dúplex de entrada y salida.

A continuación, veremos cómo funciona el gobernador P2P para garantizar la conectividad automática entre los nodos pares de la red.

 

Funcionalidad del gobernador P2P

La red Cardano está formada por múltiples nodos pares. Algunos nodos pares son más activos que otros, algunos tienen conexiones establecidas y otros deben ser promovidos para asegurar el mejor rendimiento del sistema. Cada nodo productor de bloques mantiene un conjunto de pares asignados en tres categorías:

  • pares fríos: pares existentes sin una conexión de red establecida
  • pares tibios - pares con una conexión portadora establecida, que sólo se utiliza para las mediciones de la red sin implementar ninguno de los miniprotocolos de nodo a nodo.
  • pares calientes - pares que tienen una conexión, que está siendo utilizada por los tres miniprotocolos de nodo a nodo

Los pares recién descubiertos se añaden inicialmente al conjunto de pares fríos. El gobernador P2P es entonces responsable de la gestión de la conexión de los pares: define qué pares son beneficiosos a efectos de conexión, y cuáles deben ser promovidos o degradados entre los conjuntos fríos, tibios o calientes.

El objetivo principal del gobernador P2P es mantener el número objetivo de pares fríos, tibios y calientes. Esto construye y mantiene un mapa de conectividad de toda la red, y simplifica el proceso de definiciones de conexión manejándolas automáticamente.

Para establecer la conectividad entre los nodos, el gobernador P2P realiza las siguientes actividades:

  • el cotilleo aleatorio utilizado para descubrir un mayor número de pares fríos
  • promoción de los pares fríos a los pares tibios
  • rebajar los pares tibios a los pares fríos
  • promoción de los pares tibios a los pares calientes
  • rebajar los pares calientes a los pares tibios

El gobernador P2P necesita establecer y mantener:

  • un número deseado de pares fríos (por ejemplo, 100)
  • un número deseado de pares calientes (por ejemplo, entre 2-20)
  • un número deseado de pares tibios (por ejemplo, entre 10-50)
  • un conjunto de pares tibios que sean lo suficientemente diversos en términos de distancia de salto y ubicaciones geográficas
  • una frecuencia de cambio deseada para los cambios en caliente o en tibio
  • una frecuencia de cambio deseada para los cambios en tibio o en frío
  • una frecuencia de cambio deseada para los cambios en frío o desconocidos

El uso de 2-20 pares calientes es rentable, ya que los pares sólo intercambian sus cabeceras de bloque. El cuerpo del bloque, a su vez, suele solicitarse sólo una vez, y tiende a seguir el camino más corto a través del gráfico de conectividad.

El propósito de los pares tibios es proporcionar acceso a aquellos pares que pueden ser rápidamente promovidos a calientes (en caso de que alguno de los pares tibios falle), y también proporcionar candidatos para el cambio de los pares calientes.

La política de selección de los pares tibios que se promocionan a calientes se basa en las mediciones ascendentes. El propósito de un grado de rotación entre pares fríos y tibios es, en parte, descubrir la distancia de la red entre más pares y permitir que pares tibios potencialmente mejores tomen el relevo de los pares calientes existentes. Esto permite una mayor optimización y ajustes. Mantener la diversidad en las distancias de salto contribuye a mejorar los tiempos de distribución de los bloques en la red distribuida globalmente.

En general, este enfoque sigue un patrón común para la búsqueda u optimización probabilística que utiliza un equilibrio de optimización local con algunos elementos de perturbación de orden superior para evitar quedar atrapado en un óptimo local pobre.

Los pares mantienen un conjunto limitado de información, que se basa en sus interacciones directas anteriores. Los pares fríos, por ejemplo, pueden no mantener ningún dato, ya que aún no han establecido interacciones. Estos datos pueden ser comparados con la propiedad de "reputación", sin embargo, estos detalles son puramente locales y no se comparten entre otros nodos. La información de reputación local de los pares también se actualiza cuando las conexiones de los pares fallan. La red no mantiene la información negativa de los pares durante largos periodos de tiempo: para limitar los recursos y debido a la simplicidad de los ataques Sybil.

La implementación clasifica las excepciones que causan fallos de conexión en tres clases:

  • excepciones internas del nodo (por ejemplo, corrupción del disco local)
  • fallos en la red (por ejemplo, interrupción de las conexiones TCP)
  • comportamiento adverso (por ejemplo, una violación del protocolo detectada por la capa de protocolos tipificados o por la capa de consenso).

En caso de comportamiento adverso, el par puede ser reclasificado inmediatamente de los conjuntos caliente, tibio o frío.

 

 

Encuentra una copia oficial de este documento aquí:

https://docs.cardano.org/explore-cardano/cardano-network/p2p-networking

Más traducciones de Cardano en: Cardano For The World