Discover nodes on a network

marshian

New Member
Messages
526
Reaction score
9
Points
0
I'm writing an application for which it would be very useful to discover nodes, but without being centralised. Basically, when my application starts it should inform other computers running my program that there is a new node with the given IP.
The first thing I thought of were broadcasts, but they are limited to the LAN, while my program would benefit *a lot* if it could be done higher as well.

For example:
WAN1 consists of LAN1 and LAN2, a new node in LAN1 starts and connects to an already existing node in LAN2.

Assume I don't have access to the routers who connect the LANs. Do any of you happen to know a way to accomplish this?

Thanks in advance :)
 

misson

Community Paragon
Community Support
Messages
2,572
Reaction score
72
Points
48
What constitutes peerage for your app? Are all hosts running it peers (as in P2P apps), or are there peer subgroups (as in some games)?

You could try multicasting, though not all IPv4 routers & hosts support it.

If you want an example of how someone else does it, consider Gnutella. Client communication is decentralized, but initial host discovery is accomplished by querying a host cache.
 
Last edited:

marshian

New Member
Messages
526
Reaction score
9
Points
0
Thanks for your response, especially the Gnutella part would be interesting. My program would treat all peers equal, so there wouldn't be peer subgroups.
I don't have the time to look into it at the moment, but I'll certainly do so when I can find the time :)
 

misson

Community Paragon
Community Support
Messages
2,572
Reaction score
72
Points
48
Freenet has another approach: distribute known hosts through the peer network. It's far from perfect because the user must know of one node in the peer network (a chicken-and-egg problem, but it works well enough for Freenet, which works as a F2F network). The client can connect to that node and find other nodes. Freenet also works as an opennet, which it does by publishing nodes at a known URL.

Another interesting network to look at is MorphMix, an anonymizing networks. According to the design paper,
[T]o join, one must learn about at least one currently active node. This can be done via a local cache where the node tries contacting nodes that have been active previously, hoping that one of them is also active now. Another way to learn about other nodes is to query some nodes that are known to be always up. A third way is that there are some information servers that know about “many” currently active nodes

The article "Observations on game server discovery mechanisms" published in Communications of the ACM might have a solution. You need an account to view it online, or you can go to your nearest university library.
 
Top