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-02.txt < prev    next >
Text File  |  1997-03-14  |  42KB  |  976 lines

  1.  
  2.  
  3.  
  4. Network Working Group                                  G.  Scott, Editor
  5. INTERNET DRAFT                        Defense Information Systems Agency
  6.                                                               March 1997
  7.  
  8.                   Guide for Internet Standards Writers
  9.                     <draft-ietf-stdguide-ops-02.txt>
  10.  
  11. Status of this Memo
  12.  
  13.   This document is an Internet Draft.  Internet Drafts are working
  14.   documents of the Internet Engineering Task Force (IETF), its areas,
  15.   and its working groups.  Note that other groups may also distribute
  16.   working documents as Internet Drafts.
  17.  
  18.   Internet Drafts are draft documents valid for a maximum of six months
  19.   and may be updated, replaced, or obsoleted by other documents at any
  20.   time.  It is not appropriate to use Internet Drafts as reference
  21.   material or to cite them other than as a "working draft" or "work in
  22.   progress."
  23.  
  24.   To learn the current status of any Internet-Draft, please check the
  25.   ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
  26.   Directories on ds.internic.net (US East Coast), nic.nordu.net
  27.   (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
  28.   Rim).
  29.  
  30.   Distribution of this document is unlimited. 
  31.  
  32.   This Internet Draft expires on 17 September 1997.
  33.  
  34. Abstract
  35.  
  36.   This document is a guide for Internet standard writers.  It defines
  37.   those characteristics that make standards coherent, unambiguous, and
  38.   easy to interpret.  Also, it singles out usage believed to have led
  39.   to unclear specifications, resulting in non-interoperable
  40.   interpretations in the past.  These guidelines are to be used with
  41.   RFC 1543, "Instructions to RFC Authors."
  42.  
  43.   This version of the document is a draft.  It is intended to generate
  44.   further discussion and addition by the STDGUIDE working group. 
  45.   Please send comments to stdguide@midnight.com.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. draft-ietf-stdguide-ops-02.txt                                  [Page 1]
  53.  
  54. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  55.  
  56.  
  57. CHANGES FROM THE PREVIOUS DRAFT
  58.  
  59.   The order of section 2 was changed to emphasize security
  60.   considerations.
  61.  
  62.   Section 2.1 was extensively revised to cover additional points
  63.   regarding security.
  64.  
  65.   A section (2.3) was added discussing the need for each IETF Standard
  66.   to have a description of the target audience.
  67.  
  68.   The protocol option section (2.9) was expanded to cover default
  69.   settings, separate option documents, permitting options in support of
  70.   future extensibility, and the impact of implementation experience on
  71.   proposed options.
  72.  
  73.   The subsection on Implementation Experience was deleted.  The affect
  74.   of implementation experience on the standard is now discussed as part
  75.   of subsections 2.6 and 2.9.  This was done to keep related
  76.   information together. 
  77.  
  78.   Text in sections 2.2, 2.10, 4, and 5 were revised for clarity.
  79.  
  80.   Section 2.12 was revised to require the standard to specify the rules
  81.   and procedures by which IANA will register constants and tags. 
  82.  
  83.   A section (2.13) was added to require standards to address management
  84.   issues.
  85.  
  86.   A section (2.14) was added to require standards to address
  87.   scalability issues.
  88.  
  89.   A section (2.15) was added to require standards to address network
  90.   stability.
  91.  
  92.   A section (3.4) was added to discus how to support multilingual
  93.   character sets.
  94.  
  95. Table of Contents
  96.  
  97. 1     Introduction
  98.  
  99. 2     General Guidelines
  100. 2.1   Discussion of Security 
  101. 2.2   Protocol Description
  102.  
  103.  
  104. draft-ietf-stdguide-ops-02.txt                                  [Page 2]
  105.  
  106. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  107.  
  108.  
  109. 2.3   Target Audience
  110. 2.4   Level of Detail 
  111. 2.5   Protocol Versions 
  112. 2.6   Decision History
  113. 2.7   Response to Behavior Out of Scope 
  114. 2.8   The Liberal/Conservative Rule 
  115. 2.9   Handling of Protocol Options
  116. 2.10  Indicating Requirement Levels 
  117. 2.11  Notational Conventions  
  118. 2.12  IANA Considerations 
  119. 2.13  Network Management Considerations 
  120. 2.14  Scalability Considerations
  121. 2.15  Network Stability 
  122. 2.16  Glossaries
  123.  
  124. 3     Specific Guidelines 
  125. 3.1   Packet Diagrams 
  126. 3.2   Summary Tables
  127. 3.3   State Machine Descriptions
  128. 3.4   Character Sets
  129.  
  130. 4     Document Checklist 
  131.  
  132. 5     Security Considerations  
  133.  
  134. 6     References
  135.  
  136. 7     Acknowledgments 
  137.  
  138. 8     Editor's Address
  139.  
  140. 1  Introduction
  141.  
  142.   This document is a guide for Internet standard writers.  It offers 
  143.   guidelines on how to write a standards-track document with clarity,
  144.   precision, and completeness.  These guidelines are based on both
  145.   prior successful and unsuccessful IETF specification experiences. 
  146.   These guidelines are to be used with RFC 1543, "Instructions to RFC
  147.   Authors," or its update.  Note that some guidelines may not apply in
  148.   certain situations.  The process for standardizing protocols and
  149.   procedures is given in BCP 9/RFC 2026, "The Internet Standards
  150.   Process -- Revision 3."
  151.  
  152.   The goal is to increase the possibility that multiple implementations
  153.   of a protocol will interoperate.  Writing specifications to these
  154.  
  155.  
  156. draft-ietf-stdguide-ops-02.txt                                  [Page 3]
  157.  
  158. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  159.  
  160.  
  161.   guidelines will not guarantee interoperability.  However, a
  162.   recognized barrier to the creation of interoperable protocol
  163.   implementations is unclear specifications.  
  164.  
  165.   Many will benefit from having well-written protocol specifications. 
  166.   Implementors will have a better chance to conform to the protocol
  167.   specification.  Protocol testers can use the specification to derive
  168.   unambiguous testable statements.  Purchasers and users of the
  169.   protocol will have a better understanding of its capabilities. 
  170.  
  171. 2  General Guidelines
  172.  
  173.   It is important that multiple readers and implementors of a standard
  174.   have the same understanding of a document.  To this end, information
  175.   should be orderly and detailed.  The following are general guidelines
  176.   intended to help in the production of such a document.  The IESG may
  177.   require that all or some of the following sections appear in a
  178.   standards track document.
  179.  
  180. 2.1 Discussion of Security
  181.  
  182.   If the Internet is to achieve its full potential in commercial,
  183.   governmental, and personal affairs, it must assure users that their
  184.   information transfers are free from tampering or compromise.  Well-
  185.   written security sections in standards-track documents can help
  186.   promote the confidence level required.  For an implementor will find
  187.   it easier to provide with the security measures specified.  While
  188.   users will understand the security measures, and so have a higher
  189.   level of trust in the Internet.  Above all, new protocols and
  190.   practices must not worsen overall Internet security. 
  191.  
  192.   A significant threat to the Internet are those individuals who are
  193.   motivated and capable of exploiting circumstances, events, or
  194.   vulnerabilities to cause harm by denying service, and/or destroying,
  195.   disclosing, or modifying information.  Standards authors must accept
  196.   that the protocol they specify will be subject to attack.  They are
  197.   responsible for determining what attacks are possible, and for
  198.   detailing the nature of the attacks in the document.  Otherwise, they
  199.   must convincingly argue that attack is not realistic in a specific
  200.   environment, and restrict the use of the protocol to that
  201.   environment. 
  202.  
  203.   After the document has exhaustively identified the security risks the
  204.   protocol is exposed to, the authors must formulate and detail a
  205.   defense against those attacks.  They must discuss the applicable
  206.  
  207.  
  208. draft-ietf-stdguide-ops-02.txt                                  [Page 4]
  209.  
  210. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  211.  
  212.  
  213.   countermeasures employed, or the risk the user is accepting by using
  214.   the protocol.  The countermeasures may be provided by a protocol
  215.   mechanism or by reliance on external mechanisms.  Authors should be
  216.   knowledgeable of exiting security mechanisms, and reuse them if
  217.   practical.  When cryptographic algorithms are use, the protocol
  218.   should be written to permit its substitution with another algorithm
  219.   in the future.  Finally, the authors should discuss implementation
  220.   hints or guidelines, e.g., how to deal with untrustworthy data or
  221.   peer systems.  
  222.  
  223.   Additionally, the effects the security measures have on the
  224.   protocol's use and performance should be discussed.  Security
  225.   measures will have an impact on the environment they are used in. 
  226.   Perhaps users will now be locked out of portions of the Internet
  227.   previously open to them, or users will experience a degradation in
  228.   the speed of service.  The user may decided to accept a greater risk
  229.   in exchange for improved access or service.  But the user must be
  230.   able to make an informed decision.  They need to understand the risks
  231.   they are facing and the costs of reducing their risk.  
  232.  
  233.   The discussion of security can be concentrated in the Security
  234.   Considerations section of the document, or throughout the document
  235.   where it is relevant to particular parts of the specification.  If
  236.   the second approach is taken, the Security Considerations section
  237.   must summarized and make reference to the appropriate specification
  238.   sections.  This will insure that the protocol's security measures are
  239.   emphasized to implementor and user both.  
  240.  
  241.   Currently, a RFC is being considered that would give guidance on how
  242.   to do a security analysis.  It will provide a listing of classes of
  243.   attacks, and methods of analysis that are useful in developing
  244.   countermeasures to them.  Standards authors should obtain a current
  245.   copy of this RFC to assist them in their preparation of the security
  246.   portion of the standard.
  247.  
  248.   Finally, it is no longer acceptable that Security Considerations
  249.   sections consist solely of statements to the effect that security was
  250.   not considered in preparing the standard.
  251.  
  252.   Some examples of Security Considerations sections are found in
  253.   STD 33/RFC 1350, STD 51/RFC 1662, and STD 53/RFC 1939.
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260. draft-ietf-stdguide-ops-02.txt                                  [Page 5]
  261.  
  262. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  263.  
  264.  
  265. 2.2  Protocol Description
  266.  
  267.   Standards track documents must include a description of the protocol. 
  268.   This description should address the protocol's purpose, intended
  269.   functions, and services it provides.  Also addressed should be the
  270.   arena, circumstances, or any special considerations of its use.  
  271.  
  272.   The authors of a protocol specification will have a great deal of
  273.   knowledge as to the reason for the protocol.  However, the reader is
  274.   more likely to have general networking knowledge and experience,
  275.   rather than expertise in a particular protocol.  An explanation of
  276.   it's purpose and use will give the reader a reference point for
  277.   understanding the protocol, and where it fits in the Internet.  The
  278.   Draft Standard RFC 1583 was recommended to the STDGUIDE working guide
  279.   as providing a good example of this in it's "Protocol Overview"
  280.   section. 
  281.  
  282.   The protocol's general description should also provide information on
  283.   the relationship between the different parties to the protocol.  
  284.   This can be done by showing typical packet sequences.  
  285.  
  286.   This also applies to the algorithms used by a protocol.  A detailed
  287.   description of the algorithms or citation of readily available
  288.   references that give such a description is necessary.
  289.  
  290. 2.3 Target Audience
  291.  
  292.   RFCs have been written with many different purposes, ranging from the
  293.   technical to the administrative.  Those written as standards should
  294.   clearly identify the intended audience, for example, designers,
  295.   implementors, testers, help desk personnel, educators, end users, or
  296.   others.  If there are multiple audiences being addressed in the
  297.   document, what sections are for each audience needs to be identified. 
  298.   The goal is to help the reader discover and focus on what they have
  299.   turned to the document for, and avoid what they may find confusing,
  300.   diverting, or extraneous.
  301.  
  302. 2.4  Level of Detail
  303.  
  304.   The author should consider what level of descriptive detail best
  305.   conveys the protocol's intent.  Concise text has several advantages. 
  306.   It makes the document easier to read.  Such text reduces the chance
  307.   for conflict between different portions of the specification.  The
  308.   reader can readily identify the required protocol mechanisms in the
  309.   standard.  Also, it makes it easier to identify the requirements for
  310.  
  311.  
  312. draft-ietf-stdguide-ops-02.txt                                  [Page 6]
  313.  
  314. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  315.  
  316.  
  317.   protocol implementation.  A disadvantage of concise descriptions is
  318.   that a reader may not fully comprehend the reasoning behind the
  319.   protocol, and thus make assumptions that will lead to implementation
  320.   errors.
  321.  
  322.   Longer descriptions may be necessary to explain purpose, background,
  323.   rationale, implementation experience, or to provide tutorial
  324.   information.  This helps the reader understand the protocol.  Yet
  325.   several dangers exist with lengthy text.  Finding the protocol
  326.   requirements in the text is difficult or confusing.  The same
  327.   mechanism may have multiple descriptions, which leads to
  328.   misinterpretations or conflict.  Finally, it is more difficult to
  329.   comprehend, a consideration as English is not the native language of
  330.   the many worldwide readers of IETF standards. 
  331.  
  332.   One approach is to divide the standard into sections:  one describing
  333.   the protocol concisely, while another section consists of explanatory
  334.   text.  The STD 3/RFC 1122/RFC 1123 and Draft Standard RFC 1583
  335.   provides examples of this method.  
  336.  
  337. 2.5  Protocol Versions
  338.  
  339.   Often the standard is specifying a new version of an existing
  340.   protocol.  In such a case, the authors should detail the differences
  341.   between the previous version and the new version.  This should
  342.   include the rationale for the changes, for example, implementation
  343.   experience, changes in technology, responding to user demand, etc.
  344.  
  345. 2.6  Decision History
  346.  
  347.   In standards development, reaching consensus requires making
  348.   difficult choices.  These choices are made through working group
  349.   discussions or from implementation experience.  By including the
  350.   basis for a contentious decision, the author can prevent future
  351.   revisiting of these disagreements later, when the original parties
  352.   have moved on.  Also, the knowledge of the "why" is as useful to an
  353.   implementor as the description of "how."  For example,  the
  354.   alternative not taken may have been simpler to implement, so
  355.   including the reasons behind the choice may prevent future
  356.   implementors from taking nonstandard shortcuts.  
  357.  
  358. 2.7  Response to Out of Specification Behavior
  359.  
  360.   The STDGUIDE working group recommends that detail description of the
  361.   actions taken in case of behavior that is deviant from or exceeds the
  362.  
  363.  
  364. draft-ietf-stdguide-ops-02.txt                                  [Page 7]
  365.  
  366. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  367.  
  368.  
  369.   specification be included.  This is an area where implementors often
  370.   differ in opinion as to the appropriate response.  By specifying a
  371.   common response, the standard author can reduce the risk that
  372.   different implementations will come in to conflict.  
  373.  
  374.   The standard should describe responses to behavior explicitly
  375.   forbidden or out of the boundaries defined by the specification.  Two
  376.   possible approaches to such cases are discarding, or invoking
  377.   error-handling mechanisms.  If discarding is chosen, detailing the
  378.   disposition may be necessary.  For instance, treat dropped frames as
  379.   if they were never received, or reset an existing connection or
  380.   adjacency state.
  381.  
  382.   The specification should describe actions taken when critical
  383.   resource or performance scaling limits are exceeded.  This is not
  384.   necessary for every case.  It is necessary for cases where a risk of
  385.   network degradation or operational failure exists.  In such cases, a
  386.   consistent behavior between implementations is necessary.
  387.  
  388. 2.8  The Liberal/Conservative Rule
  389.  
  390.   A rule, first stated in RFC 791, recognized as having benefits in
  391.   implementation robustness and interoperability is:
  392.  
  393.                   "Be liberal in what you accept, and
  394.                     conservative in what you send."
  395.  
  396.   Or establish restrictions on what a protocol transmits, but be able
  397.   to deal with every conceivable error received.  Caution is urged in
  398.   applying this approach in standards track protocols.  It has in the
  399.   past lead to conflicts between vendors when interoperability fails. 
  400.   The sender accuses the receiver of failing to be liberal enough, and
  401.   the receiver accuses the sender of not being conservative enough. 
  402.   Therefore, the author is obligated to provide extensive detail on
  403.   send and receive behavior. 
  404.  
  405.   To avoid any confusion between the two, recommend that standard
  406.   authors specify send and receive behavior separately.  The
  407.   description of reception will require the most detailing.  For
  408.   implementations will be expected to accept any packet from the
  409.   network without failure or malfunction.  Therefore, the actions taken
  410.   to achieve that result, need to be laid out in the protocol
  411.   specification.  Standard authors should consider not just how to
  412.   survive on the network, but achieve the highest level of cooperation
  413.   possible to limit the amount of network disruption.  The appearance
  414.  
  415.  
  416. draft-ietf-stdguide-ops-02.txt                                  [Page 8]
  417.  
  418. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  419.  
  420.  
  421.   of undefined information or conditions must not cause a network or
  422.   host failure.  This requires specification on how to attempt
  423.   acceptance of most of the packets.  Two approaches are available,
  424.   either using as much of the packet's content as possible, or invoking
  425.   error procedures.  The author should specify a dividing line on when
  426.   to take which approach.
  427.  
  428.   A case for consideration is that of a routing protocol, where
  429.   acceptance of flawed information can cause network failure.  For
  430.   protocols such as this, the specification should identify packets
  431.   that could have differing interpretations and mandate that they be 
  432.   either rejected completely or the nature of the attempt to recover
  433.   some information from them.  For example, routing updates that
  434.   contain more data than the tuple count shows.  The protocol authors
  435.   should consider whether some trailing data can be accepted as
  436.   additional routes, or to reject the entire packet as suspect because
  437.   it is non-conformant.
  438.  
  439. 2.9  Handling of Protocol Options
  440.  
  441.   Specifications with many optional features increase the complexity of
  442.   the implementation and the chance of non-interoperable
  443.   implementations.  The danger is that different implementations may
  444.   specify some combination of options that are unable to interoperate
  445.   with each other.  
  446.  
  447.   As the document moves along the standard track, implementation
  448.   experience should purge options from the protocol..  Implementation
  449.   will show whether the option is needed or not, whether it should be a
  450.   mandatory part of the protocol or remain an option.  If an option is
  451.   not implemented as the document advances, it must be removed from the
  452.   protocol before it reaches draft standard status.
  453.  
  454.   Therefore, options should only be present in a protocol to address a
  455.   real requirement.  For example, to support future extensibility of
  456.   the protocol, a particular market, e.g., the financial industry, or a
  457.   specific network environment, e.g., a network constrained by limited
  458.   bandwidth.  They should not be included as a means to "buy-off" a
  459.   minority opinion.  Omission of the optional item should have no
  460.   interoperability consequences for the implementation that does so. 
  461.  
  462.   One possible approach is to document protocol options in a separate
  463.   document.  Doing so would make it clear that the options are not
  464.   integral to the implementation of the protocol, and would keep the
  465.   main protocol specification clean.  Regardless of whether they appear
  466.  
  467.  
  468. draft-ietf-stdguide-ops-02.txt                                  [Page 9]
  469.  
  470. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  471.  
  472.  
  473.   within the specification or in a separate document, the text should
  474.   discuss the full implications of either using the option or not, and
  475.   the case for choosing either course.  As part of this, the author
  476.   needs to consider and describe how the options are intended to be
  477.   used alongside other protocols.  The text must also specify the
  478.   default conditions of all options.  For security checking options the
  479.   default condition is on or enabled.
  480.  
  481.   There may be occasions when mutually exclusive options appear within
  482.   a protocol.  That is, the implementation of an optional feature
  483.   precludes the implementation of the other optional feature.  For
  484.   clarity, the author needs to state when to implement one or the
  485.   other, what the effect of choosing one over the other is, and what
  486.   problems the implementor or user may face.  The choice of one or the
  487.   other options should have no interoperability consequences between
  488.   multiple implementations.
  489.  
  490. 2.10 Indicating Requirement Levels
  491.  
  492.   The Internet-Draft draft-bradner-key-words-03.txt, "Key words for use
  493.   in RFCs to Indicate Requirement Levels," defines several words that
  494.   are necessary for writing a standards track document.  These words
  495.   separate the mandatory protocol features of the specification from
  496.   the optional features.  The definitions provided are as they should
  497.   be interpreted in implementing IETF standards.  Note that in IETF
  498.   Standards the intent of these words is binding on implementors and
  499.   other users of the document.
  500.  
  501.   Some authors of existing IETF standards have chosen to capitalize
  502.   these words to clarify or stress their intent, but this is not
  503.   required.  What is necessary, is that these words are used
  504.   consistently throughout the document.  That is, every mandatory or
  505.   optional protocol requirement shall be identified by the authors and
  506.   documented by these words.  If a requirement is not identified in
  507.   this manner, it will not be considered an equal part of the protocol
  508.   and be likely passed over by the implementor.  
  509.  
  510. 2.11  Notational Conventions
  511.  
  512.   Formal syntax notations can be used to define complicated protocol
  513.   concepts or data types, and  to specify values of these data types. 
  514.   This permits the protocol to be written without concern on how the
  515.   implementation is constructed, or how the data type is represented
  516.   during transfer.  The specification is simplified because it can be
  517.   presented as "axioms" that will be proven by implementation.
  518.  
  519.  
  520. draft-ietf-stdguide-ops-02.txt                                 [Page 10]
  521.  
  522. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  523.  
  524.  
  525.   The formal specification of the syntax used should be referenced in
  526.   the text of the standard.  Any extensions, subsets, alterations, or
  527.   exceptions to the formal syntax should be defined.  
  528.  
  529.   The STD 11/RFC 822 provides an example of this.  In RFC 822 (Section
  530.   2 and Appendix D) the Backus-Naur Form (BNF) meta-language was
  531.   extended to make its representation smaller and easier to understand. 
  532.   Note, that the Internet-Draft draft-ietf-drums-abnf-01.txt,
  533.   "Augmented BNF for Syntax Specifications: ABNF," captures RFC 822's
  534.   definition so that it can be used as a reference.  Another example is
  535.   STD 16/RFC 1155 (Section 3.2) where a subset of the Abstract Syntax
  536.   Notation One (ASN.1) is defined.
  537.  
  538.   The author of a standards track protocol needs to consider several
  539.   things before they use a formal syntax notation.  Is the formal
  540.   specification language being used parseable by an existing machine? 
  541.   If no parser exists, is there enough information provided in the
  542.   specification to permit the building of a parser?  If not, it is
  543.   likely the reader will not have enough information to decide what the
  544.   notation means.  Also, the author should remember machine parseable
  545.   syntax is often unreadable by humans, and can make the specification
  546.   excessive in length.  Therefore, syntax notations cannot take the
  547.   place of a clearly written protocol description.
  548.  
  549.  
  550. 2.12  IANA Considerations
  551.  
  552.   The common use of the Internet standard track protocols by the
  553.   Internet community requires that the unique values be assigned to the
  554.   parameter fields.  The Internet Assigned Numbers Authority (IANA) is
  555.   the central coordinator for the assignment of unique parameter values
  556.   for Internet protocols.  The authors of a developing protocol that
  557.   use a link, socket, port, protocol, etc., need to specify the rules
  558.   and procedures by which IANA will register constants and tags.  The
  559.   author should ask IANA to review the rules and procedures for clarity
  560.   and feasibility prior to submitting the internet draft to the
  561.   standards track.  For further information on parameter assignment and
  562.   current assignments, authors can reference STD 2/RFC 1700, "Assigned
  563.   Numbers."
  564.  
  565. 2.13  Network Management Considerations
  566.  
  567.   When relevant, each standard needs to discuss how to manage the
  568.   protocol being specified.  This management process should be
  569.   compatible with the current IETF Standard management protocol.  Also
  570.  
  571.  
  572. draft-ietf-stdguide-ops-02.txt                                 [Page 11]
  573.  
  574. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  575.  
  576.  
  577.   a MIB must be defined within the standard or in a companion document. 
  578.   The MIB must be compatible with current SMI and parseable using a
  579.   tool such as SMICng.  Where management or a MIB is not necessary this
  580.   section of the standard should explain the reason it is not relevant
  581.   to the protocol.
  582.  
  583. 2.14  Scalability Considerations
  584.  
  585.   The standard should establish the limitations on the scale of use,
  586.   e.g., tens of millions of sessions, gigabits per second, etc., and
  587.   establish limits on the resources used, e.g, round trip time,
  588.   computing resources, etc.  This is important because it establishes
  589.   the ability of the network to accommodate the number of users and the
  590.   complexity of their relations.  The STD 53/RFC 1939 has an example of
  591.   such a section.  If this is not applicable to the protocol and
  592.   explanation of why not should be included.
  593.  
  594. 2.15  Network Stability
  595.  
  596.   A standard should discuss the relationship between network topology
  597.   and convergence behavior.  As part of this, any topology which would
  598.   be troublesome for the protocol should be identified.  Additionally,
  599.   the specification should address any possible destablizing events,
  600.   and how the protocol resists or recovers from them.  The purpose is
  601.   to insure that the network will stabilize, in a timely fashion, after
  602.   a change, and that a combination of errors or events will not plunge
  603.   the network into chaos.  The STD 34/RFC 1058, as an example, has
  604.   sections which discuss how that protocol handles the affects of
  605.   changing topology.  
  606.  
  607. 2.16  Glossary
  608.  
  609.   Every standards track RFC should have a glossary, as words can have
  610.   many meanings.  By defining any new words introduced, the author can
  611.   avoid confusing or misleading the implementer.  The definition should
  612.   appear on the word's first appearance within the text of the protocol
  613.   specification, and in a separate glossary section.  
  614.  
  615.   It is likely that definition of the protocol will rely on many words
  616.   frequently used in IETF documents.  All authors must be knowledgeable
  617.   of the common accepted definitions of these frequently used words. 
  618.   FYI 18/RFC 1983, "Internet Users' Glossary," provides definitions
  619.   that are specific to the Internet.  Any deviation from these
  620.   definitions by authors is strongly discouraged.  If circumstances
  621.   require deviation, an author should state that he is altering the
  622.  
  623.  
  624. draft-ietf-stdguide-ops-02.txt                                 [Page 12]
  625.  
  626. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  627.  
  628.  
  629.   commonly accepted definition, and provide rationale as to the
  630.   necessity of doing so.  The altered definition must be included in
  631.   the Glossary section.
  632.  
  633.   If the author uses the word as commonly defined, she does not have to
  634.   include the definition in the glossary.  As a minimum,  FYI 18/RFC
  635.   1983 should be referenced as a source.
  636.  
  637. 3  Specific Guidelines
  638.  
  639.   The following are guidelines on how to present specific technical
  640.   information in standards.
  641.  
  642. 3.1  Packet Diagrams
  643.  
  644.   Most link, network, and transport layer protocols have packet
  645.   descriptions.   The STDGUIDE working group recommends that packet
  646.   diagrams be included in the standard, as they are very helpful to the
  647.   reader.  The preferred form for packet diagrams is a sequence of long
  648.   words in network byte order, with each word horizontal on the page
  649.   and bit numbering at the top:  
  650.  
  651.  
  652.     0                   1                   2                   3  
  653.     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
  654.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  655.    |Version| Prio. |                   Flow Label                  |
  656.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  657.  
  658.  
  659.   In cases where a packet is strongly byte-aligned rather than
  660.   word-aligned (e.g., when byte-boundary variable-length fields are
  661.   used), display packet diagrams in a byte-wide format.  The author can
  662.   use different height boxes for short and long words, and broken boxes
  663.   for variable-length fields:
  664.  
  665.  
  666.  
  667.  
  668.  
  669. draft-ietf-stdguide-ops-02.txt                                 [Page 13]
  670.  
  671. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  672.  
  673.  
  674.                             0 1 2 3 4 5 6 7
  675.                            +-+-+-+-+-+-+-+-+
  676.                            |    Length N   |
  677.                            +-+-+-+-+-+-+-+-+
  678.                            |               |
  679.                            +    Address    +
  680.                                   ...
  681.                            +   (N bytes)   +
  682.                            |               |
  683.                            +-+-+-+-+-+-+-+-+
  684.                            |               |
  685.                            +  2-byte field +
  686.                            |               |
  687.                            +-+-+-+-+-+-+-+-+
  688.  
  689.  
  690. 3.2  Summary Tables
  691.  
  692.   The specifications of some protocols are particularly lengthy,
  693.   sometimes covering a hundred pages or more.  In such cases the
  694.   inclusion of a summary table can reduce the risk of conformance
  695.   failure by an implementation through oversight.  A summary table
  696.   itemizes what in a protocol is mandatory, optional, or prohibited. 
  697.   Summary tables do not guarantee conformance, but serve to assist an
  698.   implementor in checking that they have addressed all protocol
  699.   features.  
  700.  
  701.   The summary table will consist of, as a minimum, four (4) columns: 
  702.   Protocol Feature, Section Reference, Status, and
  703.   References/Footnotes.  The author may add columns if they further
  704.   explain or clarify the protocol.  
  705.  
  706.   In the Protocol Feature column describe the feature, for example, a
  707.   command word.   We recommend grouping series of related transactions
  708.   under descriptive headers, for example, RECEPTION.  
  709.  
  710.   Section reference directs the implementor to the section, paragraph,
  711.   or page that describes the protocol feature in detail.
  712.  
  713.   Status indicates whether the feature is mandatory, optional, or
  714.   prohibited.   The author can either use a separate column for each
  715.   possibility, or a single column with appropriate codes.  These codes
  716.   need to be defined at the start of the summary table to avoid
  717.   confusion.  Possible status codes:
  718.  
  719.  
  720.  
  721. draft-ietf-stdguide-ops-02.txt                                 [Page 14]
  722.  
  723. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  724.  
  725.  
  726.        M    - must
  727.        M    - mandatory
  728.        MN   - must not
  729.        O    - optional
  730.        S    - should
  731.        SN   - should not
  732.        X    - prohibited
  733.  
  734.    In the References/Footnotes column  authors can point to other RFCs
  735.   that are necessary to consider in implementing this protocol feature,
  736.   or any footnotes necessary to explain the implementation further.  
  737.  
  738.   The STD 3/RFC 1122/RFC 1123 provides examples of summary tables.
  739.  
  740. 3.3  State Machine Descriptions
  741.  
  742.   A convenient method of presenting a protocol's behavior is as a
  743.   state-machine model.   That is, a protocol can be described by a
  744.   series of states resulting from a command, operation, or transaction. 
  745.   State-machine models define the variables and constants that
  746.   establish a state, the events that cause state transitions, and the
  747.   actions that result from those transitions.  Through these models, an
  748.   understanding of the protocol's dynamic operation  as sequence of
  749.   state transitions that occur for any given event is possible.   
  750.   State transitions can be detailed by diagrams, tables, or time lines.
  751.  
  752.   Note that state-machine models are never to take the place of
  753.   detailed text description of the specification.  They are adjuncts to
  754.   the text.  The protocol specification shall always take precedence in
  755.   the case of a conflict.
  756.  
  757.   When using a state transition diagram, show each possible protocol
  758.   state as a box connected by state transition arcs.  The author should
  759.   label each arc with the event that causes the transition, and, in
  760.   parentheses, any actions taken during the transition.  The STD 5/RFC
  761.   1112 provides an example of such a diagram.  As ASCII text is the
  762.   preferred storage format for RFCs, only simple diagrams are possible. 
  763.   Tables can summarize more complex or extensive state transitions.  
  764.  
  765.   In a state transition table, read events vertically and states
  766.   horizontally.    The form, action/new state, represents state
  767.   transitions and actions.  Commas separate multiple actions, and
  768.   succeeding lines are used as required.  The authors should present
  769.   multiple actions in the order they must be executed, if relevant. 
  770.   Letters that follow the state indicate an explanatory footnote.  The
  771.  
  772.  
  773. draft-ietf-stdguide-ops-02.txt                                 [Page 15]
  774.  
  775. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  776.  
  777.  
  778.   dash ('-') indicates an illegal transition.  The STD 51/RFC 1661
  779.   provides an example of such a state transition table.  The initial
  780.   columns and rows of that table are below as an example:
  781.  
  782.         | State
  783.         |    0         1         2         3         4         5
  784.   Events| Initial   Starting  Closed    Stopped   Closing   Stopping
  785.   ------+-----------------------------------------------------------
  786.    Up   |    2     irc,scr/6     -         -         -         -
  787.    Down |    -         -         0       tls/1       0         1
  788.    Open |  tls/1       1     irc,scr/6     3r        5r        5r
  789.    Close|    0       tlf/0       2         2         4         4
  790.         |
  791.     TO+ |    -         -         -         -       str/4     str/5
  792.     TO- |    -         -         -         -       tlf/2     tlf/3
  793.  
  794.  
  795.   The STD 18/RFC 904 also presents state transitions in table format. 
  796.   However, it lists transitions in the form n/a, where n is the next
  797.   state and a represents the action.  The method in RFC 1661 is
  798.   preferred as new-state logically follows action.  Also, this RFC's
  799.   Appendix C models transitions as the Cartesian product of two state
  800.   machines.  This is a more complex representation that may be
  801.   difficult to comprehend for those readers that are unfamiliar with
  802.   the format.   The working group recommends that authors present
  803.   tables as defined in the previous paragraph.  
  804.  
  805.   A final method of representing state changes is by a time line.  The
  806.   two sides of the time line represent the machines involved in the
  807.   exchange.  The author lists the states the machines enter as time
  808.   progresses (downward) along the outside of time line.  Within the
  809.   time line, show the actions that cause the state transitions.  An
  810.   example:
  811.  
  812.             client                                     server
  813.                |                                          |
  814.                |                                          |   LISTEN
  815.    SYN_SENT    |-----------------------                   |
  816.                |                       \ syn j            |
  817.                |                        ----------------->|   SYN_RCVD
  818.                |                                          |
  819.                |                        ------------------|
  820.                |        syn k, ack j+1 /                  |
  821.    ESTABLISHED |<----------------------                   |
  822.                |                                          |
  823.  
  824.  
  825. draft-ietf-stdguide-ops-02.txt                                 [Page 16]
  826.  
  827. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  828.  
  829.  
  830. 3.4 Character Sets
  831.  
  832.   At one time the Internet had a geographic boundary and was English
  833.   only.  Since the Internet now extends internationally, application
  834.   protocols must assume that the contents of any text string may be in
  835.   a language other than English.  Therefore, new or updated protocols
  836.   which transmit text must use ISO 10646 as the default Coded Character
  837.   Set, and RFC 2044, "UTF-8, a transformation format of Unicode and ISO
  838.   10646" as the default Character Encoding Scheme.  An exception is the
  839.   use of US-ASCII for a protocol's controlling commands and replies. 
  840.   Protocols that have a backwards compatibility requirement should use
  841.   the default of the existing protocol.  This is in keeping with the
  842.   recommendations of the Character Set Workshop Report, draft-weider-
  843.   iab-char-wrkshop-00.txt. 
  844.  
  845. 4 Document Checklist
  846.  
  847.   The following is a checklist based on these guidelines that can be
  848.   applied to a document:
  849.  
  850.   o Does it identify the security risks?  Are countermeasures for each
  851.      potential attack provided?  Are the effects of the security
  852.      measures on the operating environment detailed? 
  853.   o Does it explain the purpose of the protocol or procedure?  Are the
  854.      intended functions and services addressed?  Does it describe how it
  855.      relates to existing protocols?
  856.   o Does it consider scaling and stability issues?
  857.   o Are procedures for assigning numbers provided as guidance for IANA.
  858.   o Does it discuss how to manage the protocol being specified.  Is a
  859.      MIB defined?
  860.   o Is a target audience defined?
  861.   o Does it reference or explain the algorithms used in the protocol?
  862.   o Does it give packet diagrams in recommended form, if applicable?
  863.   o Does it describe differences from previous versions, if applicable?
  864.   o Does it separate explanatory portions of the document from
  865.      requirements?
  866.   o Does it give examples of protocol operation?
  867.   o Does it specify behavior in the face of incorrect operation by
  868.      other implementations?
  869.   o Does it delineate which packets should be accepted for processing
  870.      and which should be ignored?
  871.   o If multiple descriptions of a requirement are given, does it
  872.      identify one as binding?
  873.   o How many optional features does it specify?  Does it separate them
  874.      into option classes?
  875.  
  876.  
  877. draft-ietf-stdguide-ops-02.txt                                 [Page 17]
  878.  
  879. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  880.  
  881.  
  882.   o Have all combinations of options or option classes been examined
  883.      for incompatibility?
  884.   o Does it explain the rationale and use of options?
  885.   o Have all mandatory and optional requirements be identified and
  886.      documented by the accepted key words that define Internet
  887.      requirement levels?
  888.   o Does it use the recommended Internet meanings for any terms use to
  889.      specify the protocol?  
  890.   o Are new or altered definitions for terms given in a glossary?
  891.  
  892. 5.  Security Considerations
  893.  
  894. This document does not define a protocol or procedure that could be
  895. subject to an attack.  It establishes guidelines for the information
  896. that should be included in RFCs that are to be submitted to the
  897. standards track.  In the area of security, IETF standards authors are
  898. called on to define clearly the the threats faced by the protocol and
  899. the way the protocol does or does not provide security assurances to the
  900. user.  
  901.  
  902. 6  References
  903.  
  904.   RFC 791    "Internet Protocol (IP)," J. Postel, September 1981.
  905.  
  906.   RFC 904    "Exterior Gateway Protocol formal specification," D.
  907.              Mills, April 1984
  908.  
  909.   RFC 1058   "Routing Information Protocol," C.  Hedrick, June 1988
  910.  
  911.   RFC 1112   "Host extensions for IP multicasting," S. Deering,
  912.              August 1989
  913.  
  914.   RFC 1122   "Requirements for Internet Hosts -- Communication Layers,"
  915.              October 1989
  916.  
  917.   RFC 1123   "Requirements for Internet hosts -- Application and
  918.              Support," October 1989
  919.  
  920.   RFC 1311   "Introduction to the STD Notes"
  921.  
  922.   RFC 1350   "The TFTP Protocol (Revision 2)," K.  Sollins, July 1992
  923.  
  924.   RFC 1583   "OSPF Version 2"
  925.  
  926.   RFC 1661   "The Point-to-Point Protocol (PPP)," W. Simpson, July 1994
  927.  
  928.  
  929. draft-ietf-stdguide-ops-02.txt                                 [Page 18]
  930.  
  931.  
  932. INTERNET DRAFT    Guide for Internet Standards Writers        March 1997
  933.  
  934.  
  935.   RFC 1662   "PPP in HLDC-like Framing," W.  Simpson, July 1994
  936.  
  937.   RFC 1700   "Assigned Numbers," J. Reynolds, J. Postel, October 1994
  938.  
  939.   RFC 1983   "Internet Users' Glossary"
  940.  
  941.   RFC 1939   "Post Office Protocol - Version 3," J. Meyers, M. Rose,
  942.              May 1996
  943.  
  944.   RFC 2026   "The Internet Standards Process -- Revision 3," S.
  945.              Bradner, October 1996
  946.  
  947.   RFC 2044   "UTF-8, a transformation format of Unicode and ISO 10646,"
  948.              F. Yergeau, October 1996
  949.  
  950.   draft-ietf-drums-abnf-01.txt, "Augmented BNF for Syntax
  951.   Specifications: ABNF," D. Crocker
  952.  
  953.   draft-bradner-key-words-03.txt, "Key words for use in RFCs to
  954.   Indicate Requirement Levels," S. Bradner
  955.  
  956.   draft-weider-iab-char-wrkshop-00.txt, "Character Set Workshop
  957.   Report," C. Weider
  958.  
  959. 7  Acknowledgments
  960.  
  961. 8  Editor's Address
  962.  
  963.                Gregor D. Scott
  964.                Director, Defense Information Systems Agency
  965.                ATTN: JIEO-JEBBD
  966.                Ft. Monmouth, NJ  07703-5613
  967.                USA
  968.  
  969.                Phone: (908) 427-6856
  970.                Fax:   (908) 532-0853
  971.                EMail: scottg@ftm.disa.mil
  972.  
  973.  
  974. draft-ietf-stdguide-ops-02.txt                                 [Page 19]
  975.  
  976.