home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 900s / rfc935.txt < prev    next >
Text File  |  1992-09-22  |  32KB  |  774 lines

  1.  
  2.  
  3.  
  4. Network Working Group                                        J. Robinson
  5. Request for Comments: 935                                            BBN
  6.                                                             January 1985
  7.  
  8.                      RELIABLE LINK LAYER PROTOCOLS
  9.  
  10.  
  11. Status of This Memo
  12.  
  13.    This RFC discusses protocols proposed recently in RFCs 914 and 916,
  14.    and suggests a proposed protocol that could meet the same needs
  15.    addressed in those memos.  The stated need is reliable communication
  16.    between two programs over a full-duplex, point-to-point communication
  17.    link, and in particular the RFCs address the need for such
  18.    communication over an asynchronous link at relatively low speeds.
  19.    The suggested protocol uses the methods of existing national and
  20.    international data link layer standards.  This RFC suggests a
  21.    proposed protocol for the ARPA-Internet community, and requests
  22.    discussion and suggestions for improvements.  Distribution of this
  23.    memo is unlimited.
  24.  
  25. Introduction
  26.  
  27.    This RFC is motivated by recent RFCs 914 and 916, which propose new
  28.    standards for protocols that transfer serial data reliably over
  29.    asynchronous communication lines.  In this note, I summarize
  30.    widely-used standards that have been in existence for some time that
  31.    might be appropriate for this environment.  I hope that the existing
  32.    standards will be found to meet the needs the new proposals seek to
  33.    address.
  34.  
  35.    In both the US and international standards areas, there are two major
  36.    categories of serial data communication standards for the link layer.
  37.    These categories are character-oriented and bit-oriented.  The first
  38.    is the older class; it is standardized in the US standard ANSI
  39.    X3.28-1976 (which superseded the original version of 1971), and in
  40.    the ISO standards IS 1745, IS 2111, IS 2628 and IS 2629.  Although
  41.    frequently used in synchronous environments, wherein the name binary
  42.    synchronous (or bisynch) is used, these standards use the term "basic
  43.    mode" to describe their procedures.  The latter class is standardized
  44.    in the US standard ADCCP (Advanced Data Communication Control
  45.    Procedures), ANSI X3.66- 1979, and in the ISO standard HDLC
  46.    (High-level Data Link Control procedures), in IS 3309, IS 4335 and IS
  47.    7809.
  48.  
  49.    Other international standards, draft standards and vendor standards
  50.    follow the ADCCP/HDLC procedures.  Among these are SDLC (IBM), X.25
  51.    LAPB (CCITT), IEEE 802.2/ISO 8802.2 LLC (LAN Logical Link Control)
  52.    and ISDN LAPD (CCITT).  Many vendors have built equipment which meets
  53.  
  54.  
  55.  
  56.  
  57. Robinson                                                        [Page 1]
  58.  
  59.  
  60.  
  61. RFC 935                                                     January 1985
  62. Reliable Link Layer Protocols
  63.  
  64.  
  65.    the character-oriented standards, in both synchronous and
  66.    asynchronous environments, including all the major US mainframe
  67.    manufacturers.
  68.  
  69.    The only other serial link layer protocol known to the author in as
  70.    wide use as these is DEC's DDCMP (Digital Data Communications Message
  71.    Protocol).  This protocol uses a character count instead of framing
  72.    characters, but is in other respects a character-oriented protocol.
  73.  
  74.    The next sections of this note will compare the three protocols above
  75.    on several bases, paying particular attention to the characteristics
  76.    that make particular aspects of the protocol appropriate to the
  77.    low-speed, asynchronous, serial environment.
  78.  
  79. Frame Structure
  80.  
  81.    All serial protocols divide the data to be transmitted into units
  82.    known as frames.  A frame is typically one to several hundred
  83.    characters in length.  The frame structure is the major difference
  84.    used above to divide the protocols into three classes.
  85.  
  86. Character-Oriented Framing
  87.  
  88.    Character-oriented protocols use two techniques for defining a frame.
  89.    First, it is necessary to determine where characters start and stop.
  90.    The technique used for this purpose is to transmit a number of unique
  91.    characters prior to the start of a frame.  The character generally
  92.    used for this is the SYN character.
  93.  
  94.    Note that this is not required when using asynchronous transmission.
  95.    Since each character is itself framed by start and stop bits, there
  96.    is never a question of where characters begin and end.
  97.  
  98.    The main technique for structuring a frame is the use of special
  99.    framing characters to delineate the start and end of a frame, and to
  100.    delineate portions of the frame (such as header and text).  Some uses
  101.    of character-oriented protocols require that these characters never
  102.    appear in the header or text of the frame, while others allow
  103.    "transparent" transmission.  Transparency is obtained by preceding
  104.    each framing character by a unique control character, typically DLE.
  105.    In this way, all characters may be sent as header or text, except for
  106.    DLE.  In order to allow DLE to be sent in the header or text, the DLE
  107.    is doubled.
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Robinson                                                        [Page 2]
  115.  
  116.  
  117.  
  118. RFC 935                                                     January 1985
  119. Reliable Link Layer Protocols
  120.  
  121.  
  122. Bit-Oriented Framing
  123.  
  124.    Bit-oriented protocols also use a unique character (technically, it
  125.    is just an arbitrary bit-string) for frame delineation, which is the
  126.    FLAG.  This character provides frame synchronization.  All bits
  127.    between two occurrences of FLAGs constitute a frame.  The FLAG is a 0
  128.    bit, followed by six 1 bits, followed by another 0 bit.  In order
  129.    that the FLAG character not appear mistakenly in the data of the
  130.    message, the sender inserts (and the receiver removes) an extra 0 bit
  131.    after any five successive 1 bits in the data stream.
  132.  
  133.    Because this insertion of bits ("stuffing") results in arbitrary
  134.    frame bit-lengths, bit-oriented protocols are generally useful only
  135.    in synchronous transmission environments.  Although it has never been
  136.    attempted, however, one could imagine an asynchronous environment
  137.    where each FLAG character that appears in the data is translated into
  138.    a two- character sequence that avoids FLAGs, and at least one other
  139.    character is similarly translated.  For example, one could frame data
  140.    with FLAGS, and send DLE-F to mean FLAG and DLE-DLE to mean DLE when
  141.    these characters occur within the frame.
  142.  
  143.    Note that bit-oriented procedures do not require that the number of
  144.    bits between FLAGs be an exact number of 8-bit characters, in
  145.    distinction to character-oriented protocols and DDCMP.  The necessity
  146.    for character-alignment may be imposed at higher layers, as it is,
  147.    for example, in X.25 Network Layer.
  148.  
  149. Frame Structure in DDCMP
  150.  
  151.    DDCMP uses a third approach to frame structure.  Like
  152.    character-oriented protocols, it uses a SYN character to achieve
  153.    character synchronization prior to starting a frame, but one cannot
  154.    dispense with this over asynchronous lines (see below).  Contained
  155.    within the fixed-length header portion of the frame is a count field,
  156.    which reports how many characters are contained in the
  157.    variable-length text portion.  Since no framing characters are
  158.    required at all, transparency is not a problem.  However, because the
  159.    count must be received properly for the sender and receiver to stay
  160.    in frame synchronization, the header is protected with a separate
  161.    error control checksum, which is typically two characters long (see
  162.    below). Also, once a header error has been detected, the count field
  163.    must be assumed to be invalid, and so there must be a unique
  164.    character sequence that introduces the next header in order that the
  165.    receiver can regain synchronization with the sender.
  166.  
  167.    Therefore, the SYN characters preceding a frame are required even on
  168.    asynch lines.
  169.  
  170.  
  171. Robinson                                                        [Page 3]
  172.  
  173.  
  174.  
  175. RFC 935                                                     January 1985
  176. Reliable Link Layer Protocols
  177.  
  178.  
  179. Error Detection
  180.  
  181.    Several types of error control may be used, and the various protocols
  182.    above are similar.  Most synchronous uses require a cyclic redundancy
  183.    check sequence be attached to each frame.  This is a 16-bit sequence
  184.    which can be easily generated and checked in hardware using a shift
  185.    register, and can be somewhat more tediously done in software with
  186.    about 5-6 instructions per character sent or received, and a 256 by
  187.    16-bit lookup table.  DDCMP and Bit-oriented protocols all require
  188.    use of such a sequence.  As noted above, DDCMP uses a check sequence
  189.    twice, once for the header and once for the data.
  190.  
  191.    In some environments, weaker checks are used on character-oriented
  192.    links.  These take two forms.  If the the number of significant bits
  193.    per character is only 7, then the parity bit can be set to achieve
  194.    either odd or even parity.  ANSI standard X3.16-1976 specifies that
  195.    odd parity should be used on synchronous links and even parity on
  196.    asynchronous links.  The second type of check is "longitudinal
  197.    parity", wherein one character is added to the frame so that the
  198.    number of 1 bits in each bit position summed over all the characters
  199.    of the message and the check character is even.  In other words, the
  200.    exclusive-or of all the characters is 0.  Character parity and
  201.    longitudinal parity may be used together.
  202.  
  203.    Note also that most character-oriented control messages, such as
  204.    those that poll, select, and acknowledge, are sent with only parity
  205.    for error control.
  206.  
  207. Sequence Control
  208.  
  209.    All these protocol provide reliable transmission by sequencing the
  210.    frames and providing positive and (in some cases) negative
  211.    acknowledgments.  Senders can ask the receiver for status if a reply
  212.    is late.
  213.  
  214.    In character-oriented protocols, frames are implicitly numbered
  215.    (typically) and only one may be outstanding at a time.
  216.    Acknowledgments are explicitly numbered.  One variant allows each
  217.    block (frame) to be explicitly numbered as well; in this case up to 7
  218.    may be outstanding.
  219.  
  220.    In bit-oriented protocols, frames are explicitly numbered and up to 7
  221.    may be outstanding at a time.  Optional control field extension
  222.    allows for up to 127 outstanding.  An alternate procedure that has
  223.    been defined for use both in the ISDN LAPD environment and in IEEE
  224.  
  225.  
  226.  
  227.  
  228. Robinson                                                        [Page 4]
  229.  
  230.  
  231.  
  232. RFC 935                                                     January 1985
  233. Reliable Link Layer Protocols
  234.  
  235.  
  236.    802 LAN environments uses, in effect, a one-bit sequence number and
  237.    one outstanding frame.  Also, unsequenced, unacknowledged information
  238.    frames can be used when frames need not be sent reliably.
  239.  
  240.    In DDCMP, the frames are explicitly numbered and up to 255 may be
  241.    outstanding.
  242.  
  243. Addressing
  244.  
  245.    All of these protocols allow for addressing stations on a multipoint
  246.    link separately.  In LAN environments, both a sending and receiving
  247.    address are required, whereas multipoint environments use a single
  248.    address and assume one master station communicating with multiple
  249.    addressed slave stations.  In bit-oriented protocols, the address
  250.    provides extra information in that frames can be categorized as
  251.    commands or responses; in this sense, the address provides another
  252.    control bit per frame.  However, it is possible to operate without
  253.    needing this distinction.
  254.  
  255.    Addresses are typically one character long; bit-oriented protocols
  256.    allow for extension of this field to arbitrary length.
  257.    Character-oriented protocols use two-character (controller and
  258.    terminal) addresses.
  259.  
  260.    For point-point operation, the address is clearly superfluous (except
  261.    to distinguish commands and replies in bit-oriented protocols); one
  262.    might imagine dispensing with it.
  263.  
  264. The Asynchronous Environment
  265.  
  266.    Which of these protocols is best for the asynchronous environment?
  267.    This depends on the definition of "best", of course.  One means of
  268.    judging is to compare the amount of overhead that each protocol would
  269.    add to each frame sent.
  270.  
  271.    We will examine the overhead costs in two groups:
  272.  
  273.       framing/transparency/error checking,
  274.  
  275.       and addressing/control.
  276.  
  277.    The two groups of functions are independent of each other, even
  278.    though the protocols mentioned above use specific combinations of
  279.    techniques from these two groups.  Also, hardware available on
  280.    minicomputer-class and larger machines today supports the first group
  281.    of functions completely for these standard protocols; this fact
  282.    should allow for far greater performance from the gateway machine.
  283.  
  284.  
  285. Robinson                                                        [Page 5]
  286.  
  287.  
  288.  
  289. RFC 935                                                     January 1985
  290. Reliable Link Layer Protocols
  291.  
  292.  
  293.    To the extent that such hardware becomes available for personal
  294.    computers, it can also be used there to reduce the protocol
  295.    processing overhead.  Here's a breakdown of framing costs in
  296.    characters.  RATP is also included for comparison.
  297.  
  298.       Protocol   Frame   Check  Transp.  Total    F+C
  299.  
  300.       char-or.     4       2       2       8       6
  301.       bit-or.      1       2       2       5       3
  302.       DDCMP        4       4       0       8       8
  303.       RATP         2       3       0       5       5
  304.  
  305.    The transparency column indicates the anticipated cost in inserted
  306.    characters to achieve transparency across a 256-byte frame.  The
  307.    figure for bit-oriented protocols is a pessimistic guess, because I
  308.    don't know the exact answer; it is between 0 and 8 characters, with
  309.    the worst case occurring when the data is all one bits.  For
  310.    character-oriented protocols, we would expect on average one DLE
  311.    character in a 256-byte frame; the worst case overhead (256 DLEs) is
  312.    256 bytes.
  313.  
  314.    Because transparency is so much a function of the user data, and
  315.    because we have ignored the cost of loss of frame synchronization in
  316.    the counting protocols (DDCMP and RATP), I argue that we should base
  317.    the comparison on the frame and checksum costs only.  For these two
  318.    columns, character-oriented framing costs one more character per
  319.    frame than RATP. This, plus its wide use and hardware chip support,
  320.    create a strong case for its use in preference to RATP for framing.
  321.  
  322.    Bit-oriented framing, as noted previously, is appropriate only on
  323.    synchronous links.  The character oriented variant I postulated above
  324.    would have the same costs, but as it is not a standard, it is not
  325.    proposed here.  So we now have constructed the following frame
  326.    format:
  327.  
  328.       DLE STX <control and data ...> DLE ETX CRC CRC
  329.  
  330.    One objection to using character-oriented protocols as opposed to
  331.    character-count protocols is that it is necessary to examine every
  332.    character as it arrives.  I respond to this objection as follows:
  333.  
  334.       1.  Under some circumstances, such as when a header has been hit
  335.       with an error, it will be necessary for the receiver to look at
  336.       every character anyway.
  337.  
  338.       2.  The environment for this protocol is a 1200 baud link; thus
  339.  
  340.  
  341.  
  342. Robinson                                                        [Page 6]
  343.  
  344.  
  345.  
  346. RFC 935                                                     January 1985
  347. Reliable Link Layer Protocols
  348.  
  349.  
  350.       120 characters per second need to be examined at a maximum.  Even
  351.       on a relatively slow personal computer, this should not present a
  352.       problem.
  353.  
  354.    We now turn our attention to the content and format of the control
  355.    information preceding each link frame.  There are three components to
  356.    this cost, control, address, and acknowledgment.  The address field
  357.    allows multipoint configurations and is superfluous for the
  358.    point-to-point environment proposed, but it is present in the public
  359.    standards and we restrict ourselves to those.
  360.  
  361.    Acknowledgments are shown if they are required explicitly by the
  362.    protocol.  A "0" indicates that the acknowledgments may be included
  363.    in the control information for traffic in the opposite direction, and
  364.    only need be sent explicitly when no reverse traffic is present (and
  365.    thus are assumed to take no required overhead).  Only
  366.    character-oriented protocols have required acknowledgments.
  367.  
  368.                  Cont.   Addr.    Ack    Total
  369.       char-or.     0       3       2       5
  370.       bit-or.      1       1       0       2
  371.       DDCMP        3       1       0       4
  372.       RATP         1       0       0       1
  373.  
  374.    Again, the bit-oriented procedures provide the lowest overhead among
  375.    the public standards, but in this case there is no conflict in using
  376.    them in the asynchronous environment.  In fact, even if all the other
  377.    aspects of RATP were to be adopted, I believe the control field
  378.    codings of the bit- oriented procedures represent a more efficient
  379.    use of the channel, are widely implemented, and allow for addition of
  380.    more functions later if desired.  As stated above, there are several
  381.    protocols in the bit-oriented family.  I would recommend use of LAPB,
  382.    since this is the most widely known of the family.
  383.  
  384.    For those not familiar with bit-oriented control procedures, I have
  385.    included a quick summary of these procedures in Appendix A.  Refer to
  386.    the standards listed at the end of this note for more detail.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399. Robinson                                                        [Page 7]
  400.  
  401.  
  402.  
  403. RFC 935                                                     January 1985
  404. Reliable Link Layer Protocols
  405.  
  406.  
  407. RATP Compared to Public Protocols
  408.  
  409.    As can be seen from the above tables, RATP does not represent a
  410.    significant savings compared to other widely-used protocols.
  411.  
  412.    Given frame lengths of 13 bytes, which appears to be the minimum for
  413.    Thinwire II (RFC 914), 8 characters' overhead using the public
  414.    standards represents 61% versus 46% for RATP's 6 characters.  On a
  415.    1200 baud line, the bandwidth available assuming only such short
  416.    frames is thus 74 versus 82 characters per second, respectively.
  417.    Since 1/13 of these are actually user data, the typing rates
  418.    supported by these protocols using TCP/IP are pretty low, like 5.6
  419.    versus 6.3 characters per second.  Clearly a bigger cost is still
  420.    found in the 12 characters overhead in Thinwire II (or 40 for TCP/IP
  421.    with no compression).
  422.  
  423.    The costs improve dramatically when the number of user characters per
  424.    frame increases.  Thus, file transfer, or even line-blocked typing,
  425.    should perform adequately.  As frame size grows, the cost of the
  426.    extra 2 characters per frame to use standard protocols rapidly drops
  427.    to a few percent or less.
  428.  
  429.    RATP does allow one optimization which cannot be achieved in the
  430.    standard protocols - the use of a one-character format that reduces
  431.    the per-frame overhead to 3 characters (or 4 if a 16-bit CRC is
  432.    used).  However, in the scenario wherein single-character messages
  433.    make sense, a user typing characters (with no higher layer
  434.    protocols), the extra overhead is probably not a problem since the
  435.    link is still lightly enough loaded that the extra overhead is still
  436.    a small percentage of the available bandwidth.  Also, allowing
  437.    multiple frames in flight helps reduce the bottleneck caused by
  438.    having one frame at a time outstanding.
  439.  
  440. On Check Sequences
  441.  
  442.    Both RFCs 914 and 916 propose to use relatively simple check
  443.    sequences, which can be easily computed in a general-purpose
  444.    processor.  In one case, this is an additive check and in the other
  445.    it is an exclusive-or (or parity) check.  Although the additive check
  446.    is slightly more powerful than the exclusive-or, both are relatively
  447.    weak compared to CRC techniques.
  448.  
  449.    Since the intended network-layer protocol (IP) provides for similar
  450.    checks on its header, and the transport layer (TCP) checksums its
  451.    header and data, one might question whether the protection should
  452.    also be provided at the link layer at all, or if it should, then are
  453.    these checks good enough?  Providing for recovery at the TCP layer
  454.  
  455.  
  456. Robinson                                                        [Page 8]
  457.  
  458.  
  459.  
  460. RFC 935                                                     January 1985
  461. Reliable Link Layer Protocols
  462.  
  463.  
  464.    leads to slow recovery times, so this approach will probably yield
  465.    too poor a level of service for noisy links.  More importantly, the
  466.    link layer control field needs a certain degree of protection to
  467.    prevent needless loss or duplication of frames in the face of line
  468.    errors.
  469.  
  470.    A CRC check, in combination with the additive checks provided by IP
  471.    and TCP, yield an error-protection that is greater than that afforded
  472.    by either check by itself.  This is because the two techniques
  473.    address fundamentally different characteristics of the possible
  474.    errors.  The degree of increase is substantial compared to that of
  475.    two additive checks.  That is, if two additive checks are cascaded,
  476.    there are many types of two-bit failures that will pass both the link
  477.    layer and TCP/IP checking.
  478.  
  479.    Although I don't wish to include a detailed error analysis in this
  480.    note, I would support the use of a CRC type of error check because of
  481.    the far greater level of protection it affords.  As I pointed out,
  482.    the cost per character is roughly 5-6 instructions, assuming the use
  483.    of a 256 by 16-bit lookup table.  Again, at 120 characters per
  484.    second, the increased cost is not deemed to be too great.
  485.  
  486.    Moreover, use of a standard CRC allows for the possibility that the
  487.    serial line chip's own CRC generation and checking hardware may be
  488.    used.  Although such chips may not be present in the PCs in the
  489.    environment envisioned, they are likely to be available in the
  490.    gateway machine to which the PCs talk.
  491.  
  492. Data Compression: An Aside
  493.  
  494.    I find the proposed methods of data compression of RFC 914
  495.    particularly interesting.  I see these as independent of the choice
  496.    of the underlying link layer protocol, as it is in RFC 914.  I am
  497.    aware of no such character-oriented compression that is in common use
  498.    in the communication world.  The only techniques that come close are
  499.    in statistical multiplexing devices, which sometimes also include an
  500.    adaptive Huffman-coding to reduce link bandwidth.  Since the Thinwire
  501.    II approach can recognize much longer repeated sequences than a
  502.    Huffman code, I expect that the potential savings are correspondingly
  503.    greater.
  504.  
  505.    I would like to see a version of the Thinwire protocols which allows
  506.    for the template idea, but which keeps it independent of the higher
  507.    layer protocols in use.  One way to achieve this is to allow
  508.    templates to be encoded and exchanged between the communicating
  509.    parties when they start up, and perhaps adaptively as conditions
  510.    warrant.  I would anticipate that this sort of approach might well
  511.  
  512.  
  513. Robinson                                                        [Page 9]
  514.  
  515.  
  516.  
  517. RFC 935                                                     January 1985
  518. Reliable Link Layer Protocols
  519.  
  520.  
  521.    have widespread applicability beyond the TCP/IP environment addressed
  522.    in RFC 914.  The most important gain for this environment is removal
  523.    of the apparent exorbitant overhead that IP and TCP seem to present
  524.    for use over slow links.
  525.  
  526. Summary
  527.  
  528.    The link layer protocol I would advocate for asynchronous, dialup
  529.    communication between PCs would use transparent, character-oriented
  530.    framing, a 16-bit CRC error check, and the control procedures of
  531.    LAPB.  The CRC should be either CRC-16 or the CCITT CRC used in X.25,
  532.    with the latter probably being preferred; modern link chips tend to
  533.    support both of these if they support either.
  534.  
  535.    Evolution of integrated circuits that directly implement all of the
  536.    public standards will dramatically drop the cost and raise the
  537.    reliability of new implementations of standard protocols.  Chip
  538.    manufacturers have little motivation to address standards that are
  539.    not widely used.
  540.  
  541.    Overhead for the suggested protocol is 8 characters per frame.  Up to
  542.    7 frames may be outstanding at a time in either direction of
  543.    transfer.  Choice of an appropriate maximum frame size is
  544.    application-dependent, and would certainly be influenced by the
  545.    quality of the physical connection; however, I believe that IP
  546.    datagrams are acceptable frames for dialup 1200 baud service.
  547.  
  548.    Non-standard modifications that would save a little link overhead
  549.    would be to dispense with the one-character address field, and to use
  550.    the RATP count-oriented frame structure.  These are not recommended,
  551.    because they depart from common practice and yield modest
  552.    improvements at best.
  553.  
  554. Postscript
  555.  
  556.    Those familiar with the early history of the Telenet Public Data
  557.    Network should recognize that this proposal is essentially the same
  558.    as the original link layer protocol specification for that network,
  559.    circa 1976, except that the control procedures used at that time,
  560.    known as LAP, have now been superseded by the more powerful and
  561.    efficient LAPB, and their access links, as all X.25 access links, are
  562.    synchronous rather than asynchronous.  I did not set out to achieve
  563.    this result, but just note it in passing.
  564.  
  565.    My personal view of where the world of personal computer access to
  566.    data networks is heading is that X.25 will rapidly become the
  567.    protocol of choice.  One already sees third-party (for IBM PC) and
  568.  
  569.  
  570. Robinson                                                       [Page 10]
  571.  
  572.  
  573.  
  574. RFC 935                                                     January 1985
  575. Reliable Link Layer Protocols
  576.  
  577.  
  578.    vendor (for Wang PC) implementations of X.25. CCITT is circulating a
  579.    proposal for accessing an X.25 data network using a dial-up X.25
  580.    connection, as recommendation X.32.  Thus, I feel that the type of
  581.    communication proposed in this RFC and RFCs 914 and 916 will be used
  582.    for a relatively short period of time.  The future holds, I believe,
  583.    LAN or X.25/X.32 data link layer and access, X.25 and/or ISO IP
  584.    network layer, and TCP and/or ISO TP4 transport layer.
  585.  
  586. References
  587.  
  588.    RFC 914, "Thinwire Protocol", Farber, Delp and Conte, 1984.
  589.  
  590.    RFC 916, "Reliable Asynchronous Transfer Protocol", Finn, 1984.
  591.  
  592.    "Technical Aspects of Data Communication", McNamara, Digital Press,
  593.    1977.
  594.  
  595.    ANSI X3.4-1968, "American National Standard Code for Information
  596.    Interchange (ASCII)", American National Standards Institute, Inc.,
  597.    1968.
  598.  
  599.    ANSI X3.16-1976, "American National Standard Character Structure and
  600.    Character Parity Sense for Serial-by-Bit Data Communication in the
  601.    American National Standard Code for Information Interchange",
  602.    American National Standards Institute, Inc., 1976.
  603.  
  604.    ANSI X3.28-1976, "American National Standard Procedures for the Use
  605.    of the Communication Control Characters of American National Standard
  606.    Code for Information Interchange in Specified Data Communication
  607.    Links", American National Standards Institute, Inc., 1976.
  608.  
  609.    ANSI X3.66-1979, "American National Standard for Advanced Data
  610.    Communication Procedures (ADCCP)", American National Standards
  611.    Institute, Inc., 1979.
  612.  
  613.    International Standard 1745, "Information Processing - Basic mode
  614.    control procedures for data communication systems", International
  615.    Organization for Standardization (ISO), 1975.
  616.  
  617.    International Standard 2111, "Data Communication - Basic mode control
  618.    procedures - Code independent information transfer", ISO, 1973.
  619.  
  620.    International Standard 2628, "Basic mode control procedures -
  621.    Complements", ISO, 1973.
  622.  
  623.    International Standard 2629, "Basic mode control procedures -
  624.    Conversational information message transfer", ISO, 1973.
  625.  
  626.  
  627. Robinson                                                       [Page 11]
  628.  
  629.  
  630.  
  631. RFC 935                                                     January 1985
  632. Reliable Link Layer Protocols
  633.  
  634.  
  635.    International Standard 3309, "Data Communication - High-level data
  636.    link control procedures - Frame structure", ISO, 1982.
  637.  
  638.    International Standard 4335, "Data Communication - High-level data
  639.    link control procedures - Consolidation of elements of procedures",
  640.    ISO, 1982.
  641.  
  642.    International Standard 7809, "Data Communication - High-level data
  643.    link control procedures - Consolidation of classes of procedures",
  644.    ISO, 1984.
  645.  
  646.    Recommendation X.25, "Interface between Data Terminal Equipment (DTE)
  647.    and Data Circuit Terminating Equipment (DCE) for Terminals Operating
  648.    in the Packet Mode and Connected to Public Data Networks by Dedicated
  649.    Circuit", The International Telegraph and Telephone Consultative
  650.    Committee (CCITT), 1980 (to be revised, 1984).
  651.  
  652.    Recommendation Q.920, "ISDN User-network Interface Data Link Layer -
  653.    General Aspects", CCITT, 1984 (draft E).
  654.  
  655.    Recommendation Q.921, "ISDN User-network Interface Data Link Layer
  656.    Specification", CCITT, 1984 (draft E).
  657.  
  658.    Draft International Standard 8802.2, "Local Area Network Standards,
  659.    Logical Link Control", ISO, 1984 (draft).
  660.  
  661.    Draft Proposed Addendum to DIS 8802.2, "Single Frame Service", IEEE,
  662.    1984 (Eighth Draft).
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684. Robinson                                                       [Page 12]
  685.  
  686.  
  687.  
  688. RFC 935                                                     January 1985
  689. Reliable Link Layer Protocols
  690.  
  691.  
  692. Appendix A - Bit-Oriented Control Field Contents
  693.  
  694.    There are three control field formats.  The primary one is used for
  695.    data frames (called "information frames" in the standards), and is
  696.    coded as follows:
  697.  
  698.       8  7  6  5  4  3  2  1  <- bit number,  1 sent first
  699.                            0     (signifies data frame)
  700.                   S  S  S        send seq , bit 2 low-order
  701.               P/F                poll/final bit, for recovery
  702.       R  R  R                    receive seq  (ACK)
  703.  
  704.    Acknowledgments are cumulative.  Recovery is typically to back up and
  705.    continue from the lost frame.  Use of the poll/final bit is beyond
  706.    the scope of this note.
  707.  
  708.    Acknowledgments may also be sent in supervisory frames, coded as
  709.    follows:
  710.  
  711.       8  7  6  5  4  3  2  1  <- bit number,  1 sent first
  712.                         0  1     (signifies supervisory frame)
  713.                   T  T           frame type (see below)
  714.               P/F                poll/final bit, for recovery
  715.       R  R  R                    receive seq  (ACK)
  716.  
  717.    Up to four frame types are possible; only two are required.  The
  718.    first is called RR, for "receive ready", and indicates acknowledgment
  719.    and that the receiver is prepared to process more frames.  The other,
  720.    RNR for "receive not ready", is used for flow control of the sender.
  721.    If flow control is not necessary, I suppose even this frame could be
  722.    dispensed with.
  723.  
  724.    The other supervisory frames, "reject" and "selective reject", are
  725.    varieties of negative acknowledgement that ask for retransmission of
  726.    all and one (respectively) of previously transmitted frames.
  727.    Positive acknowledgment and retransmission are the only really
  728.    necessary procedures, however.
  729.  
  730.    The third frame format is called Unnumbered.  Many possible functions
  731.    are specified in the various standards for these frames, including
  732.    initializing the link, reset sequence numbers, etc.  The basic format
  733.    is:
  734.  
  735.       8  7  6  5  4  3  2  1  <- bit number,  1 sent first
  736.                         1  1     (signifies unnumbered frame)
  737.             T  T  T     T  T           frame type
  738.                     P/F                poll/final bit, for recovery
  739.  
  740.  
  741. Robinson                                                       [Page 13]
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.