Grapevine
Grapevine is a distributed, replicated system that provides message delivery, naming, authentication,
resource location, and access control services in an internet of computers.
The first mail service. Two type of service
Background
Multics of distributed system
What is Grapevine?
- distributed message and registration service
- provide mail services and naming and access control
tradeoff between transparency and ease of design/implementation
Two kind of services
- message , registration
message services
- delivery
- buffering(only buffered until downloaded onto client machine)
- any message server will accept any message for delivery
Registration Services
- Naming
- Rnames
- tables that maps names to info about users, machines, services,
- Registries correspond to locations, organizations, applications
Authentication
: user /psdAccess Control
- ACLs for files in distributed file systems
- Naming
In what ways did the services depend on each other
- Reg: use message services to maintain distributed registry
- Msgs: names, locations, groups from reg service
How are clients connected to servers
- Local ethernet
- How are servers connected
- Low-bandwidth modem lines
- Frequent network outages
Scaling
Scale v.s. Performance
- Cost of computation should not grows as a function of the size of the system
- goal is easy to understand but difficult to implement
- Up to a limit...there is a ceiling to which you need to grow
- Can afford complete info in some areas
- Registration servers know the names, addrs of all msg and reg servers, names of all regs and servers that contain replication
Scaling in Grapevine
- In what ways did scaling issues manifest themselves in Grapevine
- Distribution lists,
- Lists grows with user population
- Time to deliver to list grows with population
- frequence of add/delete grows with population
- Update increase freq
- Solve by level of indirection(two level lists), tree hierarchy
Transparency
How is transparency achieved?
: distribution and replication
Replication
- every user has at least two inboxes
registries unit of distribution, replication
- no server contains all registries
- each registry is replicated
Grapevine User client library hides replication from application
- does resource location based upon distribution of data and server availability
In what sense is Grapevine not transparent?
- updates are not transactions
- they take time to propagate through the system
- users can therefore see inconsistent state in the system
- very controversial to puristes; this is what Grapevine is remembered for
- duplicate message delivery
- name appears on multiple lists
- server for one list is down, so message only sent to live servers
- when server comes back up, message is sent again
- Reality of distribution sometimes exposed
- when deleting names, dont know all the places where a name appears
- Reliability of networks sometimes exposed
- long delivery times due to slow networks
- makes users wonder whether a message was actually delivered
- administration have to understand consequence of some actions
- e.g. Removing an inbox could overload the system
Transparency Possible?
- Goal of complete transparency is impossible, and not a good decision
- when there is a failure, provide feedback to the user
- key to a good design is deciding what to make transparent and what not