home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_q_t / draft-ietf-stdguide-ops-01.txt < prev    next >
Text File  |  1996-11-19  |  39KB  |  841 lines

  1.   
  2.   
  3.   Network Working Group                                          G.  Scott
  4.   INTERNET DRAFT                        Defense Information Systems Agency
  5.                                                              November 1996
  6.                               
  7.                    Guide for Internet Standards Writers
  8.                      <draft-ietf-stdguide-ops-01.txt>
  9.                                
  10.   Status of this Document
  11.   
  12.      This document is an Internet Draft.  Internet Drafts are working
  13.      documents of the Internet Engineering Task Force (IETF), its areas,
  14.      and its working groups.  Note that other groups may also distribute
  15.      working documents as Internet Drafts.
  16.   
  17.      Internet Drafts are draft documents valid for a maximum of six
  18.      months and may be updated, replaced, or obsoleted by other
  19.      documents at any time.  It is not appropriate to use Internet
  20.      Drafts as reference material or to cite them other than as a
  21.      "working draft" or "work in progress."
  22.   
  23.      To learn the current status of any Internet-Draft, please check the
  24.      ``1id-abstracts.txt'' listing contained in the Internet-Drafts
  25.      Shadow Directories on ds.internic.net (US East Coast),
  26.      nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
  27.      munnari.oz.au (Pacific Rim).
  28.   
  29.    Distribution of this document is unlimited. 
  30.   
  31.    This Internet Draft expires 23 May 1997.
  32.   
  33.   Abstract
  34.   
  35.      This document is a guide for Internet standard writers.  It defines
  36.      those characteristics that make standards coherent, unambiguous,
  37.      and easy to interpret.  Also, it singles out usage believed to have
  38.      led to unclear specifications, resulting in non-interoperable
  39.      interpretations in the past.  These guidelines are to be used with  |
  40.      RFC 1543, "Instructions to RFC Authors."                            |
  41.   
  42.      This version of the document is a draft.  It is intended to
  43.      generate further discussion and addition by the STDGUIDE working
  44.      group.  Please send comments to stdguide@midnight.com.  
  45.   
  46.   Table of Contents
  47.   
  48.   1    Introduction . . . . . . . . . . . . . . . . . . . . . . . . .
  49.   
  50.   2    General Guidelines . . . . . . . . . . . . . . . . . . . . . .
  51.   2.1  Protocol Description . . . . . . . 
  52.   2.2  Discussion of Security . . . . . . 
  53.   2.3  Level of Detail. . . . . . . .
  54.   2.4  Protocol Versions. . . . . . .
  55.   2.5  Decision History . . . . . . .
  56.   2.6  Response to Behavior Out of Scope. . . . . . 
  57.   2.7  The Liberal/Conservative Rule. . . . . . . . 
  58.  
  59.   draft-ietf-stdguide-ops-01.txt                                  [Page 1]
  60.   
  61.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  62.   
  63.   2.8  Handling of Protocol Options . . . . . . . . 
  64.   2.9  Indicating Requirement Levels. . . . . . . .                      |
  65.   2.10 Notational Conventions . . . . . .                                |
  66.   2.11 Implementation Experience. . . . . . . . . . 
  67.   2.12 Glossaries . . . . . . . . . .                                    |
  68.   
  69.   3    Specific Guidelines. . . . . . . . . . . . . . . . . . . . . .
  70.   3.1  Packet Diagrams. . . . . . . .
  71.   3.2  Summary Tables . . . . . . . .
  72.   3.3  State Machine Descriptions . . . . . . . . . 
  73.   
  74.   4    Document Checklist . . . . . . . . . . . . . . . . . . . . . .
  75.   
  76.   5    Security Considerations. . . . . . . . . . . . . . . . . . . .    |
  77.   
  78.   6    Working Group Chair's Address . . . . . . . . . . . . . . . .
  79.   
  80.   7    References . . . . . . . . . . . . . . . . . . . . . . . . . .
  81.   
  82.   CHANGES FROM PREVIOUS DRAFT. . . . . . . . . . . . . . . . . . . .     |
  83.   
  84.   
  85.   1  Introduction
  86.   
  87.      This document is a guide for Internet standard writers.  It offers 
  88.      guidelines on how to write a protocol specification with clarity,
  89.      precision, and completeness.  These guidelines are based on both
  90.      prior successful and unsuccessful IETF specification experiences. 
  91.      These guidelines are to be used with RFC 1543, "Instructions to RFC |
  92.      Authors," or its update.  Note that some guidelines may not apply   |
  93.      in certain situations.
  94.   
  95.      The goal is to increase the possibility that multiple
  96.      implementations of a protocol will interoperate.  Writing
  97.      specifications to these guidelines will not guarantee
  98.      interoperability.  However, a recognized barrier to the creation of
  99.      interoperable protocol implementations is unclear specifications.  
  100.   
  101.      Many will benefit from having well-written protocol specifications. 
  102.      Implementors will have a better chance to conform to the protocol
  103.      specification.  Protocol testers can use the specification to
  104.      derive unambiguous testable statements.  Purchasers and users of
  105.      the protocol will have a better understanding of its capabilities. 
  106.   
  107.   2  General Guidelines
  108.   
  109.      It is important that multiple readers and implementors of a
  110.      standard have the same understanding of a document.  To this end,
  111.      information should be orderly and detailed.  The following are
  112.      general guidelines intended to help in the production of such a
  113.      document. 
  114.   
  115.   
  116.   
  117.   
  118.   
  119.   draft-ietf-stdguide-ops-01.txt                                  [Page 2]
  120.   
  121.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  122.   
  123.   2.1  Protocol Description
  124.   
  125.      Standards track documents must include a description of the purpose |
  126.      or context of the protocol's use.  The author of a protocol
  127.      specification will have a great deal of knowledge as to the purpose
  128.      of the protocol.  However, the reader is more likely to have
  129.      general networking knowledge and experience, rather than expertise
  130.      in a particular protocol.    An explanation of the purpose will     |
  131.      give the reader a reference point for understanding the protocol    |
  132.      and where it fits in the Internet.  The Draft Standard RFC 1583 was |
  133.      recommended to the STDGUIDE working guide as providing a good       |
  134.      example of this in it "Protocol Overview" section.                  |
  135.   
  136.      The protocol's general description should also provide information  |
  137.      on the relationship between the different parties to the protocol.  |
  138.      This can be done by showing typical packet sequences.               |
  139.   
  140.      This also applies to the algorithms used by a protocol.  A detailed
  141.      description of the algorithms or citation of readily available
  142.      references that give such a description is necessary.
  143.   
  144.   2.2 Discussion of Security
  145.   
  146.      If the Internet is to achieve its full potential in commercial,
  147.      governmental, and personal affairs, it must assure users that
  148.      deliveries of their information transfers are free from tampering
  149.      or compromise.  Well-written security sections in standard protocol
  150.      documents can do much to achieve that condition.  Implementors will
  151.      find it easier to comply and do security.  Users can understand the
  152.      security measures in place, and so have faith in the Internet.
  153.   
  154.      The security section should address several topics.  Every          |
  155.      standards track document must discuss the security risks inherent   |
  156.      in the protocol being specified.  After the document's author has   |
  157.      set out the security risks the protocol is open to, he then must    |
  158.      discuss the remedies offered.  Additionally, the effects the        |
  159.      security measures have on the protocol's use and performance.  If
  160.      possible, the discussion should address how much insurance the
  161.      implementation of the security measures achieves.  
  162.   
  163.      When no security measures are offered, the author must provide a    |
  164.      detailed explanation why.  This discussion could present the        |
  165.      reasons why the security issues are unresolvable at this time. 
  166.      Alternatively, the author could present a case why security is
  167.      unneeded when using the protocol. 
  168.   
  169.      These security sections should be complete and separate.  If        |
  170.      security measures are part of the general protocol text, they will
  171.      be difficult to find.  If the security measures are not clear they
  172.      may not be implemented, nor will a user be assured that they exist.
  173.   
  174.      Finally, it is no longer acceptable that security sections consist
  175.      solely of statements similar to:  "Security issues are not
  176.      discussed in this RFC."
  177.   
  178.   
  179.   draft-ietf-stdguide-ops-01.txt                                  [Page 3]
  180.   
  181.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  182.   
  183.   2.3  Level of Detail
  184.   
  185.      The author should consider what level of descriptive detail best    |
  186.      conveys the protocol's intent.  Concise text has several
  187.      advantages.  It makes the document easier to read.  Such text
  188.      reduces the chance for conflict between different portions of the
  189.      specification.  The reader can readily identify the required
  190.      protocol mechanisms in the standard.  Also, it makes it easier to
  191.      identify the requirements for protocol implementation.  A 
  192.      disadvantage of concise descriptions is that a reader may not fully
  193.      comprehend the reasoning behind the protocol, and thus make
  194.      assumptions that will lead to implementation errors.
  195.   
  196.      Longer descriptions may be necessary  to explain purpose,           |
  197.      background, rationale, implementation experience, or to provide     |
  198.      tutorial information.   This helps the reader  understand the       |
  199.      protocol.  Yet several dangers exist with lengthy text.  Finding
  200.      the protocol requirements in the text is difficult or confusing.  
  201.      The same mechanism may have multiple descriptions, which leads to   |
  202.      misinterpretations or conflict.  Lengthy text is a challenge to the
  203.      attention span of some readers.  Finally, it is more difficult to
  204.      comprehend, a consideration as English is not the native language
  205.      of the many worldwide readers of IETF standards. 
  206.   
  207.      One approach is to divide the standard into sections:  one
  208.      describing the protocol concisely, while another section consists
  209.      of explanatory text.  The STD 3/RFC 1122/RFC 1123 and Draft         |
  210.      Standard RFC 1583 provides examples of this method.                 |
  211.   
  212.   2.4  Protocol Versions
  213.   
  214.      Often the standard is specifying a new version of an existing
  215.      protocol.  In such a case, the authors should detail the
  216.      differences between the previous version and the new version.  This
  217.      should include the rationale for the changes, for example,
  218.      implementation experience, changes in technology, responding to
  219.      user demand, etc.
  220.   
  221.   2.5  Decision History
  222.   
  223.      In standards development, reaching consensus requires making
  224.      difficult choices.  By including a discussion history and           |
  225.      rationales for a decision, the author can prevent future revisiting |
  226.      of these disagreements later, when the original parties have moved
  227.      on.  Also, the knowledge of the "why" is as useful to an            |
  228.      implementor as the description of "how."  For example,  the         |
  229.      alternative not taken may have been simpler to implement, so
  230.      including the logic behind the choice may prevent future
  231.      implementors from taking nonstandard shortcuts.  
  232.   
  233.   2.6  Response to Out of Specification Behavior
  234.   
  235.      The STDGUIDE working group recommends that detail description of    |
  236.      the actions taken in case of behavior that is deviant from or
  237.      exceeds the specification be included.  This is an area where
  238.   
  239.   draft-ietf-stdguide-ops-01.txt                                  [Page 4]
  240.   
  241.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  242.   
  243.      implementors often differ in opinion as to the appropriate
  244.      response.  By specifying a common response, the standard author can
  245.      reduce the risk that different inplementations will come in to      |
  246.      conflict.                                                           |
  247.   
  248.      The standard should describe responses to behavior explicitly
  249.      forbidden or out of the boundaries defined by the specification. 
  250.      Two possible approaches to such cases are discarding, or invoking
  251.      error-handling mechanisms.  If discarding is chosen, detailing the
  252.      disposition may be necessary.  For instance, treat dropped frames
  253.      as if they were never received, or reset an existing connection or
  254.      adjacency state.
  255.   
  256.      The specification should describe actions taken when critical
  257.      resource or performance scaling limits are exceeded.  This is not
  258.      necessary for every case.  It is necessary for cases where a risk
  259.      of network degradation or operational failure exists.  In such
  260.      cases, a consistent behavior between implementations is necessary.
  261.   
  262.   2.7  The Liberal/Conservative Rule
  263.   
  264.      A rule, first stated in RFC 791, recognized as having benefits in
  265.      implementation robustness and interoperability is:
  266.   
  267.              "Be liberal in what you accept, and
  268.                conservative in what you send."
  269.   
  270.      Or establish restrictions on what a protocol transmits, but be able |
  271.      to deal with every conceivable error received.    Caution is urged  |
  272.      in applying this approach in standards track protocols.  It has in  |
  273.      the past lead to conflicts between vendors when interoperability    |
  274.      fails.  The sender accuses the receiver of failing to be liberal    |
  275.      enough, and the receiver accuses the sender of not being            |
  276.      conservative enough.  Therefore, the author is obligated to provide |
  277.      extensive detail on send and receive behavior.                      |
  278.   
  279.      To avoid any confusion between the two, recommend that standard
  280.      authors specify send and receive behavior separately.    The
  281.      description of reception will require the most detailing.  For      |
  282.      implementations will be expected to accept any packet from the
  283.      network without failure or malfunction.  Therefore, the actions
  284.      taken to achieve that result, need to be laid out in the protocol
  285.      specification.  Standard authors should consider not just how to
  286.      survive on the network, but achieve the highest level of
  287.      cooperation possible to limit the amount of network disruption. 
  288.      The appearance of undefined information or conditions must not
  289.      cause a network or host failure.  This requires specification on
  290.      how to attempt acceptance of most of the packets.  Two approaches
  291.      are available, either using as much of the packet's content as
  292.      possible, or invoking error procedures.  The author should specify |
  293.      a dividing line on when to take which approach.
  294.   
  295.      A case for consideration is that of a routing protocol, where
  296.      acceptance of flawed information can cause network failure.  For
  297.      protocols such as this, the specification should identify packets
  298.   
  299.   draft-ietf-stdguide-ops-01.txt                                  [Page 5]
  300.   
  301.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  302.   
  303.      that could have differing interpretations and mandate that they be  |
  304.      either rejected completely or the nature of the attempt to recover  |
  305.      some information from them.  For example, routing updates that      |
  306.      contain more data than the tuple count shows.  The protocol authors |
  307.      should consider whether some trailing data can be accepted as       |
  308.      additional routes, or to reject the entire packet as suspect        |
  309.      because it is non-conformant.                                       |
  310.   
  311.   2.8  Handling of Protocol Options
  312.   
  313.      Standards with many optional features increase the chance of
  314.      non-interoperable implementations.  The danger is that different
  315.      protocol implementations may specify some optional combinations
  316.      that are unable to interoperate with each other.  Ideally,
  317.      implementation experience purges options from the protocol while
  318.      the document moves along the standard track.  
  319.   
  320.      Therefore, options should only be present in a protocol to          |
  321.      support a particular market, e.g., the financial industry, or       |
  322.      network environment, e.g., a network constrained by limited         |
  323.      bandwidth.  The protocol specification must explain the full        |
  324.      implications of either using the option or not, and the case for
  325.      choosing either course.  As part of this, the author needs to       |
  326.      consider and describe how the options are intended to be used       |
  327.      alongside other protocols.  However, omission of the optional item  |
  328.      should have no interoperability consequences for the implementation
  329.      that does so.
  330.   
  331.      Certain cases will require the specifying of mutually exclusive
  332.      options within a protocol.  That is, the implementation of an
  333.      optional feature precludes the implementation of the other optional
  334.      feature.  For clarity, the author needs to state  when to implement |
  335.      one or the other, what the effect of choosing one over the other
  336.      is, and what problems the implementor or user may face.  The choice
  337.      of one or the other options should have no interoperability
  338.      consequences between multiple implementations.
  339.     
  340.   2.9 Indicating Requirement Levels                                      |
  341.   
  342.      The Internet-Draft draft-bradner-key-words-03.txt, "Key words for   |
  343.      use in RFCs to Indicate Requirement Levels," defines several words  |
  344.      that can be used in many standards track documents to signify the   |
  345.      mandatory protocol features from the optional features of the       |
  346.      specification.  The definitions provided are as they should be      |
  347.      interpreted in implementing IETF standards.  Note that the force of |
  348.      these words is modified by the requirement level of the document in |
  349.      which they are used.                                                |
  350.   
  351.      Some authors of existing IETF standards have chosen to capitalize   |
  352.      these words to clarify or stress their intent, but this is not      |
  353.      required.  What is necessary, is that these words are used          |
  354.      consistently throughout the document.  That is, every mandatory or  |
  355.      optional protocol requirement shall be identified by the authors    |
  356.      and documented by these words.  If a requirement is not identified  |
  357.   
  358.   
  359.   draft-ietf-stdguide-ops-01.txt                                  [Page 6]
  360.   
  361.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  362.   
  363.      in this manner, it will not be considered an equal part of the      |
  364.      protocol and be likely passed over by the implementor.              |
  365.   
  366.   2.10  Notational Conventions
  367.   
  368.      Formal syntax notations can be used to define complicated protocol
  369.      concepts or data types, and to specify values of these data types.  |
  370.      This permits the protocol to be written without concern on how the
  371.      implementation is constructed, or how the data type is represented
  372.      during transfer.  The specification is simplified because it can be
  373.      presented as "axioms" that will be proven by implementation.
  374.   
  375.      The formal specification of the syntax used should be referenced in
  376.      the text of the standard.  Any extensions, subsets, alterations, or
  377.      exceptions to the formal syntax should be defined.  
  378.   
  379.      The STD 11/RFC 822 provides an example of this.  In RFC 822
  380.      (Section 2 and Appendix D) the Backus-Naur Form (BNF) meta-language
  381.      was extended to make its representation smaller and easier to
  382.      understand.  Note, that the Internet-Draft                          |
  383.      draft-ietf-drums-abnf-01.txt, "Augmented BNF for Syntax             |
  384.      Specifications: ABNF," captures                                     |
  385.      RFC 822's definition so that it can be used as a reference.         |
  386.      Another example is STD 16/RFC 1155 (Section 3.2) where a subset of
  387.      the Abstract Syntax Notation One (ASN.1) is defined.
  388.   
  389.      The author of a standards track protocol needs to consider several  |
  390.      things before they use a formal syntax notation.  Is the formal     |
  391.      specification language being used parseable by an existing machine? |
  392.      If no parser exists, is there enough information provided in the    |
  393.      specification to permit the building of a parser?  If not, it is    |
  394.      likely the reader will not have enough information to decide what   |
  395.      the notation means.  Also, the author should remember machine       |
  396.      parseable syntax is often unreadable by humans, and can make the    |
  397.      specification excessive in length.  Therefore, syntax notations     |
  398.      cannot in place of a clearly written protocol description.          |
  399.   
  400.   2.11  Implementation Experience
  401.   
  402.      For a protocol to be designated a standard, it must go through the
  403.      rigors of actual implementation.  This implementation experience
  404.      should be captured in the final document.  For example, lessons
  405.      learned from bake-offs between multiple vendors.  
  406.   
  407.   2.12  Glossary                                                         |
  408.   
  409.      Every standards track RFC should have a glossary, as words can have |
  410.      many meanings.  By defining any new words introduced, the author    |
  411.      can avoid confusing or misleading the implementer.  The definition  |
  412.      should appear on the word's first appearance within the text of the |
  413.      protocol specification, and in a separate glossary section.         |
  414.   
  415.      It is likely that definition of the protocol will rely on many      |
  416.      words frequently used in IETF documents.  All authors must be       |
  417.      knowledgeable of the common accepted definitions of these           |
  418.   
  419.   draft-ietf-stdguide-ops-01.txt                                  [Page 7]
  420.   
  421.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  422.   
  423.      frequently used words.  FYI 18/RFC 1983, "Internet Users'           |
  424.      Glossary," provides definitions that are specific to the Internet.  |
  425.      Any deviation from these definitions by authors is strongly         |
  426.      discouraged.  If circumstances require deviation, an author should  |
  427.      state that he is altering the commonly accepted definition, and     |
  428.      provide rationale as to the necessity of doing so.  The altered     |
  429.      definition must be included in the Glossary section.                |
  430.   
  431.      If the author uses the word as commonly defined, she does not have  |
  432.      to include the definition in the glossary.  As a minimum,  FYI      |
  433.      18/RFC 1983 should be referenced as a source.                       |
  434.   
  435.   2.13  Protocol Parameter Assignment                                    |
  436.   
  437.      The common use of the Internet standard track protocols by the      |
  438.      Internet community requires that the unique values be assigned to   |
  439.      the parameter fields.  The Internet Assigned Numbers Authority      |
  440.      (IANA) is the central coordinator for the assignment of unique      |
  441.      parameter values for Internet protocols.  The authors of a          |
  442.      developing protocol that use a link, socket, port, protocol, etc.,  |
  443.      need to contact the IANA to receive a number assignment.  For       |
  444.      further information on parameter assignment and current             |
  445.      assignments, authors should reference STD 2/RFC 1700, "Assigned     |
  446.      Numbers."                                                           |
  447.   
  448.   3  Specific Guidelines
  449.   
  450.      The following are guidelines on how to present specific technical
  451.      information in standards.
  452.   
  453.   3.1  Packet Diagrams
  454.   
  455.      Most link, network, and transport layer protocols have packet
  456.      descriptions.   The STDGUIDE working group recommends that packet   |
  457.      diagrams be included in the standard, as they are very helpful to
  458.      the reader.  The preferred form for packet diagrams is a sequence
  459.      of long words in network byte order, with each word horizontal on
  460.      the page and bit numbering at the top:  
  461.   
  462.   
  463.      0                   1                   2                   3  
  464.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  465.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  466.      |Version| Prio. |                   Flow Label                  |
  467.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  468.   
  469.   
  470.      In cases where a packet is strongly byte-aligned rather than
  471.      word-aligned (e.g., when byte-boundary variable-length fields are
  472.      used), display packet diagrams in a byte-wide format.  The author   |
  473.      can use different height boxes for short and long words, and broken |
  474.      boxes for variable-length fields:
  475.   
  476.   
  477.   
  478.   
  479.   draft-ietf-stdguide-ops-01.txt                                  [Page 8]
  480.   
  481.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  482.   
  483.                          0 1 2 3 4 5 6 7
  484.                          +-+-+-+-+-+-+-+-+
  485.                          |    Length N   |
  486.                          +-+-+-+-+-+-+-+-+
  487.                          |               |
  488.                          +    Address    +
  489.                                 ...
  490.                          +   (N bytes)   +
  491.                          |               |
  492.                          +-+-+-+-+-+-+-+-+
  493.                          |               |
  494.                          +  2-byte field +
  495.                          |               |
  496.                          +-+-+-+-+-+-+-+-+
  497.                                
  498.   
  499.   3.2  Summary Tables
  500.   
  501.      The specifications of some protocols are particularly lengthy,
  502.      sometimes covering a hundred pages or more.  In such cases the
  503.      inclusion of a summary table can reduce the risk of conformance
  504.      failure by an implementation through oversight.  A summary table
  505.      itemizes what in a protocol is mandatory, optional, or prohibited. 
  506.      Summary tables do not guarantee conformance, but serve to assist an
  507.      implementor in checking that they have addressed all protocol
  508.      features.  
  509.   
  510.      The summary table will consist of, as a minimum, four (4) columns: 
  511.      Protocol Feature, Section Reference, Status, and
  512.      References/Footnotes.  The author may add columns if they further   |
  513.      explain or clarify the protocol.                                    |
  514.   
  515.      In the Protocol Feature column describe the feature, for example, a
  516.      command word.   We recommend grouping series of related             |
  517.      transactions under descriptive headers, for example, RECEPTION.  
  518.   
  519.      Section reference directs the implementor to the section,
  520.      paragraph, or page that describes the protocol feature in detail.
  521.   
  522.      Status indicates whether the feature is mandatory, optional, or
  523.      prohibited.   The author can either use a separate column for each |
  524.      possibility, or a single column with appropriate codes.  These
  525.      codes need to be defined at the start of the summary table to avoid
  526.      confusion.  Possible status codes:
  527.   
  528.         M  - must
  529.         M - mandatory
  530.         MN - must not
  531.         O - optional
  532.         S  - should
  533.         X - prohibited
  534.         SN - should not
  535.   
  536.      In the References/Footnotes column  authors can point to other      |
  537.      RFCs that are necessary to consider in implementing this protocol
  538.   
  539.   draft-ietf-stdguide-ops-01.txt                                  [Page 9]
  540.   
  541.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  542.   
  543.      feature, or any footnotes necessary to explain the implementation
  544.      further.  
  545.   
  546.      The STD 3/RFC 1122/RFC 1123 provides examples of summary tables.
  547.   
  548.   3.3  State Machine Descriptions
  549.   
  550.      A convenient method of presenting a protocol's behavior is as a
  551.      state-machine model.   That is, a protocol can be described by a
  552.      series of states resulting from a command, operation, or
  553.      transaction.  State-machine models define the variables and
  554.      constants that establish a state, the events that cause state
  555.      transitions, and the actions that result from those transitions.
  556.      Through these models, an understanding of the protocol's dynamic    |
  557.      operation  as sequence of state transitions that occur for any      |
  558.      given event is possible.    State transitions can be detailed by    |
  559.      diagrams, tables, or time lines.                                    |
  560.   
  561.      Note that state-machine models are never to take the place of       |
  562.      detailed text description of the specification.  They are adjuncts  |
  563.      to the text.  The protocol specification shall always take          |
  564.      precedence in the case of a conflict.                               |
  565.   
  566.      When using a state transition diagram, show each possible protocol
  567.      state as a box connected by state transition arcs.  The author      |
  568.      should label each arc with the event that causes the transition,    |
  569.      and, in parentheses, any actions taken during the transition.  The
  570.      STD 5/RFC 1112 provides an example of such a diagram.  As ASCII
  571.      text is the preferred storage format for RFCs, only simple diagrams
  572.      are possible.  Tables can summarize more complex or extensive state
  573.      transitions.  
  574.   
  575.      In a state transition table, read events vertically and states
  576.      horizontally.    The form, action/new state, represents state       |
  577.      transitions and actions.  Commas separate multiple actions, and     |
  578.      succeeding lines are used as required.  The authors should present  |
  579.      multiple actions in the order they must be executed, if relevant. 
  580.      Letters that follow the state indicate an explanatory footnote. 
  581.      The dash ('-') indicates an illegal transition.  The STD 51/RFC
  582.      1661 provides an example of such a state transition table.  The
  583.      initial columns and rows of that table are below as an example:
  584.   
  585.            | State
  586.            |    0         1         2         3         4         5
  587.      Events| Initial   Starting  Closed    Stopped   Closing   Stopping
  588.      ------+-----------------------------------------------------------
  589.       Up   |    2     irc,scr/6     -         -         -         -
  590.       Down |    -         -         0       tls/1       0         1
  591.       Open |  tls/1       1     irc,scr/6     3r        5r        5r
  592.       Close|    0       tlf/0       2         2         4         4
  593.            |
  594.        TO+ |    -         -         -         -       str/4     str/5
  595.        TO- |    -         -         -         -       tlf/2     tlf/3
  596.      
  597.   
  598.   
  599.   draft-ietf-stdguide-ops-01.txt                                 [Page 10]
  600.   
  601.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  602.   
  603.      The STD 18/RFC 904 also presents state transitions in table format. 
  604.      However, it lists transitions in the form n/a, where n is the next
  605.      state and a represents the action.  The method in RFC 1661 is
  606.      preferred as new-state logically follows action.  Also, this RFC's  |
  607.      Appendix C models transitions as the Cartesian product of two state
  608.      machines.  This is a more complex representation that may be
  609.      difficult to comprehend for those readers that are unfamiliar with
  610.      the format.   The working group recommends that authors present     |
  611.      tables as defined in the previous paragraph.  
  612.   
  613.      A final method of representing state changes is by a timeline.  The
  614.      two sides of the timeline represent the machines involved in the
  615.      exchange.  The author lists the states the machines enter as time   |
  616.      progresses (downward) along the outside of timeline.  Within the
  617.      timeline, show the actions that cause the state transitions.  An
  618.      example:
  619.   
  620.               client                                     server
  621.   
  622.                  |                                          |
  623.                  |                                          |   LISTEN
  624.      SYN_SENT    |-----------------------                   |
  625.                  |                       \ syn j            |
  626.                  |                        ----------------->|   SYN_RCVD
  627.                  |                                          |
  628.                  |                        ------------------|
  629.                  |        syn k, ack j+1 /                  |
  630.      ESTABLISHED |<----------------------                   |
  631.                  |                                          |
  632.   
  633.   
  634.   4  Document Checklist
  635.   
  636.      The following is a checklist based on these guidelines that can be  |
  637.      applied to a document:
  638.   
  639.      o Does it explain the purpose of the protocol?
  640.      o Does it reference or explain the algorithms used in the
  641.        protocol?
  642.      o Does it give packet diagrams in recommended form, if applicable?
  643.      o Does it use the recommended Internet meanings for any terms use   |
  644.        to specify the protocol?                                          |
  645.      o Are new or altered definitions for terms given in a glossary?     |
  646.      o Does it separate explanatory portions of the document from
  647.        requirements?
  648.      o Does it describe differences from previous versions, if
  649.        applicable?
  650.      o Does it give examples of protocol operation?
  651.      o Does it specify behavior in the face of incorrect operation by
  652.        other implementations?
  653.      o Does it delineate which packets should be accepted for
  654.        processing and which should be ignored?
  655.      o Does it consider performance and scaling issues?
  656.      o How many optional features does it specify?  If more than [X],
  657.        does it separate them into option classes?
  658.   
  659.   draft-ietf-stdguide-ops-01.txt                                 [Page 11]
  660.   
  661.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  662.   
  663.      o Have all combinations of options or option classes been examined
  664.        for incompatibility?
  665.      o Does it explain the rational and use of options?
  666.      o If multiple descriptions of a requirement are given, does it
  667.        identify one as binding?
  668.      o Have all mandatory and optional requirements be identified and    |
  669.        documented by the accepted key words that define Internet         |
  670.        requirement levels?                                               |
  671.   
  672.   5.  Security Considerations                                            |
  673.   
  674.      This document does not define any security service or mechanism.  It|
  675.      does call on IETF standards authors to define clearly the way the   |
  676.      protocol they are specifying does or does not provide security      |
  677.      assurances to the user.                                             |
  678.   
  679.   6  Working Group Chair's Address
  680.   
  681.      Gregor D. Scott
  682.      Director, Defense Information Systems Agency
  683.      ATTN: JIEO-JEBBD
  684.      Ft. Monmouth, NJ  07703-5613
  685.      USA
  686.      
  687.      Phone:  (908) 427-6856                                              |
  688.      Fax:    (908) 532-0853                                              |
  689.      EMail:  scottg@ftm.disa.mil
  690.      
  691.   7  References
  692.   
  693.    RFC 791   "Internet Protocol (IP)," J. Postel, September 1981.
  694.   
  695.    RFC 904   "Exterior Gateway Protocol formal specification," D.
  696.                Mills, April 1984
  697.   
  698.    RFC 1112  "Host extensions for IP multicasting," S. Deering,
  699.                August 1989
  700.   
  701.    RFC 1122  "Requirements for Internet Hosts -- Communication Layers,"
  702.                October 1989
  703.   
  704.    RFC 1123  "Requirements for Internet hosts -- Application and
  705.                Support," October 1989
  706.   
  707.    RFC 1311  "Introduction to the STD Notes"
  708.   
  709.    RFC 1583  "OSPF Version 2"                                            |
  710.   
  711.    RFC 1602  "The Internet Standards Process - Revision 2"
  712.   
  713.    RFC 1661  "The Point-to-Point Protocol (PPP)," W. Simpson, July 1994
  714.   
  715.    RFC 1700  "Assigned Numbers," J. Reynolds, J. Postel, October 1994    |
  716.   
  717.    RFC 1983  "Internet Users' Glossary"                                  |
  718.   
  719.   draft-ietf-stdguide-ops-01.txt                                 [Page 12]
  720.   
  721.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  722.   
  723.   
  724.    draft-ietf-drums-abnf-01.txt, "Augmented BNF for Syntax               |
  725.      Specifications: ABNF," D. Crocker                                   |
  726.   
  727.    draft-bradner-key-words-03.txt, "Key words for use in RFCs to         |
  728.      Indicate Requirement Levels," S. Bradner                            |
  729.   
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  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.  
  775.  
  776.  
  777.  
  778.  
  779.   draft-ietf-stdguide-ops-01.txt                                 [Page 13]
  780.   
  781.   INTERNET DRAFT    Guide for Internet Standards Writers     November 1996
  782.   
  783.   CHANGES FROM PREVIOUS DRAFT
  784.   
  785.   Changes are marked by "|" along the right margin.  Many of the changes
  786.   are editorial in nature.  Some were rewriting sentences for clarity.
  787.   Others are noted as follows:
  788.   
  789.   1.   A reference to RFC 1543 was added to the Abstract and Introduction
  790.   so that authors would know that this was not a stand alone document. 
  791.   That they had to comply to RFC 1543 as well.
  792.   
  793.   2.   In section 2.1, text recommending a "Protocol Overview" and a
  794.   description of how the parties to the protocol relate was added. 
  795.   Reference to Draft Standard RFC 1583 was added.
  796.   
  797.   3.   In section 2.2, text was added calling for discussion of all the
  798.   security risks a protocol faces, rather than just the security problems
  799.   the protocol solves.
  800.   
  801.   4.   In section 2.7, cautionary text regarding the use of the
  802.   liberal/conservative rule was added.
  803.   
  804.   5.   In section 2.8, text calling on authors to consider how protocol
  805.   options are used with other protocols was added.
  806.   
  807.   6.   A new section, "2.9 Indicating Requirement Levels," was added to
  808.   discuss the use of key words to identify protocol mandatory and option
  809.   features.
  810.   
  811.   7.   In section 2.10, a reference to DRUMS work in defining ABNF, and 
  812.   cautionary text on using formal syntax notation was added.
  813.   
  814.   8.   A new section, "2.12 Glossary," was added calling on standards
  815.   track protocol authors to include a glossary of new or revised terms.
  816.   
  817.   9.   A new section, "2.13 Protocol Parameter Assignment," calls on
  818.   authors to get such assignments from IANA.
  819.   
  820.   10.  In section 3.3, a statement that text takes precedence over state
  821.   machine models was added.
  822.   
  823.   11.  The previous draft's section 4, "Glossary," was deleted.  In its
  824.   place, a reference to draft-bradner-key-words-03.txt is made in the new
  825.   section 2.9.
  826.   
  827.   12.  New items were added to section 4, "Document Checklist," to reflect
  828.   changes above.
  829.   
  830.   13.  A new section 5, "Security Considerations," was added.
  831.   
  832.      
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.   draft-ietf-stdguide-ops-01.txt                                  [Page 14]
  840.  
  841.