[comp.os.mach] Mach 2.5 NetMsgServer

bcs@frenulum.eng.ufl.edu (Bradley C. Spatz) (06/02/91)

I have two questions related to Mach RPC between two (or more) physically
separated hosts:

	1) What transport protocols are used for RPCs?
	2) How is data representation handled (is there an XDR-like
	   standard for Mach RPC)?

I think both of these functions fall under the aupices of the NetMsgServer that
extends IPC across the network.  I thought I had all the docs for 2.5, but
I don't see anything concerning the NetMsgServer, beyond the netname services.

Is there a document that explicitly describes the NetMsgServer (and not the doc
on network server design)?

Thanks in advance.
-- 
Bradley C. Spatz                                        Internet:  bcs@ufl.edu
Computer and Information Sciences                    UUCP:  uunet!uflorida!bcs
College of Engineering
University of Florida                         "See Figure 1."

dpj@CS.CMU.EDU (Daniel Julin) (06/05/91)

In article <1991Jun1.234148.921@eng.ufl.edu> bcs@frenulum.eng.ufl.edu (Bradley C. Spatz) writes:
> I have two questions related to Mach RPC between two (or more) physically
> separated hosts:
>
> 1) What transport protocols are used for RPCs?
> 2) How is data representation handled (is there an XDR-like
> standard for Mach RPC)?
>
> I think both of these functions fall under the aupices of the NetMsgServer that
> extends IPC across the network.  I thought I had all the docs for 2.5, but
> I don't see anything concerning the NetMsgServer, beyond the netname services.
>
> Is there a document that explicitly describes the NetMsgServer (and not the doc
> on network server design)?

The "Network Server Design Document" in the standard Mach doc
directory is the primary reference for people who are modifying or
maintaining the netmsgserver. It corresponds to the sources
distributed with the 2.5 release. Beyond that, you'll have to "use the
force and read the code"!  I have also written a protocol description
a long time ago; it is in /usr/dpj/public/protocol.ps on
wb1.cs.cmu.edu. This document is still theoretically only a draft, but
I haven't had time to work on it for years, so I guess it's as good as
it will get...

As for your specific questions:

1) The transport protocol to use is specified in config.h when
compiling the netmsgserver. The default as distributed (and the only
one seriously used to my knowledge) is TCP over UNIX sockets, with
special care to try to optimize performance by caching open
connections, being clever with TCP buffering, exploiting delayed
ACK's, etc. This will almost certainly change drastically with future
revisions of the netmsgserver for Mach 3.0, but I don't know when that
will happen.

2) The data in messages is naturally described as part of the Mach
message format (msg_type_t and co.). For network communication, the
netmsgserver uses the "receiver-makes-right" strategy. The sender
sends the data as-is, accompanied by a header that indicates the byte
ordering and other interesting characteristics. The receiver performs
all conversions if and when needed.


======================================================================
Daniel Julin                                            dpj@cs.cmu.edu
School of Computer Science
Carnegie Mellon University, Pittsburgh, PA 15213
======================================================================