馃嚜馃嚫 Explora Cardano: 3. Red Cardano: b. Descripci贸n del dise帽o del protocolo de red

Explora Cardano: 3. Red Cardano: b. Descripci贸n del dise帽o del protocolo de red

Transmission Control Protocols (TCP) y Internet Protocols (IP) forman un conjunto de protocolos desplegados universalmente en la red. TCP/IP permite un canal de comunicaci贸n bidireccional fiable entre sistemas en Internet.

La entrega ordenada de los protocolos de comunicaci贸n del nodo Cardano est谩 garantizada por el protocolo TCP/IP.

Los sistemas operativos limitan el n煤mero de conexiones simult谩neas. Por defecto, Linux, por ejemplo, puede abrir 1.024 conexiones por proceso, mientras que macOS limita este n煤mero a 256. Para evitar el uso excesivo de recursos y permitir medios fiables para el establecimiento de conexiones, Cardano utiliza un multiplexor .

Gesti贸n de conexiones

La capa de red se encarga de una serie de tareas espec铆ficas, adem谩s del intercambio de informaci贸n sobre bloques y transacciones que requiere el protocolo Ouroboros.

Por lo general, la aplicaci贸n de la gesti贸n de las conexiones incluye la realizaci贸n de las siguientes tareas:

  • abrir un socket y/o adquirir recursos del sistema operativo
  • negociar la versi贸n del protocolo con el miniprotocolo handshake
  • la generaci贸n del thread que ejecuta el multiplexor (que puede ser instruido para iniciar/detener varios mini-protocolos)
  • descubrir y clasificar las excepciones lanzadas por los miniprotocolos o el propio multiplexor
  • cierre de la conexi贸n en caso de error
  • gestionar una solicitud de desconexi贸n por parte del par
  • desactivar los threads que ejecutan los miniprotocolos
  • cerrar un socket

Multiplexado

La capa de multiplexaci贸n act煤a como un cruce central entre los miniprotocolos y el canal de red. Ejecuta varios mini-protocolos en paralelo en un solo canal - conexi贸n TCP, por ejemplo.

La figura 1 refleja c贸mo fluyen los datos entre dos nodos, cada uno de los cuales ejecuta tres miniprotocolos utilizando un multiplexor (MUX) y un desmultiplexor (DEMUX).

explore-3b-1

Figura 1. Flujo de datos entre los nodos mediante multiplexaci贸n

Los datos transmitidos entre los nodos pasan por el MUX/DEMUX de los mismos. Hay un emparejamiento fijo de instancias del miniprotocolo, lo que significa que cada instancia s贸lo se comunica con su instancia dual (un lado iniciador y otro respondedor).

La implementaci贸n del miniprotocolo tambi茅n se encarga de la serializaci贸n y la deserializaci贸n de sus mensajes. Los miniprotocolos escriben trozos de bytes al MUX y leen trozos de bytes del DEMUX. El MUX lee los datos de los miniprotocolos, los divide en segmentos, a帽ade una cabecera de segmento y transmite los segmentos al DEMUX de su par. El DEMUX utiliza las cabeceras de los segmentos para reensamblar los flujos de bytes para los miniprotocolos de su lado. El propio protocolo de multiplexaci贸n (v茅ase la nota siguiente) es completamente agn贸stico a la estructura de los datos multiplexados.

Nota: Este no es un uso gen茅rico, sino especializado, de la multiplexaci贸n. Los miniprotocolos individuales tienen restricciones estrictas sobre los mensajes no reconocidos que pueden estar en vuelo. El dise帽o evita las condiciones en las que el uso de TCP general sobre multiplexaci贸n TCP crea un rendimiento ca贸tico.

Segmentos de datos del protocolo de multiplexaci贸n

Los segmentos de datos de multiplexaci贸n incluyen los siguientes detalles:

  • Hora de transmisi贸n - una marca de tiempo basada en los 32 bits inferiores del reloj monot贸nico del emisor con una resoluci贸n de un microsegundo.
  • ID del miniprotocolo - el ID 煤nico del miniprotocolo.
  • Longitud de la carga 煤til - el tama帽o de la carga 煤til del segmento en bytes. La longitud m谩xima de la carga 煤til soportada por el formato de cable de multiplexaci贸n es 216 - 1. Ten en cuenta que una instancia del protocolo puede elegir un l铆mite menor para el tama帽o de los segmentos que transmite.
  • Modo - el bit 煤nico M (el modo) se utiliza para distinguir las instancias duales de un miniprotocolo. El modo se pone a 0 en los segmentos del iniciador (el lado que tiene inicialmente la agencia), y se pone a 1 en los segmentos del respondedor.

Protocolos de comunicaci贸n de los nodos de Cardano

Cardano utiliza protocolos de comunicaci贸n entre procesos (IPC) para permitir el intercambio de bloques y transacciones entre nodos, y para permitir que las aplicaciones locales interact煤en con la blockchain a trav茅s del nodo.

Visi贸n general del IPC de nodo a nodo

El protocolo Node-to-Node (NtN) transfiere transacciones entre nodos completos. NtN incluye tres miniprotocolos (chain-sync, block-fetch y tx-submission), que se multiplexan en un 煤nico canal TCP mediante un paquete network-mux.

El siguiente diagrama representa el flujo operativo de la NtN:

explore-3b-2

La NtN sigue una estrategia basada en el pull, en la que el nodo iniciador consulta si hay nuevas transacciones y el nodo respondedor responde con las transacciones si las hay. Este protocolo se adapta perfectamente a un entorno sin confianza en el que ambas partes necesitan estar protegidas contra los ataques de consumo de recursos de la otra parte.

Explicaci贸n de los miniprotocolos NtN

Una breve explicaci贸n de los miniprotocolos NtN:

  • chain-sync: protocolo que permite a un nodo reconstruir la cadena de un nodo anterior
  • block-fetch : un protocolo que permite a un nodo descargar cuerpos de bloque de varios pares
  • tx-submission : un protocolo que permite el env铆o de transacciones. La implementaci贸n de este protocolo se basa en un miniprotocolo gen茅rico, con una peculiaridad: los papeles del iniciador y del respondedor se invierten. El servidor es el iniciador que solicita nuevas transacciones, y el cliente es el respondedor que responde con las transacciones. Esta inversi贸n de roles se dise帽贸 as铆 por razones t茅cnicas.

Para garantizar un servicio de red 贸ptimo, el equipo tambi茅n ha implementado un protocolo adicional:

  • keep-alive : un protocolo que garantiza la conexi贸n continua entre nodos y minimiza los fallos de rendimiento.

Visi贸n general del IPC de nodo a cliente

Node-to-Client (NtC) es una conexi贸n entre un nodo completo y un cliente que consume datos pero no participa en el protocolo de Ouroboros (un monedero, por ejemplo).

El prop贸sito del protocolo NtC IPC es permitir que las aplicaciones locales interact煤en con la blockchain a trav茅s del nodo. Esto incluye aplicaciones como backends de monederos o exploradores de blockchain. El protocolo NtC permite a estas aplicaciones acceder a los datos brutos de la cadena y consultar el estado actual del libro mayor, y tambi茅n ofrece la posibilidad de enviar nuevas transacciones al sistema.

El protocolo NtC utiliza el mismo dise帽o que el protocolo Node-to-Node (NtN), pero con un conjunto diferente de miniprotocolos, y utilizando tuber铆as locales en lugar de conexiones TCP. Como tal, es una interfaz de nivel relativamente bajo y estrecho que expone s贸lo lo que el nodo puede proporcionar de forma nativa. Por ejemplo, el nodo proporciona acceso a todos los datos brutos de la cadena, pero no ofrece una forma de consultar los datos de la cadena. El trabajo de proporcionar servicios de datos y APIs de nivel superior m谩s convenientes se delega a clientes dedicados, como cardano-db-sync y el backend del monedero.

Mini-protocolos NtC

El protocolo NtC consta de tres miniprotocolos:

  • chain-sync - utilizado para seguir la cadena y obtener bloques
  • local-tx-submission - utilizado para la presentaci贸n de transacciones
  • local-state-query - utilizado para consultar el estado del libro mayor

La versi贸n NtC de chain-sync utiliza bloques completos, en lugar de s贸lo cabeceras de bloque. Por eso no se necesita un protocolo de obtenci贸n de bloques independiente. El protocolo local-tx-submission es como el protocolo NtN tx-submission pero m谩s simple, y devuelve los detalles de los fallos de validaci贸n de las transacciones. El protocolo local-state-query proporciona acceso de consulta al estado actual del libro mayor, que contiene muchos datos interesantes que no se reflejan directamente en la cadena.

C贸mo funciona NtC

En NtC, el nodo ejecuta 煤nicamente el lado productor del protocolo de chain-sync, y el cliente ejecuta 煤nicamente el lado consumidor.

Esta tabla muestra los miniprotocolos habilitados para la comunicaci贸n NtC:
explore-3b-3


Encuentra una copia oficial de este documento aqu铆:

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

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