UNIX IPC Datagram Reliability under - (nf)
rpw3 at fortune.UUCP
rpw3 at fortune.UUCP
Tue Feb 7 19:07:17 AEST 1984
#R:allegra:-220500:fortune:11600052:000:2831
fortune!rpw3 Feb 6 20:41:00 1984
In response to Ken Almquist:
1. As Eric said, if you want reliable UNIX domain communication, use
streams, which provide that service. IP datagrams are by definition
unreliable. [But... if you are using UNIX domain as IPC, see below.]
2. In general, what makes good IPC within a single (tightly-coupled
multi-)processor does not make a good (loosely-coupled network)
message system, and vice-versa. The tradeoffs are too different.
Trying to use one where the other fits is awkward at best. (Microsecond
busy-waits are often appropriate in the former case; sleeps of seconds
or minutes in the latter.)
A good fast low-overhead IPC can sometimes be one of the mechanisms
on which networking is built (see the CMU "Hydra/C.mmp" book), but
even so one must be careful about synchronization and queueing.
(It is not yet clear to me that S-5 IPC is fast/cheap enough.)
Simple/clean IPC is rarely achieved on top of networking (but
see the literature on "Remote Procedure Calls".)
When the reason for having multiple processes in the first
place was to "solve" some synchronization/event-waiting problem
with multi-programming WITHIN a single process, the lack of adequate
sync/event mechanisms often comes back to bite the IPC user.
Whether it's "software interrupts on events" or the 4.2 "select",
SOME form of "tell-me-about-the-first-interesting-event" seems
necessary for real concurrency. Having a forest of processes,
each waiting on one specific event, is useful only if the process
sleep/wake time is VERY small, and efficient fine-grained locks
on shared-memory data are available. (Again, see the "Hydra" book,
conversely also see Holt's "Concurrent-Euclid/UNIX/Tunis".)
I guess I'm trying to say, "Look again at why you're using UNIX
domains at all." Preparation for future networking? [O.k., fine]
... or as a type of IPC? If IPC, would you rather have some other kind?
[Nothing wrong with "making do", but one needn't celebrate the crutch.]
3. A close reading of the X.25 standard will reveal that a "RESET" message
is permitted from the network or either party at any time, with no
synchronization with the other party. (Remember, X.25 is a network
ACCESS protocol, not a peer-peer protocol.) "RESET" does NOT drop
the connection, it just resets ("drops") the sequence numbers. This
can cause data to be lost and/or duplicated unless a higher level
stream protocol (with its own sequence numbers) is used on top of
X.25 connections. Networks may issue "RESET" at any time, such as
when load-shedding data to relieve buffer congestion.
Rob Warnock
UUCP: {sri-unix,amd70,hpda,harpo,ihnp4,allegra}!fortune!rpw3
DDD: (415)595-8444
USPS: Fortune Systems Corp, 101 Twin Dolphins Drive, Redwood City, CA 94065
More information about the Comp.unix.wizards
mailing list