This is a proposal to modify the Gnutella protocol, in partcular the topology of the networks. The current Gnutella protocol has a number of limitations, some of which are:
The Grid Proposal suggests that the whole network have regular structure, for example a 2D matrix where each internal node is connected to four other nodes. The message-passing protocol can then be optimised for the network's underlying structure. This solution has two limitations. First, it imposes on the network a global structure which is difficult to maintain as nodes connect to, and disconnect from the network at high rate. Second, some nodes have lower connection bandwidths than others. (For example, a computer using a 56Kb modem has lower bandwidth than one with a cable connection.) So, nodes with low bandwidth would hog the transfer, while those with high bandwidth would have unused bandwidth. The Proposal leaves open the problem of connecting two networks.
Wasson's and Lambla's proposed architectures are both hierarchical. They have faster-connection nodes play the role of server/proxies for many slower-connection nodes, which connect to few servers. Thus they distribute the connection load more evenly. However, they are susceptible to failure of or malice by the nodes high in the hierarchy. Also, the schemes are arguably complex to implement.
![]() Figure1. An example instance of the proposed architecture. The connections between nodes in a cluster are not shown. |
On joining a cluster, a node finds a place in the structure by iterated referral: if it contacts a member node that does not know of a spare space in the structure, the member node refers it to its neighbours. The cluster makes the other connections to the new node, necessary to preserve the topology. The new node receives a list of all neighbouring clusters from one of its neighbours and is free to connect to nodes of other clusters.
When a node connects to an outside cluster, it pass the ID of the outside cluster around its home cluster.
A multicast message is passed through the cluster, and to neighbouring clusters. It reaches each member node once and travels to each neighbouring cluster.
There is a problem when a node disconnects -- its co-nodes think they are still neighbouring with all the clusters they were before. One solution is to find the neighbourng clusters over again, as they were found initially. But this may mean more communication overhead than the whole scheme saves.
It allows merging of networks naturally, in the same way as connections within networks.
The architecture must be validated against simulations and empirical data. It is unclear whether its assumptions hold in real Gnutella-type networks. The exact overhead it incurs is also unclear.
Further consideration (albeit purely abstract) can be given to using clusters of clusters, or having nodes belong to more than one cluster.