I've been digging about DHTs and especially kademlia for some time now already. I'm trying to implement a p2p network working on a Kademlia DHT. I want to be able to gossip a message to the whole network. from my research for that gossip protocols are used, but it seems odd to add another completely new protocol to spread messages when I already use the dht to store peers. Is there a gossip protocol that works over or with a DHT topology like Kademlia ?
Use a DHT for a gossip protocol?
1.1k Views Asked by yosher lutski At
1
There are 1 best solutions below
Related Questions in NETWORKING
- How to avoid duplicates with the pull-based subscribe model?
- How to simulate CSMA/CD protocol in ns3?
- Network System - Cisco Packet Tracer
- Adhoc / mesh network not working (with and without batman-adv)
- Algorithm for finding a subset of nodes in a weighted connected graph such that the distance between any pair nodes are under a postive number?
- Python Client-Server Communication with Protocol
- I registered a service in eureka which is resolving through java code. But it is not able to resolve its name when hitting through chrome or postman
- Share files from the server without data or internet usage
- Player names not synchronizing in unity Mirror Networking
- My phone can not visit the server on macos in the same local network
- Unable to ping remote websites from an ipV6 only ubuntu ec2 Instance
- Linux Networking - Routing packets from one network interface to another
- wrong output from Supernetting algorithm
- Mapping localhost port on host to docker container
- Microsoft Message Analyzer disable resolving IP address to their domain names a.k.a turn off AutoIP feature
Related Questions in P2P
- Unable to Retrieve External Public Address in libp2p Swarm Events
- How to avoid duplicates with the pull-based subscribe model?
- Wifi direct (Wifi P2P) connection between raspberry pi 4b and android device only possible after reboot
- Using tokio::time::timeout does not trap delayed response from TCPReadStream
- 'connections' is deprecated. The declaration was marked as deprecated here
- Twitch but practically free with p2p webRTC?
- How Can I Connect Using A WebRTC-Offer With PeerJS
- Choose between polling, websocket or P2P
- does webrtc use turn server if established p2p connection is failed?
- A p2p secure chat application need more ressources to establish the work
- how to allow mobile apps to communicate without a separate server
- aiortc can't receive video from server example
- P2P connection does not work on Android 11 and above
- Android device cannot detect others by flutter_nearby_connections
- Why is WebRTC peer.ontrack not being called in 1-1 peer connection?
Related Questions in DHT
- In IPFS, will same content produce the same CID on 2 different peers?
- Save values from a DHT11-Sensor to influxDB container
- How do I periodically remove inactive nodes and flush the routing table with the use of kademlia python library?
- How can I index the bittorrent DHT properly for infohashes?
- IPFS not announcing CIDs on indirect peers and unable to get through cmd as CID is not propagated using DHT
- which libp2p module do I use to broadcast data to peers in the network e.g blockchain? do I use mdns or kademlia for blockchain?
- go-libp2p: my nodes don't find any peers with DHT peer discovery
- Kademlia get_providers() fails to find nodes that start_providing() in Rust libp2p
- Are DHT algorithms good for handling large amount of counting states?
- UDP socket connected to DHT node, not recieving data
- In Bittorrent how to announce utp port for other peers
- trying to understand the flow chart of the extended message protocol as mentioned in bep 10
- Do I remove peers after a certain amount of time?(mainline dht)
- How to find metadata in the dht while only having the Infohash?
- Is it possible to receive from one port and send through another in mainline dht?
Related Questions in KADEMLIA
- How do I periodically remove inactive nodes and flush the routing table with the use of kademlia python library?
- which libp2p module do I use to broadcast data to peers in the network e.g blockchain? do I use mdns or kademlia for blockchain?
- Crawl DHT of a private network from outside
- How to implement peer discovery using Kademlia (rust-libp2p)
- Kademlia get_providers() fails to find nodes that start_providing() in Rust libp2p
- Do I remove peers after a certain amount of time?(mainline dht)
- How to find metadata in the dht while only having the Infohash?
- Is it possible to receive from one port and send through another in mainline dht?
- receiving unreadable text while trying to bencode a "find_node" query
- How does the routing table work in mainline dht?
- DHT detection in local network
- Is it possible to compute an approximate size estimate of a kademlia network from a node's k-buckets?
- Node Id generation in storj
- Kademlia DHT finding bucket index for a node
- Bucket splitting exception in Kademlia
Related Questions in GOSSIP
- Extending TensorFlow Federated
- Issue with using hashicorp's memberlist on two different computers
- Java | Socket timeout behavior not properly working for multithreading
- How much impact does the number of Cassandra seed nodes have on network traffic?
- Some Cassandra nodes show DN - gossip information is not unanimous
- Cassandra write/read protocol between nodes
- How HashGraph Gossip Protocol Works?
- Bitnami Consul Gossip encryption
- Implementing Gossip Protocol: Sending membership table results in garbage values being received
- gossip.discovery Closing connection to Endpoint?
- Is decentralized communication between 3+ computers in a network possible in python?
- Is It Possible for Cassandra to Return an Inconsistent Value?
- Akka-Cluster: indirectly connected member does not receive UnreachableMember event about himself
- How to make sense of heartbeat in cassandra's nodetool's gossipinfo?
- Cassandra nodetool status down and generation time very old
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
How concerned are you about efficiency? As a lower bound someone has to send a packet to all
Nnodes in the network to propagate an update to all nodes.The most naive approach is to simply forward every message to all entries in your routing table. This will not do since it obviously leads to forwarding storms.
The second most naive approach is to forward updates, i.e. newer data. This will result in
N * log(N)traffic.If all your nodes are trusted and you don't care about the last quantum of efficiency you can already stop here.
If nodes are not trusted you will need a mechanism to limit who can send updates and to verify packets.
If you also care about efficiency you can add randomized backoff before forwarding and tracking which routing table entry already has which version to prune unnecessary forwarding attempts.
If you don't want to gossip with the whole network but only a subset thereof you can implement subnetworks which interested nodes can join, i.e. subscribe to. Bittorrent Enhancement Proposal 50 describes such an approach.