Comments on Protocol Re: NWG/RFC #36
RAND's suggested additions and concerns about the protocol described in RFC 36.
Harslem, E. and J.F. Heafner, "Comments on Protocol Re: NWG/RFC #36", RFC 39, DOI 10.17487/RFC0039, March 1970, <https://www.rfc-editor.org/info/rfc39>.
@misc{rfc39,
series = {Request for Comments},
number = 39,
howpublished = {RFC 39},
publisher = {RFC Editor},
doi = {10.17487/RFC0039},
url = {https://www.rfc-editor.org/info/rfc39},
author = {E. Harslem and J.F. Heafner},
title = {{Comments on Protocol Re: NWG/RFC #36}},
pagetotal = 3,
year = 1970,
month = mar,
} RFC text
Network Working Group E. Harslem
Request for Comments: 39 J. Heafner
RAND
25 March 1970
COMMENTS ON PROTOCOL RE: NWG/RFC #36
We offer the following suggestions to be considered as additions to
the April 28th 1970 protocol grammar specifications.
ERROR MESSAGES
<ERR> <Code> <Command in error>
It is desirable to include debugging aids in the initial protocol for
checking out Network Control Programs, etc.
There are three classes of errors--content errors, status errors, and
resource allocation or exhaustion. <Code> specifies the class and the
offending member of the class. The command is returned to the
sending NCP for identification and analysis.
Examples of status errors are: messages sent over blocked links and
attempts to unblock an unblocked link. Examples of content errors
are: an invalid RFC complete; a message sent on a link not connected;
closing of an unconnected link; and an attempt to unblock an
unconnected link. Examples of resource errors are: a request for a
non-existent program and connection table overflow, etc. Resource
errors should be followed by a <CLS> in response to the <RFC>.
QUERIES
<QRY> <My Socket> < >
or <QRY> <Your Socket> <Text>
Queries provide an extension to the <ERR> facility as well as limited
error recovery, thus avoiding re-initialization of an NCP.
The first command requests the remote NCP to supply the status of all
connections to the user specified by the user number in <My socket>.
The second is the reply; <Text> contains the connection status
information. If an NCP wants the status of all connections to a
remote HOST, the <My Socket> is zero.
PROGRAM TERMINATION NOTIFICATION
<TER> <My Socket>
This command supplements rather than replaces <CLS>. It severs all
communication between a program and those programs in a given HOST to
which it is connected. This command performs what would otherwise be
handled by multiple <CLS> commands. <My Socket> contains the sender's
user number.
HOST STATUS
<HCU>
<HGD>
These messages (HOST coming up and HOST voluntarily going down) are
compatible with asynchronous, interrupt-driven programs, as opposed
to the more conventional post/poll method.
TRANSMIT AND BROADCAST
<TRN> <Body>
<BDC> <Body>
Unlike the previous commands, these are not sent over the control
link, but rather over links assigned to user programs. The prefix of
<TRN> or <BDC> indicates, to the receiving NCP, the disposition of
the message body. <TRN> indicates a message to be passed to a single
process. <BDC> specifies to the destination NCP that the message is
to be distributed over all receiving connections linked to the
sender. In response to a system call by the user to an NCP
requesting <BDC>, the NCP generates one <BDC> to each HOST to which
the sender is connected.
RFC AND DYNAMIC RECONNECTION
This protocol is complex; it proliferates control messages; it causes
queues (to become associated with re-entrant procedures) that are
artificially imposed via the protocol (remote AEN assignment); and
discounts the situation where only controlling process "A" has
knowledge that slave process "B" should be "rung out" in a dynamic
reconnection.
The <ERR>, etc., are suggestions for inclusion as additions in the
April 28th protocol specifications. The above criticism is, of
course, not intended to affect modification of the RFC structure by
April 28th, nor to reflect on those who planned it. We have not
studied the problem. It is meant, however, to voice our concern
about complexity and resulting response times. This is a difficult
problem and it deserves more study after we have exercised the
current RFC specifications. We hope to offer constructive
suggestions with respect to the RFC in the future.
JFH:hs
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by Mario Vitale 08/99 ]
ISO Plain Language
On this page
§1Suggested Protocol Additions
E. Harslem and J. Heafner offer suggestions for additions to the April 28, 1970 protocol grammar discussed in RFC 36. They describe the commands as suggestions, not a completed design.
The authors suggest extra commands for a protocol draft. Their note is feedback for later specifications, not a final protocol.
§2Error Messages and Connection Queries
The proposed <ERR> message includes an error class and the command that caused the error. The three classes are content errors, status errors, and resource allocation or exhaustion. The code identifies the class and offending item, while the command is returned to the sending Network Control Program (NCP) for analysis.
The proposed <QRY> command asks a remote NCP for connection status. A query with a zero My Socket asks for the status of all connections to a remote host. The authors say queries could provide limited error recovery without reinitializing an NCP.
An error reply would identify what kind of problem occurred and return the failed command. A query would let one NCP ask another about connection status.
§3Termination, Host Status and Message Delivery
The proposed <TER> command closes all connections between a program and the programs at a host, supplementing rather than replacing <CLS>. The <HCU> and <HGD> messages report that a host is coming up or voluntarily going down.
The proposed <TRN> prefix sends a message body to one process. The <BDC> prefix asks the destination NCP to distribute the body over receiving connections linked to the sender. These messages use links assigned to user programs rather than the control link.
The suggestions include one command to close several connections and signals for host startup or shutdown. They also distinguish a message for one process from one distributed to linked connections.
§4Concern About Connection Complexity
The authors criticize the request-for-connection and dynamic-reconnection design as complex, with many control messages and queues imposed by the protocol. They say it does not account for a situation where only a controlling process knows that a subordinate process should be contacted during dynamic reconnection.
They clarify that the criticism is not meant to delay changes or criticize the people who planned them. They had not studied the problem in depth and say it deserves more study after the current specifications have been exercised.
The authors worry that connection setup uses too many steps and may affect response time. They say more study is needed after people try the current specification.