Communication Issues

Networking

Types of networks with impact on distributed systems:

LANs, MANs, WANs, wireless

OSI protocol stack--well defined. In reality we have only some of the layers.

Internet protocols

The Client-Server Model

Addressing

How to locate?

  1. machine and port
  2. broadcast/multicast (LAN vs. WAN)
  3. name servers

Blocking vs. Nonblocking Send

See Fig 10-8

Other issues in Fig 10-11, 10-12, and 10-13.

Remote Procedure Call

Look at Birrell and Nelson paper.

Issues in duplicating procedure-call semantics:

RPC failures

  1. client unable to locate the server
  2. request message from client to server is lost (resend?)
  3. reply message from the server to the client is lost. Is the operation idempotent--does it have side-effects? What about B&N?
  4. server crashes after receiving a request
  5. client crashes after sending a request

Critical Path Performance

RPC on a DEC Firefly multiprocessor workstation.

See Fig 10-24. UDP protocol. Buffering in shared buffers between user and kernel space (VAX architecture). Assembly language code and hand optimized.

Experience:

Other RPC mechanisms

Sun and XDR.

Asynchronous RPC

Similar issues to message passing. Used by X11.

  1. Can send requests needing no replies
  2. can bundle RPC requests
  3. client can continue processing and pick up the reply later

What's the difference between RPC and message passing?

send/receive of messages (I/O based) versus RPC (procedure oriented)

Group Communication

Three types of communication:

  1. unicast--point-to-point
  2. broadcast--one-to-all
  3. multicast--one-to-some (group)

Multicast is the most general and can subsume the other two. How is it supported?

Design Issues

ISIS

System at Cornell. Toolkit for building distributed applications.

loosely synchronous system--all events appear in the same order to all parties.

causal relationship between two events if the first might influence the second. In a virtually synchronous system all messages that are causally related must be received in the correct order.

Three primitives:

  1. ABCAST--loosely synchronous communication
  2. CBCAST--virtually synchronous communication
  3. GBCAST--like ABCAST, but deals with group membership changes

CBCAST uses a vector approach. Look at Fig 10-35. Allows a message to be received if:

Amoeba also has group communication. Uses a sequencer node through which all communication goes through.

Notification Mechanism

Look at ``A Scalable and Explicit Event Delivery Mechanism for UNIX'' paper. Slides:
http://www.cs.wpi.edu/~cs535/s03/banga:usenix99/

Look at ``A Scalable and Explicit Event Delivery Mechanism for UNIX'' paper. Slides:
http://www.cs.wpi.edu/~cs535/s03/chandra:usenix01/