<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY RFC6973 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6973.xml">
  <!ENTITY RFC8126 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8126.xml">
  <!ENTITY RFC2026 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2026.xml">
  <!ENTITY RFC3692 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3692.xml">
  <!ENTITY RFC3933 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3933.xml">
  <!ENTITY RFC8799 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8799.xml">

  <!ENTITY I-D.opsarea-rfc5706bis SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.opsarea-rfc5706bis">

]>
<?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-06" 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-06"/>
    <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 RFC.</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. Thus, while the
                 experiment may be run between consenting implementations over the Internet (for example, application layer experiments), this
                 does not require the nodes within the Internet infrastructure being exposed to the experiment. The required control, therefore,
                 is that the experiment needs to ensure that the protocol elements of the experiment are not accidentally received and processed by
                 parts of the Internet that could be disrupted by that activity.</t>
              <t>In later stages of experimentation it may be desirable to determine the value of the experiment in very large-scale deployments. This
                 might only be possible by deployment within significant parts of the Internet. In these cases, it is extremely important that the
                 Experimental RFC describe how controlled and gradual roll-out is achieved, how disruption caused by the experiment can be prevented,
                 how disruption resulting from the experiment can be detected and traced back to the experiment, and how the experiment can be
                 rapidly and safely turned off if problems arise.</t>
              <t>While an objective of an experiment might be, "To determine whether this new approach causes disruption to the Internet," it must
                 be clearly understood that it is not appropriate to unduly risk such disruption. Thus, any such experiment must be carefully planned
                 to mitigate disruption if it does arise.</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>
          <t>If it is intended that the experiment should be long-lasting or open-ended, this needs to be explicitly stated, and the reasoning
             given. This is important because the Experimental RFC should not be used to produce a de facto protocol specification by-passing
             full IETF review.</t>
        </li>
        <li>
          <t>Include metrics and observations that will be collected during the experiment, and contrast the behavior with pre-existing IETF protocol solutions.</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. The rules exist for a number of reasons including the preservation
           of scarce resources in small codepoint spaces, the avoidance of standardisation-by-default without proper review and cooperation,
           and the "baking in" of codepoints into deployed equipment.</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 requirements level language and keywords <xref target="BCP14"/>
           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 may be viewed as reports from individual implementers or experimenters, and a more general collection of all
         experimental results.</t>

      <t>Individual 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>

      <t>Aggregated reports may be written up as the experimental period continues, and should be produced when the IETF protocol experiment
         concludes. Such reporting may be tracked through a wiki or via github (for example, on the working group&apos;s IETF-hosted wiki or git repository),
         or shared through an Internet-Draft. The final report might or might not end up published as an Informational RFC depending on its lasting
         value (especially in the case of the 'failure' of the experiment), but archiving the results in the Internet-Draft or through a web page may
         be sufficient if work progresses to promote a successful experiment to a Standards Track specification.</t>

    </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="ops-considerations">
      <name>Operational Considerations</name>

      <t>As this document does not introduce any new protocols or operational procedures, nor define any architectures of protocol
         requirements, there are no new operations or manageability requirements introduced by this document.</t>

      <t>Authors of Experimental RFCs that describe protocols or protocol extensions need to pay particular attention to:</t>
      <ul spacing="normal">
        <li>
          <t>How the protocol will be operated and managed.</t>
        </li>
        <li>
          <t>How the experiment will be configured and managed so that it can be distinguished from normal network operations
             and from other experiments.</t>
        </li>
        <li>
          <t>How the experiment will interact with operations and management of other deployed protocols.</t>
        </li>
      </ul>

      <t>This material should normally be included in a dedicated "Operational Considerations" section of the Experimental RFC.
         Advice and guidance about the content of this section can be found in <xref target="I-D.opsarea-rfc5706bis"/>.</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>Per <xref target="BCP72" />, Experimental RFCs must include security considerations as with any other RFC. Additionally,
         <xref target="RFC6973" /> offers guidance on writing privacy considerations, and while it is not mandatory to include
         such material in Experimental RFCs, it is best practice to do so.</t>

      <t>Note that additional boilerplate material for RFCs containing YANG modules also exists and applies to Experimental RFCs.
         See <xref target="YANG-SEC" /> for up-to-date details.</t>

      <t>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/over the Internet.</t>

      <t>There may also be security issues with running an experimental protocol a long time after an experiment has ended. This
         might cause clashes with re-use of experimental code points or have other unpredicted results. A good approach is to
         ensure that implementations require active configuration to enable the use of experimental protocols (i.e., the
         experimental protocol features require the setting of a configuration option that is off by default).</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, Paul Hoffmann, Alan DeKoK, and Colin Perkins 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>

        &RFC6973;
        &RFC8126;

        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <xi:include
             href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
          <xi:include
             href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        </referencegroup>

        <referencegroup anchor="BCP72" target="https://www.rfc-editor.org/info/bcp72">
          <xi:include
             href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml"/>
          <xi:include
             href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9416.xml"/>
        </referencegroup>

      &I-D.opsarea-rfc5706bis;

      </references>

      <references anchor="sec-informative-references">
        <name>Informative References</name>

        &RFC2026;
        &RFC3692;
        &RFC3933;
        &RFC8799;

        <reference anchor="YANG-SEC" target="https://wiki.ietf.org/en/group/ops/yang-security-guidelines">
          <front>
            <title>YANG module security considerations</title>
            <author>
              <organization>IETF Operations and Management Area</organization>
            </author>
            <date month="May" year="2013"/>
          </front>
          <seriesInfo name="Wiki" value="IETF Operations and Management Area Wiki"/>
        </reference>

      </references>

    </references>

  </back>
</rfc>
