<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-tcpm-yang-tcp-09" number="9648" obsoletes="" updates="" ipr="trust200902" submissionType="IETF" consensus="true" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" prepTime="2024-10-10T16:35:07" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-tcpm-yang-tcp-09" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9648" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="YANG Data Model for TCP">YANG Data Model for TCP</title>
    <seriesInfo name="RFC" value="9648" stream="IETF"/>
    <author fullname="Michael Scharf" initials="M." surname="Scharf">
      <organization abbrev="Hochschule Esslingen" showOnFrontPage="true">Hochschule Esslingen</organization>
      <address>
        <postal>
          <street>University of Applied Sciences</street>
          <street>Kanalstr. 33</street>
          <code>73728</code>
          <city>Esslingen am Neckar</city>
          <country>Germany</country>
        </postal>
        <email>michael.scharf@hs-esslingen.de</email>
      </address>
    </author>
    <author fullname="Mahesh Jethanandani" initials="M." surname="Jethanandani">
      <organization showOnFrontPage="true">Kloud Services</organization>
      <address>
        <email>mjethanandani@gmail.com</email>
      </address>
    </author>
    <author fullname="Vishal Murgai" initials="V." surname="Murgai">
      <organization showOnFrontPage="true">F5, Inc.</organization>
      <address>
        <email>vmurgai@gmail.com</email>
      </address>
    </author>
    <date month="10" year="2024"/>
    <area>WIT</area>
    <workgroup>TCPM</workgroup>
    <keyword>YANG</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document specifies a minimal YANG data model for TCP on
      devices that are configured and managed by network management
      protocols. The YANG data model defines a container for all TCP
      connections and groupings of authentication
      parameters that can be imported and used in TCP implementations
      or by other models that need to configure TCP parameters. The
      model also includes basic TCP statistics. The model is compliant
      with Network Management Datastore Architecture (NMDA) (RFC
      8342).</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9648" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions">Conventions</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-yang-module-overview">YANG Module Overview</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-scope">Scope</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-model-design">Model Design</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tree-diagram">Tree Diagram</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tcp-yang-data-model">TCP YANG Data Model</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-ietf-xml-registry">The IETF XML Registry</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-yang-module-names-regis">The YANG Module Names Registry</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples">Examples</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-keepalive-configuration">Keepalive Configuration</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-tcp-ao-configuration">TCP-AO Configuration</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="Appendix B" format="default" sectionFormat="of" target="section-appendix.b"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-complete-tree-diagram">Complete Tree Diagram</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The Transmission Control
      Protocol (TCP) <xref target="RFC9293" format="default" sectionFormat="of" derivedContent="RFC9293"/> is used by many applications in the Internet,
      including control and management protocols. As such, TCP is
      implemented on network elements that can be configured and managed
      via network management protocols such as
      Network Configuration Protocol (NETCONF) <xref target="RFC6241" format="default" sectionFormat="of" derivedContent="RFC6241"/> or
      RESTCONF <xref target="RFC8040" format="default" sectionFormat="of" derivedContent="RFC8040"/>.</t>
      <t indent="0" pn="section-1-2">This document specifies a minimal YANG
      1.1 <xref target="RFC7950" format="default" sectionFormat="of" derivedContent="RFC7950"/> data model for configuring and managing TCP on network
      elements that support YANG, a TCP connection table,
      a TCP listener table containing
      information about a particular TCP listener, and an augmentation
      of the YANG data model for key
      chains <xref target="RFC8177" format="default" sectionFormat="of" derivedContent="RFC8177"/> to support authentication. The YANG module specified
      in this document is compliant with
      Network Management Datastore Architecture (NMDA) <xref target="RFC8342" format="default" sectionFormat="of" derivedContent="RFC8342"/>.</t>
      <t indent="0" pn="section-1-3">The YANG module has a narrow scope and focuses on a subset of
      fundamental TCP functions and basic statistics. It defines a
      container for a list of TCP connections that includes definitions from
      "YANG Groupings
      for TCP Clients and TCP Servers" <xref target="RFC9643" format="default" sectionFormat="of" derivedContent="RFC9643"/>. The model adheres to
      the recommendation in "BGP/MPLS IP Virtual
      Private Networks (VPNs)" <xref target="RFC4364" format="default" sectionFormat="of" derivedContent="RFC4364"/>. Therefore, it allows enabling of TCP Authentication Option (TCP-AO) <xref target="RFC5925" format="default" sectionFormat="of" derivedContent="RFC5925"/> and accommodates the installed
      base that makes use of MD5. The module can be augmented or
      updated to address more advanced or implementation-specific TCP
      features in the future.</t>
      <t indent="0" pn="section-1-4">This specification does not deprecate the Management Information Base (MIB) for the Transmission
      Control Protocol (TCP) <xref target="RFC4022" format="default" sectionFormat="of" derivedContent="RFC4022"/>. The basic statistics defined in this
      document follow the model of the TCP MIB. A TCP extended
      statistics MIB <xref target="RFC4898" format="default" sectionFormat="of" derivedContent="RFC4898"/> is also available, but this document does
      not cover such extended statistics. The YANG module also omits some
      selected parameters included in TCP MIB, most notably Retransmission
      Timeout (RTO) configuration and a maximum connection limit. This is a
      conscious decision as these parameters hardly matter in a
      state-of-the-art TCP implementation. It would also be possible to
      translate a MIB into a YANG module, for instance, using "Translation of Structure of Management Information
      Version 2 (SMIv2) MIB Modules to YANG Modules" <xref target="RFC6643" format="default" sectionFormat="of" derivedContent="RFC6643"/>. However, this
      approach is not used in this document, because a translated model would
      not be up-to-date.</t>
      <t indent="0" pn="section-1-5">There are other existing TCP-related YANG data models, which are
      orthogonal to this specification. Examples are:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-6">
        <li pn="section-1-6.1">TCP header attributes are modeled in other security-related
          models, such as those described in "YANG Data Model for Network
          Access Control Lists (ACLs)" <xref target="RFC8519" format="default" sectionFormat="of" derivedContent="RFC8519"/>, "Distributed
          Denial-of-Service Open Threat Signaling (DOTS) Data Channel
          Specification" <xref target="RFC8783" format="default" sectionFormat="of" derivedContent="RFC8783"/>, "I2NSF Capability
          YANG Data Model"
          <xref target="I-D.ietf-i2nsf-capability-data-model" format="default" sectionFormat="of" derivedContent="NSF-CAP-YANG"/>, or
	  "I2NSF Network 
          Security Function-Facing Interface YANG Data Model"
          <xref target="I-D.ietf-i2nsf-nsf-facing-interface-dm" format="default" sectionFormat="of" derivedContent="NSF-FACING-YANG"/>.</li>
        <li pn="section-1-6.2">TCP-related configuration of a NAT (e.g., NAT44, NAT64, or
          Destination NAT) is defined in "A YANG
          Module for Network Address Translation (NAT) and Network Prefix
          Translation (NPT)" <xref target="RFC8512" format="default" sectionFormat="of" derivedContent="RFC8512"/> and "A YANG Data
          Model for Dual-Stack Lite (DS-Lite)" <xref target="RFC8513" format="default" sectionFormat="of" derivedContent="RFC8513"/>.</li>
        <li pn="section-1-6.3">TCP-AO and TCP MD5 configuration for Layer 3 VPNs is modeled in
          "A YANG Network Data Model for Layer 3 VPNs" <xref target="RFC9182" format="default" sectionFormat="of" derivedContent="RFC9182"/>.
	  This model assumes that TCP-AO-specific parameters
          are preconfigured in addition to the key chain parameters.</li>
      </ul>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-conventions">Conventions</name>
        <t indent="0" pn="section-1.1-1">Various examples in this document use the XML
   <xref target="W3C.REC-xml-20081126" format="default" sectionFormat="of" derivedContent="W3C.REC-xml-20081126"/> encoding. Other encodings, such as JSON <xref target="RFC8259" format="default" sectionFormat="of" derivedContent="RFC8259"/>,
  could alternatively be used.</t>
        <t indent="0" pn="section-1.1-2">Various examples in this document contain long lines that may be folded,
  as described in <xref target="RFC8792" format="default" sectionFormat="of" derivedContent="RFC8792"/>.</t>
      </section>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-requirements-language">Requirements Language</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-yang-module-overview">YANG Module Overview</name>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-scope">Scope</name>
        <t indent="0" pn="section-3.1-1">TCP is implemented on different system architectures. As a
        result, there are many different and often
        implementation-specific ways to configure parameters of the
        TCP engine. In addition, in many TCP/IP stacks, configuration
        exists for different scopes:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1-2">
          <li pn="section-3.1-2.1">System-wide configuration: Many TCP implementations have
            configuration parameters that affect all TCP
            connections from or to this TCP stack. Typical examples include
            enabling or disabling optional protocol features. For instance,
            many implementations can turn on or off use of window scaling 
            (defined in "Transmission Control Protocol (TCP)" <xref target="RFC9293" format="default" sectionFormat="of" derivedContent="RFC9293"/>)
	    for all TCP connections.</li>
          <li pn="section-3.1-2.2">Interface configuration: It can be useful to use
            different TCP parameters on different interfaces, e.g.,
            different device ports or IP interfaces. In that case, TCP
            parameters can be part of the interface
            configuration. Typical examples are the Maximum Segment
            Size (MSS) or configuration related to hardware
            offloading.</li>
          <li pn="section-3.1-2.3">Connection parameters: Many implementations have means
            to influence the behavior of each TCP connection, e.g., on
            the programming interface used by applications. Typical
            examples are socket options in the socket API, such as
            disabling the Nagle algorithm (as described in "Transmission Control Protocol (TCP)" <xref target="RFC9293" format="default" sectionFormat="of" derivedContent="RFC9293"/>)
	    by TCP_NODELAY.  If an application
            uses such an interface, it is possible that the
            configuration of the application or application protocol
            includes TCP-related parameters. An example is the BGP YANG module for service
            provider networks <xref target="I-D.ietf-idr-bgp-model" format="default" sectionFormat="of" derivedContent="BGP-MODEL"/>.</li>
          <li pn="section-3.1-2.4">Application preferences: Setting of TCP parameters
            can also be part of application preferences, templates,
            or profiles. An example would be the preferences defined
            in "An Abstract
            Application Layer Interface to Transport Services" <xref target="I-D.ietf-taps-interface" format="default" sectionFormat="of" derivedContent="TAPS-INTERFACE"/>.</li>
        </ul>
        <t indent="0" pn="section-3.1-3">As a result, there is no ground truth for setting certain TCP
        parameters, and generally different TCP implementations have used
        different modeling approaches. For instance, one implementation may
        define a given configuration parameter globally, while another one
        uses per-interface settings, and both approaches work well for the
        corresponding use cases. Also, different systems may use different
        default values. In addition, TCP can be implemented in different ways
        and design choices by the protocol engine often affect configuration
        options.</t>
        <t indent="0" pn="section-3.1-4">Nonetheless, a number of TCP stack parameters require configuration
        by YANG data models. This document therefore defines a minimal YANG data model
        with fundamental parameters. An important use case is the TCP
        configuration on network elements, such as routers, which often use YANG
        data models. The model therefore specifies TCP parameters that are
        important on such TCP stacks.</t>
        <t indent="0" pn="section-3.1-5">In particular, this applies to the support of the TCP Authentication Option (TCP-AO) <xref target="RFC5925" format="default" sectionFormat="of" derivedContent="RFC5925"/> and the corresponding
        cryptographic algorithms <xref target="RFC5926" format="default" sectionFormat="of" derivedContent="RFC5926"/>.
        TCP-AO is
        used on routers to secure routing protocols such as BGP. In that case,
        a YANG data model for TCP-AO configuration is required. The model defined
        in this document includes the required parameters for TCP-AO
        configuration, such as the values of SendID and RecvID. The
        key chain for TCP-AO can be modeled by the YANG
        data model for key chains <xref target="RFC8177" format="default" sectionFormat="of" derivedContent="RFC8177"/>. The groupings defined in this document
        can be imported and used as part of such a preconfiguration.</t>
        <t indent="0" pn="section-3.1-6">Given an installed base, the model also allows enabling of the
        legacy TCP MD5 <xref target="RFC2385" format="default" sectionFormat="of" derivedContent="RFC2385"/> signature option.
        The TCP MD5 signature option was obsoleted by TCP-AO in 2010. If current
        implementations require TCP authentication, it is <bcp14>RECOMMENDED</bcp14> to use 
        TCP-AO <xref target="RFC5925" format="default" sectionFormat="of" derivedContent="RFC5925"/>.</t>
        <t indent="0" pn="section-3.1-7">Similar to the TCP MIB <xref target="RFC4022" format="default" sectionFormat="of" derivedContent="RFC4022"/>, this document
        also specifies basic statistics, a TCP connection list, and a TCP listener
        list.</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1-8">
          <li pn="section-3.1-8.1">Statistics: Counters for the number of active/passive opens,
            sent and received TCP segments, errors, and possibly other detailed
            debugging information.</li>
          <li pn="section-3.1-8.2">TCP connection list: Access to status information for all TCP
            connections. Note that the connection table is modeled as a list
	    that is readable and writable, even though a connection cannot be
	    created by adding entries to the table. Similarly, deletion
	    of connections from this list is implementation-specific.</li>
          <li pn="section-3.1-8.3">TCP listener list: A list containing information about
            TCP listeners, i.e., applications willing to accept connections.</li>
        </ul>
        <t indent="0" pn="section-3.1-9">This allows implementations of TCP
        MIB <xref target="RFC4022" format="default" sectionFormat="of" derivedContent="RFC4022"/> to migrate to the YANG data model defined in this memo.
        Note that the TCP MIB does not include means to reset statistics, which
        are defined in this document. This is not a major addition, as a reset
        can simply be implemented by storing offset values for the counters.</t>
        <t indent="0" pn="section-3.1-10">This version of the module does not model details of
        Multipath TCP <xref target="RFC8684" format="default" sectionFormat="of" derivedContent="RFC8684"/>. This could be addressed
        in a later version of this document.</t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-model-design">Model Design</name>
        <t indent="0" pn="section-3.2-1">The YANG data model defined in this document includes definitions from
        "YANG Groupings
        for TCP Clients and TCP Servers" <xref target="RFC9643" format="default" sectionFormat="of" derivedContent="RFC9643"/>. Similar to that model, this
        specification defines YANG groupings. This allows reuse of these
        groupings in different YANG data models. It is intended that these
        groupings will be used either standalone or for TCP-based protocols as
        part of a stack of protocol-specific configuration models. An example
        could be the one described in "YANG
	Model for Border Gateway Protocol (BGP-4)" <xref target="I-D.ietf-idr-bgp-model" format="default" sectionFormat="of" derivedContent="BGP-MODEL"/>.</t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-3.3">
        <name slugifiedName="name-tree-diagram">Tree Diagram</name>
        <t indent="0" pn="section-3.3-1">This section provides an abridged tree diagram for the YANG
        module defined in this document. Annotations used in the
        diagram are defined in "YANG Tree
        Diagrams" <xref target="RFC8340" format="default" sectionFormat="of" derivedContent="RFC8340"/>. A complete tree diagram can be found in
        <xref target="comp-tree" format="default" sectionFormat="of" derivedContent="Appendix B"/>.</t>
        <sourcecode type="yangtree" markers="false" pn="section-3.3-2">
module: ietf-tcp
  +--rw tcp!
     +--rw connections
     |     ...
     +--ro tcp-listeners* [type address port]
     |     ...
     +--ro statistics {statistics}?
           ...

  augment /key-chain:key-chains/key-chain:key-chain/key-chain:key:
    +--rw authentication {authentication}?
       +--rw keychain?    key-chain:key-chain-ref
       +--rw (authentication)?
             ...
</sourcecode>
      </section>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-tcp-yang-data-model">TCP YANG Data Model</name>
      <t indent="0" pn="section-4-1">This YANG module references "The TCP Authentication Option" <xref target="RFC5925" format="default" sectionFormat="of" derivedContent="RFC5925"/>,  "Protection of BGP Sessions via the TCP MD5 Signature Option" <xref target="RFC2385" format="default" sectionFormat="of" derivedContent="RFC2385"/>, and
      "Transmission Control
      Protocol (TCP)" <xref target="RFC9293" format="default" sectionFormat="of" derivedContent="RFC9293"/>
      and imports "Common YANG Data Types" <xref target="RFC6991" format="default" sectionFormat="of" derivedContent="RFC6991"/>, "Network Configuration Access Control
      Model" <xref target="RFC8341" format="default" sectionFormat="of" derivedContent="RFC8341"/>, and "YANG Groupings for TCP Clients
      and TCP Servers" <xref target="RFC9643" format="default" sectionFormat="of" derivedContent="RFC9643"/>.</t>
      <sourcecode name="ietf-tcp@2024-10-10.yang" type="yang" markers="true" pn="section-4-2">
module ietf-tcp {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-tcp";
  prefix tcp;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types.";
  }
  import ietf-tcp-common {
    prefix tcpcmn;
    reference
      "RFC 9643: YANG Groupings for TCP Clients and TCP Servers.";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types.";
  }
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control Model.";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC 8177: YANG Data Model for Key Chains.";
  }

  organization
    "IETF TCPM Working Group";

  contact
    "WG Web:   https://datatracker.ietf.org/wg/tcpm/about
     WG List:  TCPM WG &lt;tcpm@ietf.org&gt;

     Authors:  Michael Scharf &lt;michael.scharf@hs-esslingen.de&gt;
               Mahesh Jethanandani &lt;mjethanandani@gmail.com&gt;
               Vishal Murgai &lt;vmurgai@gmail.com&gt;";

  description
    "This module focuses on fundamental TCP functions and basic
     statistics.  The model can be augmented to address more advanced
     or implementation-specific TCP features.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

     Copyright (c) 2024 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC 9648
     (https://www.rfc-editor.org/info/rfc9648); see the RFC itself
     for full legal notices.";

  revision 2024-10-10 {
    description
      "Initial version.";
    reference
      "RFC 9648: YANG Data Model for TCP.";
  }

  // Typedefs
  typedef mss {
    type uint16;
    description
      "Type definition for the Maximum Segment Size.";
  }

  // Features
  feature statistics {
    description
      "This implementation supports statistics reporting.";
  }

  feature authentication {
    description
      "This implementation supports authentication.";
  }

  // Identities
  identity aes-128 {
    base key-chain:crypto-algorithm;
    description
      "AES128 authentication algorithm used by TCP-AO.";
    reference
      "RFC 5926: Cryptographic Algorithms for the TCP
                 Authentication Option (TCP-AO).";
  }

  // TCP-AO Groupings

  grouping ao {
    leaf send-id {
      type uint8 {
        range "0..max";
      }
      description
        "The SendID is inserted as the KeyID of the TCP-AO option
         of outgoing segments.  In a consistent configuration, the
         SendID matches the RecvID at the other endpoint.";
      reference
        "RFC 5925: The TCP Authentication Option, Section 3.1.";
    }

    leaf recv-id {
      type uint8 {
        range "0..max";
      }
      description
        "The RecvID is matched against the TCP-AO KeyID of incoming
         segments.  In a consistent configuration, the RecvID matches
         the SendID at the other endpoint.";
      reference
        "RFC 5925: The TCP Authentication Option, Section 3.1.";
    }

    leaf include-tcp-options {
      type boolean;
      default "true";
      description
        "When set to true, TCP options are included in the message
         authentication code (MAC) calculation.";
      reference
        "RFC 5925: The TCP Authentication Option, Section 3.1.";
    }

    leaf accept-key-mismatch {
      type boolean;
      description
        "Accept, when set to true, TCP segments with a Master Key
         Tuple (MKT) that is not configured.";
      reference
        "RFC 5925: The TCP Authentication Option, Section 7.3.";
    }

    leaf r-next-key-id {
      type uint8;
      config false;
      description
        "A field indicating the Master Key Tuple (MKT) that is ready
         at the sender to be used to authenticate received segments,
         i.e., the desired 'receive next' key ID.";
      reference
        "RFC 5925: The TCP Authentication Option.";
    }

    description
      "Authentication Option (AO) for TCP.";
    reference
      "RFC 5925: The TCP Authentication Option.";
  }

  // TCP configuration

  container tcp {
    presence "The container for TCP configuration.";

    description
      "TCP container.";

    container connections {
      list connection {
        key "local-address remote-address local-port remote-port";

        leaf local-address {
          type inet:ip-address;
          description
            "Identifies the address that is used by the local
             endpoint for the connection and is one of the four
             elements that form the connection identifier.";
        }

        leaf remote-address {
          type inet:ip-address;
          description
            "Identifies the address that is used by the remote
             endpoint for the connection and is one of the four
             elements that form the connection identifier.";
        }

        leaf local-port {
          type inet:port-number;
          description
            "Identifies the local TCP port used for the connection
             and is one of the four elements that form the
             connection identifier.";
        }

        leaf remote-port {
          type inet:port-number;
          description
            "Identifies the remote TCP port used for the connection
             and is one of the four elements that form the
             connection identifier.";
        }

        leaf mss {
          type mss;
          description
            "Maximum Segment Size (MSS) desired on this connection.
             Note that the 'effective send MSS' can be smaller than
             what is configured here.";
          reference
            "RFC 9293: Transmission Control Protocol (TCP).";
        }

        leaf pmtud {
          type boolean;
          default "false";
          description
            "Turns Path Maximum Transmission Unit Discovery (PMTUD)
             on (true) or off (false).";
          reference
            "RFC 9293: Transmission Control Protocol (TCP).";
        }

        uses tcpcmn:tcp-common-grouping;

        leaf state {
          type enumeration {
            enum closed {
              value 1;
              description
                "Connection is closed. Connections in this state
                 may not appear in this list.";
            }
            enum listen {
              value 2;
              description
                "Represents waiting for a connection request from any
                 remote TCP peer and port.";
            }
            enum syn-sent {
              value 3;
              description
                "Represents waiting for a matching connection request
                 after having sent a connection request.";
            }
            enum syn-received {
              value 4;
              description
                "Represents waiting for a confirming connection
                 request acknowledgment after having both received
                 and sent a connection request.";
            }
            enum established {
              value 5;
              description
                "Represents an open connection; data received can be
                 delivered to the user.  The normal state for the
                 data transfer phase of the connection.";
            }
            enum fin-wait-1 {
              value 6;
              description
                "Represents waiting for a connection termination
                 request from the remote TCP peer or an
                 acknowledgment of the connection termination
                 request previously sent.";
            }
            enum fin-wait-2 {
              value 7;
              description
                "Represents waiting for a connection termination
                 request from the remote TCP peer.";
            }
            enum close-wait {
              value 8;
              description
                "Represents waiting for a connection termination
                 request from the local user.";
            }
            enum last-ack {
              value 9;
              description
                "Represents waiting for an acknowledgment of the
                 connection termination request previously sent to
                 the remote TCP peer (this termination request sent
                 to the remote TCP peer already included an
                 acknowledgment of the termination request sent from
                 the remote TCP peer).";
            }
            enum closing {
              value 10;
              description
                "Represents waiting for a connection termination
                 request acknowledgment from the remote TCP peer.";
            }
            enum time-wait {
              value 11;
              description
                "Represents waiting for enough time to pass to be
                 sure the remote TCP peer received the
                 acknowledgment of its connection termination
                 request and to avoid new connections being impacted
                 by delayed segments from previous connections.";
            }
          }
          config false;
          description
            "The state of this TCP connection.";
        }
        description
          "List of TCP connections with their parameters.

           The list is modeled as writable even though only some of
           the nodes are writable, e.g., keepalive.  Connections
           that are created and match this list SHOULD apply the
           writable parameters.  At the same time, implementations
           may not allow creation of new TCP connections simply by
           adding entries to the list.  Furthermore, the behavior
           upon removal is implementation-specific.  Implementations
           may not support closing or resetting a TCP connection
           upon an operation that removes the entry from the list.

           The operational state of this list SHOULD reflect
           connections that have configured but not created and
           connections that have been created.  Connections in the
           CLOSED state are not reflected on this list.";
      }
      description
        "A container of all TCP connections.";
    }

    list tcp-listeners {
      key "type address port";
      config false;

      description
        "A table containing information about a particular
         TCP listener.";

      leaf type {
        type inet:ip-version;
        description
          "The address type of address.  The value
           should be unspecified (0) if connection initiations
           to all local IP addresses are accepted.";
      }

      leaf address {
        type union {
          type inet:ip-address;
          type string {
            length "0";
          }
        }
        description
          "The local IP address for this TCP connection.

           The value of this node can be represented in three
           possible ways, depending on the characteristics of the
           listening application:

           1. For an application willing to accept both IPv4 and
              IPv6 datagrams, the value of this node must be
              ''h (a zero-length octet string), with the value
              of the corresponding 'type' object being
              unspecified (0).

           2. For an application willing to accept only IPv4 or
              IPv6 datagrams, the value of this node must be
              '0.0.0.0' or '::' respectively, with
              'type' representing the appropriate address type.

           3. For an application that is listening for data
              destined only to a specific IP address, the value
              of this node is the specific local address, with
              'type' representing the appropriate address type.";
      }

      leaf port {
        type inet:port-number;
        description
          "The local port number for this TCP connection.";
      }
    }

    container statistics {
      if-feature "statistics";
      config false;

      leaf active-opens {
        type yang:counter64;
        description
          "The number of times that TCP connections have made a
           direct transition to the SYN-SENT state from the CLOSED
           state.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf passive-opens {
        type yang:counter64;
        description
          "The number of times TCP connections have made a direct
           transition to the SYN-RCVD state from the LISTEN state.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf attempt-fails {
        type yang:counter64;
        description
          "The number of times that TCP connections have made a
           direct transition to the CLOSED state from either the
           SYN-SENT state or the SYN-RCVD state, plus the number of
           times that TCP connections have made a direct transition
           to the LISTEN state from the SYN-RCVD state.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf establish-resets {
        type yang:counter64;
        description
          "The number of times that TCP connections have made a
           direct transition to the CLOSED state from either the
           ESTABLISHED state or the CLOSE-WAIT state.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf currently-established {
        type yang:gauge32;
        description
          "The number of TCP connections for which the current state
           is either ESTABLISHED or CLOSE-WAIT.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf in-segments {
        type yang:counter64;
        description
          "The total number of TCP segments received, including those
           received in error.  This count includes TCP segments
           received on currently established connections.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf out-segments {
        type yang:counter64;
        description
          "The total number of TCP segments sent, including those on
           current connections but excluding those containing only
           retransmitted octets.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf retransmitted-segments {
        type yang:counter64;
        description
          "The total number of TCP segments retransmitted; that is,
           the number of TCP segments transmitted containing one or
           more previously transmitted octets.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf in-errors {
        type yang:counter64;
        description
          "The total number of TCP segments received in error
           (e.g., bad TCP checksums).";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf out-resets {
        type yang:counter64;
        description
          "The number of TCP segments sent containing the RST flag.";
        reference
          "RFC 9293: Transmission Control Protocol (TCP).";
      }

      leaf auth-failures {
        if-feature "authentication";
        type yang:counter64;
        description
          "The number of times that authentication has failed either
           with TCP-AO or MD5.";
      }

      action reset {
        nacm:default-deny-all;
        description
          "Reset statistics action command.";
        input {
          leaf reset-at {
            type yang:date-and-time;
            description
              "Time when the reset action needs to be
               executed.";
          }
        }
        output {
          leaf reset-finished-at {
            type yang:date-and-time;
            description
              "Time when the reset action command completed.";
          }
        }
      }
      description
        "Statistics across all connections.";
    }
  }

  augment "/key-chain:key-chains/key-chain:key-chain/key-chain:key" {
    description
      "Augmentation of the key-chain model to add TCP-AO and TCP-MD5
       authentication.";

    container authentication {
      if-feature "authentication";
      leaf keychain {
        type key-chain:key-chain-ref;
        description
          "Reference to the key chain that will be used by
           this model.  Applicable for TCP-AO and TCP-MD5
           only.";
        reference
          "RFC 8177: YANG Data Model for Key Chains.";
      }

      choice authentication {
        container ao {
          presence "Presence container for all TCP-AO related"
                 + " configuration";
          uses ao;
          description
            "Use TCP-AO to secure the connection.";
        }

        container md5 {
          presence "Presence container for all MD5 related"
                 + " configuration";
          description
            "Use TCP-MD5 to secure the connection.  As the TCP MD5
             signature option is obsoleted by TCP-AO, it is
             RECOMMENDED to use TCP-AO instead.";
          reference
            "RFC 2385: Protection of BGP Sessions via the TCP MD5
                       Signature Option.";
        }
        description
          "Choice of TCP authentication.";
      }
      description
        "Authentication definitions for TCP configuration.
         This includes parameters such as how to secure the
         connection, which can be part of either the client
         or server.";
    }
  }
}
</sourcecode>
    </section>
    <section anchor="IANA" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-the-ietf-xml-registry">The IETF XML Registry</name>
        <t indent="0" pn="section-5.1-1">IANA has registered the following URI in the "ns" registry defined in the
        "IETF XML Registry" <xref target="RFC3688" format="default" sectionFormat="of" derivedContent="RFC3688"/>.</t>
        <dl newline="false" spacing="compact" indent="3" pn="section-5.1-2">
          <dt pn="section-5.1-2.1">URI:</dt>
          <dd pn="section-5.1-2.2">urn:ietf:params:xml:ns:yang:ietf-tcp</dd>
          <dt pn="section-5.1-2.3">Registrant Contact:</dt>
          <dd pn="section-5.1-2.4">The IESG</dd>
          <dt pn="section-5.1-2.5">XML:</dt>
          <dd pn="section-5.1-2.6">N/A; the requested URI is an XML namespace.</dd>
        </dl>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-the-yang-module-names-regis">The YANG Module Names Registry</name>
        <t indent="0" pn="section-5.2-1">IANA has registered the following in the
        "YANG Module Names" registry created by
        "YANG - A Data Modeling Language for
        the Network Configuration Protocol (NETCONF)" <xref target="RFC6020" format="default" sectionFormat="of" derivedContent="RFC6020"/>.</t>
        <dl newline="false" spacing="compact" indent="3" pn="section-5.2-2">
          <dt pn="section-5.2-2.1">Name:</dt>
          <dd pn="section-5.2-2.2">ietf-tcp</dd>
          <dt pn="section-5.2-2.3">Namespace:</dt>
          <dd pn="section-5.2-2.4">urn:ietf:params:xml:ns:yang:ietf-tcp</dd>
          <dt pn="section-5.2-2.5">Prefix:</dt>
          <dd pn="section-5.2-2.6">tcp</dd>
          <dt pn="section-5.2-2.7">Reference:</dt>
          <dd pn="section-5.2-2.8">RFC 9648</dd>
        </dl>
        <t indent="0" pn="section-5.2-3">This is not an IANA maintained module; however, the URI and other details of the module are maintained by IANA.</t>
      </section>
    </section>
    <section anchor="Security" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">This section is modeled after the template defined in <xref target="RFC8407" sectionFormat="of" section="3.7.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8407#section-3.7.1" derivedContent="RFC8407"/>.</t>
      <t indent="0" pn="section-6-2">The "ietf-tcp" YANG module defines a schema for data
      that is designed to be accessed via YANG-based management protocols, such as NETCONF <xref target="RFC6241" format="default" sectionFormat="of" derivedContent="RFC6241"/> and RESTCONF <xref target="RFC8040" format="default" sectionFormat="of" derivedContent="RFC8040"/>. These protocols have mandatory-to-implement secure transport layers (e.g., Secure Shell (SSH) <xref target="RFC4252" format="default" sectionFormat="of" derivedContent="RFC4252"/>, TLS <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC8446"/>, and QUIC <xref target="RFC9000" format="default" sectionFormat="of" derivedContent="RFC9000"/>) and mandatory-to-implement mutual authentication.
</t>
      <t indent="0" pn="section-6-3">The Network Configuration Access Control Model
      (NACM) <xref target="RFC8341" format="default" sectionFormat="of" derivedContent="RFC8341"/> provides the means to restrict access for particular
      NETCONF or RESTCONF users to a preconfigured subset of all available
      NETCONF or RESTCONF protocol operations and content.</t>
      <t indent="0" pn="section-6-4">There are a number of data nodes defined in this YANG module that are
      writable/creatable/deletable (i.e., "config true", which is the
      default). These data nodes may be considered sensitive or vulnerable in
      some network environments. Write operations (e.g., edit-config) to these
      data nodes without proper protection can have a negative effect on
      network operations. These are the subtrees and data nodes and their
      sensitivity/vulnerability:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-5">
        <li pn="section-6-5.1">Common configuration included from
        NETCONF client
	and server models <xref target="RFC9643" format="default" sectionFormat="of" derivedContent="RFC9643"/>. Unrestricted
        access to all the nodes, e.g., keepalive idle timer,
        can cause connections to fail or to timeout prematurely.</li>
        <li pn="section-6-5.2">Authentication configuration. Unrestricted access to the nodes under
        authentication configuration can prevent the use of authenticated
        communication and cause connection setups to fail. This can result
        in massive security vulnerabilities and service disruption for the
        traffic requiring authentication.</li>
      </ul>
      <t indent="0" pn="section-6-6">Some of the readable data nodes in this YANG module may be considered
      sensitive or vulnerable in some network environments. It is thus
      important to control read access (e.g., via get, get-config, or
      notification) to these data nodes. These are the subtrees and data nodes
      and their sensitivity/vulnerability:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-7">
        <li pn="section-6-7.1">Unrestricted access to connection information of the client or
          server can be used by a malicious user to launch an attack.</li>
        <li pn="section-6-7.2">Similarly, unrestricted access to statistics of the client or
          server can be used by a malicious user to exploit any
          vulnerabilities of the system.</li>
      </ul>
      <t indent="0" pn="section-6-8">Some of the RPC operations in this YANG module may be considered
      sensitive or vulnerable in some network environments. It is thus
      important to control access to these operations. These are the
      operations and their sensitivity/vulnerability:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-9">
        <li pn="section-6-9.1">The YANG module allows for the statistics to be cleared by
          executing the reset action. This action should be restricted to
          users with the right permission.</li>
      </ul>
      <t indent="0" pn="section-6-10">The module specified in this document supports MD5 to basically
      accommodate the installed BGP base.  MD5 suffers from the security
      weaknesses discussed in <xref target="RFC6151" sectionFormat="of" section="2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6151#section-2" derivedContent="RFC6151"/>
      or <xref target="RFC6952" sectionFormat="of" section="2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6952#section-2.1" derivedContent="RFC6952"/>.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-idr-bgp-model" to="BGP-MODEL"/>
    <displayreference target="I-D.ietf-taps-interface" to="TAPS-INTERFACE"/>
    <displayreference target="I-D.ietf-i2nsf-capability-data-model" to="NSF-CAP-YANG"/>
    <displayreference target="I-D.ietf-i2nsf-nsf-facing-interface-dm" to="NSF-FACING-YANG"/>
    <references pn="section-7">
      <name slugifiedName="name-references">References</name>
      <references pn="section-7.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC2385" target="https://www.rfc-editor.org/info/rfc2385" quoteTitle="true" derivedAnchor="RFC2385">
          <front>
            <title>Protection of BGP Sessions via the TCP MD5 Signature Option</title>
            <author fullname="A. Heffernan" initials="A." surname="Heffernan"/>
            <date month="August" year="1998"/>
            <abstract>
              <t indent="0">This memo describes a TCP extension to enhance security for BGP. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2385"/>
          <seriesInfo name="DOI" value="10.17487/RFC2385"/>
        </reference>
        <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688" quoteTitle="true" derivedAnchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t indent="0">This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC4252" target="https://www.rfc-editor.org/info/rfc4252" quoteTitle="true" derivedAnchor="RFC4252">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t indent="0">The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC5925" target="https://www.rfc-editor.org/info/rfc5925" quoteTitle="true" derivedAnchor="RFC5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5). TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5. TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints. The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes. TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously. TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        <reference anchor="RFC5926" target="https://www.rfc-editor.org/info/rfc5926" quoteTitle="true" derivedAnchor="RFC5926">
          <front>
            <title>Cryptographic Algorithms for the TCP Authentication Option (TCP-AO)</title>
            <author fullname="G. Lebovitz" initials="G." surname="Lebovitz"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">The TCP Authentication Option (TCP-AO) relies on security algorithms to provide authentication between two end-points. There are many such algorithms available, and two TCP-AO systems cannot interoperate unless they are using the same algorithms. This document specifies the algorithms and attributes that can be used in TCP-AO's current manual keying mechanism and provides the interface for future message authentication codes (MACs). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5926"/>
          <seriesInfo name="DOI" value="10.17487/RFC5926"/>
        </reference>
        <reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6020" quoteTitle="true" derivedAnchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t indent="0">YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" quoteTitle="true" derivedAnchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t indent="0">The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC6991" target="https://www.rfc-editor.org/info/rfc6991" quoteTitle="true" derivedAnchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t indent="0">This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950" quoteTitle="true" derivedAnchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t indent="0">YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" quoteTitle="true" derivedAnchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t indent="0">This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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>
        <reference anchor="RFC8177" target="https://www.rfc-editor.org/info/rfc8177" quoteTitle="true" derivedAnchor="RFC8177">
          <front>
            <title>YANG Data Model for Key Chains</title>
            <author fullname="A. Lindem" initials="A." role="editor" surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="I. Chen" initials="I." surname="Chen"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <date month="June" year="2017"/>
            <abstract>
              <t indent="0">This document describes the key chain YANG data model. Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys. A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated. By representing them in a YANG data model, key distribution can be automated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8177"/>
          <seriesInfo name="DOI" value="10.17487/RFC8177"/>
        </reference>
        <reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340" quoteTitle="true" derivedAnchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8341" target="https://www.rfc-editor.org/info/rfc8341" quoteTitle="true" derivedAnchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t indent="0">This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8342" target="https://www.rfc-editor.org/info/rfc8342" quoteTitle="true" derivedAnchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000" quoteTitle="true" derivedAnchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t indent="0">This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9293" target="https://www.rfc-editor.org/info/rfc9293" quoteTitle="true" derivedAnchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t indent="0">This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="RFC9643" target="https://www.rfc-editor.org/info/rfc9643" quoteTitle="true" derivedAnchor="RFC9643">
          <front>
            <title>YANG Groupings for TCP Clients and TCP Servers</title>
            <author initials="K." surname="Watsen" fullname="Kent Watsen">
</author>
            <author initials="M." surname="Scharf" fullname="Michael Scharf">
</author>
            <date month="October" year="2024"/>
          </front>
          <seriesInfo name="RFC" value="9643"/>
          <seriesInfo name="DOI" value="10.17487/RFC9643"/>
        </reference>
      </references>
      <references pn="section-7.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-idr-bgp-model" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp-model-17" quoteTitle="true" derivedAnchor="BGP-MODEL">
          <front>
            <title>YANG Model for Border Gateway Protocol (BGP-4)</title>
            <author initials="M." surname="Jethanandani" fullname="Mahesh Jethanandani">
              <organization showOnFrontPage="true">Kloud Services</organization>
            </author>
            <author initials="K." surname="Patel" fullname="Keyur Patel">
              <organization showOnFrontPage="true">Arrcus</organization>
            </author>
            <author initials="S." surname="Hares" fullname="Susan Hares">
              <organization showOnFrontPage="true">Huawei</organization>
            </author>
            <author initials="J." surname="Haas" fullname="Jeffrey Haas">
              <organization showOnFrontPage="true">Juniper Networks</organization>
            </author>
            <date month="July" day="5" year="2023"/>
            <abstract>
              <t indent="0">   This document defines a YANG data model for configuring and managing
   BGP, including protocol, policy, and operational aspects, such as
   RIB, based on data center, carrier, and content provider operational
   requirements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-bgp-model-17"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-i2nsf-capability-data-model" target="https://datatracker.ietf.org/doc/html/draft-ietf-i2nsf-capability-data-model-32" quoteTitle="true" derivedAnchor="NSF-CAP-YANG">
          <front>
            <title>I2NSF Capability YANG Data Model</title>
            <author initials="S." surname="Hares" fullname="Susan Hares" role="editor">
              <organization showOnFrontPage="true">Huawei</organization>
            </author>
            <author initials="J." surname="Jeong" fullname="Jaehoon Paul Jeong" role="editor">
              <organization showOnFrontPage="true">Department of Computer Science and Engineering</organization>
            </author>
            <author initials="J." surname="Kim" fullname="Jinyong Tim Kim">
              <organization showOnFrontPage="true">Department of Electronic, Electrical and Computer Engineering</organization>
            </author>
            <author initials="R." surname="Moskowitz" fullname="Robert Moskowitz">
              <organization showOnFrontPage="true">HTT Consulting</organization>
            </author>
            <author initials="Q." surname="Lin" fullname="Qiushi Lin">
              <organization showOnFrontPage="true">Huawei</organization>
            </author>
            <date month="May" day="23" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-i2nsf-capability-data-model-32"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-i2nsf-nsf-facing-interface-dm" target="https://datatracker.ietf.org/doc/html/draft-ietf-i2nsf-nsf-facing-interface-dm-29" quoteTitle="true" derivedAnchor="NSF-FACING-YANG">
          <front>
            <title>I2NSF Network Security Function-Facing Interface YANG Data Model</title>
            <author initials="J." surname="Kim" fullname="Jinyong Tim Kim" role="editor">
              <organization showOnFrontPage="true">Department of Electronic, Electrical and Computer Engineering</organization>
            </author>
            <author initials="J." surname="Jeong" fullname="Jaehoon Paul Jeong" role="editor">
              <organization showOnFrontPage="true">Department of Computer Science and Engineering</organization>
            </author>
            <author initials="J." surname="Park" fullname="Jung-Soo Park">
              <organization showOnFrontPage="true">Electronics and Telecommunications Research Institute</organization>
            </author>
            <author initials="S." surname="Hares" fullname="Susan Hares">
              <organization showOnFrontPage="true">Huawei</organization>
            </author>
            <author initials="Q." surname="Lin" fullname="Qiushi Lin">
              <organization showOnFrontPage="true">Huawei</organization>
            </author>
            <date month="June" day="1" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-i2nsf-nsf-facing-interface-dm-29"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC4022" target="https://www.rfc-editor.org/info/rfc4022" quoteTitle="true" derivedAnchor="RFC4022">
          <front>
            <title>Management Information Base for the Transmission Control Protocol (TCP)</title>
            <author fullname="R. Raghunarayan" initials="R." role="editor" surname="Raghunarayan"/>
            <date month="March" year="2005"/>
            <abstract>
              <t indent="0">This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects used for implementations of the Transmission Control Protocol (TCP) in an IP version independent manner. This memo obsoletes RFCs 2452 and 2012. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4022"/>
          <seriesInfo name="DOI" value="10.17487/RFC4022"/>
        </reference>
        <reference anchor="RFC4364" target="https://www.rfc-editor.org/info/rfc4364" quoteTitle="true" derivedAnchor="RFC4364">
          <front>
            <title>BGP/MPLS IP Virtual Private Networks (VPNs)</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <date month="February" year="2006"/>
            <abstract>
              <t indent="0">This document describes a method by which a Service Provider may use an IP backbone to provide IP Virtual Private Networks (VPNs) for its customers. This method uses a "peer model", in which the customers' edge routers (CE routers) send their routes to the Service Provider's edge routers (PE routers); there is no "overlay" visible to the customer's routing algorithm, and CE routers at different sites do not peer with each other. Data packets are tunneled through the backbone, so that the core routers do not need to know the VPN routes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4364"/>
          <seriesInfo name="DOI" value="10.17487/RFC4364"/>
        </reference>
        <reference anchor="RFC4898" target="https://www.rfc-editor.org/info/rfc4898" quoteTitle="true" derivedAnchor="RFC4898">
          <front>
            <title>TCP Extended Statistics MIB</title>
            <author fullname="M. Mathis" initials="M." surname="Mathis"/>
            <author fullname="J. Heffner" initials="J." surname="Heffner"/>
            <author fullname="R. Raghunarayan" initials="R." surname="Raghunarayan"/>
            <date month="May" year="2007"/>
            <abstract>
              <t indent="0">This document describes extended performance statistics for TCP. They are designed to use TCP's ideal vantage point to diagnose performance problems in both the network and the application. If a network-based application is performing poorly, TCP can determine if the bottleneck is in the sender, the receiver, or the network itself. If the bottleneck is in the network, TCP can provide specific information about its nature. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4898"/>
          <seriesInfo name="DOI" value="10.17487/RFC4898"/>
        </reference>
        <reference anchor="RFC6151" target="https://www.rfc-editor.org/info/rfc6151" quoteTitle="true" derivedAnchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <date month="March" year="2011"/>
            <abstract>
              <t indent="0">This document updates the security considerations for the MD5 message digest algorithm. It also updates the security considerations for HMAC-MD5. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6643" target="https://www.rfc-editor.org/info/rfc6643" quoteTitle="true" derivedAnchor="RFC6643">
          <front>
            <title>Translation of Structure of Management Information Version 2 (SMIv2) MIB Modules to YANG Modules</title>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <date month="July" year="2012"/>
            <abstract>
              <t indent="0">YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. The Structure of Management Information (SMIv2) defines fundamental data types, an object model, and the rules for writing and revising MIB modules for use with the Simple Network Management Protocol (SNMP). This document defines a translation of SMIv2 MIB modules into YANG modules, enabling read-only (config false) access to data objects defined in SMIv2 MIB modules via NETCONF. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6643"/>
          <seriesInfo name="DOI" value="10.17487/RFC6643"/>
        </reference>
        <reference anchor="RFC6952" target="https://www.rfc-editor.org/info/rfc6952" quoteTitle="true" derivedAnchor="RFC6952">
          <front>
            <title>Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide</title>
            <author fullname="M. Jethanandani" initials="M." surname="Jethanandani"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="L. Zheng" initials="L." surname="Zheng"/>
            <date month="May" year="2013"/>
            <abstract>
              <t indent="0">This document analyzes TCP-based routing protocols, the Border Gateway Protocol (BGP), the Label Distribution Protocol (LDP), the Path Computation Element Communication Protocol (PCEP), and the Multicast Source Distribution Protocol (MSDP), according to guidelines set forth in Section 4.2 of "Keying and Authentication for Routing Protocols Design Guidelines", RFC 6518.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6952"/>
          <seriesInfo name="DOI" value="10.17487/RFC6952"/>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" quoteTitle="true" derivedAnchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t indent="0">JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t indent="0">This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8407" target="https://www.rfc-editor.org/info/rfc8407" quoteTitle="true" derivedAnchor="RFC8407">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <date month="October" year="2018"/>
            <abstract>
              <t indent="0">This memo provides guidelines for authors and reviewers of specifications containing YANG modules. Recommendations and procedures are defined, which are intended to increase interoperability and usability of Network Configuration Protocol (NETCONF) and RESTCONF protocol implementations that utilize YANG modules. This document obsoletes RFC 6087.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="216"/>
          <seriesInfo name="RFC" value="8407"/>
          <seriesInfo name="DOI" value="10.17487/RFC8407"/>
        </reference>
        <reference anchor="RFC8512" target="https://www.rfc-editor.org/info/rfc8512" quoteTitle="true" derivedAnchor="RFC8512">
          <front>
            <title>A YANG Module for Network Address Translation (NAT) and Network Prefix Translation (NPT)</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="S. Sivakumar" initials="S." surname="Sivakumar"/>
            <author fullname="C. Jacquenet" initials="C." surname="Jacquenet"/>
            <author fullname="S. Vinapamula" initials="S." surname="Vinapamula"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="January" year="2019"/>
            <abstract>
              <t indent="0">This document defines a YANG module for the Network Address Translation (NAT) function.</t>
              <t indent="0">Network Address Translation from IPv4 to IPv4 (NAT44), Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers (NAT64), customer-side translator (CLAT), Stateless IP/ICMP Translation (SIIT), Explicit Address Mappings (EAM) for SIIT, IPv6-to-IPv6 Network Prefix Translation (NPTv6), and Destination NAT are covered in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8512"/>
          <seriesInfo name="DOI" value="10.17487/RFC8512"/>
        </reference>
        <reference anchor="RFC8513" target="https://www.rfc-editor.org/info/rfc8513" quoteTitle="true" derivedAnchor="RFC8513">
          <front>
            <title>A YANG Data Model for Dual-Stack Lite (DS-Lite)</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="C. Jacquenet" initials="C." surname="Jacquenet"/>
            <author fullname="S. Sivakumar" initials="S." surname="Sivakumar"/>
            <date month="January" year="2019"/>
            <abstract>
              <t indent="0">This document defines a YANG module for the Dual-Stack Lite (DS-Lite) Address Family Transition Router (AFTR) and Basic Bridging BroadBand (B4) elements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8513"/>
          <seriesInfo name="DOI" value="10.17487/RFC8513"/>
        </reference>
        <reference anchor="RFC8519" target="https://www.rfc-editor.org/info/rfc8519" quoteTitle="true" derivedAnchor="RFC8519">
          <front>
            <title>YANG Data Model for Network Access Control Lists (ACLs)</title>
            <author fullname="M. Jethanandani" initials="M." surname="Jethanandani"/>
            <author fullname="S. Agarwal" initials="S." surname="Agarwal"/>
            <author fullname="L. Huang" initials="L." surname="Huang"/>
            <author fullname="D. Blair" initials="D." surname="Blair"/>
            <date month="March" year="2019"/>
            <abstract>
              <t indent="0">This document defines a data model for Access Control Lists (ACLs). An ACL is a user-ordered set of rules used to configure the forwarding behavior in a device. Each rule is used to find a match on a packet and define actions that will be performed on the packet.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8519"/>
          <seriesInfo name="DOI" value="10.17487/RFC8519"/>
        </reference>
        <reference anchor="RFC8684" target="https://www.rfc-editor.org/info/rfc8684" quoteTitle="true" derivedAnchor="RFC8684">
          <front>
            <title>TCP Extensions for Multipath Operation with Multiple Addresses</title>
            <author fullname="A. Ford" initials="A." surname="Ford"/>
            <author fullname="C. Raiciu" initials="C." surname="Raiciu"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="O. Bonaventure" initials="O." surname="Bonaventure"/>
            <author fullname="C. Paasch" initials="C." surname="Paasch"/>
            <date month="March" year="2020"/>
            <abstract>
              <t indent="0">TCP/IP communication is currently restricted to a single path per connection, yet multiple paths often exist between peers. The simultaneous use of these multiple paths for a TCP/IP session would improve resource usage within the network and thus improve user experience through higher throughput and improved resilience to network failure.</t>
              <t indent="0">Multipath TCP provides the ability to simultaneously use multiple paths between peers. This document presents a set of extensions to traditional TCP to support multipath operation. The protocol offers the same type of service to applications as TCP (i.e., a reliable bytestream), and it provides the components necessary to establish and use multiple TCP flows across potentially disjoint paths.</t>
              <t indent="0">This document specifies v1 of Multipath TCP, obsoleting v0 as specified in RFC 6824, through clarifications and modifications primarily driven by deployment experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8684"/>
          <seriesInfo name="DOI" value="10.17487/RFC8684"/>
        </reference>
        <reference anchor="RFC8783" target="https://www.rfc-editor.org/info/rfc8783" quoteTitle="true" derivedAnchor="RFC8783">
          <front>
            <title>Distributed Denial-of-Service Open Threat Signaling (DOTS) Data Channel Specification</title>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="T. Reddy.K" initials="T." role="editor" surname="Reddy.K"/>
            <date month="May" year="2020"/>
            <abstract>
              <t indent="0">The document specifies a Distributed Denial-of-Service Open Threat Signaling (DOTS) data channel used for bulk exchange of data that cannot easily or appropriately communicated through the DOTS signal channel under attack conditions.</t>
              <t indent="0">This is a companion document to "Distributed Denial-of-Service Open Threat Signaling (DOTS) Signal Channel Specification" (RFC 8782).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8783"/>
          <seriesInfo name="DOI" value="10.17487/RFC8783"/>
        </reference>
        <reference anchor="RFC8792" target="https://www.rfc-editor.org/info/rfc8792" quoteTitle="true" derivedAnchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t indent="0">This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="RFC9182" target="https://www.rfc-editor.org/info/rfc9182" quoteTitle="true" derivedAnchor="RFC9182">
          <front>
            <title>A YANG Network Data Model for Layer 3 VPNs</title>
            <author fullname="S. Barguil" initials="S." surname="Barguil"/>
            <author fullname="O. Gonzalez de Dios" initials="O." role="editor" surname="Gonzalez de Dios"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="L. Munoz" initials="L." surname="Munoz"/>
            <author fullname="A. Aguado" initials="A." surname="Aguado"/>
            <date month="February" year="2022"/>
            <abstract>
              <t indent="0">As a complement to the Layer 3 Virtual Private Network Service Model (L3SM), which is used for communication between customers and service providers, this document defines an L3VPN Network Model (L3NM) that can be used for the provisioning of Layer 3 Virtual Private Network (L3VPN) services within a service provider network. The model provides a network-centric view of L3VPN services.</t>
              <t indent="0">The L3NM is meant to be used by a network controller to derive the configuration information that will be sent to relevant network devices. The model can also facilitate communication between a service orchestrator and a network controller/orchestrator.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9182"/>
          <seriesInfo name="DOI" value="10.17487/RFC9182"/>
        </reference>
        <reference anchor="RFC9235" target="https://www.rfc-editor.org/info/rfc9235" quoteTitle="true" derivedAnchor="RFC9235">
          <front>
            <title>TCP Authentication Option (TCP-AO) Test Vectors</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="J. Kuusisaari" initials="J." surname="Kuusisaari"/>
            <date month="May" year="2022"/>
            <abstract>
              <t indent="0">This document provides test vectors to validate implementations of the two mandatory authentication algorithms specified for the TCP Authentication Option over both IPv4 and IPv6. This includes validation of the key derivation function (KDF) based on a set of test connection parameters as well as validation of the message authentication code (MAC). Vectors are provided for both currently required pairs of KDF and MAC algorithms: KDF_HMAC_SHA1 and HMAC- SHA-1-96, and KDF_AES_128_CMAC and AES-128-CMAC-96. The vectors also validate both whole TCP segments as well as segments whose options are excluded for middlebox traversal.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9235"/>
          <seriesInfo name="DOI" value="10.17487/RFC9235"/>
        </reference>
        <reference anchor="I-D.ietf-taps-interface" target="https://datatracker.ietf.org/doc/html/draft-ietf-taps-interface-26" quoteTitle="true" derivedAnchor="TAPS-INTERFACE">
          <front>
            <title>An Abstract Application Layer Interface to Transport Services</title>
            <author initials="B." surname="Trammell" fullname="Brian Trammell" role="editor">
              <organization showOnFrontPage="true">Google Switzerland GmbH</organization>
            </author>
            <author initials="M." surname="Welzl" fullname="Michael Welzl" role="editor">
              <organization showOnFrontPage="true">University of Oslo</organization>
            </author>
            <author initials="R." surname="Enghardt" fullname="Reese Enghardt">
              <organization showOnFrontPage="true">Netflix</organization>
            </author>
            <author initials="G." surname="Fairhurst" fullname="Gorry Fairhurst">
              <organization showOnFrontPage="true">University of Aberdeen</organization>
            </author>
            <author initials="M." surname="Kühlewind" fullname="Mirja Kühlewind">
              <organization showOnFrontPage="true">Ericsson</organization>
            </author>
            <author initials="C." surname="Perkins" fullname="Colin Perkins">
              <organization showOnFrontPage="true">University of Glasgow</organization>
            </author>
            <author initials="P." surname="Tiesel" fullname="Philipp S. Tiesel">
              <organization showOnFrontPage="true">SAP SE</organization>
            </author>
            <author initials="T." surname="Pauly" fullname="Tommy Pauly">
              <organization showOnFrontPage="true">Apple Inc.</organization>
            </author>
            <date month="March" day="16" year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-taps-interface-26"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="W3C.REC-xml-20081126" target="https://www.w3.org/TR/2008/REC-xml-20081126/" quoteTitle="true" derivedAnchor="W3C.REC-xml-20081126">
          <front>
            <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
            <author initials="T." surname="Bray" fullname="Tim Bray"/>
            <author initials="J." surname="Paoli" fullname="Jean Paoli"/>
            <author initials="C.M." surname="Sperberg-McQueen" fullname="C. M. Sperberg-McQueen"/>
            <author initials="E." surname="Maler" fullname="Eve Maler"/>
            <author initials="F." surname="Yergeau" fullname="François Yergeau"/>
            <date month="November" year="2008"/>
          </front>
          <seriesInfo name="World Wide Web Consortium               Recommendation" value="REC-xml-20081126"/>
        </reference>
      </references>
    </references>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-examples">Examples</name>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.1">
        <name slugifiedName="name-keepalive-configuration">Keepalive Configuration</name>
        <t indent="0" pn="section-appendix.a.1-1">This particular example demonstrates how a particular
        connection can be configured for keepalives.</t>
        <sourcecode type="xml" markers="false" pn="section-appendix.a.1-2">
NOTE: '\' line wrapping per RFC 8792

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
This example shows how TCP keepalive, MSS, and PMTU can be configure\
d for a given connection. An idle connection is dropped after
idle-time + (max-probes * probe-interval).
--&gt;
&lt;tcp
    xmlns="urn:ietf:params:xml:ns:yang:ietf-tcp"&gt;
  &lt;connections&gt;
    &lt;connection&gt;
      &lt;local-address&gt;192.0.2.1&lt;/local-address&gt;
      &lt;remote-address&gt;192.0.2.2&lt;/remote-address&gt;
      &lt;local-port&gt;1025&lt;/local-port&gt;
      &lt;remote-port&gt;22&lt;/remote-port&gt;
      &lt;mss&gt;1400&lt;/mss&gt;
      &lt;pmtud&gt;true&lt;/pmtud&gt;
      &lt;keepalives&gt;
        &lt;idle-time&gt;5&lt;/idle-time&gt;
        &lt;max-probes&gt;5&lt;/max-probes&gt;
        &lt;probe-interval&gt;10&lt;/probe-interval&gt;
      &lt;/keepalives&gt;
    &lt;/connection&gt;
  &lt;/connections&gt;
&lt;/tcp&gt;
</sourcecode>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.2">
        <name slugifiedName="name-tcp-ao-configuration">TCP-AO Configuration</name>
        <t indent="0" pn="section-appendix.a.2-1">The following example demonstrates how to model a TCP-AO <xref target="RFC5925" format="default" sectionFormat="of" derivedContent="RFC5925"/> configuration for the example in "TCP Authentication Option (TCP-AO) Test Vectors" <xref target="RFC9235" format="default" sectionFormat="of" derivedContent="RFC9235"/>. The
        IP addresses and other parameters are taken from the test vectors.</t>
        <sourcecode type="xml" markers="false" pn="section-appendix.a.2-2">
NOTE: '\' line wrapping per RFC 8792

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--
This example sets TCP-AO configuration parameters similarly to
the examples in RFC 9235.
--&gt;

&lt;key-chains
    xmlns="urn:ietf:params:xml:ns:yang:ietf-key-chain"&gt;
  &lt;key-chain&gt;
    &lt;name&gt;ao-config&lt;/name&gt;
    &lt;description&gt;"An example for TCP-AO configuration."&lt;/description&gt;
    &lt;key&gt;
      &lt;key-id&gt;55&lt;/key-id&gt;
      &lt;lifetime&gt;
        &lt;send-lifetime&gt;
          &lt;start-date-time&gt;2017-01-01T00:00:00Z&lt;/start-date-time&gt;
          &lt;end-date-time&gt;2017-02-01T00:00:00Z&lt;/end-date-time&gt;
        &lt;/send-lifetime&gt;
        &lt;accept-lifetime&gt;
          &lt;start-date-time&gt;2016-12-31T23:59:55Z&lt;/start-date-time&gt;
          &lt;end-date-time&gt;2017-02-01T00:00:05Z&lt;/end-date-time&gt;
        &lt;/accept-lifetime&gt;
      &lt;/lifetime&gt;
      &lt;crypto-algorithm
          xmlns:tcp=
          "urn:ietf:params:xml:ns:yang:ietf-tcp"&gt;tcp:aes-128&lt;/crypto\
-algorithm&gt;
      &lt;key-string&gt;
        &lt;keystring&gt;testvector&lt;/keystring&gt;
      &lt;/key-string&gt;
      &lt;authentication
          xmlns="urn:ietf:params:xml:ns:yang:ietf-tcp"&gt;
        &lt;keychain&gt;ao-config&lt;/keychain&gt;
        &lt;ao&gt;
          &lt;send-id&gt;61&lt;/send-id&gt;
          &lt;recv-id&gt;84&lt;/recv-id&gt;
        &lt;/ao&gt;
      &lt;/authentication&gt;
    &lt;/key&gt;
  &lt;/key-chain&gt;
&lt;/key-chains&gt;
</sourcecode>
      </section>
    </section>
    <section anchor="comp-tree" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-complete-tree-diagram">Complete Tree Diagram</name>
      <t indent="0" pn="section-appendix.b-1">Here is the complete tree diagram for the TCP YANG data model.</t>
      <sourcecode type="yangtree" markers="false" pn="section-appendix.b-2">
module: ietf-tcp
  +--rw tcp!
     +--rw connections
     |  +--rw connection*
     |          [local-address remote-address local-port remote-port]
     |     +--rw local-address     inet:ip-address
     |     +--rw remote-address    inet:ip-address
     |     +--rw local-port        inet:port-number
     |     +--rw remote-port       inet:port-number
     |     +--rw mss?              mss
     |     +--rw pmtud?            boolean
     |     +--rw keepalives! {keepalives-supported}?
     |     |  +--rw idle-time         uint16
     |     |  +--rw max-probes        uint16
     |     |  +--rw probe-interval    uint16
     |     +--ro state?            enumeration
     +--ro tcp-listeners* [type address port]
     |  +--ro type       inet:ip-version
     |  +--ro address    union
     |  +--ro port       inet:port-number
     +--ro statistics {statistics}?
        +--ro active-opens?             yang:counter64
        +--ro passive-opens?            yang:counter64
        +--ro attempt-fails?            yang:counter64
        +--ro establish-resets?         yang:counter64
        +--ro currently-established?    yang:gauge32
        +--ro in-segments?              yang:counter64
        +--ro out-segments?             yang:counter64
        +--ro retransmitted-segments?   yang:counter64
        +--ro in-errors?                yang:counter64
        +--ro out-resets?               yang:counter64
        +--ro auth-failures?            yang:counter64
        |       {authentication}?
        +---x reset
           +---w input
           |  +---w reset-at?   yang:date-and-time
           +--ro output
              +--ro reset-finished-at?   yang:date-and-time

  augment /key-chain:key-chains/key-chain:key-chain/key-chain:key:
    +--rw authentication {authentication}?
       +--rw keychain?    key-chain:key-chain-ref
       +--rw (authentication)?
          +--:(ao)
          |  +--rw ao!
          |     +--rw send-id?               uint8
          |     +--rw recv-id?               uint8
          |     +--rw include-tcp-options?   boolean
          |     +--rw accept-key-mismatch?   boolean
          |     +--ro r-next-key-id?         uint8
          +--:(md5)
             +--rw md5!
</sourcecode>
    </section>
    <section anchor="app_ack" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.c-1"><contact fullname="Michael Scharf"/> was supported by the StandICT.eu project, which is
      funded by the European Commission under the Horizon 2020 Programme.</t>
      <t indent="0" pn="section-appendix.c-2">The following persons have contributed to this document by
      reviews (in alphabetical order): <contact fullname="Mohamed Boucadair"/>, <contact fullname="Gorry Fairhurst"/>,
      <contact fullname="Jeffrey Haas"/>, and <contact fullname="Tom Petch"/>.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.d">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Michael Scharf" initials="M." surname="Scharf">
        <organization abbrev="Hochschule Esslingen" showOnFrontPage="true">Hochschule Esslingen</organization>
        <address>
          <postal>
            <street>University of Applied Sciences</street>
            <street>Kanalstr. 33</street>
            <code>73728</code>
            <city>Esslingen am Neckar</city>
            <country>Germany</country>
          </postal>
          <email>michael.scharf@hs-esslingen.de</email>
        </address>
      </author>
      <author fullname="Mahesh Jethanandani" initials="M." surname="Jethanandani">
        <organization showOnFrontPage="true">Kloud Services</organization>
        <address>
          <email>mjethanandani@gmail.com</email>
        </address>
      </author>
      <author fullname="Vishal Murgai" initials="V." surname="Murgai">
        <organization showOnFrontPage="true">F5, Inc.</organization>
        <address>
          <email>vmurgai@gmail.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
