Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Grapevine

raven
November 18, 2019
13

 Grapevine

"Grapevine: An Exercise in Distributed Computing" Andrew D. Birrell, Roy Levin, Roger M. Needham, and Michael D. Schroeder Xerox Palo Alto Research Center

raven

November 18, 2019
Tweet

Transcript

  1. Grapevine: An Exercise in Distributed Computing Birrell, et al., Communications

    of ACM, vol. 25, pp 260-274, 1982. presented by raven 2019/5/27
  2. Basic Data • Implemented a distributed system for e-mail and

    other distributed activities in 1978-80 • Authors: Andrew D. Birrell, Roy Levin, Roger M. Needham, and Michael D. Schroeder • Authors’ institutions: Xerox Palo Alto Research Center • Appear in: Communications of ACM 2
  3. Key Quotes • Two design Goals of Grapevine are •

    “Grapevine makes its services available to many different clients. Thus, it should make no assumptions about message content. Also, the integrity of these services should not in any way depend on correctness of the clients. Though the use of an unsatisfactory client program will affect the service given to its user, it should not affect the service given to others.” 3
  4. Overview • A distributed system for e-mail and other distributed

    activities • Predates most Internet mail systems • Embodies many principles of distributed computing systems 4
  5. Design Goals • No assumptions about … – Message content

    – Client correctness • Message delivery guarantee – If accepted, message would be delivered to recipient’s inbox – or … returned with error • Failure of server ≠ unavailability of service • Decentralized administration 5
  6. Two parts of Grapevine • Registration Data Base – Distributed

    – Replicated – Recursively implemented • Message Delivery System – Transports, buffers, delivers – Expands distribution lists – Distributed – Replicated 6
  7. Issues • Reliable Transport and Storage • Synchronizing and Ordering

    of Operations • Fault-tolerance • Consistency and Replication • Security and Authentication 7
  8. Registration Database • {RName, value} pairs • Two types of

    entry – Individual – Group • Group entry – value = list of RNames — i.e., the group members – May be distribution list, resource list, access control list, etc. • Individual entry – value = [authenticator, ordered inbox list, contact site, …] – May be human users, servers, etc. 8
  9. Organization • Registry – Subset of the registration database entries

    – Organizational, geographic, or other convenient partition • RName – two-part name Name.R – R is a registry – Name is a unique name within that particular registry – (Easily expandable to three part names or more) 9
  10. Functions Delivery services:– • Accept message: ◦ [sender, password, recipients,

    message-body] → ok • Message polling: ◦ [individual] → {empty, non-empty} • Retrieve messages: ◦ [name, password] → sequence of messages → ok • … 10
  11. Functions (continued) Registry services:– • Authenticate: ◦ [individual, password] →

    {authentic, bogus} • Membership: ◦ [name, group] → {member, non-member} • Resource location: ◦ [group] → members ◦ [individual] → contact site ◦ [individual] → ordered list of inbox sites • ... 11
  12. Grapevine Server • Contains both Registration and Message servers ◦

    Independent of each other ◦ Communicate only by internet protocols • Registration server ◦ Contains replicas of one or more Registries ◦ Can accept change request for any of its registries ◦ Propagates changes to other replicas of Registry • Message server ◦ Accepts any message for delivery ◦ Stores inboxes for some individuals ◦ (Individuals typically have more than one inbox) 12
  13. User Package • Library code for Grapevine client programs ◦

    E-mail clients ◦ Other kinds of distributed applications • Handles all naming and addressing issues ◦ Clients never need to know name or address of any Grapevine server ◦ Servers optimized based on “User Package” 13
  14. Example of Operation • User P.Q sends message to user

    X.Y • User X.Y wants authenticated access to server E 14
  15. Message Delivery • Find Message service • Present [sender, password,

    recipients] to service ◦ Authenticates sender ◦ Validates recipients ◦ (Assume valid if recipient registry not available) • Construct envelope (aka property list) ◦ Sender Name, Return-to, recipient list, postmark ▪ Postmark = [server internet addr, server time stamp] • Accept message-body ◦ Store envelope & message body in reliable storage ◦ Acknowledge receipt of message 15
  16. Message Delivery (continued) Transport system • Recursively enumerate groups in

    destination list • Find inbox server contact for each recipient • Sort by server, transmit one copy to each server with list of recipient names • Duplicate elimination done at receiving server ◦ E.g., an individual a member of more than one group • Queue if all servers down or inaccessible • Receiving client polls all its inboxes ◦ Downloads from each ◦ Message deleted from inbox only after receipt is acknowledged 16
  17. Replication in Message Delivery • Any server can accept a

    message for delivery • Individuals typically have more than one inbox • However, ◦ Crashes can delay messages in transit. 17
  18. Registration Database • gv registry ◦ Replicated in all registration

    servers • Groups in gv ◦ Names of registries ◦ Members are RNames of registration servers holding replicas of the group registry • I.e., ◦ reg is a Registry iff there is a group reg.gv ◦ Server holds a replica of reg iff its name is in reg.gv 18
  19. Registration Database (continued) • gv.gv is a group in gv

    registry ◦ Its members are RNames of all registration servers • Adding a registration server adding a member to gv.gv • Adding a new registry r adding a new group entry r.gv to gv registry ◦ Members of r.gv are a subset of gv.gv 19
  20. Registration Database (continued) • Used to locate resources ◦ Service

    is a group in the database ▪ Members are RNames of servers ◦ Servers are individuals in the database ▪ Contact site is internet address of server • To find foo.bar 1. Contact local Grapevine server, ask for bar.gv 2. Enumerate members, contact one of them, and ask for foo.bar 20
  21. Finding the first Grapevine Server • Ask another name service

    (e.g., DNS) for GrapevineRServer ◦ Returns a list of addresses ◦ List changes very infrequently or • Broadcast to well-known socket on LAN ◦ Local Grapevine servers listen on socket ◦ Usually quicker 21
  22. Summary • Names in Grapevine ◦ People ◦ Services ◦

    Servers ◦ Anything else you want them to be • Registry maps names to … ◦ Groups (i.e., a list of other names) ◦ Individuals (something with an address and/or other properties) 22
  23. Summary (continued) • Highly replicated ◦ Registries exist in multiple

    servers ◦ Individuals have more than one mailbox ◦ Mail can be delivered to anywhere for any recipient ◦ Registry used to manage itself! 23