El protocolo Gossip es un protocolo que permite diseñar sistemas de comunicaciones distribuidos (P2P) altamente eficientes, seguros y de baja latencia. La inspiración para su diseño ha sido tomada de estudios sobre la expansión epidémica y algoritmos resultantes de la misma.
Cuando hablamos de Gossip Protocol, hablamos de un protocolo de comunicación que utilizan los dispositivos digitales para propagar una información en una red entre pares (P2P). En las redes blockchains, este protocolo es utilizado por los nodos de la red para compartir y divulgar información de forma rápida y confiable entre sí.
El nombre de Gossip para este protocolo deriva de la forma en que se propaga la información a través de las redes sociales. Gossip en español quiere decir chisme o rumor; por lo que el protocolo Gossip Protocol está inspirado en esta forma de divulgación de información que ocurre de manera muy rápida y veloz en estas redes. En la actualidad, son muchas las variaciones que existen de este protocolo de comunicación. Muchas se aplican según las necesidades o requerimientos de cada usuario o de cada una de las redes que lo emplee.
Origen del protocolo Gossip
El origen de este protocolo está relacionado con los algoritmos de replicación epidémica descrito por Demers Alan, Greene Dan, Hauser Carl, Irish Wes, Larson John, Shenker Scott, Sturgis Howard, Swinehart Danm y Terry Doug en su estudio “Epidemic Algorithms for Replicated Database Maintenance” de 1987.
Desde la aparición de este estudio, la propagación epidémica ha despertado un gran interés en informática. Esto debido a que sus sistema de funcionamiento es perfecto para redes de gran tamaño con altos niveles de descentralización. De hecho, los primeros usos prácticos de protocolos del tipo Gossip lo podemos ver en los sistemas de enrutamiento de las primeras redes que fueron el preámbulo del Internet que gozamos hoy en día.
¿Cómo funciona el Gossip Protocol?
Los protocolos de Gossip funcionan de forma muy sencilla. Esto se debe a que están basados en un concepto muy básico para distribuir y propagar información a través de una red. En estos protocolos, para que un nodo distribuya una información, sólo debe emparejarse con otros nodos de forma aleatoria. Una vez ocurre esto sólo debe intercambiar la información recibida con dichos nodos, quienes a su vez distribuirán la información con otros nodos a los que también están emparejados. Formando una cadena de distribución para propagar la información por toda la red de forma oportuna y eficaz.
Por su parte, la forma en que se propaga la información dentro de una red entre pares a través del Gossip Protocol ocurre de forma rápida y segura siempre y cuando los nodos involucrados puedan garantizar la propagación y divulgación de la información sin discriminar o excluir a ninguna de las partes en su propia red.
Gossip Protocol se basa en la distribución probabilística de la información seleccionando pares, a quienes los nodos les distribuirán la información. Esto con la finalidad de que no se repita o duplique una información a un nodo que ya la conoce. Por ejemplo, en el caso de un equipo de trabajo que se reúne constantemente para mantenerse actualizado con todo lo que ocurre dentro de la oficina, aplicando el protocolo de Gossip cada uno de los miembros del equipo debe estar emparejado con otro miembro con quien compartirán la información. Este miembro del equipo a su vez estará emparejado con otro a quien también tendrá que distribuirle la misma información y así sucesivamente para que todos se mantengan informados.
Cuando se habla de que los protocolos de Gossip se basan en la probabilidad para distribuir la información, es porque un nodo debe elegir de forma aleatoria con que otro nodo quiere compartir esa información. Además, este protocolo de comunicación es escalable, debido a que los nodos sólo comparten o distribuyen una cantidad fija de información, sin importar que otro nodo falle en su labor. Los nodos operativos siempre estarán compartiendo la cantidad de información correspondiente con su red de pares.
Para ver de forma más sencilla como funciona el protoclo, observa el siguiente ejemplo en el slider de imagenes.
Objetivo de un Gossip Protocol
El objetivo principal de un Gossip Protocol es difusión de información de la forma más rápida posible por una vasta red de nodos distribuidos. Para lograrlo, este tipo de protocolos parten de la idea básica de que los procesos que se comunican periódicamente con sus pares. Durante esta comunicación son capaces de intercambiar informa ción creando una alta frecuencia y flujo de datos por la red. Y todo esto en un patrón de dispersión que ayuda a que la información se distribuya lo más rápidamente por toda la red.
Ejemplo de estos lo podemos ver por ejemplo en Usenet e IRC. Ambos sistemas pese a ser centralizados distribuían noticias de forma muy rápida por la red usando “susurros”. Pero quizás el mejor ejemplo de este funcionamiento lo veamos en el sistema de enrutamiento que hace posible el funcionamiento de Internet. Dichos protocolos de enrutamiento permiten que los enrutadores intercambien información con enrutadores vecinos, mejorando así las tablas de enrutamiento de toda la red. Al final, la red siempre busca construir una versión más óptima de sí misma por medio del enrutamiento más corto entre todas sus partes.
Esta situación resulta muy útil en la construcción de una red blockchain. Puesto que una red ampliamente distribuida se beneficiaría enormemente de este tipo de funcionamiento. Asi se aprovecha al máximo los recursos que forman parte de la misma. El resultado, es que una transacción en una red co Gossip Protocol, viajaría rápidamente por todos los nodos de la red, disminuyendo ataques en medio de su dispersión.
Y pensar que toda esta funcionalidad está pensada alrededor de estudios de dispersión de pandemias y un simple proverbio:
“Cualquier puede empezar un chisme, pero nadie puede detenerlo”.
Tipos de Gossip Protocol
Protocolo de difusión
Los protocolos de difusión o propagación de información son aquellos que operan bajo la comunicación grupal o multidifusión para la divulgación de los mensajes. En el primer caso, bajo la comunicación grupal, los nodos de la red de pares están siempre en constante comunicación. Por lo que la información se puede distribuir a la red de forma rápida y confiable. Aunque puede darse el caso de que al momento de propagar una información, ésta ya haya variado y se encuentre ligeramente obsoleta. Aunque, por lo general, esto no representa una preocupación ni un problema para la red.
En el segundo caso, bajo la multidifusión, la información es repartida en la red de pares de forma ocasional. Por lo que un evento no desencadena de forma inmediata la propagación de la información. En este caso, el estado latente de la información sí puede significar una preocupación, debido al tiempo que transcurre desde que la información es creada hasta que es difundida por la red.
Protocolo de agregación
En los protocolos de agregación, los nodos de la red de pares reciben y procesan una información, para enviar un resumen de ésta a los demás nodos conectados a la red. Este mecanismo de distribución de información mantiene un registro de todos los datos procesados. Este proceso se conoce como minería de datos distribuida, que es ampliamente utilizada en la tecnología de libro mayor distribuido.
Ventajas y desventajas de Gossip Protocol
Ventajas
- Escalabilidad: Los protocolos de Gossip son altamente escalables. Esto gracias a que es posible distribuir la información con un nivel de rendimiento muy eficiente. En estos protocolos los nodos distribuyen una cantidad de mensajes fija a los nodos con los que están emparentados.
- Robustez: En Gossip Protocol todos los nodos operan de forma igual y no ejercen una función especial ni diferente uno de otro. Por lo que si se presenta alguna falla en uno o varios nodos, ésta no afectará ni interrumpirá la funcionalidad de los demás nodos en la red para la distribución de la información. Así mismo, los nodos pueden entrar o salir de la red entre pares sin restricciones y sin afectar el funcionamiento de la misma.
- Tolerancia a las fallas: Como los nodos tienen la capacidad de compartir y distribuir la información con varios nodos de la red de pares, estos protocolos tienen la capacidad de operar de forma correcta. Inclusive en situaciones difíciles en las que se afecte la conectividad de algunos nodos. Si un determinado nodo se desconecta por alguna razón, la información será distribuida de igual forma por los demás nodos que ya han recibido el mensaje.
- Descentralización: Los protocolos de Gossip distribuyen la información de forma completamente descentralizada y autónoma.
Desventajas
- Aunque los protocolos de Gossip ofrecen robustez al sistema al permitir que los nodos puedan seguir operando sin interrupciones en caso de presentarse fallas, si podría darse el caso de que la información o el mensaje distribuido se vea afectado. Por ejemplo, si un nodo se vuelve malicioso, puede llegar a modificar una información de forma muy sutil para que el mensaje siga siendo legible, pero al mismo tiempo contener información falsa o errónea. E igualmente los demás nodos, que operarán sin interrupciones, distribuirán esta información.
Aplicaciones de Gossip Protocol
Muchas redes de distribución en la actualidad utilizan los Gossip Protocol como un medio por el cual pueden distribuir información de forma precisa y oportuna. Por ejemplo, Bitcoin emplea los Gossip Protocol para distribuir los valores nonce entre cada uno de sus nodos mineros. Así mismo, la red distribuida HashGraph también se basa en estos protocolos para la transferencia y difusión de información entre su red.
Por otro lado, el software Apache Cassandra utiliza estos protocolos para establecer una comunicación mediante la cual todos sus nodos pueden recibir información y descubrir pares, que ayuden a la propagación de metadatos dentro de la red. Así mismo, la base de datos Riak también implementa los protocolos de Gossip para compartir el estado y las propiedades de sus anillos. Un proceso que realizan los nodos de forma constante para mantener informados y actualizados a los demás nodos de las actualizaciones que ocurren dentro de la base de datos.
Por su parte, Dymano utiliza un protocolo de Gossip para llevar un registro de las membresías, que le ayuda a descubrir a nuevos miembros participantes del programa, así como a la detección de alguna falla. Una funcionalidad similar tienen los protocolos Gossip dentro de la red de servicios Consul. Que utiliza estos protocolos igualmente para la detección de nuevos miembros, como para la detección de fallas o posibles fallas dentro de la red. Así mismo, la red Consul emplea los protocolos de Gossip para transmitir la información de nuevos servicios y eventos de forma confiable y eficiente dentro de la red.
No obstante, aunque la principal aplicación de estos protocolos es el de difundir la información, los Gossip Protocol tienen muchas más aplicaciones dentro de las redes de distribución de información. Por ejemplo, pueden ser empleados para la resolución de problemas complicados en redes demasiados amplias. Así como pueden ser utilizados para replicar bases de datos completas y mucho más.