solana icon indicating copy to clipboard operation
solana copied to clipboard

Add gossip notifications / cluster node notifications to geyser

Open musitdev opened this issue 1 year ago • 3 comments

Problem

See issue #32934

Summary of Changes

This PR is a POC to add cluster node's info to the Geyzer plugin notification.

The LegacyContactInfo received on GOSSIP network are forwarded with the Geyzer interface to a client subscriber.

The PR contains:

A GRPC Yellowstone plugin update has been done to test the process and see the notified data volume. You can see the PR here.

An example of client can be found here. It subscribes to the Cluster info node notification and call from time to time the RPC get_cluster_nodes to compare with the notified data.

Early results

The test has been done on Testnet cluster with the Solana version 1.17.5 and Yellowstone plugin 1.11.0+solana.1.17.5.

Comparison with RPC call

It takes a few second for the plugin to get the majority of the Testnet cluster nodes and after 30s there's less than 10 nodes in error when comparing with the RPC call (around 3000 nodes in the cluster).

After a few minutes, Geyzer and RPC has the same list of cluster's nodes. From time to time they can have some difference (a few nodes) from one part or the other depending on the notification time propagation of update or removal.

Data volume

I use Tcpdump to monitor the packet send between the validator grpc server and the client to build the get_cluster_nodes RPC call nodes list.

This graphic is an example of network activity and bandwidth use. The volume of data transmitted is between 0,5 Mbits/s and 3 Mbits/s.

I've done some monitoring of the network connection between the grpc server and the client for the cluster node info notification.

This is the graphic of the data transferred between the validator grpc server and the client to build the get_cluster_nodes RPC call nodes list.

Network metrics

musitdev avatar Jan 02 '24 10:01 musitdev

v1.17 is nearly at the end of its stabilization and only accepting PRs for bug fixes. Please consider opening this PR against master instead.

willhickey avatar Jan 02 '24 22:01 willhickey

v1.17 is nearly at the end of its stabilization and only accepting PRs for bug fixes. Please consider opening this PR against master instead.

I've used the 1.17 to have the grpc geyzer plugin compatible in version. I've created this PR first to do a test to validate the concept. It wasn't intended to be merged.

If it seems to you interesting, I can move my change to the current master and try to adapt the grpc plugin to work with it.

musitdev avatar Jan 03 '24 18:01 musitdev

I've created a new PR to start from master. I've issues with master rebase so I apply the commit to master branch directly and use a new branch. The new PR is #34713

musitdev avatar Jan 09 '24 18:01 musitdev