<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?rfc tocompact="yes"?>
<?rfc tocindent="yes"?>
<?rfc compact="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bonica-gendispatch-exp-04" category="bcp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <front>
    <title abbrev="IETF Experiments">IETF Experiments</title>
    <seriesInfo name="Internet-Draft" value="draft-bonica-gendispatch-exp-04"/>
    <author initials="R." surname="Bonica" fullname="Ron Bonica">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <city>Herndon</city>
          <region>Virginia</region>
          <country>USA</country>
        </postal>
        <email>rbonica@juniper.net</email>
      </address>
    </author>
    <author initials="A." surname="Farrel" fullname="Adrian Farrel">
      <organization>Old Dog Consulting</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>adrian@olddog.co.uk</email>
      </address>
    </author>
    <date year="2025"/>
    <area>General</area>
    <workgroup>GenDispatch Working Group</workgroup>
    <keyword>experiment</keyword>
    <abstract>
       <t>This document describes IETF protocol experiments and provides guidelines for the publication of Experimental RFCs.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>According to <xref target="RFC2026"/>, the "Experimental" designation for an RFC typically denotes a specification that is part of a research or development effort. An Experimental RFC may be published for information and as an archival record of the work. An Experimental RFC may be the output of an IRTF Research Group, an IETF Working Group, or it may be an individual contribution that is sponsored by an Area Director or published on the Independent Submission Stream.</t>
      <t>Experimental RFCs in the IETF Stream describe IETF experiments. IETF process experiments are described in <xref target="RFC3933"/>, but this document is concerned with protocol experiments.</t>
      <t>An IETF protocol experiment is a procedure that is executed on the Internet for a bounded period of time. The experiment can, but does not always, include the deployment of a new protocol or protocol extension. For example, when two protocols are proposed to solve a single problem, the IETF can initiate an experiment in which each protocol is deployed. Operational experience obtained during the experiments can help to determine which, if either, of the protocols should be progressed to the standards track. Alternatively, when a new protocol or protocol extension has been developed, but the community is not confident that the approach will be effective or is safe, it may be published as an experiment with the specific purpose of determining how well it works.</t>
      <t>All protocol experiments must take care to not harm the Internet or interfere with established network operations. They should be conducted in a carefully controlled manner (for example, using a limited domain <xref target="RFC8799"/>). Furthermore, they must use protocol identifiers and code points that do not conflict with deployments of standardized protocols or other experiments. This guidance applies specifically to experiments described in IETF Experimental RFCs.</t>
      <t>When an IETF protocol experiment concludes, experimental results should be reported to the relevant working group usually via an Internet-Draft, and may be published in an Informational RFCs.</t>
      <t>This document describes IETF protocol experiments and provides guidelines for the publication of Experimental RFCs. Experimental RFCs in the Independent Submissions Stream or published by the IRTF are out of scope of this document.</t>
    </section>
    <section anchor="requirements-on-experimental-rfcs">
      <name>Requirements on Experimental RFCs</name>
      <t>An Experimental RFC must describe the experimental nature of the specification or deployment that it documents. Authors of Experimental RFCs may find it helpful to present this material in a specific section of their document, such as "Experimental Considerations." Nevertheless, the Abstract and the Introduction of the document must make it clear that the specification is an experiment, and must give some overview of the purpose and scope of the experiment.</t>
      <t>An Experimental RFC should:</t>
      <ul spacing="normal">
        <li>
          <t>Explain why the specification is presented as Experimental and not for publication on the Standards Track.</t>
        </li>
        <li>
          <t>Describe the experiment in detail, so that it can be replicated by non-collaborating parties and recognized when it is seen in deployments.</t>
        </li>
        <li>
          <t>Describe how the experiment is safeguarded so that it does not harm the Internet or interfere with its established operations.
          </t>
          <ul spacing="normal">
            <li>
              <t>It should indicate how messages or protocol data units are identified and associated with the experiment.</t>
            </li>
            <li>
              <t>It should describe how backward compatibility is ensured by non-participating deployments using pre-existing standardized mechanisms to discard or ignore the experiment.</t>
            </li>
            <li>
              <t>It should explain how the experiment is controlled so that it does not "leak out" into the wider Internet.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>List what configuration knobs should be provided on experimental implementations</t>
        </li>
        <li>
          <t>Include a date at which the experiment will be terminated.</t>
        </li>
        <li>
          <t>Include metrics and observations that will be collected during the experiment.</t>
        </li>
        <li>
          <t>Include criteria by which success of the experiment will be determined.</t>
        </li>
        <li>
          <t>Explain how reports of the success or failure of the experiment will be brought to the IETF, what information should be collected and reported (see <xref target="reports"/>), and possibly suggest a template for reporting experimental results.</t>
        </li>
        <li>
          <t>Suggest planned next steps if the experiment is fully or partially successful.</t>
        </li>
      </ul>
      <t>When two protocol mechanisms are proposed to solve a single problem, the IETF can initiate an experiment in which each protocol is deployed. In this case, the same metrics should be collected in each experiment.</t>
      <section anchor="iana-assign">
        <name>Codepoints in Experimental RFCs</name>
        <t><xref target="RFC8126"/> describes guidelines for writing IANA Considerations sections in RFCs. It lists a number of assignment policies that apply to codepoint registries maintained by IANA.</t>
        <t>Experimental RFCs cannot obtain codepoints from registries or parts of registries that are managed under the following assignment policies:</t>
        <ul spacing="normal">
          <li>
            <t>Standards Action</t>
          </li>
          <li>
            <t>Hierarchical Allocation</t>
          </li>
        </ul>
        <t>An Experimental RFC may request and be granted codepoints from registries or parts of registries that are managed under the following assignment policies:</t>
        <ul spacing="normal">
          <li>
            <t>First Come First Served</t>
          </li>
          <li>
            <t>Expert Review</t>
          </li>
          <li>
            <t>Specification Required</t>
          </li>
          <li>
            <t>RFC Required</t>
          </li>
          <li>
            <t>IETF Review</t>
          </li>
          <li>
            <t>IESG Approval</t>
          </li>
        </ul>
        <t>Consideration must be given to the fact that the experiment may be temporary in nature and the protocol or protocol extensions may be abandoned. If there is a scarcity of available codepoints in a registry, even more caution should be applied to any codepoint assignments.</t>
        <t>Some registries or parts of registries are marked as "For Experimental Use: Not to be assigned." These ranges are specifically intended for use by protocol experiments, and this may be particularly valuable as described in <xref target="RFC3692"/>. But assignments are not made from these codepoint ranges, and Experimental RFCs must not document any codepoints from such ranges. Instead, protocol implementations should allow the codepoints to be configured so that all implementations participating in an experiment can interoperate and so that multiple experiments may co-exist in the same network. Where assignable codepoints are scarce, consideration should be given to using Experimental Use ranges rather than assigning new codepoints.</t>
        <t>Experiments may additionally use codepoints from Private Use ranges, but these codepoints are also not recorded</t>
        <t>IANA may be requested to create new registries specified in Experimental RFCs. Experimental RFCs that would otherwise ask for the creation of protocol registries may alternatively simply enumerate the codepoints within the RFC.</t>
      </section>
      <section anchor="requirements-level-language-and-keywords">
        <name>Requirements Level Language and Keywords</name>
        <t>An Experimental RFC describing a protocol experiment may use BCP 14 requirements level language and keywords <xref target="RFC2119"/> <xref target="RFC8174"/> to help clarify the description of the protocol or protocol extension and the expected behavior of implementations.</t>
      </section>
    </section>
    <section anchor="reports">
      <name>Experimental Reports</name>
      <t>Experimental Reports should include the following information:</t>
      <ul spacing="normal">
        <li>
          <t>Scale of deployment</t>
        </li>
        <li>
          <t>Effort required to deploy
          </t>
          <ul spacing="normal">
            <li>
              <t>Was deployment incremental or network-wide?</t>
            </li>
            <li>
              <t>Was there a need to synchronize configurations at each node or could nodes be configured independently</t>
            </li>
            <li>
              <t>Did the deployment require hardware upgrade?</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Effort required to secure</t>
        </li>
        <li>
          <t>Performance impact of risk mitigation</t>
        </li>
        <li>
          <t>Effectiveness of risk mitigation</t>
        </li>
        <li>
          <t>Cost of risk mitigation</t>
        </li>
        <li>
          <t>Interoperability</t>
        </li>
        <li>
          <t>Did you deploy two inter-operable implementations?</t>
        </li>
        <li>
          <t>Did you experience interoperability problems?</t>
        </li>
        <li>
          <t>Effectiveness and sufficiency of OAM mechanism</t>
        </li>
      </ul>
    </section>
    <section anchor="stds">
      <name>Progression to Standards Track</name>
      <t>If, after successful completion of an experiment, there is IETF consensus to progress the work for publication on the Standards
         Track, the completed RFC should include:</t>
      <ul spacing="normal">
        <li>
          <t>Notes indicating any changes from the experimental version of the protocol.</t>
        </li>
        <li>
          <t>Advice for network operators on how to migrate from Experimental deployments to Standards Track deployments.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not make any requests of IANA, but see <xref target="iana-assign"/> for details of the use of codepoints in Experimental RFCs.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As this document does not introduce any new protocols or operational procedures, it does not introduce any new security considerations.</t>
      <t>Experimental RFCs must include security and privacy considerations as with any other RFC. As well as considering the security and privacy implications of the protocol or protocol extensions, Experimental RFCs should examine the implications for security and privacy of running an experiment on the Internet.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors wish to acknowledge Dhruv Dhody, Amanda Barber, and Murray Kucherawy for helpful discussions of experimental code points.</t>
      <t>Thanks to Brian Carpenter, Michael Richardson, and Paul Hoffmann for review and comments.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2026">
          <front>
            <title>The Internet Standards Process -- Revision 3</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="October" year="1996"/>
            <abstract>
              <t>This memo documents the process used by the Internet community for the standardization of protocols and procedures. It defines the stages in the standardization process, the requirements for moving a document between stages and the types of documents used during this process. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="9"/>
          <seriesInfo name="RFC" value="2026"/>
          <seriesInfo name="DOI" value="10.17487/RFC2026"/>
        </reference>
        <reference anchor="RFC3933">
          <front>
            <title>A Model for IETF Process Experiments</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="S. Dawkins" initials="S." surname="Dawkins"/>
            <date month="November" year="2004"/>
            <abstract>
              <t>The IETF has designed process changes over the last ten years in one of two ways: announcement by the IESG, sometimes based on informal agreements with limited community involvement and awareness, and formal use of the same mechanism used for protocol specification. The first mechanism has often proven to be too lightweight, the second too heavyweight.</t>
              <t>This document specifies a middle-ground approach to the system of making changes to IETF process, one that relies heavily on a "propose and carry out an experiment, evaluate the experiment, and then establish permanent procedures based on operational experience" model rather than those previously attempted. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="93"/>
          <seriesInfo name="RFC" value="3933"/>
          <seriesInfo name="DOI" value="10.17487/RFC3933"/>
        </reference>
        <reference anchor="RFC8799">
          <front>
            <title>Limited Domains and Internet Protocols</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="B. Liu" initials="B." surname="Liu"/>
            <date month="July" year="2020"/>
            <abstract>
              <t>There is a noticeable trend towards network behaviors and semantics that are specific to a particular set of requirements applied within a limited region of the Internet. Policies, default parameters, the options supported, the style of network management, and security requirements may vary between such limited regions. This document reviews examples of such limited domains (also known as controlled environments), notes emerging solutions, and includes a related taxonomy. It then briefly discusses the standardization of protocols for limited domains. Finally, it shows the need for a precise definition of "limited domain membership" and for mechanisms to allow nodes to join a domain securely and to find other members, including boundary nodes.</t>
              <t>This document is the product of the research of the authors. It has been produced through discussions and consultation within the IETF but is not the product of IETF consensus.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8799"/>
          <seriesInfo name="DOI" value="10.17487/RFC8799"/>
        </reference>
        <reference anchor="RFC3692">
          <front>
            <title>Assigning Experimental and Testing Numbers Considered Useful</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>When experimenting with or extending protocols, it is often necessary to use some sort of protocol number or constant in order to actually test or experiment with the new function, even when testing in a closed environment. For example, to test a new DHCP option, one needs an option number to identify the new function. This document recommends that when writing IANA Considerations sections, authors should consider assigning a small range of numbers for experimentation purposes that implementers can use when testing protocol extensions or other new features. This document reserves some ranges of numbers for experimentation purposes in specific protocols where the need to support experimentation has been identified.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="82"/>
          <seriesInfo name="RFC" value="3692"/>
          <seriesInfo name="DOI" value="10.17487/RFC3692"/>
        </reference>
      </references>
    </references>
  </back>
</rfc>
