summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc91.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc91.txt')
-rw-r--r--doc/rfc/rfc91.txt675
1 files changed, 675 insertions, 0 deletions
diff --git a/doc/rfc/rfc91.txt b/doc/rfc/rfc91.txt
new file mode 100644
index 0000000..e941fc0
--- /dev/null
+++ b/doc/rfc/rfc91.txt
@@ -0,0 +1,675 @@
+
+
+
+
+
+
+Network Working Group George H. Mealy
+Request for Comments: 91 Harvard University
+ December 27, 1970
+
+
+ A PROPOSED USER-USER PROTOCOL
+
+INTRODUCTION:
+
+ There are many good reasons, and maybe one or two bad ones, for
+ making it appear that communication over the Network is only a
+ special case of input/output -- at least as far as user programming
+ is concerned. Thus, for instance, the Harvard approach toward
+ implementing the HOST-HOST protocol and Network Control Program
+ treats each link as a "logical device" in PDP-10 terminology.
+ Setting up a connection is similar to local device assignment, and
+ communication over a link will make use of the standard system
+ input/output UUO's. This makes it possible to use existing programs
+ in conjunction with the Network without modification -- at least if
+ other PDP-10's are being dealt with.
+
+ This takes us only so far, however. The notion of a "logical device"
+ does not exist on the PDP-10; it does on the IBM 360 (I am speaking
+ here at the level of the operating system -- user program interface).
+ Furthermore, in the absence of a Network standard requiring fixed
+ representations for integers, reals, etc. (which I would oppose), any
+ pair of user processes must arrive at a local agreement, and one or
+ both must assume the burden of data conversion where necessary. Any
+ standard protocol should allow such agreements to be given expression
+ and should accommodate at least the minimum of control information
+ that will allow such agreements to function in practice. Finally, we
+ must note that the IMP-IMP and HOST-HOST protocols do not provide for
+ a check that an action requested by a user process is actually
+ accomplished by the other processes; this type of issue has always
+ been regarded as subject to treatment at the USER-USER protocol
+ level.
+
+ This proposal is intended to face the above three types of issue only
+ to a certain extent. I can best explain that extent by stating the
+ criteria I would use to judge any USER-USER protocol proposal:
+
+
+
+
+
+
+
+
+
+
+
+Mealy [Page 1]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ 1. The notion of a (logical) _record_ should be present, and the
+ notion of a _message_ should be suppressed. (To a FORTRAN pro-
+ grammer, that which is written using one WRITE statement with no
+ accompanying FORMAT is a record; to an OS/360 machine language
+ programmer, PUT writes a record).
+
+ 2. It should be possible to so implement the protocol in HOST sys-
+ tems and/or library routines that now existing user programs can
+ access files anywhere in the Network without program modifica-
+ tion. (Initially, at least, this ability must be restricted to
+ HOST systems of the same type).
+
+ 3. The protocol should be implementable (not necessarily imple-
+ mented) in any HOST system at the SVC or UUO level. Specific
+ knowledge of the characteristics of the other HOST involved
+ should be unnecessary.
+
+ It should be noted that the above imply that some user programs must
+ be aware of the nature of the other HOST -- at least in each case
+ where the second criterion fails. As we make progress in (or give up
+ on) the cases where the failure now occurs, the burden of accommodat-
+ ing system differences will shift toward implementation in protocols
+ (i.e., the HOST systems) or, by default, in user programs.
+
+ Quite clearly, any proposal initiated today should be suspect as to
+ the extent to which it "solves" ultimate problems. How ambitious to
+ be is strictly a matter of taste. At this stage, I prefer to try
+ something which I believe can be used by all of us (and, hence, is
+ worth doing), goes a reasonable distance towards solving our short-
+ range problems, is easy to do, and offers hope of viability in the
+ long range view. In the following, I intend to describe the proposal
+ itself with, I hope, proper motivational arguments for its pieces. I
+ will then sketch the specific implementation we at Harvard are making
+ for the PDP-10 and describe how we intend to apply it in the specific
+ case of storage of files on other PDP-10's in the Network.
+
+USER-USER PROTOCOL (PROPOSAL)
+
+ The following protocol is intended to apply to the data bits in mes-
+ sages between the end of the marking bits and the beginning of the
+ padding bits. _The present IMP-IMP and HOST-HOST protocols are unaf-
+ fected by this proposal_.
+
+ The general principle is that each segment (this is not a technical
+ term) of data is preceded by control information specifying its
+ nature and extent. The basic scheme has been evolved from that used
+ in the SOS buffering system (see the papers in JACM, April 1959 and
+ especially that by O.R. Mock).
+
+
+
+Mealy [Page 2]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ Our point of view is that a link is a carrier of information. Infor-
+ mation is carried in segments of a fixed maximum length called _mes-
+ sages_ [1]. That this is so is an accident, from the user's point of
+ view; when he wishes to transmit a contiguous stream of data, he will
+ in general, segment it in a different (from the IMP-IMP or HOST-HOST
+ protocol view) manner -- we will call his segment a _record_. It
+ should be clear that this is entirely analogous between the notion of
+ (physical) _block_ and (logical) record. On the side, file storage
+ systems also make use of control and status information; we will
+ also.
+
+ At the USER-USER protocol level, all information transmitted over the
+ link is a sequence of flags followed by (possibly null) data blocks.
+
+ The general format will be:
+
+ OPERATION COUNT DATA
+
+ The OPERATION field is always present and is four bits long. The
+ COUNT field, when present, gives the number of data bytes following
+ in the data block. The byte size is set by the last preceding SIZE
+ flag (in most cases). The byte may be between zero and 255 bits long
+ (Yes, Virginia, zero is zero even when you have a System/360). The
+ OPERATION field and the COUNT field (when present) are called the
+ flag and the data bytes (when present) the data block. Flags fol-
+ lowed by data blocks (even when null due to a zero count) are called
+ block flags, and other flags are called whyte [2] flags.
+
+ It is to be noted that, since the SIZE flag sets the byte size for
+ the following blocks, byte size may be set at that "natural" for the
+ sending or for the receiving HOST, depending on local agreement
+ between the sending and receiving processes. It is specifically
+ required that a SIZE flag appear in each message prior to any block
+ flag (except the ASCII flag); the SIZE flag may be introduced on a
+ default basis by the routine(s) implementing the protocol and is
+ intended partially as a means of detecting certain classes of error.
+
+ The COUNT field is 8 bits in length (except in the EOM flag, where it
+ is 16 bits long). The flags are as follows:
+
+ Whyte Flags:
+
+ 0 - NUL No operation (consider next flag)
+ 1 - RS Record Separator (end of record)
+ 2 - GS Group Separator (end of group)
+ 3 - FS File Separator (end of file)
+ 4 - ESC Escape to local convention for flags
+ 5 - (reserved for later assignment)
+
+
+
+Mealy [Page 3]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ 6 - EOM N End of Message (N is total bit count)
+ 7 - SIZE N Byte size is N bits
+ 8 - IGNORE N Ignore following data bits
+
+ Block Flags:
+ 9 - SYS N N bytes of data for receiving HOST system
+ 10 - CONTROL N N bytes of control data follow
+ 11 - STATUS N N bytes of status data follow
+ 12 - LABEL N N bytes of identification data follow
+ 13 - KEY N N bytes of key data follow
+ 14 - ASCII N N (8-bit) bytes of ASCII data follow
+ 15 - BLOCK N N bytes of data follow
+
+ I have already mentioned the requirement for SIZE. Absence of the
+ SIZE flag in any message containing block flags (except ASCII) is a
+ definite error. EOM is partially another error-checking device and
+ partially a device for bypassing the padding conundrum. A user pro-
+ gram should never see EOM on input; the user may write an EOM to
+ force transmission. EOM delimits the end of the useful information
+ in the message and restates the total number of bits in the message,
+ starting with the first bit following the marking and ending with the
+ last bit of the EOM count field, to check possible loss of informa-
+ tion. This is a check against errors in the IMP-HOST electrical
+ interface and in the HOST mushyware. EOM must appear at the end of
+ each messager, unless ESC has apeared.
+
+ ESC is intended as a (hopefully) unused escape hatch, for nonuse by
+ those installations and/or applications wishing to avoid using more
+ than four bits of the USER-USER protocol on any link. For instance,
+ it may be desired to use a link as a bit stream, ignoring even mes-
+ sage boundaries. If and when anarchists can achieve local agreement,
+ more power to them!
+
+ NUL and IGNORE are intended to be space fillers, in case it is help-
+ ful to make the first bit of the subsequent data block occur on a
+ convenient address boundary. (An especially helpful HOST interrupt
+ routine might even paste a combination of NUL and IGNORE over the
+ marking bits when receiving a message -- in which case, their bit
+ count should be transmitted on to the GET routines to correct the EOM
+ bit count check). The separator operations introduce the notions of
+ logical record, group, and file. Specifically, there is no require-
+ ment that a record be contained entirely within a message or that
+ only a single record be contained in a message! In addition, there
+ is no requirement that only one file be transmitted during a connec-
+ tion. For instance, a user might wish to use a link to transmit a
+ collection of rountines, and then do something else with the link.
+
+
+
+
+
+Mealy [Page 4]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ By local agreement, then, a single routine might consist of a number
+ of records forming a group, the whole collection might form a file,
+ and the link might remain connected after the FS flag is received.
+
+ The interpretation of the various block flags is similarly open to
+ local agreement. The two flags intended to convey pure data are
+ ASCII and BLOCK; the difference between them is only (as far as the
+ protocol is concerned) that the byte size is implicit for ASCII (8
+ bits) and explicit for BLOCK (the count field of the next preceding
+ SIZE flag). Beyond this, however, the semantic content of the block
+ following ASCII is governed by the current standards for ASCII;
+ EBCDIC information may not be transmitted in an ASCII block!!
+
+ CONTROL and STATUS are intended for communication of control informa-
+ tion between user processes, and the interpretation of their accom-
+ panying data blocks is open to local agreement. Generically, CONTROL
+ means "try to do the following" and STATUS means "but I feel this
+ way, doctor." A CONTROL flag will prompt a returned STATUS flag,
+ sooner or later, or never. LABEL is intended for use in identifying
+ the following unit(s) of data, at the file or group level. Again,
+ the specific interpretation is a matter of local agreement. KEY is
+ intended to mimic the notion of address or key -- this is at the
+ record, data item, or even physical storage block level. For the
+ familiar with PDP-10 system and/or OS/360, the following parallels
+ are offered for guidance:
+
+ USER-USER protocol OS/360 PDP-10
+ __________________ ______ ______
+
+ CONTROL OPEN OPEN
+
+ CLOSE CLOSE
+
+ LABEL DSCB File retrieval information
+
+ KEY KEY USETI/USETO argument
+
+ CONTROL READ IN/INPUT
+
+ WRITE OUT/OUTPUT
+
+ ALLOCATE ? ENTER
+
+ OPEN ? LOOKUP
+
+ STATUS ? GETSTS
+
+
+
+
+
+Mealy [Page 5]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ The "?" notations above indicate lack of a very direct parallel. It
+ is worth noting that the OS/360 GET and PUT have direct parallels in
+ any implementation of the USER-USER protocol that embodies the notion
+ of record; our implementation of the protocol will lead to introduc-
+ tion of this notion for all PDP-10 input/output involving disc and
+ tape storage, as well as IMP communication.
+
+ If I knew the MULTICS terminology, I could extend the set of paral-
+ lels above with more precision. Although my terminology has been
+ drawn from systems with explicit input/output imperatives, I wish to
+ emphasize that this setup in intended to handle control and data com-
+ munication in general; MULTICS is a system in which the classical
+ distinction between external and internal storage is blurred (from
+ the user's point of view) in a manner I wish it blurred in the USER-
+ USER protocol. I offer SYS with only slight trepidation. The gen-
+ eral notion is that one should be able to communicate directly with a
+ foreign HOST rather than via a foreign user process as its intermedi-
+ ary. SYS is like a UUO or SVC, but for the foreign HOST's consump-
+ tion rather than my HOST's. From the HOST's point of view, the prob-
+ lem in implementation is in establishing a process context record
+ unconnected with any local user process. This, however, is strongly
+ associated with our current LOGON conundrum. On the PDP-10, for
+ instance, users are more or less identified with local teletype
+ lines, and any link is not one of those! Hence, subterfuge is neces-
+ sary to let a foreign user log on. OS/360 is as (actually, more)
+ perverse in its own way.
+
+ The process of logging a foreign process onto my local system is not
+ (except possibly for MULTICS) a simple matter of having a special
+ (!!) user job present which is responsible for doing it. When and
+ if anything else is possible, the HOST must provide a system instruc-
+ tion (UUO or SVC or whatever) that gives the requisite information
+ establishing a process independent in all senses of the process that
+ made the request. Otherwise, self-protection mechanisms which are
+ reasonable for any system will make us all much more interdependent
+ that we wish. To do this, there must exist in every system a UUO/SVC
+ that does the right thing (ATTACH, but forget me). If this is true,
+ then the LOGON process over the Network is tantamount to issuance of
+ a foreign UUO/SVC by another node in the Network. I see no reason-
+ able way around this. If that is the case, then SYS N is the kind of
+ flag to use to convey the requisite data. If that is so, then it is
+ only reasonable to let SYS convey a request for any OS instruction at
+ the user program-operating system interface level!
+
+ The practical questions of implementation are something else! In the
+ case of the PDP-10, I can pretty well see how to turn a SYS into
+ either a LOGON request to execute a monitor command or UUO (would
+ that they were the same) as the case might be. OS/360 is more
+
+
+
+Mealy [Page 6]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ sophisticated, unfortunately. MULTICS might make it. Naytheless, I
+ hope that is clear that what we want to do, which is what the proto-
+ col should reflect, is quite a different question from that of how it
+ is to be done in the context of a specific HOST system. What we want
+ to do is, in general, rather independent of the system we are dealing
+ with as far as the protocol is concerned, and we should not fail to
+ introduce general notions into the protocol just because we are unc-
+ ertain as to how they may have to be translated into particular
+ implementation practice.
+
+ A PDP-10 IMPLEMENTATION
+
+ Although the following can be implemented as either a set of user
+ routines or imbedded in the monitor as UUO's (our first implementa-
+ tion will be the former), the latter version will be used for
+ descriptive purposes. The UUO's would be:
+
+ PUTF CH, E Put flag
+
+ PUTD CH, E Put data
+
+ PUT CH, E Put record
+
+ GETFD CH, E Get flag or data
+
+ GET CH, E Get record
+
+ In the above, "CH" is the logical channel number. The customary OPEN
+ or INIT UUO is used to open the channel. Standard format user
+ buffers are assigned. However, the ring and buffer headers will be
+ used in a nonstandard way, so that data mode 12 is assigned for use
+ with Network buffering and file status bit 31 must be on for input.
+ (Any of the devices DSK, DTA, MTA, or IMP can be used in this mode.)
+
+ In the Harvard NCP and HOST-HOST protocol implementation, user
+ buffers do not correspond directly to messages. On output, each user
+ buffer will be formatted into a message; on input, a message may
+ become one or two user buffer loads (128 word buffers are used in
+ order to make maximum use of the facilities of the disk service rou-
+ tines).
+
+
+
+
+
+
+
+
+
+
+
+Mealy [Page 7]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ PUTF UUO:
+
+ This UUO places a flag into the output buffer. The effective
+ address is the location of a word:
+
+ XWD operation, count
+
+ In the case of block flags, the count is ignored, since it will be
+ computed from the number of bytes actually placed in the buffer
+ before the next use of PUTF. PUTF and PUTD will insert EOM flags
+ automatically as each buffer becomes full; if data bytes are
+ currently being placed in the buffer by PUTD, it will also insert
+ an EOM flag after computing the count for the previous block flag
+ in the buffer and place a new block flag of the same type at the
+ beginning of the next buffer, after inserting a SIZE flag stating
+ the then current byte size.
+
+ PUTD UUO:
+
+ This UUO places data into the output buffer. The effective
+ address is the location of the data byte (if the byte size is less
+ than 36) or of the next 36 bit word of data to be placed in the
+ buffer. In the first case, the byte is assumed to be in the low
+ order part of the word addresses. In the second case, the data
+ word containing the final bits of the byte contains them in the
+ high order part of the word, and the next data byte starts a new
+ word in PDP-10 storage. Thus, for a byte size of 64, two entries
+ to PUTD would be used per byte transmitted, the first containing
+ 36 bits and the second containing 28 bits, left-justified. This
+ strategy allows maximum use of the PDP-10 byte handling instruc-
+ tions.
+
+ PUT UUO:
+
+ This UUO places a whole logical record in the output buffer(s).
+ The effective address is that of a word:
+
+ IOWD count, location
+
+ A PUTF UUO must have been used to output the proper SIZE flag.
+ Thereafter, each use of PUT will output a BLOCK flag, [3] simulate
+ a number of calls to PUTD using the IOWD to discover the location
+ and size of the user data area, and then output a RS flag to indi-
+ cate end of record.
+
+
+
+
+
+
+
+Mealy [Page 8]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ In the case of byte size of less than 36 bits, PUT will use the
+ ILDB instruction to pick up bytes to be output by PUTD. Hence,
+ the standard PDP-10 byte handling format is used, and the count
+ part of the IOWD is the total byte count, not word count.
+
+ The above UUO'S have both an error return and a normal return.
+
+ GETFD UUO:
+
+ The calling sequence for this UUO is:
+
+ GETFD CH, E
+ error return
+ whyte flag return
+ block flag return
+ data return
+
+ The effective address is the location at which the flag or data
+ will be returned. The flag is returned in the same format as for
+ PUTF and the data in the same format as for PUTD. Certain flags
+ (NUL, IGNORE, and EOM) will be handled entirely within the UUO and
+ will not be reported to the user. SYS should eventually be han-
+ dled this way, but initially will be handled by the user.
+
+ GET UUO:
+
+ The calling sequence for this UUO is:
+
+ GET CH, E
+ error return
+ end of file return
+ end of group return
+ normal return
+
+ GET transmits the next logical record to the user, using GETFD
+ together with an IOWD in the same format as for PUT. If the IOWD
+ count runs out before end of record, the remainder of the record
+ will be skipped. In any case, the updated IOWD will be returned
+ at the effective address of the UUO in order to inform the user
+ how much data was transmitted or skipped.
+
+PDP-10 FILE TRANSMISSION:
+
+ Assume that I have a link connected to another PDP-10 and a user
+ process there that is listening. In order to get that process to
+ send me a file, the sequence of flags that might be transmitted can
+
+
+
+
+
+Mealy [Page 9]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ be represented as follows, where the UUO'S executed by me are in the
+ left margin, the flags are indented, and the commentary opposite them
+ indicates the nature of the data block transmitted:
+
+ PUT F
+ CONTROL Data with OPEN parameters, requesting OPEN
+ LABEL File identification data for LOOKUP
+ EOM Forces message to be transmitted
+
+ GETFD
+ STATUS Status returned by OPEN
+ SIZE Byte size to be used
+ LABEL File retrieval information
+
+ PUTF
+ CONTROL Data requesting INPUT from file
+ EOM Forces request to be transmitted
+
+ GETFD
+ STATUS Status bits returned by INPUT
+
+ GET Logical record (one file buffer load)
+ (loop back to second PUTF, above, for other records)
+
+ Finally, the status information returned by the second GETF indicates
+ end of file, and I wind up with the sequence:
+
+ PUTF
+ CONTROL Data requesting a CLOSE
+ EOM Forces transmission
+
+ GETFD
+ STATUS Status bits returned by CLOSE
+
+ In the case I am getting a file, the main loop looks like:
+
+ PUTF
+ CONTROL Data requesting OUTPUT
+
+ PUT Logical record (one file buffer load)
+
+ PUTF
+ EOM Forces transmission
+
+ GETFD
+ STATUS Status bits returned by OUTPUT
+
+
+
+
+
+Mealy [Page 10]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ The use of both the record and the flag transmission UUO's is worth
+ noting, as well as the use of the EOM flag to force transmission of a
+ message when switching between input and output over the link. PUT
+ and GET UUO's are clearly required above for transmission of the CON-
+ TROL and LABEL data; I suppressed them for the sake of clarity.
+
+ For this application, the handshaking nature of the transmission of
+ CONTROL and STATUS flags are mandatory. While the protocol would
+ permit transmission of a complete file without the handshaking, it
+ would be an all or nothing proposition - a single error would neces-
+ sitate doing it all over again, presuming that the receiving process
+ did not end up in a complete tangle.
+
+ BRIEF DISCUSSION:
+
+ The PDP-10 space required to implement the above protocol is about
+ 400 instructions, divided equally between the input and the output
+ side. Enough experimental coding has been done to confirm the feasi-
+ bility of this basic strategy, taken together with experience with
+ implementation and use of the SOS buffering system.
+
+ The above does not touch the question of LOGON protocol, except
+ indirectly. My belief is that it can be accommodated in the frame-
+ work of this proposal, but I have not tested this theory as yet. As
+ indicated further above, I would be tempted to handle the matter with
+ the SYS flag, given that SYS data is interpreted directly by the sys-
+ tem (in our system, we would use the RUN UUO to run the LOGON CUSP,
+ which would, in turn handshake using ASCII data over the link). In
+ this way, I think we might be able to dispense with the notion of
+ dedicated sockets and the reconnection morass.
+
+ One other point that needs thought is the question of how to handle
+ the interrupt on link facility. Should it have any direct relation
+ to the GET/PUT UUO's, or be handled on the side? I am inclined to
+ think that it should be treated _qua_ interrupt of the user process,
+ quite independently of the matter of data transmission over the link.
+ Some of our current work on the PDP-10 monitor would lend itself
+ rather easily to implementation as a true interrupt.
+
+
+ ENDNOTES*
+
+ 1. A message is that string of bits between any two HOST-HOST
+ headers.
+
+ 2. In memory of an attractive, but nonspelling, SDC secretary who
+ could not distinguish between black and white, at least during 1957
+ and in manuscript form.
+
+
+
+Mealy [Page 11]
+
+RFC 91 A Proposed User-User Protocol December 1970
+
+
+ 3. PUTF may be used to ouput the block flag, if a different from
+ BLOCK is required.
+
+
+
+
+ [ This RFC was put into machine readable form for entry ]
+ [ into the online RFC archives by Colin Barrett 9/97 ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Mealy [Page 12]
+