next up previous
Next: Problems with Floyd's Up: Design of Floyd Previous: Floyd's Existence in

Floyd's Existence on the Net: UDP Protocol

In addition to this refspace-confined input, Floyd also sends UDPSend energy and listens for UDPReceive messages. UDP packets allow one Floyd to talk directly to another Floyd who is not (and may never have been) in his refspace, thereby creating a global communication network. UDP itself is an agent-to-agent communication: broadcast queries are created by simply sending the same message to many agents.

Floyd listens in to UDP messages that he receives and responds to them if they match the protocol he knows about. Floyd protocol has three major purposes: checking whether another Floyd is running, finding out where someone is, and helping synchronize the database of all Floyds on the network.

Most of the protocol is simple. To check whether another ccr is running, Floyd simply sends a ping request to the Floyd running on the other world, who should respond with a pong. (Note that if the other ccr is not running a Floyd agent, Floyd has no way to tell whether that world is up or not.) To ask another Floyd when the last time a particular person was seen, he sends a last request: the other Floyd responds with a lastwas.

However, in order to find out where someone was last seen in the entire universe Floyd cannot not just direct the request to one other agent --- instead, the request must be broadcast to the entire Floyd network and the replies gathered. If the list of all Floyds in the network is known, this is relatively simple: send the last request to each Floyd on the list and collect the replies. Similarly, to see what ccr worlds are currently up, simply ping the Floyd running on each one and see who answers.

But the Floyd network is not static: it changes as new Floyds are added to the system. An important aspect of the Floyd protocol is ensuring that every Floyd is aware of every other Floyd's existence. The current solution for this problem is fairly basic: at any time, a Floyd can broadcast a register message to all other Floyds it knows about: the recipients of the registration message can then add their new compatriot to their own lists. In addition, any Floyd can query another for his current list of Floyds with a querylist request: in this way, a new Floyd can learn about the network provided he knows about at least one Floyd in that network. These two messages provide a minimal capability whereby Floyds can learn about each other's existence.



next up previous
Next: Problems with Floyd's Up: Design of Floyd Previous: Floyd's Existence in



Formatted: Thu Dec 14 16:41:29 MST 1995
Nelson Minar <nelson@santafe.edu>