Experience with Grapevine: The Growth of a Distributed System

Michael D. Schroeder, Andrew D. Birrell, and Roger M. Needham. Experience with Grapevine: The Growth of a Distributed System. ACM Transactions on Computer Systems, 2(1):3-23, February 1984.

Notes by Snorri Gylfason, March 23, 1998


Grapevine

Grapevine as introduced in the original paper "Grapevine: An Exercise in Distributed Computing" (1982) by Birrell, Levin, Needham and Schroeder, is "... a system that provides message delivery, resource location, authentication, and access control services in a computer internet".

One of the main goals of the Grapevine project was to gain more understanding on some system structures in distributed systems. The Grapevine is mainly a message delivery system but some of its elements can also be used for other things like file service.

The Grapevine system is one of the first distributed electronic message delivery system. It is based on earlier work by Levin and Schroeder "Transport of electronic messages through a network" (1979).

The Grapevine is a distributed system, meaning that the service is provided by a number of computers communicating through an internet. It is replicated, meaning that the same service is provided equally well by different computers.

Grapevine is a group of computers each providing two types of service, registration service and message delivery service. The registration service is used to map names to information about the users, machines, services, distribution lists, and access control lists. Then the message delivery service is used to send the message.


Experience with Grapevine

Two years after the original Grapevine paper the authors wrote another paper with results of the experiment.

Grapevine somewhat scales and somewhat not. The power of the system is increased by simply adding more servers. This is very important for the scalability. But the system does not scale well all over. Messages can be sent to individuals or to a group of individuals. When the size of groups increase it may result in huge delays.

By its nature messaging is asynchronous (since the recipient is maybe not connected). Most of the Grapevine system is asynchronous but not all. When a message is sent to a list of individuals the first message server validates all recipients before accepting the message - the client is waiting all the time. This can take a while since the required information are distributed on multiple registration servers.

The Grapevine system is decentralized. Information are replicated and distributed. This has caused numbers of problems such as update problems resulting in strange behavior. Another problem related to the replication is very interesting. Most of the components in the system are replicated, we have primary and secondary inboxes and registries. When looking for nonexisting entry (e.g. because of typo) we may end up looking for it in multiple places - again causing huge delay.

One of the major problem with the system is that every server must trust all the other servers. If and only if that is acceptible (which is usually not the case) we can use this for access control, such as in file servers.