home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2360.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  47.3 KB  |  1,124 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                  G. Scott, Editor
  8. Request for Comments: 2360           Defense Information Systems Agency
  9. BCP: 22                                                       June 1998
  10. Category: Best Current Practice
  11.  
  12.  
  13.                   Guide for Internet Standards Writers
  14.  
  15. Status of this Memo
  16.  
  17.    This document specifies an Internet Best Current Practices for the
  18.    Internet Community, and requests discussion and suggestions for
  19.    improvements.  Distribution of this memo is unlimited.
  20.  
  21. Copyright Notice
  22.  
  23.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  24.  
  25. Abstract
  26.  
  27.    This document is a guide for Internet standard writers.  It defines
  28.    those characteristics that make standards coherent, unambiguous, and
  29.    easy to interpret.  In addition, it singles out usage believed to
  30.    have led to unclear specifications, resulting in non-interoperable
  31.    interpretations in the past.  These guidelines are to be used with
  32.    RFC 2223, "Instructions to RFC Authors".
  33.  
  34. Table of Contents
  35.  
  36.    1     Introduction   . . . . . . . . . . . . . . . . . . . . . . . 2
  37.    2     General Guidelines . . . . . . . . . . . . . . . . . . . . . 2
  38.    2.1   Discussion of Security . . . . . . . . . . . . . . . . . . . 3
  39.    2.2   Protocol Description   . . . . . . . . . . . . . . . . . . . 4
  40.    2.3   Target Audience  . . . . . . . . . . . . . . . . . . . . . . 5
  41.    2.4   Level of Detail  . . . . . . . . . . . . . . . . . . . . . . 5
  42.    2.5   Change Logs  . . . . . . . . . . . . . . . . . . . . . . . . 6
  43.    2.6   Protocol Versions  . . . . . . . . . . . . . . . . . . . . . 6
  44.    2.7   Decision History   . . . . . . . . . . . . . . . . . . . . . 6
  45.    2.8   Response to Out of Specification Behavior  . . . . . . . . . 6
  46.    2.9   The Liberal/Conservative Rule  . . . . . . . . . . . . . . . 7
  47.    2.10  Handling of Protocol Options   . . . . . . . . . . . . . . . 8
  48.    2.11  Indicating Requirement Levels  . . . . . . . . . . . . . . . 9
  49.    2.12  Notational Conventions . . . . . . . . . . . . . . . . . . . 9
  50.    2.13  IANA Considerations  . . . . . . . . . . . . . . . . . . .  10
  51.    2.14  Network Management Considerations  . . . . . . . . . . . .  10
  52.    2.15  Scalability Considerations . . . . . . . . . . . . . . . .  10
  53.    2.16  Network Stability  . . . . . . . . . . . . . . . . . . . .  11
  54.    2.17  Internationalization . . . . . . . . . . . . . . . . . . .  11
  55.  
  56.  
  57.  
  58. Scott                    Best Current Practice                  [Page 1]
  59.  
  60. RFC 2360          Guide for Internet Standards Writers         June 1998
  61.  
  62.  
  63.    2.18  Glossary   . . . . . . . . . . . . . . . . . . . . . . . .  11
  64.    3     Specific Guidelines  . . . . . . . . . . . . . . . . . . .  12
  65.    3.1   Packet Diagrams  . . . . . . . . . . . . . . . . . . . . .  12
  66.    3.2   Summary Tables   . . . . . . . . . . . . . . . . . . . . .  13
  67.    3.3   State Machine Descriptions . . . . . . . . . . . . . . . .  13
  68.    4     Document Checklist . . . . . . . . . . . . . . . . . . . .  15
  69.    5     Security Considerations  . . . . . . . . . . . . . . . . .  16
  70.    6     References . . . . . . . . . . . . . . . . . . . . . . . .  16
  71.    7     Acknowledgments  . . . . . . . . . . . . . . . . . . . . .  18
  72.    8     Editor's Address . . . . . . . . . . . . . . . . . . . . .  18
  73.    9     Appendix . . . . . . . . . . . . . . . . . . . . . . . . .  19
  74.    10    Full Copyright Statement . . . . . . . . . . . . . . . . .  20
  75.  
  76. 1  Introduction
  77.  
  78.    This document is a guide for Internet standard writers.  It offers
  79.    guidelines on how to write a standards-track document with clarity,
  80.    precision, and completeness.  These guidelines are based on both
  81.    prior successful and unsuccessful IETF specification experiences.
  82.    These guidelines are to be used with RFC 2223, "Instructions to RFC
  83.    Authors", or its update.  Note that some guidelines may not apply in
  84.    certain situations.
  85.  
  86.    The goal is to increase the possibility that multiple implementations
  87.    of a protocol will interoperate.  Writing specifications to these
  88.    guidelines will not guarantee interoperability.  However, a
  89.    recognized barrier to the creation of interoperable protocol
  90.    implementations is unclear specifications.
  91.  
  92.    Many will benefit from having well-written protocol specifications.
  93.    Implementers will have a better chance to conform to the protocol
  94.    specification.  Protocol testers can use the specification to derive
  95.    unambiguous testable statements.  Purchasers and users of the
  96.    protocol will have a better understanding of its capabilities.
  97.  
  98.    For further information on the process for standardizing protocols
  99.    and procedures please refer to BCP 9/RFC 2026, "The Internet
  100.    Standards Process -- Revision 3".  In addition, some considerations
  101.    for protocol design are given in RFC 1958, "Architectural Principles
  102.    of the Internet".
  103.  
  104. 2  General Guidelines
  105.  
  106.    It is important that multiple readers and implementers of a standard
  107.    have the same understanding of a document.  To this end, information
  108.    should be orderly and detailed.  The following are general guidelines
  109.    intended to help in the production of such a document.  The IESG may
  110.    require that all or some of the following sections appear in a
  111.  
  112.  
  113.  
  114. Scott                    Best Current Practice                  [Page 2]
  115.  
  116. RFC 2360          Guide for Internet Standards Writers         June 1998
  117.  
  118.  
  119.    standards track document.
  120.  
  121. 2.1  Discussion of Security
  122.  
  123.    If the Internet is to achieve its full potential in commercial,
  124.    governmental, and personal affairs, it must assure users that their
  125.    information transfers are free from tampering or compromise.  Well-
  126.    written security sections in standards-track documents can help
  127.    promote the confidence level required.  Above all, new protocols and
  128.    practices must not worsen overall Internet security.
  129.  
  130.    A significant threat to the Internet comes from those individuals who
  131.    are motivated and capable of exploiting circumstances, events, or
  132.    vulnerabilities of the system to cause harm.  In addition, deliberate
  133.    or inadvertent user behavior may expose the system to attack or
  134.    exploitation.  The harm could range from disrupting or denying
  135.    network service, to damaging user systems.  Additionally, information
  136.    disclosure could provide the means to attack another system, or
  137.    reveal patterns of behavior that could be used to harm an individual,
  138.    organization, or network.  This is a particular concern with
  139.    standards that define a portion of the Management Information Base
  140.    (MIB).
  141.  
  142.    Standards authors must accept that the protocol they specify will be
  143.    subject to attack.  They are responsible for determining what attacks
  144.    are possible, and for detailing the nature of the attacks in the
  145.    document.  Otherwise, they must convincingly argue that attack is not
  146.    realistic in a specific environment, and restrict the use of the
  147.    protocol to that environment.
  148.  
  149.    After the document has exhaustively identified the security risks the
  150.    protocol is exposed to, the authors must formulate and detail a
  151.    defense against those attacks.  They must discuss the applicable
  152.    countermeasures employed, or the risk the user is accepting by using
  153.    the protocol.  The countermeasures may be provided by a protocol
  154.    mechanism or by reliance on external mechanisms.  Authors should be
  155.    knowledgeable of existing security mechanisms, and reuse them if
  156.    practical.  When a cryptographic algorithm is used, the protocol
  157.    should be written to permit its substitution with another algorithm
  158.    in the future.  Finally, the authors should discuss implementation
  159.    hints or guidelines, e.g., how to deal with untrustworthy data or
  160.    peer systems.
  161.  
  162.    Security measures will have an impact within the environment that
  163.    they are used.  Perhaps users will now be constrained on what they
  164.    can do in the Internet, or will experience degradation in the speed
  165.    of service.  The effects the security measures have on the protocol's
  166.    use and performance should be discussed.
  167.  
  168.  
  169.  
  170. Scott                    Best Current Practice                  [Page 3]
  171.  
  172. RFC 2360          Guide for Internet Standards Writers         June 1998
  173.  
  174.  
  175.    The discussion of security can be concentrated in the Security
  176.    Considerations section of the document, or throughout the document
  177.    where it is relevant to particular parts of the specification.  An
  178.    advantage of the second approach is that it ensures security is an
  179.    integral part of the protocol's development, rather than something
  180.    that is a follow-on or secondary effort.  If security is discussed
  181.    throughout the document, the Security Considerations section must
  182.    summarize and refer to the appropriate specification sections.  This
  183.    will insure that the protocol's security measures are emphasized to
  184.    implementer and user both.
  185.  
  186.    Within the Security Considerations section, a discussion of the path
  187.    not taken may be appropriate.  There may be several security
  188.    mechanisms that were not selected for a variety of reasons: cost or
  189.    difficulty of implementation, or ineffectiveness for a given network
  190.    environment.  By listing the mechanisms they did not use and the
  191.    reasons, editors can demonstrate that the protocol's WG gave security
  192.    the necessary thought.  In addition, this gives the protocol's users
  193.    the information they need to consider whether one of the non-selected
  194.    mechanisms would be better suited to their particular requirements.
  195.  
  196.    A document giving further guidance on security topics is in
  197.    development.  Authors should obtain a copy of the completed RFC to
  198.    help them prepare the security portion of the standard.
  199.  
  200.    Finally, it is no longer acceptable that Security Considerations
  201.    sections consist solely of statements to the effect that security was
  202.    not considered in preparing the standard.
  203.  
  204.    Some examples of Security Considerations sections are found in STD
  205.    33/RFC 1350, STD 51/RFC 1662, and STD 53/RFC 1939.  RFC 2316, "Report
  206.    of the IAB Security Architecture Workshop", provides additional
  207.    information in this topic area.
  208.  
  209. 2.2  Protocol Description
  210.  
  211.    Standards track documents must include a description of the protocol.
  212.    This description must address the protocol's purpose, intended
  213.    functions, services it provides, and, the arena, circumstances, or
  214.    any special considerations of the protocol's use.
  215.  
  216.    The authors of a protocol specification will have a great deal of
  217.    knowledge as to the reason for the protocol.  However, the reader is
  218.    more likely to have general networking knowledge and experience,
  219.    rather than expertise in a particular protocol.  An explanation of
  220.    it's purpose and use will give the reader a reference point for
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Scott                    Best Current Practice                  [Page 4]
  227.  
  228. RFC 2360          Guide for Internet Standards Writers         June 1998
  229.  
  230.  
  231.    understanding the protocol, and where it fits in the Internet.  The
  232.    STD 54/RFC 2328 was recommended to the STDGUIDE working group as
  233.    providing a good example of this in its "Protocol Overview" section.
  234.  
  235.    The protocol's general description must also provide information on
  236.    the relationship between the different parties to the protocol. This
  237.    can be done by showing typical packet sequences.
  238.  
  239.    This also applies to the algorithms used by a protocol.  A detailed
  240.    description of the algorithms or citation of readily available
  241.    references that give such a description is necessary.
  242.  
  243. 2.3  Target Audience
  244.  
  245.    RFCs have been written with many different purposes, ranging from the
  246.    technical to the administrative.  Those written as standards should
  247.    clearly identify the intended audience, for example, designers,
  248.    implementers, testers, help desk personnel, educators, end users, or
  249.    others.  If there are multiple audiences being addressed in the
  250.    document, the section for each audience needs to be identified.  The
  251.    goal is to help the reader discover and focus on what they have
  252.    turned to the document for, and avoid what they may find confusing,
  253.    diverting, or extraneous.
  254.  
  255. 2.4  Level of Detail
  256.  
  257.    The author should consider what level of descriptive detail best
  258.    conveys the protocol's intent.  Concise text has several advantages.
  259.    It makes the document easier to read.  Such text reduces the chance
  260.    for conflict between different portions of the specification.  The
  261.    reader can readily identify the required protocol mechanisms in the
  262.    standard.  In addition, it makes it easier to identify the
  263.    requirements for protocol implementation.  A disadvantage of concise
  264.    descriptions is that a reader may not fully comprehend the reasoning
  265.    behind the protocol, and thus make assumptions that will lead to
  266.    implementation errors.
  267.  
  268.    Longer descriptions may be necessary to explain purpose, background,
  269.    rationale, implementation experience, or to provide tutorial
  270.    information.  This helps the reader understand the protocol.  Yet,
  271.    several dangers exist with lengthy text.  Finding the protocol
  272.    requirements in the text is difficult or confusing.  The same
  273.    mechanism may have multiple descriptions, which leads to
  274.    misinterpretation or conflict.  Finally, it is more difficult to
  275.    comprehend, a consideration as English is not the native language of
  276.    the many worldwide readers of IETF standards.
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Scott                    Best Current Practice                  [Page 5]
  283.  
  284. RFC 2360          Guide for Internet Standards Writers         June 1998
  285.  
  286.  
  287.    One approach is to divide the standard into sections: one describing
  288.    the protocol concisely, while another section consists of explanatory
  289.    text.  The STD 3/RFC 1122/RFC 1123 and STD 54/RFC 2328 provides
  290.    examples of this method.
  291.  
  292. 2.5  Change Logs
  293.  
  294.    As a document moves along the standards track, from Proposed to Draft
  295.    or Draft to Full, or cycles in level, it will undergo changes due to
  296.    better understanding of the protocol or implementation experience. To
  297.    help implementers track the changes being made a log showing what has
  298.    changed from the previous version of the specification is required
  299.    (see Appendix).
  300.  
  301. 2.6  Protocol Versions
  302.  
  303.    Often the standard is specifying a new version of an existing
  304.    protocol.  In such a case, the authors should detail the differences
  305.    between the previous version and the new version.  This should
  306.    include the rationale for the changes, for example, implementation
  307.    experience, changes in technology, responding to user demand, etc.
  308.  
  309. 2.7  Decision History
  310.  
  311.    In standards development, reaching consensus requires making
  312.    difficult choices.  These choices are made through working group
  313.    discussions or from implementation experience.  By including the
  314.    basis for a contentious decision, the author can prevent future
  315.    revisiting of these disagreements when the original parties have
  316.    moved on.  In addition, the knowledge of the "why" is as useful to an
  317.    implementer as the description of "how".  For example, the
  318.    alternative not taken may have been simpler to implement, so
  319.    including the reasons behind the choice may prevent future
  320.    implementers from taking nonstandard shortcuts.
  321.  
  322. 2.8  Response to Out of Specification Behavior
  323.  
  324.    A detail description of the actions taken in case of behavior that is
  325.    deviant from or exceeds the specification is useful.  This is an area
  326.    where implementers often differ in opinion as to the appropriate
  327.    response.  By specifying a common response, the standard author can
  328.    reduce the risk that different implementations will come in to
  329.    conflict.
  330.  
  331.    The standard should describe responses to behavior explicitly
  332.    forbidden or out of the boundaries defined by the specification.  Two
  333.    possible approaches to such cases are discarding, or invoking error-
  334.    handling mechanisms.  If discarding is chosen, detailing the
  335.  
  336.  
  337.  
  338. Scott                    Best Current Practice                  [Page 6]
  339.  
  340. RFC 2360          Guide for Internet Standards Writers         June 1998
  341.  
  342.  
  343.    disposition may be necessary.  For instance, treat dropped frames as
  344.    if they were never received, or reset an existing connection or
  345.    adjacency state.
  346.  
  347.    The specification should describe actions taken when a critical
  348.    resource or a performance-scaling limit is exceeded.  This is
  349.    necessary for cases where a risk of network degradation or
  350.    operational failure exists.  In such cases, a consistent behavior
  351.    between implementations is necessary.
  352.  
  353. 2.9  The Liberal/Conservative Rule
  354.  
  355.    A rule, first stated in STD 5/RFC 791, recognized as having benefits
  356.    in implementation robustness and interoperability is:
  357.  
  358.                     "Be liberal in what you accept, and
  359.                       conservative in what you send".
  360.  
  361.    Or establish restrictions on what a protocol transmits, but be able
  362.    to deal with every conceivable error received.  Caution is urged in
  363.    applying this approach in standards track protocols.  It has in the
  364.    past lead to conflicts between vendors when interoperability fails.
  365.    The sender accuses the receiver of failing to be liberal enough, and
  366.    the receiver accuses the sender of not being conservative enough.
  367.    Therefore, the author is obligated to provide extensive detail on
  368.    send and receive behavior.
  369.  
  370.    To avoid any confusion between the two, recommend that standard
  371.    authors specify send and receive behavior separately.  The
  372.    description of reception will require the most detailing.  For
  373.    implementations are expected to continue operating regardless of
  374.    error received.  Therefore, the actions taken to achieve that result,
  375.    need to be laid out in the protocol specification.  Standard authors
  376.    should concern themselves on achieving a level of cooperation that
  377.    limits network disruption, not just how to survive on the network.
  378.    The appearance of undefined information or conditions must not cause
  379.    a network or host failure.  This requires specification on how to
  380.    attempt acceptance of most of the packets.  Two approaches are
  381.    available, either using as much of the packet's content as possible,
  382.    or invoking error procedures.  The author should specify a dividing
  383.    line on when to take which approach.
  384.  
  385.    A case for consideration is that of a routing protocol, where
  386.    acceptance of flawed information can cause network failure.  For
  387.    protocols such as this, the specification should identify packets
  388.    that could have different interpretations and mandate that they be
  389.    rejected completely or the nature of the attempt to recover some
  390.    information from them.  For example, routing updates that contain
  391.  
  392.  
  393.  
  394. Scott                    Best Current Practice                  [Page 7]
  395.  
  396. RFC 2360          Guide for Internet Standards Writers         June 1998
  397.  
  398.  
  399.    more data than the tuple count shows.  The protocol authors should
  400.    consider whether some trailing data can be accepted as additional
  401.    routes, or to reject the entire packet as suspect because it is non-
  402.    conformant.
  403.  
  404. 2.10  Handling of Protocol Options
  405.  
  406.    Specifications with many optional features increase the complexity of
  407.    the implementation and the chance of non-interoperable
  408.    implementations.  The danger is that different implementations may
  409.    specify some combination of options that are unable to interoperate
  410.    with each other.
  411.  
  412.    As the document moves along the standard track, implementation
  413.    experience shall determine the need for each option.  Implementation
  414.    shall show whether the option should be a mandatory part of the
  415.    protocol or remain an option.  If an option is not implemented as the
  416.    document advances, it must be removed from the protocol before it
  417.    reaches draft standard status.
  418.  
  419.    Therefore, options shall only be present in a protocol to address a
  420.    real requirement.  For example, options can support future
  421.    extensibility of the protocol, a particular market, e.g., the
  422.    financial industry, or a specific network environment, e.g., a
  423.    network constrained by limited bandwidth.  They shall not be included
  424.    as a means to "buy-off" a minority opinion.  Omission of the optional
  425.    item shall have no interoperability consequences for the
  426.    implementation that does so.
  427.  
  428.    One possible approach is to document protocol options in a separate
  429.    specification.  This keeps the main protocol specification clean and
  430.    makes it clear that the options are not required to implement the
  431.    protocol.  Regardless of whether they appear within the specification
  432.    or in a separate document, the text shall discuss the full
  433.    implications of either using the option or not, and the case for
  434.    choosing either course.  As part of this, the author needs to
  435.    consider and describe how the options are used alongside other
  436.    protocols.  The text must also specify the default conditions of all
  437.    options.  For security checking options the default condition is on
  438.    or enabled.
  439.  
  440.    There are occasions when mutually exclusive options appear within the
  441.    protocol.  That is, the implementation of an optional feature
  442.    precludes the implementation of the other optional feature.  For
  443.    clarity, the author needs to state when to implement one or the
  444.    other, what the effect of choosing one over the other is, and what
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Scott                    Best Current Practice                  [Page 8]
  451.  
  452. RFC 2360          Guide for Internet Standards Writers         June 1998
  453.  
  454.  
  455.    problems the implementer or user may face.  The choice of one or the
  456.    other options shall have no interoperability consequences between
  457.    multiple implementations.
  458.  
  459. 2.11  Indicating Requirement Levels
  460.  
  461.    The BCP 14/RFC 2119, "Key words for use in RFCs to Indicate
  462.    Requirement Level", defines several words that are necessary for
  463.    writing a standards track document.  Editors of standards track
  464.    documents must not deviate from the definitions provided as they are
  465.    intended to identify interoperability requirements or limit
  466.    potentially harmful behavior.  The capitalization of these words is
  467.    the accepted norm, and can help in identifying an unintentional or
  468.    unreasonable requirement.  These words have been used in several RFCs
  469.    the first instances being STD 3/RFC 1122/RFC 1123.
  470.  
  471. 2.12  Notational Conventions
  472.  
  473.    Formal syntax notations can be used to define complicated protocol
  474.    concepts or data types, and to specify values of these data types.
  475.    This permits the protocol to be written without concern on how the
  476.    implementation is constructed, or how the data type is represented
  477.    during transfer.  The specification is simplified because it can be
  478.    presented as "axioms" that will be proven by implementation.
  479.  
  480.    The formal specification of the syntax used should be referenced in
  481.    the text of the standard.  Any extensions, subsets, alterations, or
  482.    exceptions to that formal syntax should be defined within the
  483.    standard.
  484.  
  485.    The STD 11/RFC 822 provides an example of this.  In RFC 822 (Section
  486.    2 and Appendix D) the Backus-Naur Form (BNF) meta-language was
  487.    extended to make its representation smaller and easier to understand.
  488.    Another example is STD 16/RFC 1155 (Section 3.2) where a subset of
  489.    the Abstract Syntax Notation One (ASN.1) is defined.
  490.  
  491.    The author of a standards track protocol needs to consider several
  492.    things before they use a formal syntax notation.  Is the formal
  493.    specification language being used parseable by an existing machine?
  494.    If no parser exists, is there enough information provided in the
  495.    specification to permit the building of a parser?  If not, it is
  496.    likely the reader will not have enough information to decide what the
  497.    notation means.  In addition, the author should remember machine
  498.    parseable syntax is often unreadable by humans, and can make the
  499.    specification excessive in length.  Therefore, syntax notations
  500.    cannot take the place of a clearly written protocol description.
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Scott                    Best Current Practice                  [Page 9]
  507.  
  508. RFC 2360          Guide for Internet Standards Writers         June 1998
  509.  
  510.  
  511. 2.13  IANA Considerations
  512.  
  513.    The common use of the Internet standard track protocols by the
  514.    Internet community requires that unique values be assigned to
  515.    parameter fields.  An IETF WG does not have the authority to assign
  516.    these values for the protocol it developed.  The Internet Assigned
  517.    Numbers Authority (IANA) is the central authority for the assignment
  518.    of unique parameter values for Internet protocols.  The authors of a
  519.    developing protocol need to coordinate with the IANA the rules and
  520.    procedures to manage the number space.  This coordination needs to be
  521.    completed prior to submitting the Internet Draft to the standards
  522.    track.
  523.  
  524.    A document is in preparation that discusses issues related to
  525.    identifier assignment policy and guidelines on specific text to task
  526.    IANA with its administration.  Standard authors should obtain a copy
  527.    of it when it is finalized as an RFC.
  528.  
  529.    For further information on parameter assignment and current
  530.    assignments, authors can reference STD 2, RFC 1700, "Assigned
  531.    Numbers" (http://www.iana.org).
  532.  
  533. 2.14  Network Management Considerations
  534.  
  535.    When relevant, each standard needs to discuss how to manage the
  536.    protocol being specified.  This management process should be
  537.    compatible with the current IETF Standard management protocol.  In
  538.    addition, a MIB must be defined within the standard or in a companion
  539.    document.  The MIB must be compatible with current Structure of
  540.    Management Information (SMI) and parseable using a tool such as
  541.    SMICng.  Where management or a MIB is not necessary this section of
  542.    the standard should explain the reason it is not relevant to the
  543.    protocol.
  544.  
  545. 2.15  Scalability Considerations
  546.  
  547.    The standard should establish the limitations on the scale of use,
  548.    e.g., tens of millions of sessions, gigabits per second, etc., and
  549.    establish limits on the resources used, e.g., round trip time,
  550.    computing resources, etc.  This is important because it establishes
  551.    the ability of the network to accommodate the number of users and the
  552.    complexity of their relations.  The STD 53/RFC 1939 has an example of
  553.    such a section.  If this is not applicable to the protocol, an
  554.    explanation of why not should be included.
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Scott                    Best Current Practice                 [Page 10]
  563.  
  564. RFC 2360          Guide for Internet Standards Writers         June 1998
  565.  
  566.  
  567. 2.16  Network Stability
  568.  
  569.    A standard should discuss the relationship between network topology
  570.    and convergence behavior.  As part of this, any topology that would
  571.    be troublesome for the protocol should be identified.  Additionally,
  572.    the specification should address any possible destabilizing events,
  573.    and means by which the protocol resists or recovers from them.  The
  574.    purpose is to insure that the network will stabilize, in a timely
  575.    fashion, after a change, and that a combination of errors or events
  576.    will not plunge the network into chaos.  The STD 34/RFC 1058, as an
  577.    example, has sections which discuss how that protocol handles the
  578.    affects of changing topology.
  579.  
  580.    The obvious case this would apply to is a routing protocol.  However,
  581.    an application protocol could also have dynamic behavior that would
  582.    affect the network.  For example, a messaging protocol could suddenly
  583.    dump a large number of messages onto the network.  Therefore, editors
  584.    of an application protocol will have to consider possible impacts to
  585.    network stability and convergence behavior.
  586.  
  587. 2.17 Internationalization
  588.  
  589.    At one time the Internet had a geographic boundary and was English
  590.    only.  The Internet now extends internationally.  Therefore, data is
  591.    interchanged in a variety of languages and character sets.  In order
  592.    to meet the requirements of an international Internet, a standard
  593.    must conform to the policies stated in BCP 18/RFC 2277, "IETF Policy
  594.    on Character Sets and Languages".
  595.  
  596. 2.18  Glossary
  597.  
  598.    Every standards track RFC should have a glossary, as words can have
  599.    many meanings.  By defining any new words introduced, the author can
  600.    avoid confusing or misleading the implementers.  The definition
  601.    should appear on the word's first appearance within the text of the
  602.    protocol specification, and in a separate glossary section.
  603.  
  604.    It is likely that definition of the protocol will rely on many words
  605.    frequently used in IETF documents.  All authors must be knowledgeable
  606.    of the common accepted definitions of these frequently used words.
  607.    FYI 18/RFC 1983, "Internet Users' Glossary", provides definitions
  608.    that are specific to the Internet.  Any deviation from these
  609.    definitions by authors is strongly discouraged.  If circumstances
  610.    require deviation, an author should state that he is altering the
  611.    commonly accepted definition, and provide rationale as to the
  612.    necessity of doing so.  The altered definition must be included in
  613.    the Glossary section.
  614.  
  615.  
  616.  
  617.  
  618. Scott                    Best Current Practice                 [Page 11]
  619.  
  620. RFC 2360          Guide for Internet Standards Writers         June 1998
  621.  
  622.  
  623.    If the author uses the word as commonly defined, she does not have to
  624.    include the definition in the glossary.  As a minimum, FYI 18/RFC
  625.    1983 should be referenced as a source.
  626.  
  627. 3  Specific Guidelines
  628.  
  629.    The following are guidelines on how to present specific technical
  630.    information in standards.
  631.  
  632. 3.1  Packet Diagrams
  633.  
  634.    Most link, network, and transport layer protocols have packet
  635.    descriptions.  Packet diagrams included in the standard are very
  636.    helpful to the reader.  The preferred form for packet diagrams is a
  637.    sequence of long words in network byte order, with each word
  638.    horizontal on the page and bit numbering at the top:
  639.  
  640.     0                   1                   2                   3
  641.     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
  642.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  643.    |Version| Prio. |                   Flow Label                  |
  644.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  645.  
  646.    In cases where a packet is strongly byte-aligned rather than word-
  647.    aligned (e.g., when byte-boundary variable-length fields are used),
  648.    display packet diagrams in a byte-wide format.  The author can use
  649.    different height boxes for short and long words, and broken boxes for
  650.    variable-length fields:
  651.  
  652.                            0 1 2 3 4 5 6 7
  653.                           +-+-+-+-+-+-+-+-+
  654.                           |    Length N   |
  655.                           +-+-+-+-+-+-+-+-+
  656.                           |               |
  657.                           +    Address    +
  658.                                  ...
  659.                           +   (N bytes)   +
  660.                           |               |
  661.                           +-+-+-+-+-+-+-+-+
  662.                           |               |
  663.                           +  2-byte field +
  664.                           |               |
  665.                           +-+-+-+-+-+-+-+-+
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Scott                    Best Current Practice                 [Page 12]
  675.  
  676. RFC 2360          Guide for Internet Standards Writers         June 1998
  677.  
  678.  
  679. 3.2  Summary Tables
  680.  
  681.    The specifications of some protocols are particularly lengthy,
  682.    sometimes covering a hundred pages or more.  In such cases, the
  683.    inclusion of a summary table can reduce the risk of conformance
  684.    failure by an implementation through oversight.  A summary table
  685.    itemizes what in a protocol is mandatory, optional, or prohibited.
  686.    Summary tables do not guarantee conformance, but serve to assist an
  687.    implementer in checking that they have addressed all protocol
  688.    features.
  689.  
  690.    The summary table will consist of, as a minimum, four (4) columns:
  691.    Protocol Feature, Section Reference, Status, and
  692.    References/Footnotes.  The author may add columns if they further
  693.    explain or clarify the protocol.
  694.  
  695.    In the Protocol Feature column, list the protocol's characteristics,
  696.    for example, a command word.  We recommend grouping series of related
  697.    transactions under descriptive headers, for example, RECEPTION.
  698.  
  699.    Section reference directs the implementer to the section, paragraph,
  700.    or page that describes the protocol feature in detail.
  701.  
  702.    Status indicates whether the feature is mandatory, optional, or
  703.    prohibited.  The author can use either a separate column for each
  704.    possibility, or a single column with appropriate codes.  These codes
  705.    need to be defined at the start of the summary table to avoid
  706.    confusion.  Possible status codes:
  707.  
  708.        M    - must or mandatory
  709.        MN   - must not
  710.        O    - optional
  711.        S    - should
  712.        SN   - should not
  713.        X    - prohibited
  714.  
  715.    In the References/Footnotes column authors can point to other RFCs
  716.    that are necessary to consider in implementing this protocol feature,
  717.    or any footnotes necessary to explain the implementation further.
  718.  
  719.    The STD 3/RFC 1122/RFC 1123 provides examples of summary tables.
  720.  
  721. 3.3  State Machine Descriptions
  722.  
  723.    A convenient method of presenting a protocol's behavior is as a
  724.    state-machine model.  That is, a protocol can be described by a
  725.    series of states resulting from a command, operation, or transaction.
  726.    State-machine models define the variables and constants that
  727.  
  728.  
  729.  
  730. Scott                    Best Current Practice                 [Page 13]
  731.  
  732. RFC 2360          Guide for Internet Standards Writers         June 1998
  733.  
  734.  
  735.    establish a state, the events that cause state transitions and the
  736.    actions that result from those transitions.  Through these models, an
  737.    understanding of the protocol's dynamic operation as sequence of
  738.    state transitions that occur for any given event is possible.  State
  739.    transitions can be detailed by diagrams, tables, or time lines.
  740.  
  741.    Note that state-machine models are never to take the place of
  742.    detailed text description of the specification.  They are adjuncts to
  743.    the text.  The protocol specification shall always take precedence in
  744.    the case of a conflict.
  745.  
  746.    When using a state transition diagram, show each possible protocol
  747.    state as a box connected by state transition arcs.  The author should
  748.    label each arc with the event that causes the transition, and, in
  749.    parentheses, any actions taken during the transition.  The STD 5/RFC
  750.    1112 provides an example of such a diagram.  As ASCII text is the
  751.    preferred storage format for RFCs, only simple diagrams are possible.
  752.    Tables can summarize more complex or extensive state transitions.
  753.  
  754.    In a state transition table, the different events are listed
  755.    vertically and the different states are listed horizontally.  The
  756.    form, action/new state, represents state transitions and actions.
  757.    Commas separate multiple actions, and succeeding lines are used as
  758.    required.  The authors should present multiple actions in the order
  759.    they must be executed, if relevant.  Letters that follow the state
  760.    indicate an explanatory footnote.  The dash ('-') indicates an
  761.    illegal transition.  The STD 51/RFC 1661 provides an example of such
  762.    a state transition table.  The initial columns and rows of that table
  763.    follow as an example:
  764.  
  765.            | State
  766.            |    0         1         2         3         4         5
  767.      Events| Initial   Starting  Closed    Stopped   Closing   Stopping
  768.      ------+-----------------------------------------------------------
  769.       Up   |    2     irc,scr/6     -         -         -         -
  770.       Down |    -         -         0       tls/1       0         1
  771.       Open |  tls/1       1     irc,scr/6     3r        5r        5r
  772.       Close|    0       tlf/0       2         2         4         4
  773.            |
  774.        TO+ |    -         -         -         -       str/4     str/5
  775.        TO- |    -         -         -         -       tlf/2     tlf/3
  776.  
  777.    The STD 18/RFC 904 also presents state transitions in table format.
  778.    However, it lists transitions in the form n/a, where n is the next
  779.    state and a represents the action.  The method in RFC 1661 is
  780.    preferred as new state logically follows action.  In addition, RFC
  781.    904's Appendix C models transitions as the Cartesian product of two
  782.    state machines.  This is a more complex representation that may be
  783.  
  784.  
  785.  
  786. Scott                    Best Current Practice                 [Page 14]
  787.  
  788. RFC 2360          Guide for Internet Standards Writers         June 1998
  789.  
  790.  
  791.    difficult to comprehend for those readers that are unfamiliar with
  792.    the format.  We recommend that authors present tables as defined in
  793.    the previous paragraph.
  794.  
  795.    A final method of representing state changes is by a time line.  The
  796.    two sides of the time line represent the machines involved in the
  797.    exchange.  The author lists the states the machines enter as time
  798.    progresses (downward) along the outside of time line.  Within the
  799.    time line, show the actions that cause the state transitions.  An
  800.    example:
  801.  
  802.             client                                     server
  803.  
  804.                |                                          |
  805.                |                                          |   LISTEN
  806.    SYN_SENT    |-----------------------                   |
  807.                |                       \ syn j            |
  808.                |                        ----------------->|   SYN_RCVD
  809.                |                                          |
  810.                |                        ------------------|
  811.                |        syn k, ack j+1 /                  |
  812.    ESTABLISHED |<----------------------                   |
  813.                |                                          |
  814.  
  815. 4  Document Checklist
  816.  
  817.    The following is a checklist based on the above guidelines that can
  818.    be applied to a document:
  819.  
  820.    o Does it identify the security risks?  Are countermeasures for each
  821.      potential attack provided?  Are the effects of the security
  822.      measures on the operating environment detailed?
  823.    o Does it explain the purpose of the protocol or procedure?  Are the
  824.      intended functions and services addressed?  Does it describe how it
  825.      relates to existing protocols?
  826.    o Does it consider scaling and stability issues?
  827.    o Have procedures for assigning numbers been coordinated with IANA?
  828.    o Does it discuss how to manage the protocol being specified?  Is a
  829.      MIB defined?
  830.    o Is a target audience defined?
  831.    o Does it reference or explain the algorithms used in the protocol?
  832.    o Does it give packet diagrams in recommended form, if applicable?
  833.    o Is there a change log?
  834.    o Does it describe differences from previous versions, if
  835.      applicable?
  836.    o Does it separate explanatory portions of the document from
  837.      requirements?
  838.    o Does it give examples of protocol operation?
  839.  
  840.  
  841.  
  842. Scott                    Best Current Practice                 [Page 15]
  843.  
  844. RFC 2360          Guide for Internet Standards Writers         June 1998
  845.  
  846.  
  847.    o Does it specify behavior in the face of incorrect operation by
  848.      other implementations?
  849.    o Does it delineate which packets should be accepted for processing
  850.      and which should be ignored?
  851.    o If multiple descriptions of a requirement are given, does it
  852.      identify one as binding?
  853.    o How many optional features does it specify?  Does it separate them
  854.      into option classes?
  855.    o Have all combinations of options or option classes been examined
  856.      for incompatibility?
  857.    o Does it explain the rationale and use of options?
  858.    o Have all mandatory and optional requirements be identified and
  859.      documented by the accepted key words that define Internet
  860.      requirement levels?
  861.    o Does it conform to the current internationalization policies of
  862.      the IETF?
  863.    o Are the recommended meanings for common Internet terms used?
  864.    o If not, are new or altered definitions for terms given in a
  865.      glossary?
  866.  
  867. 5  Security Considerations
  868.  
  869.    This document does not define a protocol or procedure that could be
  870.    subject to an attack.  It establishes guidelines for the information
  871.    that should be included in RFCs that are to be submitted to the
  872.    standards track.  In the area of security, IETF standards authors are
  873.    called on to define clearly the threats faced by the protocol and the
  874.    way the protocol does or does not provide security assurances to the
  875.    user.
  876.  
  877. 6  References
  878.  
  879.    [RFC 791]   Postel, J., "Internet Protocol (IP)", STD 5, RFC 791
  880.                September 1981.
  881.  
  882.    [RFC 904]   Mills, D., "Exterior Gateway Protocol formal
  883.                specification", RFC 904, April 1984.
  884.  
  885.    [RFC 1058]  Hedrick, C., "Routing Information Protocol", STD 34,
  886.                RFC 1058, June 1988.
  887.  
  888.    [RFC 1112]  Deering, S., "Host extensions for IP multicasting",
  889.                STD 5, RFC 1112, August 1989.
  890.  
  891.    [RFC 1122]  Braden, R., "Requirements for Internet Hosts --
  892.                Communication Layers", STD 3, RFC 1122, October 1989.
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Scott                    Best Current Practice                 [Page 16]
  899.  
  900. RFC 2360          Guide for Internet Standards Writers         June 1998
  901.  
  902.  
  903.    [RFC 1123]  Braden, R., "Requirements for Internet hosts --
  904.                Application and Support", STD 3, RFC 1123, October 1989.
  905.  
  906.    [RFC 1311]  Postel, J., "Introduction to the STD Notes", RFC 1311,
  907.                March 1992.
  908.  
  909.    [RFC 1350]  Sollins, K., "The TFTP Protocol (Revision 2)", STD 33,
  910.                RFC 1350, July 1992.
  911.  
  912.    [RFC 1661]  Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51,
  913.                RFC 1661, July 1994.
  914.  
  915.    [RFC 1662]  Simpson, W., "PPP in HLDC-like Framing", STD 51, RFC 1662,
  916.                July 1994.
  917.  
  918.    [RFC 1700]  Reynolds, J., and J. Postel, "Assigned Numbers", STD 2,
  919.                RFC 1700, October 1994.  (http://www.iana.org)
  920.  
  921.    [RFC 1939]  Meyers, J., and M. Rose, "Post Office Protocol - Version
  922.                3", STD 53, RFC 1939, May 1996.
  923.  
  924.    [RFC 1958]  Carpenter, B., "Architectural Principles of the Internet",
  925.                RFC 1958, June 1996.
  926.  
  927.    [RFC 1983]  Malkin, G., "Internet Users' Glossary", FYI 18, RFC 1983,
  928.                August 1996.
  929.  
  930.    [RFC 2026]  Bradner, S., "The Internet Standards Process -- Revision 3",
  931.                RFC 2026, October 1996.
  932.  
  933.    [RFC 2119]  Bradner, S., "Key words for use in RFCs to Indicate
  934.                Requirement Level", BCP 14, RFC 2119, March 1997.
  935.  
  936.    [RFC 2328]  Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.
  937.  
  938.    [RFC 2223]  Postel, J. and J. Reynolds, "Instructions to RFC Authors",
  939.                RFC 2223, October 1997.
  940.  
  941.    [RFC 2277]  Alvestrand, H., "IETF Policy on Character Sets and
  942.                Language", RFC 2277, January 1998.
  943.  
  944.    [RFC 2316]  Bellovin, S., "Report of the IAB Security Architecture
  945.                Workshop", RFC 2316, April 1998.
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. Scott                    Best Current Practice                 [Page 17]
  955.  
  956. RFC 2360          Guide for Internet Standards Writers         June 1998
  957.  
  958.  
  959. 7  Acknowledgments
  960.  
  961.    Peter Desnoyers and Art Mellor began the work on this document.
  962.    Others that contributed were:
  963.  
  964.      Bernard Aboba
  965.      Harald T. Alvestrand
  966.      Fred Baker
  967.      Scott Bradner
  968.      Brian Carpenter
  969.      Robert Elz
  970.      Dirk Fieldhouse
  971.      Dale Francisco
  972.      Gary Malkin
  973.      Neal McBurnett
  974.      Thomas Narten
  975.      Craig Partridge
  976.      Vern Paxson
  977.      Mike O'Dell
  978.      Henning Schulzrinne
  979.      Kurt Starsinic
  980.      James Watt
  981.  
  982. 8  Editor's Address
  983.  
  984.    Gregor D. Scott
  985.    Director, Defense Information Systems Agency
  986.    ATTN: JIEO-JEBBC
  987.    Ft. Monmouth, NJ  07703-5613
  988.    USA
  989.  
  990.    Phone:    (732) 427-6856
  991.    Fax:      (732) 532-0853
  992.    EMail:    scottg@ftm.disa.mil
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Scott                    Best Current Practice                 [Page 18]
  1011.  
  1012. RFC 2360          Guide for Internet Standards Writers         June 1998
  1013.  
  1014.  
  1015. 9  Appendix
  1016.  
  1017. CHANGES FROM DRAFT -06
  1018.  
  1019.    The following changes were made following IESG review:
  1020.  
  1021.    References to RFC 1543 were changed to RFC 2223 that obsoleted it.
  1022.  
  1023.    In section 2.1, "export control" was dropped as a valid reason for
  1024.    not selecting a security mechanism.  In addition, ambiguous or
  1025.    conflicting sentences were removed.
  1026.  
  1027.    In section 2.1 reference made to RFC 2315 as an additional source of
  1028.    information.
  1029.  
  1030.    Section 2.5 was changed to highlight the Change Log's purpose as
  1031.    assistance to implementers.
  1032.  
  1033.    The IANA Considerations section (2.13) was rewritten to highlight
  1034.    that the IANA guidelines document is work in progress but should be
  1035.    used when it becomes available.
  1036.  
  1037.    Section 3.4 Character Sets was deleted and replaced by section 2.17
  1038.    Internationalization.
  1039.  
  1040.    Spelling and grammar corrections were made.
  1041.  
  1042. CHANGES FROM DRAFT -05
  1043.  
  1044.    A sentence pointing to a pending document that further addresses IANA
  1045.    considerations was added to section 2.13.  The current draft of that
  1046.    document is draft-iesg-iana-considerations-02.txt.  A clause stating
  1047.    that the IANA established the assignment policies was removed since it
  1048.    appeared to conflict with the intent of the referenced ID.
  1049.    Placeholders for the BCP and RFC number have been added to the text
  1050.    and reference section.
  1051.  
  1052.    A new section (2.5) requiring change logs as documents progress along
  1053.    the standards track was added.
  1054.  
  1055.    References to RFC 2044 were changed to RFC 2279 that obsoleted it.
  1056.  
  1057.    Spelling and grammar corrections were made.
  1058.  
  1059. CHANGES FROM DRAFT -04
  1060.  
  1061.    A paragraph pointing to a pending document that further addresses
  1062.    security was updated.
  1063.  
  1064.  
  1065.  
  1066. Scott                    Best Current Practice                 [Page 19]
  1067.  
  1068. RFC 2360          Guide for Internet Standards Writers         June 1998
  1069.  
  1070.  
  1071. 10  Full Copyright Statement
  1072.  
  1073.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  1074.  
  1075.    This document and translations of it may be copied and furnished to
  1076.    others, and derivative works that comment on or otherwise explain it
  1077.    or assist in its implementation may be prepared, copied, published
  1078.    and distributed, in whole or in part, without restriction of any
  1079.    kind, provided that the above copyright notice and this paragraph are
  1080.    included on all such copies and derivative works.  However, this
  1081.    document itself may not be modified in any way, such as by removing
  1082.    the copyright notice or references to the Internet Society or other
  1083.    Internet organizations, except as needed for the purpose of
  1084.    developing Internet standards in which case the procedures for
  1085.    copyrights defined in the Internet Standards process must be
  1086.    followed, or as required to translate it into languages other than
  1087.    English.
  1088.  
  1089.    The limited permissions granted above are perpetual and will not be
  1090.    revoked by the Internet Society or its successors or assigns.
  1091.  
  1092.    This document and the information contained herein is provided on an
  1093.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  1094.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  1095.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  1096.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  1097.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Scott                    Best Current Practice                 [Page 20]
  1123.  
  1124.