Gateways are nodes that allows clients to remotely use the ANet network the gateways are using. A cluster is a group of nodes that share the same connection and distribution rules.
A Gateway is a node in the network that allows other computers to use the network through a remote connection, without having to connect to the network with ANet.
Usually, a user installs ANet, connects to the network, and uses various clients, locally on the same machine, that will make use of the network (FTP, chat, newgroups...). As you may remember, all those clients consider the network as if it was one computer[1]. But what if other computers wanted to use the network as if it was a single computer without being part of that network? Gateway connections are made for that.
Basically, a gateway connection is a client/server connection between some client and the network, as if it was a single computer. With this, a user can "use" an anonymous distributed network in an transparent way. Also, it allows network that allow anyone to "use" it, through a gateway, but where only selected computers are allowed to become nodes.(1)
A cluster is a group of nodes that require and enforce the same set of connection and distribution rules.
For example, let's say that we want to make a network only for an FTP-like protocol. Each node is expected two things:
In the last example, it showed only distribution rules. A cluster can also define connection rules, so that a cluster can be not anonymous and have a specific structure. For example, if you discover that the FTP-like protocol is faster in a star-shaped network with 3 levels, then you can require and enforce that the handshaking module that has to be used is "StarLike v1.0.0"(2).
Using clusters allows you to make networks that are "optimized" for certain tasks, or to simply regroup nodes.
Now, let's say that you have two clusters: one for chat, and one that can do anything (one that has no rule). What can you do if you want to send part of the information of the chat cluster to the other cluster?
ANet allows you to do that with a "Cluster Group". A cluster group is a group of clusters that can exchange data between each other, transparently, without having to share the same connection and distribution rules. The data that can be exchanged is queries[2] and static data[3].(3)
(1) So, using client/server connections, ANet implements an anonymous distributed network, and the whole network can be used as if it was a single computer through a client/server connection. Isn't that nice?
(2) ANet easily allows coders to implement a distributed network other than an anonymous one. This is possible because ANet is very modular and can allow different "logic" to coexist in ANet, here, different Handshake Protocol modules.
(3) Two-way data transfers channels between different clusters would be too difficult to implement, and could be considered a security problem anyways (you have to follow two different set of rules across the communiction channel).
Last update for this document: September 1, 2001, at 19:3:53 PST