home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 900s / rfc928.txt < prev    next >
Text File  |  1992-09-21  |  60KB  |  1,198 lines

  1.  
  2.  
  3. Network Working Group                                    M. A. Padlipsky
  4. Request for Comments: 928                                    Mitre Corp.
  5.                                                            December 1984
  6.  
  7.                INTRODUCTION TO PROPOSED DOD STANDARD H-FP
  8.  
  9.  
  10. Status Of This Memo
  11.  
  12.    This RFC suggests a proposed protocol for the ARPA-Internet
  13.    community, and requests discussion and suggestions for improvements.
  14.    Distribution of this memo is unlimited.
  15.  
  16. Important Prefatory Note
  17.  
  18.    The broad outline of the Host-Front End Protocol introduced here and
  19.    described in RFC 929 is the result of the deliberations of a number
  20.    of experienced H-FP designers, who sat as a committee of the DoD
  21.    Protocol Standards Technical Panel under the author's chairmanship.
  22.    The particular protocol to be described is, however, the result of
  23.    the deliberations of a small, ad hoc group, who sat as a de facto
  24.    subcommittee of the H-FP committee, also under the author's
  25.    chairmanship. The protocol, then, follows the consensus of the full
  26.    group as to what the new H-FP should "look like," but has not
  27.    benefitted from painstaking study by a large number of experienced
  28.    H-FP designers and implementers.  (It has been looked at before
  29.    release as an RFC by several of them, though.) Even if that were not
  30.    the case, it would still be the intent of the designers that the
  31.    protocol be subjected to multiple test implementations and probable
  32.    iteration before being agreed upon as any sort of "standard".
  33.    Therefore, the first order of business is to declare that THIS IS A
  34.    PROPOSAL, NOT A FINAL STANDARD, and the second order of business is
  35.    to request that any readers of these documents who are able to do
  36.    test implementations (a) do so and (b) coordinate their efforts with
  37.    the author (617-271-2978 or Padlipsky@USC-ISI.ARPA.).
  38.  
  39. Historical/Philosophical Context
  40.  
  41.    Late in May of 1971, the author was presenting a status report on
  42.    whether the Multics ARPANET implementation would be ready by the
  43.    July 1 deadline declared by the sponsor earlier that month.  Some
  44.    controversy developed over the fact that the Multics "NCP" (Network
  45.    Control Program--actually a blanket term covering the Host-Host and
  46.    Host-IMP protocol interpreters) did not queue requests for
  47.    connections.  As the specification explicitly declared the topic to
  48.    be one of implementors' choice, the author attempted to avoid the
  49.    argument by asking the interrogator what he was up to these days.
  50.    The answer was, "Oh, I'm working on the High-Speed Modular IMP now"
  51.    (later the Pluribus IMP).  And the proverbial coin dropped:  The
  52.    author replied, "I've got a great idea.  Now that we've got some
  53.    space to program in the IMP, why don't we separate out most of the
  54.  
  55.  
  56. Padlipsky                                                       [Page 1]
  57.  
  58.  
  59.  
  60. RFC 928                                                    December 1984
  61. Introduction to H-FP
  62.  
  63.  
  64.    NCP and do it outboard: the only thing that really matters in the
  65.    Host is associating sockets with processes, and if we had common
  66.    implementations of all the bit-diddling stuff in the IMPs, we
  67.    wouldn't have disputes over the interpretation of the spec and we'd
  68.    also save a lot of Host CPU cycles!"
  69.  
  70.    As far as the author knows, that incident was the beginning of what
  71.    came to be called "Network Front-Ends" and, more recently, "Outboard
  72.    Processing Environments."  (The name change, by the way, was
  73.    motivated by a desire to prevent further confusion between NETWORK
  74.    Front Ends--always conceived of as distributed processing mechanisms
  75.    for the offloading of intercomputer networking protocols from
  76.    Hosts--and traditional communications front-ends, which have no
  77.    connotation of bearing protocol interpreters invokable by Host-side
  78.    programs.)  At least, the idea was original to him and he later was a
  79.    principal designer and the primary author of the first Host-Front End
  80.    Protocol.  So, on the one hand, the present document might be marred
  81.    for some readers by undertones of parental pride, but on the other
  82.    hand, if you like primary sources....
  83.  
  84.    The evolution of the outboard processing idea has been dealt with
  85.    elsewhere [1]. For present purposes, it should suffice to observe
  86.    that some half-a-dozen implementors of "NFE's" of various sorts are
  87.    known to the author to have met with success.  The topic of why use
  88.    an explicit protocol in the first place (as opposed to emulating a
  89.    device, or devices, already known to the Host/operating system)
  90.    deserves a word or two here, however.  ([2] deals with it in more
  91.    general terms.)  The crucial consideration is that in the general
  92.    case you wind up "not doing real networking" if you attach a Host to
  93.    a network by known device emulation, where real networking is taken
  94.    to mean what has been called "resource sharing" in the ARPANET
  95.    literature, and what appears to be dubbed "open system
  96.    interconnection" in the ISO literature: Operating systems' built-in
  97.    assumptions about known devices--whether terminals, terminal
  98.    controllers, or RJE stations--tend to get in the way of the sort of
  99.    process-process and eventually procedure-procedure communications
  100.    that serve as the basis for applications more interesting than simple
  101.    remote login.  To those unfamiliar with the outboard processing
  102.    approach, the premise that the way to attach is via an explicit
  103.    protocol may be difficult to accept, but to those who have done it,
  104.    it makes almost perfect sense.
  105.  
  106.    To those, by the way, who have worked in intercomputer networking
  107.    from the perspective of inboard (Host-side) implementations of
  108.    protocol suites, the outboard processing idea often seems to lead to
  109.    less than optimal results, especially as to maximizing throughput.
  110.    And it is difficult to argue that if a given Host were well and truly
  111.  
  112.  
  113. Padlipsky                                                       [Page 2]
  114.  
  115.  
  116.  
  117. RFC 928                                                    December 1984
  118. Introduction to H-FP
  119.  
  120.  
  121.    fine-tuned to "do networking" the insertion of an extra processor
  122.    could somehow lead to better networking.  However, for Hosts where
  123.    conservation of CPU cycles is an issue, or even where memory is
  124.    scarce (i.e., where it's desirable to conserve the resources being
  125.    shared), outboarding is clearly the way to go.  For that matter,
  126.    viewing outboard processing aright (as a form of distributed
  127.    processing) it can be argued that even for extremely powerful
  128.    "intelligent work stations"/"personal computers" which have the
  129.    resources to spare it still makes sense to outboard in order not to
  130.    have to do new implementations of entire protocol suites for each new
  131.    such system--always assuming, of course, that the Host-Front End
  132.    protocol in play is noticeably less complex than the offloaded
  133.    protocols.
  134.  
  135.    None of this is meant to imply that outboard processing is the ONLY
  136.    way to do intercomputer networking, of course.  It is, however, meant
  137.    to suggest that outboard processing can be advantageous in a number
  138.    of contexts.  Indeed, given the joint advents of microprocessors and
  139.    Local Area Networks, a generic bus interface unit which also plays
  140.    the role of a NFE (that is, is an Outboard Processing Environment)
  141.    even allows for the original intent of "offloading to the IMP" to be
  142.    realized, so that a free-standing, possibly fairly expensive NFE need
  143.    not be interposed between Host and net.  Note, by the way, that
  144.    nothing in the OPE approach requires that ALL Hosts employ OPEs. That
  145.    is, the only protocols "seen" beyond the Comm Subnet Processor are
  146.    the common intercomputer networking protocols (e.g., all DDN IMPs see
  147.    and read IP datagrams). H-FP is strictly a matter between a Host and
  148.    its OPE.
  149.  
  150.    It is also important to be aware that, given the advent of several
  151.    different suites of protocols in the networking world, it might well
  152.    be the case that the only reasonable way to achieve
  153.    "interoperability" might well be to use a suitable H-FP (such as the
  154.    one to be presented in the companion RFC) and an Outboard Processing
  155.    Environment which is capable of parallel invocation of protcol suites
  156.    (with the choice of suite for a given connection being dependent, of
  157.    course, on the native suite of the desired target Host and/or
  158.    application).
  159.  
  160.    The unquestionable advantages, then, of the approach, based on ten or
  161.    more years of experience and analysis, would seem to be as
  162.    follows--always recalling the assumption that the work to implement
  163.    and execute the H-FP in play is small compared to the full protocol
  164.    suite in question:  As noted, common implementation of a protocol
  165.    suite has the automatic advantage of mutual consistency; further,
  166.    particularly in the DOD context, it's far easier to procure common
  167.  
  168.  
  169.  
  170. Padlipsky                                                       [Page 3]
  171.  
  172.  
  173.  
  174. RFC 928                                                    December 1984
  175. Introduction to H-FP
  176.  
  177.  
  178.    implementations of standard protocols than to procure different ones
  179.    on a per-Host type basis.  Also as noted, if the resources to be
  180.    shared are viewed as being the participating Hosts'
  181.  
  182.    CPU cycles and memories, these resources are conserved by doing  as
  183.    much as possible of the networking protocols in an OPE rather than in
  184.    the mainframe.  Another, less evident advantage is that having an OPE
  185.    effectively insulates a Host against changes in the
  186.    outboarded/offloaded protocols--or even changes of the protocols,
  187.    should the nascent international protocol standards ever mature
  188.    sufficiently to supplant the in-place DOD standards.  (That is, given
  189.    an abstract enough interface--in the spirit of the Principle of
  190.    Layering--a Host could, for example, go from doing TCP as its
  191.    "Host-Host" protocol to, say, ECMA Class 4 as its "Transport"
  192.    protocol without taking any particular cognizance of the change,
  193.    however unattractive such a change would be to advocates of the
  194.    APRANET Reference Model such as the author. See [3] for more on the
  195.    implied "Reference Model" issues.) Finally, although a few rather
  196.    specialized points could also be adduced, it should be noted that for
  197.    network security architectures which are predicated on the ability to
  198.    control all means of egress from and ingress to "the net", uniform
  199.    use of OPEs is clearly desirable.
  200.  
  201.    If we can stipulate that an OPE is/can be a good thing, then the
  202.    remaining problem is just what the protocol interpreted by a Host and
  203.    its OPE ought to be, once it's observed that a standard protocol is
  204.    desirable in order to allow for as much commonality as possible among
  205.    Host-side interpreters of the protocol.  That is, we envision the
  206.    evolution of paradigmatic H-FP PIs which can more or less
  207.    straightforwardly be integrated with  various operating systems, on
  208.    the one hand, and the ability simply to transplant an H-FP PI from
  209.    one instance of a given operating system to other instances of the
  210.    same system, much as is currently being attempted in the DODIIS NFE
  211.    program.  Again, the major motivation in the DOD context is the
  212.    minimizing of procurement problems.
  213.  
  214. Technical Context
  215.  
  216.    As noted, some half-a-dozen Host-Front End protocols have been seen
  217.    by the author.  Indeed, in December of 1982, a meeting was convened
  218.    to allow the developers of those H-FPs to compare their experiences,
  219.    with an eye to coming up with a proposal for a DOD standard H-FP;
  220.    this paper is a direct result of that meeting.  In the current
  221.    section, we present the consensus of the meeting as to the broad
  222.    outline of the protocol; in the accompanying document, the current
  223.    version of the proposed protocol will be presented, as detailed by
  224.    the author and Richard Mandell and Joel Lilienkamp (both of SDC).
  225.  
  226.  
  227. Padlipsky                                                       [Page 4]
  228.  
  229.  
  230.  
  231. RFC 928                                                    December 1984
  232. Introduction to H-FP
  233.  
  234.  
  235.    Note, by the way, that in some sense we should probably have changed
  236.    the name from H-FP to H-OPEP (or something), but the habit of saying
  237.    "H-FP" seems too deeply engrained, despite the fact that it does seem
  238.    worthwhile to stop saying "NFE" and start saying "OPE."  (Besides,
  239.    H-OPEP looks rather silly.)
  240.  
  241.    A final preliminary:  all the designers and implementors of H-FPs
  242.    present at the December meeting concurred that the true test of any
  243.    protocol is how well it implements.  Therefore, until several
  244.    implementations of the "new" protocol have been performed and
  245.    assessed, it must be understood that the proposed protocol is
  246.    precisely that:  a proposal, not a standard.
  247.  
  248.    Not too surprisingly, the first point on which consensus was reached
  249.    is that there are three separable aspects (or "layers") to an H-FP:
  250.    At bottom, there must be some physical means for conveying bits from
  251.    Host to OPE and from OPE to Host.  As it has always been a premise of
  252.    outboard processing that the Host's convenience is paramount, just
  253.    what this physical layer is can vary:  typically, a bit-serial
  254.    interface is customary, but parallel/DMA interfaces, if available for
  255.    the Host and interfaceable to a given OPE, are fair game.  (So would
  256.    teleporting the bits be, for that matter.)
  257.  
  258.    In the middle, there must be a layer to manage the multiplexing of
  259.    network "connections" and the control of the flow between Host and
  260.    OPE.  If we agree to call the lowest layer the Link and the middle
  261.    layer the Channel, one thing which must be noted is that between the
  262.    two of them, the Link and Channel layers must be responsible for
  263.    reliably conveying the bits between Host and OPE. After all, an OPE'd
  264.    Host should not be "weaker" than one with an inboard implementation
  265.    of a robust Host-Host protocol such as TCP.  It should be noted that
  266.    any Host which "comes with" a suitable implementation of the X.25
  267.    interface protocol (where the definition of "suitable" is rather too
  268.    complex to deal with here) could, given an OPE conditioned to accept
  269.    it, quite cheerfully satisfy the requirements of the lower two
  270.    layers. This is not to say that X.25 "is" the mechanization of H-FP's
  271.    Link and Channel layers, however; merely that it could be used.  The
  272.    protocol spec itself will detail an alternative, less cumbersome
  273.    channel layer for Hosts which don't have or want X.25.
  274.  
  275.    The top layer of H-FP is the most important:  we refer to it as the
  276.    Command layer.  Here is where the peer H-FP modules in a given Host
  277.    and OPE communicate with each other. Indeed, the segregation of JUST
  278.    multiplexing and flow control (plus reliability) into the Channel
  279.    Layer is done--in addition to making it easier for Hosts that possess
  280.    preexisting software/hardware which could be turned to the
  281.    purpose--so as to clarify "what the H-FP is":  it's the commands and
  282.  
  283.  
  284. Padlipsky                                                       [Page 5]
  285.  
  286.  
  287.  
  288. RFC 928                                                    December 1984
  289. Introduction to H-FP
  290.  
  291.  
  292.    responses of the Command layer wherewith the Host's processes are
  293.    able to manipulate the outboard implementations of the members of a
  294.    protocol suite. The use of the phrase "commands and responses" is
  295.    rather significant, as it happens. For in the protocol to be proposed
  296.    for DOD standardization, unlike all but one of its predecessors,
  297.    binary encoded "headers" are not employed; rather, the H-FP commands
  298.    are indeed ASCII strings, and the responses (following the practice
  299.    of ARPANET FTP) ASCII-encoded numbers.
  300.  
  301.    There are various reasons for this departure, which initially stemmed
  302.    from a desire to have the same NFE be usable for terminal traffic as
  303.    well as Host offloading, but the one that seemed to dominate when
  304.    consensus was arrived on it as the basis for the new standard is that
  305.    it is very much in the original spirit of H-FP.  That is, if you want
  306.    to "make things as easy as possible for the Host", it makes a great
  307.    deal of sense to offload in a fashion that only requires some sort of
  308.    scenario or script ("exec-com"/"command file"/"shell command" are
  309.    approximations on some systems) in the Host, rather than requiring a
  310.    program, possibly of more complexity than we would like. This is not
  311.    to say that we envision all--or even most--Hosts will take the
  312.    scenario approach to H-FP mechanization, but rather that the command
  313.    orientation chosen allows for the possibility. (It would be useful to
  314.    recall that the Channel layer does all the necessary
  315.    multiplexing/demultiplexing, so that each channel's  metaphorical
  316.    state machine--at least on the Host side--really has very little to
  317.    worry about other than "doing its thing.")
  318.  
  319.    It should be noted that the proposed protocol provides a mechanism
  320.    for offloading "all" protocols.  That is, although most "first
  321.    generation NFEs" only handled ARPANET Reference Model Layers II and I
  322.    (Host-Host and Network Interface--approximately ISO levels 4-1, with
  323.    some of L5's functionality included when it comes to service
  324.    identifications being handled via Well-Known Sockets in L II), it is
  325.    assumed that OPEs will be evolved to handle L III offloading as well
  326.    (ISO 5-7).  Indeed, it should also be noted that what is being
  327.    addressed here is "the protocol", not "the" OPE.  More will be said
  328.    on this topic below, and in the protocol spec itself, but it is
  329.    important to realize from the outset that the H-FP being proposed is
  330.    intended to be implementable by any number of OPE suppliers/vendors,
  331.    so "an" OPE may or may not choose to implement, say, a given file
  332.    transfer protocol, but provided it says so in proper H-FP terms and
  333.    does offload some other protocols it's still an OPE in our sense of
  334.    the term. (Cf. "Issues" and "Non-Issues", below.)
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341. Padlipsky                                                       [Page 6]
  342.  
  343.  
  344.  
  345. RFC 928                                                    December 1984
  346. Introduction to H-FP
  347.  
  348.  
  349. Issues
  350.  
  351.    The following items are either in some sense still open issues or
  352.    bear special emphasis:
  353.  
  354.    Command Approach
  355.  
  356.       The most striking feature of the new H-FP, especially to those who
  357.       have seen older H-FPs, is the decision to employ
  358.       character-oriented commands rather than the more conventional
  359.       binary-oriented headers at the Command Layer.  As noted, the
  360.       primary motivation was the report that the approach worked well
  361.       when it was employed in an H-FP for the Platform Network called
  362.       NAP (Network Access Protocol) [4]. In discussions with NAP's
  363.       originator, Gerry Bailey, the author was convinced of the
  364.       fundamental reasonableness of the approach, but of course that
  365.       doesn't have to convince others.  Additional rationales emerged in
  366.       discussions with Gary Grossman, the originator of the DCA/DTI
  367.       H-FP [5], which is probably the best-known current H-FP and which
  368.       furnished the default Channel Layer for the new one:  In the first
  369.       place, the text approach makes parsing for the ends of
  370.       variable-length parameters easier.  In the second place, it allows
  371.       for the possibility of creating a terminal-supporting OPE in a
  372.       very straightforward fashion should any OPE developer elect to do
  373.       so.  (See below for more on the distinction between OPE developers
  374.       and H-FP implementors.) Finally, there's nothing sacred about
  375.       binary headers anyway, and just because the text approach is
  376.       different doesn't make it "wrong".  So, although it's not out of
  377.       the question that the new protocol should back off from the text
  378.       approach if reviewers and/or implementors come up with compelling
  379.       reasons for doing so, the already frequently encountered reaction
  380.       of "it feels funny" isn't compelling.  (It was, indeed, the
  381.       author's own initial reaction.)  Besides, "nobody" (not even Gary)
  382.       really liked the top layer of the DCA/DTI H-FP.
  383.  
  384.    X.25 Appropriateness
  385.  
  386.       Of more concern than how text "feels" is whether X.25 "works".
  387.       That is, we understand that many system proprietors would greatly
  388.       prefer being able to use "off-the-shelf" software and hardware to
  389.       the greatest extent feasible and still be able to do intercomputer
  390.       networking according to DOD Standards, which is a major reason why
  391.       we decided to take the H-FP commands out of the Channel Layer of
  392.       the DCA/DTI H-FP even before we decided to encode them as text.
  393.       However, it is by no means clear that any old vendor supplied
  394.       "X.25" will automatically be usable as a new H-FP Channel and Link
  395.       layer mechanization.  As noted, it all depends upon how Host
  396.  
  397.  
  398. Padlipsky                                                       [Page 7]
  399.  
  400.  
  401.  
  402. RFC 928                                                    December 1984
  403. Introduction to H-FP
  404.  
  405.  
  406.       programs (the Command Layer/H-FP Protocol Interpreter in
  407.       particular) are able to invoke X.25 on particular systems.  Also,
  408.       there might be peculiarities in the handling of some constructs
  409.       (the Group and Member fields--or whatever they're called--are a
  410.       strong candidate) which could militate against getting JUST
  411.       demultiplexing and flow control out of X.25-as-Channel
  412.       Link/Layers.  For that matter, it's conceivable that on some
  413.       systems only one process can "own" the presumed DCE, but there's
  414.       no interprocess communication available between it and the
  415.       processes that want to use H-FP.  What that all amounts to, then,
  416.       is that we don't pretend to be sufficiently versed in the vagaries
  417.       of vendor-idiosyncratic X.25 implementations to claim more than
  418.       that we THINK the new H-FP Command Layer should fit "on top of"
  419.       X.25 in a Host such that a suitably crafted OPE could look like a
  420.       DCE to the low-level Host software and still be an OPE in our
  421.       sense of the term.  Finally, some reports on bit-transfer rates
  422.       attainable through typical X.25 interfaces give rise to concern as
  423.       to whether such a lash-up would be "good" even if it were
  424.       feasible.
  425.  
  426.       DCA/DTI Channel Layer Appropriateness
  427.  
  428.       The Channel Layer of the DCA/DTI H-FP has been implemented for a
  429.       few Host types already, and is being implemented for others (in
  430.       particular, as part of the DODIIS NFE project). A delicate
  431.       decision is whether to alter the header structure (e.g.--and
  432.       perhaps i.e.--to remove the now-superfluous command and response
  433.       fields).  On the "con" side are the considerations that
  434.       implementations DO exist, and that it's well specified.  On the
  435.       "pro" side are that keeping the header as it is is in some sense
  436.       "wasteful" and that somebody's going to have to go over the spec
  437.       again anyway, to remove that which no longer applies.  (It should
  438.       be noted that Gary Grossman was initially tempted to scuttle the
  439.       Group and Member trick, but the presence of a similar
  440.       dichotomizing in X.25 seems to rule that out.)  One of the
  441.       interesting issues during the review phase of the new H-FP, then,
  442.       will be the decision about which way to go on the Channel Layer
  443.       header in its non-X.25 version.  (NOBODY considers going X.25
  444.       only, be it noted.)  By the time the protocol is finalized, it
  445.       will, of course, be made clear in the protocol spec, but I'll
  446.       probably leave this in the final version of the Introduction just
  447.       for historical interest anyway.
  448.  
  449.    Syntax
  450.  
  451.       Another point which probably needs close scrutiny during the
  452.       review process is the "syntax" of the command lines.  Basically,
  453.  
  454.  
  455. Padlipsky                                                       [Page 8]
  456.  
  457.  
  458.  
  459. RFC 928                                                    December 1984
  460. Introduction to H-FP
  461.  
  462.  
  463.       we just took our best shot, but without any claims that it's the
  464.       best possible way to express things.  So comments and/or
  465.       alternatives are earnestly solicited on this one.
  466.  
  467.    L III Offloading
  468.  
  469.       Contrary to the expectations of some, we are allowing for the
  470.       offloading of Process/Applications Layer (ARPANET Reference Model
  471.       L III) protocols.  Both Bailey and Grossman reported favorably on
  472.       the feasibility of this. Two points should be made, however: It's
  473.       perfectly fair for a GIVEN OPE implementation not to offload a
  474.       given L III protocol, although it would presumably not sell as
  475.       well as ones which did.  That is, we're not claiming that by
  476.       inventing a mechanization of the feature in the spec we levy a
  477.       constraint on everybody who implements "the protocol", (Cf.
  478.       Fabrication under Non-Issues, below). Just as we were feeling our
  479.       way on syntax in general, we're really feeling our way when it
  480.       comes to the L III stuff.  (I'm not even sure I managed to convey
  481.       what I meant for "mediation level" to Joel and Dick.)  Again,
  482.       suggestions are solicited.
  483.  
  484.    Security
  485.  
  486.       During the detailed design pass, we had an intensive discussion
  487.       with some of the Blacker design team on the interplay between the
  488.       new H-FP and a meant-to-be multilevel-secure OPE such as Blacker.
  489.       The conclusion was that by and large "Security" is to be an aspect
  490.       of an enhanced H-FP, rather than the standard one. The reasoning
  491.       was rather involved, but seems to amount to the following:  Hosts
  492.       that are NOT MLS (or "Compartmented") have two significant
  493.       properties in our context: They're in the vast majority of
  494.       present-day systems.  They have no legitimate need even to tell
  495.       their OPEs what they "think" their current System High or
  496.       Dedicated Mode level is; that information should be furnished by
  497.       some trusted portion of a network security architecture (e.g., a
  498.       security enhanced OPE, or a table in a "secure" comm subnet
  499.       processor).
  500.  
  501.       Thus, even having the optional security label/level field in the
  502.       Begin command is in some sense overkill, because we're not sure of
  503.       any sensible circumstances in which it would be useful, but we put
  504.       it in "just in case".  On the other hand, Hosts that ARE
  505.       MLS/Compartmented by definition can be permitted to assert what
  506.       the level of a given transmission (or perhaps of a given
  507.       connection) should be, and their OPEs need to have a mechanism for
  508.       learning this.  But it is by no means clear that a given Host (or
  509.       even a given OPE) will be so structured as to make the H-FP PI,
  510.  
  511.  
  512. Padlipsky                                                       [Page 9]
  513.  
  514.  
  515.  
  516. RFC 928                                                    December 1984
  517. Introduction to H-FP
  518.  
  519.  
  520.       the Channel PI, and the Link PI ALL trustworthy--as they'd have to
  521.       be if the security labeling were part of H-FP.  So, we envision
  522.       the labeling's being handled by trusted code in both Host and OPE
  523.       that will be inserted into the normal processing route at the
  524.       appropriate point for the given architecture (presumably "at the
  525.       very bottom" of the Host, and "the very top" of the OPE), and that
  526.       will place the label in a convenient, known position in the
  527.       Host-OPE transmission "chunk" (block/packet/data unit) as the
  528.       circumstances dictate. (It's likely--but we wouldn't swear to
  529.       it--that a good place would be just before the H-FP command, and
  530.       if that's the case then semi-clearly the security enhanced H-FP
  531.       PIs would have to "make room" for it in the sense of handing the
  532.       Channel Layer a suitably lengthened "chunk".)
  533.  
  534.       The Host and its OPE should be viewed as a single entity with
  535.       regard to labeling requirements in the non-MLS/C case, and either
  536.       the OPE will be conditioned to emit the right label or the CSNP
  537.       will "know" anyway; in the MLS/C Host and OPE case (and it should
  538.       be noted that it's just about impossible to envision a MLS/C Host
  539.       which IS outboarded which DOESN'T have a MLS/C OPE) it will depend
  540.       on the given security architectures as to whether each "chunk"
  541.       needs labeling (i.e., there COULD be trusted H-FP, Channel, and
  542.       Link PIs, so that only at channel establishment time does the
  543.       label need to be passed), but it seems likely each "chunk" would
  544.       need labeling, and we can see how that would happen (as sketched
  545.       above).
  546.  
  547.       This is all, of course, subject to reappraisal when the full-time
  548.       Security folks get in the act, but for now, H-FP per se is viewed
  549.       as playing no direct role in "Security"--except indirectly, as
  550.       noted below under the Symmetric Begins Non-Issue.  (In case
  551.       anybody's worrying about the case where the OPE is physically
  552.       remote from its Host, by the way, that line would have to be
  553.       protected anyway, so the Host/OPE-asa-single-unit view should hold
  554.       up.)
  555.  
  556.    How It Implements
  557.  
  558.       The final issue to take note of is that one of the central
  559.       premises of the Outboard Processing approach has always been that
  560.       H-FPs can be invented which implement more compactly on the Host
  561.       side than the code they're allowing to be offloaded.  We certainly
  562.       think the new H-FP will fulfill that condition, but we'd certainly
  563.       like to hear of any evidence to the contrary.
  564.  
  565.  
  566.  
  567.  
  568.  
  569. Padlipsky                                                      [Page 10]
  570.  
  571.  
  572.  
  573. RFC 928                                                    December 1984
  574. Introduction to H-FP
  575.  
  576.  
  577. Non-Issues
  578.  
  579.    The following items are declared to be non-issues, in the sense that
  580.    even though some people have expressed concern over them we believe
  581.    that they are either "not part of the protocol" or resolved already
  582.    for reasons that were overlooked by those worried about them:
  583.  
  584.    Fabrication
  585.  
  586.       Who builds OPEs isn't within our purview, except to the extent of
  587.       hoping a few volunteers come forward to do testcase
  588.       implementations of what is, at present, only a paper protocol.
  589.       However, beyond agreeing that a few points should be marked as
  590.       "Notes to Entrepreneurs" in the spec, we didn't attempt to dictate
  591.       how an OPE vendor would behave, beyond the explicit and implicit
  592.       dictates of the protocol per se. For example, if a given OPE
  593.       doesn't offload SMTP, it jolly well ought to respond with the
  594.       appropriate "Function not implemented" code, and if a vendor
  595.       claims to accept X.25 for Channel and Link disagreements over what
  596.       X.25 "is" are the province of the vendor and the customer, not of
  597.       the H-FP spec.  As OPE'S are supposed to be offloading COMMON
  598.       protocols in a COMMON fashion, a given OPE should be able to
  599.       interoperate with another Host irrespective of whether that Host
  600.       even has an OPE, much less whose OPE it is if it's there. Thus,
  601.       for example, even though you'd expect to find OPEs that "come
  602.       with" their own LANs as a fairly frequent product, we don't appeal
  603.       to the notion in the conceptual model; nor do we attempt to
  604.       dictate "chunk" sizes at the Channel level. A protocol spec isn't
  605.       an implementation spec.
  606.  
  607.    Symmetric Begins
  608.  
  609.       For almost as long as there have been H-FPs, there has been
  610.       disagreement over whether only the Host can begin a connection or
  611.       if the OPE can also take the initiative.  I am delighted to be
  612.       able to resolve this one finally:  It turns out there IS a
  613.       compelling reason for insisting that THE PROTOCOL include
  614.       provision for OPE --> Host Begins, so it's "in" the protocol--but
  615.       any Host that doesn't need to deal with them doesn't have to (just
  616.       "spell" the "Function not implemented" response code correctly).
  617.  
  618.       (In case anybody cares, the compelling reason is that if you HAD
  619.       an MLS OPE which happened to use a security kernel and a process
  620.       per level, you'd need IT to be listening for incoming connection
  621.       requests "from the net" rather than having the Host tell it to do
  622.       so, for various esoteric reasons--but in order to cater to the
  623.       possibility, we want the function in the protocol from the
  624.  
  625.  
  626. Padlipsky                                                      [Page 11]
  627.  
  628.  
  629.  
  630. RFC 928                                                    December 1984
  631. Introduction to H-FP
  632.  
  633.  
  634.       beginning, on the grounds that we can envision SOME other uses for
  635.       it even in non-MLS environments [unlike the security labeling
  636.       trick discussed above, which only seems to make sense for MLS
  637.       Hosts/OPEs--that is, it doesn't burden the Host to reject a Begin
  638.       every once in a while but it would to go around labeling "chunks"
  639.       unnecessarily all the time].)
  640.  
  641.    Routing
  642.  
  643.       Concern has been voiced over the issue of what provisions the
  644.       protocol should make to deal with the situation where a Host,
  645.       probably for traffic/load reasons, has multiple OPEs and the
  646.       question arises of which OPE to use/route to.  I claim this is a
  647.       non-issue at the protocol level.  If the Host-side H-FP PI gets a
  648.       "No resources" response to a Begin, it can go off to another OPE
  649.       if it wants to.  "Not our department".  The conceptual model is
  650.       that of a Host and AN OPE--which "ought to" be expandable to carry
  651.       more load at some level.  If you want multiple links for some
  652.       reason, the simplest solution would seem to be to have multiple
  653.       Channel Layers as well, but the whole thing just gets too iffy to
  654.       have anything sensible to prescribe in the protocol.  In other
  655.       words, extending the concept to deal with discrete multiple OPEs
  656.       is either a Fabrication sort of thing, or a Notes to Host-side
  657.       Implementors sort of thing on a per specific OPE basis.
  658.  
  659.    Operator Interface
  660.  
  661.       It's probably implicit in the foregoing, but it might be worth
  662.       saying explicitly that the operator interface to a specific OPE is
  663.       a non-issue in terms of the protocol, beyond the provision we're
  664.       made for "Shutdown coming" responses as a reflection of a probable
  665.       operator interface action we imagine most operator interfaces
  666.       would provide.  (It might also be worth noting that if your Host
  667.       does "color changes", your OPE had better have a trustworthy way
  668.       of being told to change the label it plops on all IP datagrams it
  669.       emits, but that comes under the heading of an Aside to Specialized
  670.       Implementors.)
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683. Padlipsky                                                      [Page 12]
  684.  
  685.  
  686.  
  687. RFC 928                                                    December 1984
  688. Introduction to H-FP
  689.  
  690.  
  691. Fine Points
  692.  
  693.    There are a couple of known "loose ends" which are exceedingly fine
  694.    points in some sense that do bear separate mention:
  695.  
  696.    The Allocate Event
  697.  
  698.       While mentally testing to see if the new H-FP would indeed
  699.       off-load TCP, we came up against an interesting question: Viewing
  700.       H-FP as "just an interface at a distance" to a TCP PI, what about
  701.       the Allocate "Interface Event" in the TCP spec?  As far as I'm
  702.       concerned, this could be classed as a non-issue, because I submit
  703.       that the spec is wrong in declaring that there is such a thing as
  704.       a MANDATORY Interface Event whereby the user of a TCP PI lets the
  705.       PI know how much data it can take. Granted, you might find such a
  706.       thing in most implementations, but what if you were in a virtual
  707.       memory environment with segment sharing (or a distributed
  708.       supervisor) and you wanted to avoid copies, so all that passed at
  709.       the interface to the PI (or even at the interface from the PI) was
  710.       a pointer?  That is, the "DOD version" of the TCP spec has fallen
  711.       into the trap of assuming things about the execution environment
  712.       that it shouldn't have.
  713.  
  714.       One moral of this is that
  715.  
  716.          AN INTERFACE TO AN INTERPRETER OF A PROTOCOL IS N*O*T "THE
  717.          PROTOCOL".
  718.  
  719.       Another moral is that the interface to the Host-side H-FP PI is
  720.       hard to say much about, but is where the equivalent functionality
  721.       will be found if you've offloaded TCP.  That is, it's reasonable
  722.       to let the user "tell" the outboard PI at Begin time if big or
  723.       small buffers are expected to be in play "net-ward" as part of the
  724.       protocol, but the outboard PI is expected to deliver bits to the
  725.       Host as they come unless throttled by the Channel Layer, or by
  726.       some to-be-invented other discipline to force the OPE to buffer.
  727.       (For present purposes, we envision letting the Channel Layer
  728.       handle it, but nifty mechanizations of encouraging the OPE to
  729.       "make like a buffer" would be at least looked at.)  As a
  730.       Fabrication issue, it is the case that "equity" has to be dealt
  731.       with with regard to the use of the OPE's resources (especially
  732.       buffers) across H-FP connections/channels, but that's a different
  733.       issue anyway, touched upon in the final fine point.
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740. Padlipsky                                                      [Page 13]
  741.  
  742.  
  743.  
  744. RFC 928                                                    December 1984
  745. Introduction to H-FP
  746.  
  747.  
  748.    Precedence
  749.  
  750.       Clearly, the existence of a notion of Precedence in DOD protocols
  751.       has to get reflected in the outboard PI's implementations. Just
  752.       what, if any, role it has in the H-FP, per se, is, however, by no
  753.       means clear.  That is, if the Host doesn't take Begins from the
  754.       OPE and is "full up" on the number of Server Telnet connections
  755.       it's willing to handle, what should happen if a high precedence
  756.       SYN comes in on the Telnet Well-Known Socket (in present day
  757.       terms)?  Probably the OPE should arbitrarily close a low
  758.       precedence connection to make room for the new one, and signal the
  759.       Host, but even that assumes the Host will always hurry to be
  760.       prepared to do a new passive Begin.  Perhaps we've stumbled across
  761.       still another argument in favor of "Symmetric Begins"....  At any
  762.       rate, Precedence does need further study--although it shouldn't
  763.       deter us from making "the rest" of the protocol work while we're
  764.       waiting for inspiration on how to handle Precedence too.
  765.  
  766. A Note on Host Integration
  767.  
  768.    The most important thing about Hosts in any intercomputer network is
  769.    that they furnish the resources to be shared. The most significant
  770.    obstacle to sharing those resources, however, is the fact that almost
  771.    invariably they were designed under the assumption that the Host was
  772.    a fully autonomous entity.  That is, few operating systems currently
  773.    deployed "expect" to be members of a heterogeneous community of
  774.    operating systems.  In many cases, this built-in insularity goes so
  775.    far as to have applications programs cognizant of the particular type
  776.    of terminal from which they will be invoked.
  777.  
  778.    Intercomputer networking protocols attempt to resolve the problems of
  779.    heterogeneity by virtue of presenting appropriate common intermediate
  780.    representations (or "virtualizations") of the constructs and concepts
  781.    necessary to do resource sharing.  A Host-Host protocol such as TCP
  782.    "is" a virtual interprocess communication mechanism; a virtual
  783.    terminal protocol such as Telnet obviously is a mechanism for
  784.    defining and dealing with virtual terminals; FTP offers common
  785.    representations of files; and so on.  It cannot be stressed strongly
  786.    enough, though, that this entire approach to intercomputer networking
  787.    is predicated on the assumption that the modules which interpret the
  788.    protocols (PIs, as we'll refer to them often) will be PROPERLY
  789.    integrated into the various participating operating systems.  Even in
  790.    the presence of powerful OPEs, wherein the bulk of the work of the
  791.    various PIs is performed outboard of the Host, the inboard "hooks"
  792.    which serve to interface the outboard PIs to the native system must
  793.    not only be present, they must be "right".  The argument parallels
  794.    the analysis of the flexible vs. rigid front-ending attachment
  795.  
  796.  
  797. Padlipsky                                                      [Page 14]
  798.  
  799.  
  800.  
  801. RFC 928                                                    December 1984
  802. Introduction to H-FP
  803.  
  804.  
  805.    strategy issue of [1]; to borrow an example, if you attempt to
  806.    integrate FTP by "looking like" a native terminal user and the
  807.    operator forces a message to all terminals, you've got an undetected
  808.    pollution of your data stream. So the key issue in attaching Hosts to
  809.    networks is not what sort of hardware is required or what sort of
  810.    protocol is interpreted by the Host and the OPE (or comm subnet
  811.    processor, for that matter), but how the PIs (full or partial) are
  812.    made to interrelate with the pre-existing environment.
  813.  
  814.    It would be well beyond the scope of this document to attempt even to
  815.    sketch (much less specify) how to integrate H-FP PIs into each type
  816.    of operating system which will be found in the DoD.  An example,
  817.    though, should be of use and interest.  Therefore, because it is the
  818.    implementation with which we are most intimately familiar, even
  819.    though it's been several years, we propose to sketch the Multics
  820.    operating system integration of the original ARPANET Network Control
  821.    Program (NCP)--which is functionally equivalent to an H-FP PI for
  822.    offloading ARM L II and L I--and Telnet.  (A few comments will also
  823.    be made about FTP.) Note, by the way, that the sketch is for a
  824.    "full-blown" H-FP; that is, shortcuts along the lines of the
  825.    scenario-driven approach mentioned above are not dealt with here.
  826.  
  827.    One of the particularly interesting features of Multics is the fact
  828.    that each process possesses an extremely large "segmented virtual
  829.    memory".  That is, memory references other than to the segment at
  830.    hand (which can itself be up to 256K 36-bit words long) indirect
  831.    through a descriptor segment, which is in principle "just another
  832.    segment", by segment number and offset within the segment, so that a
  833.    single process--or "scheduling and access control entity"--can
  834.    contain rather impressive amounts of code and data.  Given that the
  835.    code is "pure procedure" (or "re-entrant"), a "distributed
  836.    supervisor" approach is natural; each process, then, appears to have
  837.    in its address space a copy of each procedure segment (with
  838.    system-wide and process-specific data segments handled
  839.    appropriately).  Without going too far afield, the distributed
  840.    supervisor approach allows interrupts to be processed by whichever
  841.    process happens to be running at a given time, although, of course,
  842.    interprocess communication may well be a consequence of processing a
  843.    particular interrupt.
  844.  
  845.    A few other necessary background points:  A distinguished process,
  846.    called the Answering Service, exists, originally to field interrupts
  847.    from terminals and in general to create processes after
  848.    authenticating them.  Other shared resources such as line printers
  849.    are also managed by distinguished processes, generically known as
  850.    "Daemons".  Device driver code, as is customary on many operating
  851.    systems, resides at least in part in the supervisor (or hard core
  852.  
  853.  
  854. Padlipsky                                                      [Page 15]
  855.  
  856.  
  857.  
  858. RFC 928                                                    December 1984
  859. Introduction to H-FP
  860.  
  861.  
  862.    operating system).  Finally (for our purposes, at least), within a
  863.    process all interfaces are by closed subroutine calls and all I/O is
  864.    done by generic function calls on symbolically named streams; also,
  865.    all system commands (and, of course, user written programs which need
  866.    to) use the streams "user_input" and "user_output" for the obvious
  867.    purposes.  (At normal process creation time, both user I/O streams
  868.    are "attached" to the user's terminal, but either or both can be
  869.    attached to any other I/O system interface module instead--including
  870.    to one which reads and writes files, which is handy for consoleless
  871.    processes.)
  872.  
  873.    All that almost assuredly doesn't do justice to Multics, but equally
  874.    likely is more than most readers of this document want to know, so
  875.    let's hope it's enough to make the following integration sketch
  876.    comprehensible. (There will be some conscious omissions in the
  877.    sketch, and doubtless some unconscious ones, but if memory serves, no
  878.    known lies have been included.)
  879.  
  880.    Recalling that NCP is functionally equivalent to H-FP, let's start
  881.    with it. In the first place, the device driver for the 1822 spec
  882.    hardware interface resides in the supervisor. (For most systems, the
  883.    PI for H-FP's link protocol probably would too.)  In Multics,
  884.    interrupt time processing can only be performed by supervisor
  885.    segments, so in the interests of efficiency, both the IMP-Host (1822
  886.    software) Protocol PI and the multiplexing/demultiplexing aspects of
  887.    the Host-Host Protocol PI also reside in the supervisor.  (An H-FP PI
  888.    would probably also have its multiplexing/demultiplexing there; that
  889.    is, that portion of the Channel Layer code which mediates access to
  890.    the OPE and/or decides what process a given message is to be sent to
  891.    might well be in the supervisor for efficiency reasons.  It is not,
  892.    however, a hard and fast rule that it would be so. The system's
  893.    native interprocess communications mechanism's characteristics might
  894.    allow all the Channel Layer to reside outside of the supervisor.)
  895.  
  896.    Even with a very large virtual memory, though, there are
  897.    administrative biases against putting too much in the supervisor, so
  898.    "everything else" lives outside the supervisor. In fact, there are
  899.    two places where the rest of the Host-Host Protocol is interpreted on
  900.    Multics, although it is not necessarily the case that an H-FP PI
  901.    would follow the same partitioning even on Multics, much less on some
  902.    other operating system.  However, with NCP, because there is a
  903.    distinguished "control link" over which Host-Host commands are sent
  904.    in the NCP's Host-Host protocol, the Multics IMP-Host Protocol PI
  905.    relegates such traffic to a Network Daemon process, which naturally
  906.    is a key element in the architecture.  (Things would be more
  907.    efficient, though, if there weren't a separate Daemon, because other
  908.    processes then have to get involved with interprocess communication
  909.  
  910.  
  911. Padlipsky                                                      [Page 16]
  912.  
  913.  
  914.  
  915. RFC 928                                                    December 1984
  916. Introduction to H-FP
  917.  
  918.  
  919.    to it; H-FP PI designers take note.)  To avoid traversing the Daemon
  920.    for all traffic, though, normal reads and writes (i.e., noncontrol
  921.    link traffic) are done by the appropriate user process.  By virtue of
  922.    the distributed supervisor approach, then, there is a supervisor call
  923.    interface to "the NCP" available to procedures (programs) within user
  924.    processes. (The Daemon process uses the same interface, but by virtue
  925.    of its ID has the ability to exercise certain privileged primitives
  926.    as well.)
  927.  
  928.    If a native process (perhaps one meaning to do "User Telnet", but not
  929.    limited to that) wanted to use the network, it would call the open
  930.    primitive of "the NCP", do reads and writes, and so on.  An
  931.    interesting point has to do with just how this interface works:  The
  932.    reads are inherently asynchronous; that is, you don't know just when
  933.    the data from the net are going to be available.  In Multics, there's
  934.    an "event" mechanism that's used in the NCP interface that allows the
  935.    calling process to decide whether or not it will go blocked waiting
  936.    for input when it reads the net (it might want to stay active in
  937.    order to keep outputting, but need to be prepared for input as well),
  938.    so asynchrony can be dealt with.  In the version of Unix (tm) on
  939.    which an early NFE was based, however, native I/O was always
  940.    synchronous; so in order to deal with both input from the terminal
  941.    and input from the net, that system's User Telnet had to consist of
  942.    two processes (which is not very efficient of system resources).
  943.    Similar considerations might apply to other operating systems
  944.    integrating H-FP; native I/O and interprocess communication
  945.    disciplines have to be taken into account in designing.  (Nor can one
  946.    simply posit a brand new approach for "the network", because Telnet
  947.    will prove to rely even more heavily on native mode assumptions.)
  948.  
  949.    The other aspect of NCP integration which we should at least touch
  950.    on--especially because process-level protocols make no sense without
  951.    it--is how "Well-Known Sockets" (WKSs) work. In broad terms, on
  952.    Multics the Network Daemon initially "owns" all sockets.  For
  953.    Well-Known Sockets, where a particular process-level protocol will be
  954.    in effect after a successful connection to a given WKS, code is added
  955.    to the Answering Service to call upon the NCP at system
  956.    initialization time to be the process "listening" on the WKSs.  (This
  957.    is a consequence of the fact that the Answering Service is/was the
  958.    only Multics process which can create processes; strategies on other
  959.    systems would differ according to their native process creation
  960.    disciplines.)  How to get the "right kind of process" will be
  961.    sketched in the discussions of the process level protocols, but the
  962.    significant notion for now is that typically SOME sort of prior
  963.    arrangement would be done by any networked Host to associate the
  964.    right kind of process with a WKS.
  965.  
  966.  
  967.  
  968. Padlipsky                                                      [Page 17]
  969.  
  970.  
  971.  
  972. RFC 928                                                    December 1984
  973. Introduction to H-FP
  974.  
  975.  
  976.    Now, we don't expect that the foregoing will enable even the world's
  977.    greatest system jock to go out and design the integration of an H-FP
  978.    PI for a system that had never been networked (in the ARPANET style
  979.    of networking) before. But we propose to stop there and turn to some
  980.    comments on process level protocols, for two reasons: In the first
  981.    place, it would take us much too far afield to go into significantly
  982.    greater detail; and in the second place, because of the functional
  983.    equivalence of H-FP and NCP combined with the number of operating
  984.    systems which have integrated NCP and, for that matter, TCP/IP, which
  985.    are also functionally equivalent to H-FP (used for offloading L II
  986.    and L I), models are available in the ARPANET community and concerned
  987.    H-FP PI implementors can follow them.
  988.  
  989.    Turning to Telnet integration, and returning to Multics as an
  990.    example, we note that "User Telnet" is straightforward. "All you
  991.    need" (for small values of "all") from an INBOARD User Telnet is a
  992.    command that gives the user some sort of interface, converts between
  993.    the native Multics character set and terminal discipline and the
  994.    Network Virtual Terminal equivalents (and as Multics is very generic
  995.    when it comes to I/O, that's not hard), and writes and reads "the
  996.    net" (more accurately, calls upon the Host-Host protocol PI--or upon
  997.    the H-FP PI to get at the H-HP--appropriately).  (One point that's
  998.    not obvious:  make the Well-Known Socket "on the other side" a
  999.    parameter, defaulting to the Telnet WKS, because you'll want to use
  1000.    the same command to get at other process-level protocols.)  If
  1001.    there's an OPE in play which offloads User Telnet, however, things
  1002.    can be even simpler: the inboard command just reads and writes the
  1003.    terminal and lets the OUTBOARD User Telnet PI handle the conversion
  1004.    to and from the Virtual Terminal form (presumably, from and to the
  1005.    desired local form).
  1006.  
  1007.    When it comes to the incoming ("Server") aspects of Telnet, life can
  1008.    get complicated on some systems for an inboard implementation.
  1009.    However, fortunately for our purposes,
  1010.  
  1011.    Multics' native mechanisms lend themselves readily to integration; an
  1012.    awareness of the inboard issues will be useful even if in response to
  1013.    a connection attempt on the Telnet WKS, the (Server) Host is
  1014.    obligated to associate the connection (the actual logic is somewhat
  1015.    more complex under the ARPANET Host-Host Protocol, which employs
  1016.    paired simplex connections) with a process that is prepared to
  1017.    translate between Telnet and native mode representations and
  1018.    otherwise "look like" a local user process--that is, in particular
  1019.    the connection becomes an I/O source/sink to the native command
  1020.    processor on time-sharing systems.  As indicated, process creation is
  1021.    taken care of in Multics by having the Answering Service process
  1022.    listen on the WKS.  Because the Answering Service is in some sense
  1023.  
  1024.  
  1025. Padlipsky                                                      [Page 18]
  1026.  
  1027.  
  1028.  
  1029. RFC 928                                                    December 1984
  1030. Introduction to H-FP
  1031.  
  1032.  
  1033.    just another Multics process, it too does user I/O through the normal
  1034.    system mechanisms.  So while for local terminals the user I/O streams
  1035.    are attached through a module called "ttydim" (where "dim" stands for
  1036.    "device interface module"), NVTs are attached through a functionally
  1037.    equivalent and identically invoked module called "nttydim" (the
  1038.    Answering Service knows which DIM to use based on the symbolic
  1039.    designator of the "line" on which it received the interrupt, as it
  1040.    happens).
  1041.  
  1042.    [The notion of "attaching" the streams bears a bit more explanation:
  1043.    Attach is a primitive of the Multics generic I/O mechanism which
  1044.    associates a stream name and a particular DIM (or I/O system
  1045.    interface module in later terminology); the other I/O primitives
  1046.    (read, write, etc.) are invoked with the stream name as a parameter
  1047.    and an I/O "switch" causes the entry point corresponding to the
  1048.    primitive to be invoked in whichever DIM the stream is currently
  1049.    attached to.   So a Server Telnet process starts life attached
  1050.    through nttydim to a particular network connection, while a local
  1051.    process starts life attached through ttydim to a particular physical
  1052.    line, and both processes proceed indistinguishably (viewed from
  1053.    outside the I/O switch, anyway).]
  1054.  
  1055.    The pre-existing orderliness that makes things easy on Multics does
  1056.    not, unfortunately, appear in all operating systems.  Indeed,
  1057.    delicate choices occasionally have to be made as to WHICH native
  1058.    terminal to map to on systems that don't do generic I/O in native
  1059.    mode, and it is likely that for some systems the particular mapping
  1060.    to bring into play in Server Telnet might be determined by the
  1061.    particular application program invoked.  This issue can become very
  1062.    touchy when the application "expects" a "data entry terminal", say.
  1063.    The Server Telnet for such a system would naturally attempt to
  1064.    negotiate the "DET" option with the corresponding User Telnet.  But
  1065.    the user might be at a physical terminal that isn't a member of the
  1066.    DET class, so that User Telnet must either refuse to negotiate the
  1067.    option or--and we would recommend this alternative strongly, as it
  1068.    seems to be within the "spirit" of the protocol--offer some sort of
  1069.    simulation, however crude, of the behavior of a DET.   Also,
  1070.    something sensible has to be done on systems where there is no clear
  1071.    analog of the command processor expected to be managing the Server
  1072.    process.  (Say, when a "menu" of applications is always displayed on
  1073.    an available terminal in native mode.)
  1074.  
  1075.    A final Telnet integration issue (although other points could be
  1076.    noted, we're not pretending to be exhaustive and this should be
  1077.    enough to "give the flavor"):  The Telnet Interrupt Process generic
  1078.    function calls for particularly careful integration.  Here, the
  1079.    intent of the function is to virtualize what is called the "quit
  1080.  
  1081.  
  1082. Padlipsky                                                      [Page 19]
  1083.  
  1084.  
  1085.  
  1086. RFC 928                                                    December 1984
  1087. Introduction to H-FP
  1088.  
  1089.  
  1090.    button" on some systems. That is, the user wants the system to
  1091.    interrupt his process (which may, for example, be in a loop) and get
  1092.    back to the command processor (or "the system" itself).   On native
  1093.    character-at-a-time systems, the native mechanism is usually the
  1094.    entering of a particular "control character"; on native
  1095.    line-at-a-time systems, the native mechanism is usually the striking
  1096.    of the "ATTN" or Interrupt button or the "Break" key (sometimes more
  1097.    than once, to distinguish it from a communication to the executing
  1098.    program).  But the native mechanisms typically involve interrupt time
  1099.    code, and Server Telnet typically wouldn't be executing at that
  1100.    level, so the solution (omitting the intricacies of the interaction
  1101.    with the NCP or the H-FP PI, which also get into the act) would be to
  1102.    make use of--in the Multics case--a pre-existing INTRAprocess signal,
  1103.    or to add such a mechanism (unless the architecture chosen has a
  1104.    Server Telnet Daemon of some sort, in which case an INTERprocess
  1105.    signal would be needed).
  1106.  
  1107.    The extension of the foregoing to an outboard Server Telnet may not
  1108.    be obvious, but we won't expend a great deal of time on it here.
  1109.    Even if "the protocol" is being handled in an OPE, the Host-side
  1110.    software must be able to associate an H-FP connection with the
  1111.    command language interpreter of a user process and to respond
  1112.    appropriately to an H-FP Signal command if it arrives, and the OPE
  1113.    must know not only the desired character set but also the local
  1114.    equivalents of Erase and Kill, at the minimum.
  1115.  
  1116.    We'll skip FTP integration, on the grounds that this note is already
  1117.    too lengthy, except to mention that in the OUTBOARD case it's still
  1118.    going to be necessary to convey the name of the appropriate file and
  1119.    directory to/from some appropriate Host-side code.  (Similar problems
  1120.    must be dealt with for outboard handling of "mail" if it's not part
  1121.    of FTP.)
  1122.  
  1123.    One other "integration" issue, which has been hinted at earlier and
  1124.    about which not much can be said beyond some general guidelines: The
  1125.    "top edge" of a Host-side H-FP protocol interpreter (i.e., the Host
  1126.    user program interface, for
  1127.  
  1128.    Hosts that are "doing real networking" rather than just using the OPE
  1129.    to get at User Telnet and/or FTP and to offer Server Telnet and/or
  1130.    FTP [and maybe "mail"], presumably in the "scenario-driven" fashion
  1131.    sketched earlier) MUST BE APPROPRIATE TO THE HOST.  In other words,
  1132.    on Multics, where "everything" is closed subroutines, there would
  1133.    presumably be a closed subroutine interface with event channels for
  1134.    reads, pointers to buffers, and all that sort of thing, but on some
  1135.    other style of operating system, the interface to the H-FP PI might
  1136.    turn out to be "all" interprocess communication, or to "look like" a
  1137.  
  1138.  
  1139. Padlipsky                                                      [Page 20]
  1140.  
  1141.  
  1142.  
  1143. RFC 928                                                    December 1984
  1144. Introduction to H-FP
  1145.  
  1146.  
  1147.    device of some special class, or "all" system
  1148.    calls/JSYSs/EOTs/Whatevers.  We can't be much more specific, but we'd
  1149.    be remiss to convey any impression that H-FP is a "free lunch".  As
  1150.    noted, an H-FP PI requires the same kind of integration as a generic
  1151.    NCP--it's just smaller, and serves as insulation against changes (in
  1152.    the offloaded protocols in general, or in the proximate comm subnet
  1153.    in particular).
  1154.  
  1155. References
  1156.  
  1157.    (References [1]-[3] will be available in M. A. Padlipsky's "The
  1158.    Elements of Networking Style", Prentice Hall, 1985.)
  1159.  
  1160.    [1] Padlipsky, M. A., "The Host-Front End Protocol Approach", MTR
  1161.    3996, Vol. III, MITRE Corp., 1980.
  1162.  
  1163.    [2] Padlipsky, M. A., "The Elements of Networking Style", M81-41,
  1164.    MITRE Corp., 1981.
  1165.  
  1166.    [3] Padlipsky, M. A., "A Perspective on the ARPANET Reference Model",
  1167.    M82-47, MITRE Corp., 1982.
  1168.  
  1169.    [4] Bailey, G., "Network Access Protocol", S-216,718, National
  1170.    Security Agency Central Security Service, 1982.
  1171.  
  1172.    [5] Day, J. D., G. R. Grossman, and R. H. Howe, "WWMCCS Host to Front
  1173.    End Protocol", 78012.C-INFE.14, Digital Technology Incorporated,
  1174.    1979.
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196. Padlipsky                                                      [Page 21]
  1197.  
  1198.