<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mboned-dorms-05" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="DORMS">Discovery Of Restconf Metadata for Source-specific multicast</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-dorms-05"/>
    <author initials="J." surname="Holland" fullname="Jake Holland">
      <organization>Akamai Technologies, Inc.</organization>
      <address>
        <postal>
          <street>150 Broadway</street>
          <city>Cambridge, MA 02144</city>
          <country>United States of America</country>
        </postal>
        <email>jakeholland.net@gmail.com</email>
      </address>
    </author>
    <author initials="K." surname="Rose" fullname="Kyle Rose">
      <organization>Akamai Technologies, Inc.</organization>
      <address>
        <postal>
          <street>145 Broadway</street>
          <city>Cambridge, MA 02144</city>
          <country>United States of America</country>
        </postal>
        <email>krose@krose.org</email>
      </address>
    </author>
    <author initials="M." surname="Franke" fullname="Max Franke">
      <organization>TU Berlin</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>mfranke@inet.tu-berlin.de</email>
      </address>
    </author>
    <date year="2025" month="May" day="07"/>
    <area>Ops</area>
    <workgroup>Mboned</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 81?>

<t>This document defines DORMS (Discovery Of Restconf Metadata for Source-specific multicast), a method to discover and retrieve extensible metadata about source-specific multicast channels using RESTCONF.
The reverse IP DNS zone for a multicast sender's IP address is configured to use SRV resource records to advertise the hostname of a RESTCONF server that publishes metadata according to a new YANG module with support for extensions.
A new service name and the new YANG module are defined.</t>
    </abstract>
  </front>
  <middle>
    <?line 87?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines DORMS (Discovery Of Restconf Metadata for Source-specific multicast).</t>
      <t>A DORMS service is a RESTCONF <xref target="RFC8040"/> service that provides read access to data in the "ietf-dorms" YANG <xref target="RFC7950"/> model defined in <xref target="model"/>.
This model, along with optional extensions defined in other documents, provide an extensible set of information about multicast data streams.
A review of some example use cases that can be enabled by this kind of metadata is given in <xref target="motivation"/>.</t>
      <t>This document does not prohibit the use of the "ietf-dorms" model with other protocols such as NETCONF <xref target="RFC6241"/>, CORECONF <xref target="I-D.draft-ietf-core-comi"/>, or gNMI <xref target="I-D.draft-openconfig-rtgwg-gnmi-spec"/>, but the semantics of using the model over those protocols is out of scope for this document.
This document only defines the discovery and use of the "ietf-dorms" YANG model in RESTCONF.</t>
      <t>This document defines the "dorms" service name for use with the SRV DNS Resource Record (RR) type <xref target="RFC2782"/>.
A sender using a DORMS service to publish metadata SHOULD configure at least one SRV RR for the "_dorms._tcp" subdomain in the reverse IP DNS zone for the source IP used by some active multicast traffic.
The domain name in one of these SRV records provides a hostname corresponding to a DORMS server that can provide metadata for the sender's source-specific multicast traffic.
Publishing such a RR enables DORMS clients to discover and query a DORMS server as described in <xref target="disco"/>.</t>
      <section anchor="background">
        <name>Background</name>
        <t>The reader is assumed to be familiar with the basic DNS concepts described in <xref target="RFC1034"/>, <xref target="RFC1035"/>, and the subsequent documents that update them, as well as the use of the SRV Resource Record type as described in <xref target="RFC2782"/>.</t>
        <t>The reader is also assumed to be familiar with the concepts and terminology regarding source-specific multicast as described in <xref target="RFC4607"/> and the use of IGMPv3 <xref target="RFC3376"/> and MLDv2 <xref target="RFC3810"/> for group management of source-specific multicast channels, as described in <xref target="RFC4604"/>.</t>
        <t>The reader is also assumed to be familiar with the concepts and terminology for RESTCONF <xref target="RFC8040"/> and YANG <xref target="RFC7950"/>.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <table>
          <thead>
            <tr>
              <th align="right">Term</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">(S,G)</td>
              <td align="left">A source-specific multicast channel, as described in <xref target="RFC4607"/>. A pair of IP addresses with a source host IP and destination group IP.</td>
            </tr>
            <tr>
              <td align="right">DORMS client</td>
              <td align="left">An application or system that can communicate with DORMS servers to fetch metadata about (S,G)s.</td>
            </tr>
            <tr>
              <td align="right">DORMS server</td>
              <td align="left">A RESTCONF server that implements the ietf-dorms YANG model defined in this document.</td>
            </tr>
            <tr>
              <td align="right">RR</td>
              <td align="left">A DNS Resource Record, as described in <xref target="RFC1034"/></td>
            </tr>
            <tr>
              <td align="right">RRType</td>
              <td align="left">A DNS Resource Record Type, as described in <xref target="RFC1034"/></td>
            </tr>
            <tr>
              <td align="right">SSM</td>
              <td align="left">Source-specific multicast, as described in <xref target="RFC4607"/></td>
            </tr>
          </tbody>
        </table>
        <t>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 <xref target="RFC2119"/> and <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
      <section anchor="motivation">
        <name>Motivation and Use Cases</name>
        <t>DORMS provides a framework that can be extended to publish supplemental information about multicast traffic in a globally discoverable manner.
This supplemental information is sometimes needed by entities engaged in delivery or processing of the traffic to handle the traffic according to their requirements.</t>
        <t>Detailing the specifics of all known possible extensions is out of scope for this document except to note that a range of possible use cases are expected and they may be supported by a variety of different future extensions.
But a few example use cases are provided below for illustration.</t>
        <section anchor="provisioning-and-oversubscription-protection">
          <name>Provisioning and Oversubscription Protection</name>
          <t>One use case for DORMS is when a network that is capable of forwarding multicast traffic may need to take provisioning actions or make admission control decisions based on the expected bitrate of the traffic in order to prevent oversubscription of constrained devices in the network.
<xref target="I-D.draft-ietf-mboned-cbacc"/> defines some DORMS extensions to support this use case.</t>
        </section>
        <section anchor="authentication">
          <name>Authentication</name>
          <t>Another use case for DORMS is providing information for use in authenticating the multicast traffic before accepting it for forwarding by a network device, or for processing by a receiving application.
<xref target="I-D.draft-ietf-mboned-ambi"/> defines some DORMS extensions to support this use case.</t>
        </section>
        <section anchor="content-description">
          <name>Content Description</name>
          <t>Another use case for DORMS is describing the contents carried by a multicast traffic channel.
The content description could include information about the protocols or applications that can be used to consume the traffic, or information about the media carried (e.g. information based on the Dublin Core Metadata Element Set <xref target="RFC5013"/>), or could make assertions about the legal status of the traffic within specific contexts.</t>
        </section>
      </section>
      <section anchor="channel-discovery">
        <name>Channel Discovery</name>
        <t>DORMS provides a method for clients to fetch metadata about (S,G)s that are already known to the clients.
In general, a DORMS client might learn of an (S,G) by any means, so describing all possible methods a DORMS client might use to discover a set of (S,G)s for which it wants metadata is out of scope for this document.</t>
        <t>But for example, a multicast receiver application that is a DORMS client might learn about an (S,G) by getting signals from inside the application logic, such as a selection made by a user, or a scheduled API call that reacts to updates in a library provided by a service operator.</t>
        <t>As another example, an on-path router that’s a DORMS client might instead learn about an (S,G) by receiving a PIM message or an IGMP or MLD membership report indicating a downstream client has tried to subscribe to an (S,G).
Such a router might use information learned from the DORMS metadata to make an access control decision about whether to propagate the join futher upstream in the network.</t>
        <t>Other approaches for learning relevant (S,G)s could be driven by monitoring a route reflector to discover channels that are being actively forwarded, for a purpose such as monitoring network health.</t>
      </section>
      <section anchor="notes-for-contributors-and-reviewers">
        <name>Notes for Contributors and Reviewers</name>
        <t>Note to RFC Editor: Please remove this section and its subsections before publication.</t>
        <t>This section is to provide references to make it easier to review the development and discussion on the draft so far.</t>
        <section anchor="venue">
          <name>Venues for Contribution and Discussion</name>
          <t>This document is in the Github repository at:</t>
          <t>https://github.com/GrumpyOldTroll/ietf-dorms-cluster</t>
          <t>Readers are welcome to open issues and send pull requests for this document.</t>
          <t>Please note that contributions may be merged and substantially edited, and as a reminder, please carefully consider the Note Well before contributing: https://datatracker.ietf.org/submit/note-well/</t>
          <t>Substantial discussion of this document should take place on the MBONED working group mailing list (mboned@ietf.org).</t>
          <ul spacing="normal">
            <li>
              <t>Join: https://www.ietf.org/mailman/listinfo/mboned</t>
            </li>
            <li>
              <t>Search: https://mailarchive.ietf.org/arch/browse/mboned/</t>
            </li>
          </ul>
        </section>
        <section anchor="non-obvious-doc-choices">
          <name>Non-obvious doc choices</name>
          <t>Log of odd things that need to be the way they are because of some reason that the author or reviewers may want to know later.</t>
          <ul spacing="normal">
            <li>
              <t>building the draft without this line produces a warning about no reference to <xref target="RFC6991"/> or <xref target="RFC8294"/>, but these are imported in the yang model. RFC 8407 requires the normative reference to 8294 (there's an exception for 6991 but I'm not sure why and it doesn't seem forbidden).</t>
            </li>
            <li>
              <t>Although it's non-normative, I chose the boundaries in the recommendation for default setting of DNS expiry time in <xref target="ignore"/> based on the best practices advice at https://www.varonis.com/blog/dns-ttl/ for "Short" and "Long" times.</t>
            </li>
            <li>
              <t><xref target="yang-considerations"/> is intended to be the template from <eref target="https://trac.ietf.org/trac/ops/wiki/yang-security-guidelines">https://trac.ietf.org/trac/ops/wiki/yang-security-guidelines</eref>, as required by <eref target="https://datatracker.ietf.org/doc/html/rfc8407#section-3.7">https://datatracker.ietf.org/doc/html/rfc8407#section-3.7</eref>.  Individual nodes are not listed because blanket statements in that section covere them.</t>
            </li>
            <li>
              <t>The 'must' constraint in the group list seems awkward, but seems to work.  Its intent is to require source &amp; group to be either both IPv4 or both IPv6, without mixing &amp; matching.  It requires that either both the group address and its source parent's address must contain a colon or both must NOT contain a colon, where presence of a colon is used to distinguish IPv4 from IPv6.  Maybe there's a better way?</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="disco">
      <name>Discovery and Metdata Retrieval</name>
      <t>A client that needs metadata about an (S,G) MAY attempt to discover metadata for the (S,G) using the mechanisms defined here, and MAY use the metadata received to manage the forwarding or processing of the packets in the channel.</t>
      <section anchor="dns-boot">
        <name>DNS Bootstrap</name>
        <t>The DNS Bootstrap step is how a client discovers an appropriate RESTCONF server, given the source address of an (S,G).
Use of the DNS Bootstrap is OPTIONAL for clients with an alternate method of obtaining a hostname of a trusted DORMS server that has information about a target (S,G).</t>
        <t>This mechanism only works for source-specific multicast (SSM) channels.
The source address of the (S,G) is reversed and used as an index into one of the reverse mapping trees (in-addr.arpa for IPv4, as described in Section 3.5 of <xref target="RFC1035"/>, or ip6.arpa for IPv6, as described in Section 2.5 of <xref target="RFC3596"/>).</t>
        <t>When a DORMS client needs metadata for an (S,G), for example when handling a new join for that (S,G) and looking up the authentication methods that are available, the DORMS client can issue a DNS query for a SRV RR using the "dorms" service name with the domain from the reverse mapping tree, combining them as described in <xref target="RFC2782"/>.</t>
        <t>For example, a client looking for metadata about the channel with a source IP of 2001:db8::a and the group address of ff3e::8000:d, the client would start the DNS bootstrap step by performing a query for the SRV RRType for the following domain (after removing the line break inserted for editorial reasons):</t>
        <artwork><![CDATA[
     _dorms._tcp.a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
                 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
]]></artwork>
        <t>Or for an IPv4 (S,G) with a source address of 203.0.113.4, the DORMS client would request the SRV record from the in-addr.arpa tree instead:</t>
        <artwork><![CDATA[
     _dorms._tcp.4.113.0.203.in-addr.arpa.
]]></artwork>
        <t>In either case, the DNS response for this domain might return a record such as this:</t>
        <artwork><![CDATA[
     SRV 0 1 443 dorms-restconf.example.com.
]]></artwork>
        <t>This response informs the client that a DORMS server should be reachable at dorms-restconf.example.com on port 443, and should contain metadata about multicast traffic from the given source IP.
Multiple SRV records are handled as described by <xref target="RFC2782"/>.</t>
        <t>A sender providing DORMS discovery SHOULD publish at least one SRV record in the reverse DNS zone for each source address of the multicast channels it is sending in order to advertise the hostname of the DORMS server to DORMS clients.
The DORMS servers advertised SHOULD be configured with metadata for all the groups sent from the same source IP address that have metadata published with DORMS.</t>
        <t>When performing the SRV lookup, any CNAMEs or DNAMEs found MUST be followed.
This is necessary to support zone delegation.
Some examples outlining this need are described in <xref target="RFC2317"/>.</t>
      </section>
      <section anchor="ignore">
        <name>Ignore List</name>
        <t>If a DORMS client reaches a DORMS server but determines through examination of responses from that DORMS server that it may not understand or be able to use the responses of the server (for example due to an issue like a version mismatch or modules that are missing but are required for the DORMS client's purposes), the client MAY add this server to an ignore list and reject servers in its ignore list during future discovery attempts.</t>
        <t>A client using the DNS Bootstrap discovery method in <xref target="dns-boot"/> would treat servers in its ignore list as unreachable for the purposes of processing the SRV RR as described in <xref target="RFC2782"/>.
(For example, a client might end up selecting a server with a less-preferred priority than servers in its ignore list, even if an HTTPS connection could have been formed successfully with some of those servers.)</t>
        <t>If an ignore list is maintained, entries SHOULD time out and allow for re-checking after either the cache expiration time from the DNS response that caused the server to be added to the ignore list, or for a configurable hold-down time that has a default value no shorter than 1 hour and no longer than 24 hours.</t>
      </section>
      <section anchor="restconf-bootstrap">
        <name>RESTCONF Bootstrap</name>
        <t>Once a DORMS server has been chosen (whether via an SRV RR from a DNS response or via some other method), RESTCONF provides all the information necessary to determine the versions and url paths for metadata from the server.
A walkthrough is provided here for a sequence of example requests and responses from a receiver connecting to a new DORMS server.</t>
        <section anchor="root-resource-discovery">
          <name>Root Resource Discovery</name>
          <t>As described in Section 3.1 of <xref target="RFC8040"/> and <xref target="RFC6415"/>, the RESTCONF server provides the link to the RESTCONF api entry point via the "/.well-known/host-meta" or "/.well-known/host-meta.json" resource.</t>
          <t>Example:</t>
          <t>The receiver might send:</t>
          <artwork><![CDATA[
     GET /.well-known/host-meta.json HTTP/1.1
     Host: dorms-restconf.example.com
     Accept: application/json
]]></artwork>
          <t>The server might respond as follows:</t>
          <artwork><![CDATA[
      HTTP/1.1 200 OK
      Date: Tue, 09 Jul 2021 20:56:00 GMT
      Server: example-server
      Cache-Control: no-cache
      Content-Type: application/json

      {
        "links":[
          {
            "rel":"restconf",
            "href":"/top/restconf"
          }
        ]
      }
]]></artwork>
        </section>
        <section anchor="yang-library-version">
          <name>Yang Library Version</name>
          <t>As described in Section 3.3.3 of <xref target="RFC8040"/>, the yang-library-version leaf is required by RESTCONF, and can be used to determine the schema of the ietf-yang-library module:</t>
          <t>Example:</t>
          <t>The receiver might send:</t>
          <artwork><![CDATA[
      GET /top/restconf/yang-library-version HTTP/1.1
      Host: dorms-restconf.example.com
      Accept: application/yang-data+json
]]></artwork>
          <t>The server might respond as follows:</t>
          <artwork><![CDATA[
      HTTP/1.1 200 OK
      Date: Tue, 09 Jul 2021 20:56:01 GMT
      Server: example-server
      Cache-Control: no-cache
      Content-Type: application/yang-data+json

      {
          "ietf-restconf:yang-library-version": "2016-06-21"
      }
]]></artwork>
          <t>If a DORMS client determines through examination of the yang-library-version that it may not understand the responses of the server due to a version mismatch, the server qualifies as a candidate for adding to an ignore list as described in <xref target="ignore"/>.</t>
        </section>
        <section anchor="yang-library-contents">
          <name>Yang Library Contents</name>
          <t>After checking that the version of the yang-library module will be understood by the receiver, the client can check that the desired metadata modules are available on the DORMS server by fetching the module-state resource from the ietf-yang-library module.</t>
          <t>Example:</t>
          <t>The receiver might send:</t>
          <artwork><![CDATA[
      GET /top/restconf/data/ietf-yang-library:modules-state/\
          module=ietf-dorms,2021-07-08
      Host: dorms-restconf.example.com
      Accept: application/yang-data+json
]]></artwork>
          <t>The server might respond as follows:</t>
          <artwork><![CDATA[
    HTTP/1.1 200 OK
    Date: Tue, 09 Jul 2021 20:56:02 GMT
    Server: example-server
    Cache-Control: no-cache
    Content-Type: application/yang-data+json

    {
      "ietf-yang-library:module": [
        {
          "conformance-type": "implement",
          "name": "ietf-dorms",
          "namespace": "urn:ietf:params:xml:ns:yang:ietf-dorms",
          "revision": "2021-07-08",
          "schema":
              "https://example.com/yang/ietf-dorms@2021-07-08.yang"
        }
      ]
    }
]]></artwork>
          <t>Other modules required or desired by the client also can be checked in a similar way, or the full set of available modules can be retrieved by not providing a key for the "module" list.
If a DORMS client that requires the presence of certain modules to perform its function discovers the required modules are not present on a server, that server qualifies for inclusion in an ignore list according to <xref target="ignore"/>.</t>
        </section>
        <section anchor="metadata-retrieval">
          <name>Metadata Retrieval</name>
          <t>Once the expected DORMS version is confirmed, the client can retrieve the metadata specific to the desired (S,G).</t>
          <t>Example:</t>
          <t>The receiver might send:</t>
          <artwork><![CDATA[
      GET /top/restconf/data/ietf-dorms:dorms/metadata/\
          sender=2001:db8::a/group=ff3e::8000:1
      Host: dorms-restconf.example.com
      Accept: application/yang-data+json
]]></artwork>
          <t>The server might respond as follows:</t>
          <artwork><![CDATA[
      HTTP/1.1 200 OK
      Date: Tue, 09 Jul 2021 20:56:02 GMT
      Server: example-server
      Cache-Control: no-cache
      Content-Type: application/yang-data+json

      {
        "ietf-dorms:group": [
          {
            "group-address":"ff3e::8000:1",
            "udp-stream":[
              {
                "port":"5001"
              }
            ]
          }
        ]
      }
]]></artwork>
          <t>Note that when other modules are installed on the DORMS server that extend the ietf-dorms module, other fields MAY appear inside the response.
This is the primary mechanism for providing extensible metadata for an (S,G), so clients SHOULD ignore fields they do not understand.</t>
          <t>As mentioned in <xref target="scoping"/>, most clients SHOULD use data resource identifiers in the request URI as in the above example, in order to retrieve metadata for only the targeted (S,G)s.</t>
        </section>
        <section anchor="cors-considerations">
          <name>Cross Origin Resource Sharing (CORS)</name>
          <t>It is RECOMMENDED that DORMS servers use the Access-Control-Allow-Origin header field, as specified by <xref target="whatwg-fetch"/>, and that they respond appropriately to Preflight requests.</t>
          <t>The use of '*' for allowed origins is NOT RECOMMENDED for publicly reachable DORMS servers.
A review of some of the potential consequences of unrestricted CORS access is given in <xref target="security-cors"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="scalability-considerations">
      <name>Scalability Considerations</name>
      <section anchor="provisioning">
        <name>Provisioning</name>
        <t>In contrast to many common RESTCONF deployments that are intended to provide configuration management for a service to a narrow set of authenticated administrators, DORMS servers often provide read-only metadata for public access or for a very large set of end receivers, since it provides metadata in support of multicast data streams and multicast can scale to very large audiences.</t>
        <t>Operators are advised to provision the DORMS service in a way that will scale appropriately to the size of the expected audience.
Specific advice on such scaling is out of scope for this document, but some of the mechanisms outlined in <xref target="RFC3040"/> or other online resources might be useful, depending on the expected number of receivers.</t>
      </section>
      <section anchor="scoping">
        <name>Data Scoping</name>
        <t>Except as outlined below, clients SHOULD issue narrowed requests for DORMS resources by following the format from Section 3.5.3 of <xref target="RFC8040"/> to encode data resource identifiers in the request URI.
This avoids downloading excessive data, since the DORMS server may provide metadata for many (S,G)s, possibly from many different senders.</t>
        <t>However, clients with out of band knowledge about the scope of the expected contents MAY issue requests for (S,G) metadata narrowed only by the source-address, or not narrowed at all.
Depending on the request patterns and the contents of the data store, this may result in fewer round trips or less overhead, and can therefore be helpful behavior for scaling purposes in some scenarios.
In general, engaging in this behavior requires some administrative configuration or some optimization heuristics that can recover from unexpected results.</t>
        <t>Servers MAY restrict or throttle client access based on the client certificate presented (if any), or based on heuristics that take note of client request patterns.</t>
        <t>A complete description of the heuristics for clients and servers to meet their scalability goals is out of scope for this document.</t>
      </section>
    </section>
    <section anchor="model">
      <name>YANG Model</name>
      <t>The primary purpose of the YANG model defined here is to serve as a scaffold for the more useful metadata that will extend it.
See <xref target="motivation"/> for some example use cases that can be enabled by the use of DORMS extensions.</t>
      <section anchor="yang-tree">
        <name>Yang Tree</name>
        <t>The tree diagram below follows the notation defined in <xref target="RFC8340"/>.</t>
        <figure>
          <name>DORMS Tree Diagram</name>
          <artwork><![CDATA[
module: ietf-dorms
  +--rw dorms
     +--rw metadata
        +--rw sender* [source-address]
           +--rw source-address    inet:ip-address
           +--rw group* [group-address]
              +--rw group-address
              |       rt-types:ip-multicast-group-address
              +--rw udp-stream* [port]
                 +--rw port    inet:port-number

]]></artwork>
        </figure>
      </section>
      <section anchor="yang-module">
        <name>Yang Module</name>
        <sourcecode markers="true"><![CDATA[ file ietf-dorms@2025-05-07.yang
module ietf-dorms {
  yang-version 1.1;

  namespace "urn:ietf:params:xml:ns:yang:ietf-dorms";
  prefix "dorms";

  import ietf-inet-types {
    prefix "inet";
    reference "RFC 6991 Section 4";
  }

  import ietf-routing-types {
    prefix "rt-types";
    reference "RFC 8294";
  }

  organization "IETF MBONED (Multicast Backbone
      Deployment) Working Group";

  contact
      "Author:   Jake Holland
                 <mailto:jholland@akamai.com>
      ";

  description
  "Copyright (c) 2019 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 Simplified 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 XXXX
   (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
   for full legal notices.

   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.

   This module contains the definition for the DORMS data type.
   It provides out of band metadata about SSM channels.";

  revision 2021-07-08 {
    description "Draft version, post-early-review.";
    reference
        "draft-ietf-mboned-dorms";
  }

  container dorms {
    description "Top-level DORMS container.";
    container metadata {
      description "Metadata scaffold for source-specific multicast
          channels.";
      list sender {
        key source-address;
        description "Sender for DORMS";

        leaf source-address {
          type inet:ip-address;
          mandatory true;
          description
              "The source IP address of a multicast sender.";
        }

        list group {
          key group-address;
          description "Metadata for a DORMS (S,G).";

          leaf group-address {
            type rt-types:ip-multicast-group-address;
            mandatory true;
            description "The group IP address for an (S,G).";
          }
          must '(re-match(./group-address, "[^:]*") and ' +
                're-match(../source-address, "[^:]*")) or ' +
               '(re-match(./group-address, ".*:.*") and ' +
                're-match(../source-address, ".*:.*"))' {
            error-message 'A group-address type must match '+
                          'its parent source-address type';
          }

          list udp-stream {
            key "port";
            description
                "Metadata for UDP traffic on a specific port.";
            leaf port {
              type inet:port-number;
              mandatory true;
              description
                  "The UDP port of a data stream.";
            }
          }
        }
      }
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="linking-content-to-traffic-streams">
        <name>Linking Content to Traffic Streams</name>
        <t>In the typical case, the mechanisms defined in this document provide a standardized way to discover information that is already available in other ways.</t>
        <t>However, depending on the metadata provided by the server, observers may be able to more easily associate traffic from an (S,G) with the content contained within the (S,G).
At the subscriber edge of a multicast-capable network, where the network operator has the capability to localize an IGMP <xref target="RFC3376"/> or MLD <xref target="RFC3810"/> channel subscription to a specific user or location, for example by MAC address or source IP address, the structured publishing of metadata may make it easier to automate collection of data about the content a receiver is consuming.</t>
      </section>
      <section anchor="linking-multicast-subscribers-to-unicast-connections">
        <name>Linking Multicast Subscribers to Unicast Connections</name>
        <t>Subscription to a multicast channel generally only exposes the IGMP or MLD membership report to others on the same LAN, and as the membership propagates through a multicast-capable network, it ordinarily gets aggregated with other end users.</t>
        <t>However, a RESTCONF connection is a unicast connection, and exposes a different set of information to the operator of the RESTCONF server, including IP address and timing about the requests made.
Where DORMS access becomes required to succeed a multicast join (for example, as expected in a browser deployment), this can expose new information about end users relative to services based solely on multicast streams.
The information disclosure occurs by giving the DORMS service operator information about the client's IP and the channels the client queried.</t>
        <t>In some deployments it may be possible to use a proxy that aggregates many end users when the aggregate privacy characteristics are needed by end users.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="the-yang-module-names-registry">
        <name>The YANG Module Names Registry</name>
        <t>This document adds one YANG module to the "YANG Module Names" registry maintained at &lt;https://www.iana.org/assignments/yang-parameters&gt;.
The following registrations are made, per the format in Section 14 of <xref target="RFC6020"/>:</t>
        <artwork><![CDATA[
      name:      ietf-dorms
      namespace: urn:ietf:params:xml:ns:yang:ietf-dorms
      prefix:    dorms
      reference: I-D.draft-ietf-mboned-dorms
]]></artwork>
      </section>
      <section anchor="the-xml-registry">
        <name>The XML Registry</name>
        <t>This document adds the following registration to the "ns" subregistry of the "IETF XML Registry" defined in <xref target="RFC3688"/>, referencing this document.</t>
        <artwork><![CDATA[
       URI: urn:ietf:params:xml:ns:yang:ietf-dorms
       Registrant Contact: The IESG.
       XML: N/A, the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="the-service-name-and-transport-protocol-port-number-registry">
        <name>The Service Name and Transport Protocol Port Number Registry</name>
        <t>This document adds one service name to the "Service Name and Transport Protocol Port Number Registry" maintained at &lt;https://www.iana.org/assignments/service-names-port-numbers&gt;.
The following registrations are made, per the format in Section 8.1.1 of <xref target="RFC6335"/>:</t>
        <artwork><![CDATA[
     Service Name:            dorms
     Transport Protocol(s):   TCP, UDP
     Assignee:                IESG <iesg@ietf.org>
     Contact:                 IETF Chair <chair@ietf.org>
     Description:             The DORMS service (RESTCONF that
                              includes ietf-dorms YANG model)
     Reference:               I-D.draft-ietf-mboned-dorms
     Port Number:             N/A
     Service Code:            N/A
     Known Unauthorized Uses: N/A
     Assignment Notes:        N/A
]]></artwork>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="yang-considerations">
        <name>YANG Model Considerations</name>
        <t>The YANG module specified in this document defines a schema for data that is designed to be accessed via RESTCONF <xref target="RFC8040"/>.
The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t>
        <t>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>
        <t>Subtrees:</t>
        <ul spacing="normal">
          <li>
            <t>/dorms/metadata</t>
          </li>
          <li>
            <t>/dorms/metadata/sender</t>
          </li>
          <li>
            <t>/dorms/metadata/sender/group</t>
          </li>
          <li>
            <t>/dorms/metadata/sender/group/udp-stream</t>
          </li>
        </ul>
        <t>Data nodes:</t>
        <ul spacing="normal">
          <li>
            <t>/dorms/metadata/sender/source-address</t>
          </li>
          <li>
            <t>/dorms/metadata/sender/group/group-address</t>
          </li>
          <li>
            <t>/dorms/metadata/sender/group/udp-stream/port</t>
          </li>
        </ul>
        <t>These data nodes refer to the characteristics of a stream of data packets being sent on a multicast channel.
If an unauthorized or incorrect edit is made, receivers would no longer be able to associate the data stream to the correct metadata, resulting in a denial of service for end users that rely on the metadata to properly process the data packets.
Therefore DORMS servers MUST constrain write access to ensure that unauthorized users cannot edit the data published by the server.</t>
        <t>The Network Configuration Access Control Model (NACM) <xref target="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.
DORMS servers MAY use NACM to constrain write accesses.</t>
        <t>However, note that scalability considerations described in <xref target="provisioning"/> might make the naive use of NACM intractable in many deployments, for a broadcast use case.
So alternative methods to constrain write access to the metadata MAY be used instead of or in addition to NACM.
For example, some deployments that use a CDN or caching layer of discoverable DORMS servers might uniformly provide read-only access through the caching layer, and might require the trusted writers of configuration to use an alternate method of accessing the underlying database such as connecting directly to the origin, or requiring the use of a non-RESTCONF mechanism for editing the contents of the metadata.</t>
        <t>The data nodes defined in this YANG module are writable because some deployments might manage the contents in the database by using normal RESTCONF editing operations with NACM, but in typical deployments it's expected that DORMS clients will generally have read-only access.
For the reasons and requirements described in <xref target="exposure"/>, none of the data nodes in the DORMS module or its extensions contain sensitive data.</t>
        <t>DORMS servers MAY provide read-only access to clients for publicly available metadata without authenticating the clients.
That is, under the terms in Section 2.5 of <xref target="RFC8040"/> read-only access to publicly available data MAY be treated as unprotected resources.</t>
      </section>
      <section anchor="exposure">
        <name>Exposure of Metadata</name>
        <t>Although some DORMS servers MAY restrict access based on client identity, as described in Section 2.5 of <xref target="RFC8040"/>, many DORMS servers will use the ietf-dorms YANG model to publish information without restriction, and even DORMS servers requiring client authentication will inherently, because of the purpose of DORMS, be providing the DORMS metadata to potentially many receivers.</t>
        <t>Accordingly, future YANG modules that augment data paths under "ietf-dorms:dorms" MUST NOT include any sensitive data unsuitable for public dissemination in those data paths.</t>
        <t>Because of the possibility that scalable read-only access might be necessary to fulfill the scalability goals for a DORMS server, data under these paths MAY be cached or replicated by numerous external entities, so owners of such data SHOULD NOT assume such data can be kept secret when provided by DORMS servers anywhere under the "ietf-dorms:dorms" path even if access controls are used with authenticated clients unless additional operational procedures and restrictions are defined and implemented that can effectively control the dissemination of the secret data.
DORMS alone does not provide any such mechanisms, and users of DORMS can be expected not to be following any such mechanisms in the absence of additional assurances.</t>
      </section>
      <section anchor="secure-communications">
        <name>Secure Communications</name>
        <t>The provisions of Section 2 of <xref target="RFC8040"/> provide secure communication requirements that are already required of DORMS servers, since they are RESTCONF servers.
All RESTCONF requirements and security considerations remain in force for DORMS servers.</t>
        <t>It is intended that security related metadata about the SSM channels such as public keys for use with cryptographic algorithms may be delivered over the RESTCONF connection, and that information available from this connection can be used as a trust anchor.
The secure transport provided by these minimum requirements are relied upon to provide authenticated delivery of these trust anchors, once a connection with a trusted DORMS server has been established.</t>
      </section>
      <section anchor="record-spoofing">
        <name>Record-Spoofing</name>
        <t>When using the DNS Boostrap method of discovery described in <xref target="dns-boot"/>, the SRV resource record contains information that SHOULD be communicated to the DORMS client without being modified.  The method used to ensure the result was unmodified is up to the client.</t>
        <t>There must be a trust relationship between the end consumer of this resource record and the DNS server.
This relationship may be end-to-end DNSSEC validation or a secure connection to a trusted DNS server that provides end-to-end safety to prevent record-spoofing of the response from the trusted server.
The connection to the trusted server can use any secure channel, such as with a TSIG <xref target="RFC8945"/> or SIG(0) <xref target="RFC2931"/> channel, a secure local channel on the host, DNS over TLS <xref target="RFC7858"/>, DNS over HTTPS <xref target="RFC8484"/>, or some other mechanism that provides authentication of the RR.</t>
        <t>If a DORMS client accepts a maliciously crafted SRV record, the client could connect to a server controlled by the attacker, and use metadata provided by them.  The consequences of trusting maliciously crafted metadata could range from attacks against the DORMS client's parser of the metadata (via malicious constructions of the formatting of the data) to arbitrary disruption of the decisions the DORMS client makes as a result of processing validly constructed metadata.</t>
        <t>Clients MAY use other secure methods to explicitly associate an (S,G) with a set of DORMS server hostnames, such as a configured mapping or an alternative trusted lookup service.</t>
      </section>
      <section anchor="security-cors">
        <name>CORS considerations</name>
        <t>As described in <xref target="cors-considerations"/>, it's RECOMMENDED that DORMS servers provide appropriate restrictions to ensure only authorized web pages access metadata for their (S,G)s from the widely deployed base of secure browsers that use the CORS protocol according to <xref target="whatwg-fetch"/>.</t>
        <t>Providing '*' for the allowed origins exposes the DORMS-based metadata to access by scripts in all web pages, which opens the possibility of certain kinds of attacks against networks where browsers have support for joining multicast (S,G)s.</t>
        <t>If the authentication for an (S,G) relies on DORMS-based metadata (for example, as defined in <xref target="I-D.draft-ietf-mboned-ambi"/>), an unauthorized web page that tries to join an (S,G) not permitted by the CORS headers for the DORMS server will be prevented from subscribing to the channels.</t>
        <t>If an unauthorized site is not prevented from subscribing, code on the site (for example a malicious advertisement) could request subscriptions from many different (S,G)s, overflowing limits on the joining of (S,G)s and disrupting the delivery of multicast traffic for legitimate use.</t>
        <t>Further, if the malicious script can be distributed to many different users within the same receiving network, the script could coordinate an attack against the network as a whole by joining disjoint sets of (S,G)s from different users within the receiving network.
The distributed subscription requests across the receiving network could overflow limits for the receiving network as a whole, essentially causing the websites displaying the ad to participate in an overjoining attack (see Appendix A of <xref target="I-D.draft-ietf-mboned-cbacc"/>).</t>
        <t>Even if network safety mechanisms protect the network from the worst effects of oversubscription, the population counts for the multicast subscriptions could be disrupted by this kind of attack, and therefore push out legitimately requested traffic that's being consumed by real users.
For a legitimately popular event, this could cause a widespread disruption to the service if it's successfully pushed out.</t>
        <t>A denial of service attack of this sort would be thwarted by restricting the access to (S,G)s to authorized websites through the use of properly restricted CORS headers.</t>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Christian Worm Mortensen, Dino Farinacci, Lenny Guiliano, and Reshad Rahman for their very helpful comments and reviews.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC2317">
          <front>
            <title>Classless IN-ADDR.ARPA delegation</title>
            <author fullname="H. Eidnes" initials="H." surname="Eidnes"/>
            <author fullname="G. de Groot" initials="G." surname="de Groot"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <date month="March" year="1998"/>
            <abstract>
              <t>This document describes a way to do IN-ADDR.ARPA delegation on non-octet boundaries for address spaces covering fewer than 256 addresses. 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="20"/>
          <seriesInfo name="RFC" value="2317"/>
          <seriesInfo name="DOI" value="10.17487/RFC2317"/>
        </reference>
        <reference anchor="RFC2782">
          <front>
            <title>A DNS RR for specifying the location of services (DNS SRV)</title>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <author fullname="L. Esibov" initials="L." surname="Esibov"/>
            <date month="February" year="2000"/>
            <abstract>
              <t>This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2782"/>
          <seriesInfo name="DOI" value="10.17487/RFC2782"/>
        </reference>
        <reference anchor="RFC3596">
          <front>
            <title>DNS Extensions to Support IP Version 6</title>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="V. Ksinant" initials="V." surname="Ksinant"/>
            <author fullname="M. Souissi" initials="M." surname="Souissi"/>
            <date month="October" year="2003"/>
            <abstract>
              <t>This document defines the changes that need to be made to the Domain Name System (DNS) to support hosts running IP version 6 (IPv6). The changes include a resource record type to store an IPv6 address, a domain to support lookups based on an IPv6 address, and updated definitions of existing query types that return Internet addresses as part of additional section processing. The extensions are designed to be compatible with existing applications and, in particular, DNS implementations themselves. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="88"/>
          <seriesInfo name="RFC" value="3596"/>
          <seriesInfo name="DOI" value="10.17487/RFC3596"/>
        </reference>
        <reference anchor="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>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">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>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">
          <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>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">
          <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>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">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8294">
          <front>
            <title>Common YANG Data Types for the Routing Area</title>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>This document defines a collection of common data types using the YANG data modeling language. These derived common types are designed to be imported by other modules defined in the routing area.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8294"/>
          <seriesInfo name="DOI" value="10.17487/RFC8294"/>
        </reference>
        <reference anchor="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>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">
          <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>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>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="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>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>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="whatwg-fetch" target="https://fetch.spec.whatwg.org/">
          <front>
            <title>WHATWG Fetch Living Standard</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC2931">
          <front>
            <title>DNS Request and Transaction Signatures ( SIG(0)s )</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="September" year="2000"/>
            <abstract>
              <t>This document describes the minor but non-interoperable changes in Request and Transaction signature resource records ( SIG(0)s ) that implementation experience has deemed necessary. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2931"/>
          <seriesInfo name="DOI" value="10.17487/RFC2931"/>
        </reference>
        <reference anchor="RFC3040">
          <front>
            <title>Internet Web Replication and Caching Taxonomy</title>
            <author fullname="I. Cooper" initials="I." surname="Cooper"/>
            <author fullname="I. Melve" initials="I." surname="Melve"/>
            <author fullname="G. Tomlinson" initials="G." surname="Tomlinson"/>
            <date month="January" year="2001"/>
            <abstract>
              <t>This memo specifies standard terminology and the taxonomy of web replication and caching infrastructure as deployed today. It introduces standard concepts, and protocols used today within this application domain. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3040"/>
          <seriesInfo name="DOI" value="10.17487/RFC3040"/>
        </reference>
        <reference anchor="RFC3376">
          <front>
            <title>Internet Group Management Protocol, Version 3</title>
            <author fullname="B. Cain" initials="B." surname="Cain"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
            <author fullname="B. Fenner" initials="B." surname="Fenner"/>
            <author fullname="A. Thyagarajan" initials="A." surname="Thyagarajan"/>
            <date month="October" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3376"/>
          <seriesInfo name="DOI" value="10.17487/RFC3376"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>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="RFC3810">
          <front>
            <title>Multicast Listener Discovery Version 2 (MLDv2) for IPv6</title>
            <author fullname="R. Vida" initials="R." role="editor" surname="Vida"/>
            <author fullname="L. Costa" initials="L." role="editor" surname="Costa"/>
            <date month="June" year="2004"/>
            <abstract>
              <t>This document updates RFC 2710, and it specifies Version 2 of the ulticast Listener Discovery Protocol (MLDv2). MLD is used by an IPv6 router to discover the presence of multicast listeners on directly attached links, and to discover which multicast addresses are of interest to those neighboring nodes. MLDv2 is designed to be interoperable with MLDv1. MLDv2 adds the ability for a node to report interest in listening to packets with a particular multicast address only from specific source addresses or from all sources except for specific source addresses. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3810"/>
          <seriesInfo name="DOI" value="10.17487/RFC3810"/>
        </reference>
        <reference anchor="RFC4604">
          <front>
            <title>Using Internet Group Management Protocol Version 3 (IGMPv3) and Multicast Listener Discovery Protocol Version 2 (MLDv2) for Source-Specific Multicast</title>
            <author fullname="H. Holbrook" initials="H." surname="Holbrook"/>
            <author fullname="B. Cain" initials="B." surname="Cain"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>The Internet Group Management Protocol Version 3 (IGMPv3) and the Multicast Listener Discovery Protocol Version 2 (MLDv2) are protocols that allow a host to inform its neighboring routers of its desire to receive IPv4 and IPv6 multicast transmissions, respectively. Source-specific multicast (SSM) is a form of multicast in which a receiver is required to specify both the network-layer address of the source and the multicast destination address in order to receive the multicast transmission. This document defines the notion of an "SSM-aware" router and host, and clarifies and (in some cases) modifies the behavior of IGMPv3 and MLDv2 on SSM-aware routers and hosts to accommodate source-specific multicast. This document updates the IGMPv3 and MLDv2 specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4604"/>
          <seriesInfo name="DOI" value="10.17487/RFC4604"/>
        </reference>
        <reference anchor="RFC4607">
          <front>
            <title>Source-Specific Multicast for IP</title>
            <author fullname="H. Holbrook" initials="H." surname="Holbrook"/>
            <author fullname="B. Cain" initials="B." surname="Cain"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>IP version 4 (IPv4) addresses in the 232/8 (232.0.0.0 to 232.255.255.255) range are designated as source-specific multicast (SSM) destination addresses and are reserved for use by source-specific applications and protocols. For IP version 6 (IPv6), the address prefix FF3x::/32 is reserved for source-specific multicast use. This document defines an extension to the Internet network service that applies to datagrams sent to SSM addresses and defines the host and router requirements to support this extension. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4607"/>
          <seriesInfo name="DOI" value="10.17487/RFC4607"/>
        </reference>
        <reference anchor="RFC5013">
          <front>
            <title>The Dublin Core Metadata Element Set</title>
            <author fullname="J. Kunze" initials="J." surname="Kunze"/>
            <author fullname="T. Baker" initials="T." surname="Baker"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This document defines fifteen metadata elements for resource description in a cross-disciplinary information environment. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5013"/>
          <seriesInfo name="DOI" value="10.17487/RFC5013"/>
        </reference>
        <reference anchor="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>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="RFC6335">
          <front>
            <title>Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document defines the procedures that the Internet Assigned Numbers Authority (IANA) uses when handling assignment and other requests related to the Service Name and Transport Protocol Port Number registry. It also discusses the rationale and principles behind these procedures and how they facilitate the long-term sustainability of the registry.</t>
              <t>This document updates IANA's procedures by obsoleting the previous UDP and TCP port assignment procedures defined in Sections 8 and 9.1 of the IANA Allocation Guidelines, and it updates the IANA service name and port assignment procedures for UDP-Lite, the Datagram Congestion Control Protocol (DCCP), and the Stream Control Transmission Protocol (SCTP). It also updates the DNS SRV specification to clarify what a service name is and how it is registered. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="165"/>
          <seriesInfo name="RFC" value="6335"/>
          <seriesInfo name="DOI" value="10.17487/RFC6335"/>
        </reference>
        <reference anchor="RFC6415">
          <front>
            <title>Web Host Metadata</title>
            <author fullname="E. Hammer-Lahav" initials="E." role="editor" surname="Hammer-Lahav"/>
            <author fullname="B. Cook" initials="B." surname="Cook"/>
            <date month="October" year="2011"/>
            <abstract>
              <t>This specification describes a method for locating host metadata as well as information about individual resources controlled by the host. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6415"/>
          <seriesInfo name="DOI" value="10.17487/RFC6415"/>
        </reference>
        <reference anchor="RFC7858">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="2016"/>
            <abstract>
              <t>This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS. Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626. In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t>
              <t>This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7858"/>
          <seriesInfo name="DOI" value="10.17487/RFC7858"/>
        </reference>
        <reference anchor="RFC8484">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
        <reference anchor="RFC8945">
          <front>
            <title>Secret Key Transaction Authentication for DNS (TSIG)</title>
            <author fullname="F. Dupont" initials="F." surname="Dupont"/>
            <author fullname="S. Morris" initials="S." surname="Morris"/>
            <author fullname="P. Vixie" initials="P." surname="Vixie"/>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="O. Gudmundsson" initials="O." surname="Gudmundsson"/>
            <author fullname="B. Wellington" initials="B." surname="Wellington"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This document describes a protocol for transaction-level authentication using shared secrets and one-way hashing. It can be used to authenticate dynamic updates to a DNS zone as coming from an approved client or to authenticate responses as coming from an approved name server.</t>
              <t>No recommendation is made here for distributing the shared secrets; it is expected that a network administrator will statically configure name servers and clients using some out-of-band mechanism.</t>
              <t>This document obsoletes RFCs 2845 and 4635.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="93"/>
          <seriesInfo name="RFC" value="8945"/>
          <seriesInfo name="DOI" value="10.17487/RFC8945"/>
        </reference>
        <reference anchor="I-D.draft-ietf-mboned-cbacc">
          <front>
            <title>Circuit Breaker Assisted Congestion Control</title>
            <author fullname="Jake Holland" initials="J." surname="Holland">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <abstract>
              <t>   This document specifies Circuit Breaker Assisted Congestion Control
   (CBACC).  CBACC enables fast-trip Circuit Breakers by publishing rate
   metadata about multicast channels from senders to intermediate
   network nodes or receivers.  The circuit breaker behavior is defined
   as a supplement to receiver driven congestion control systems, to
   preserve network health if misbehaving or malicious receiver
   applications subscribe to a volume of traffic that exceeds capacity
   policies or capability for a network or receiving device.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-cbacc-04"/>
        </reference>
        <reference anchor="I-D.draft-ietf-mboned-ambi">
          <front>
            <title>Asymmetric Manifest Based Integrity</title>
            <author fullname="Jake Holland" initials="J." surname="Holland">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <author fullname="Kyle Rose" initials="K." surname="Rose">
              <organization>Akamai Technologies, Inc.</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <abstract>
              <t>   This document defines Asymmetric Manifest-Based Integrity (AMBI).
   AMBI allows each receiver or forwarder of a stream of multicast
   packets to check the integrity of the contents of each packet in the
   data stream.  AMBI operates by passing cryptographically verifiable
   hashes of the data packets inside manifest messages, and sending the
   manifests over authenticated out-of-band communication channels.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-ambi-03"/>
        </reference>
        <reference anchor="I-D.draft-ietf-core-comi">
          <front>
            <title>CoAP Management Interface (CORECONF)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>consultant</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="6" month="May" year="2025"/>
            <abstract>
              <t>   This document describes a network management interface for
   constrained devices and networks, called CoAP Management Interface
   (CORECONF).  The Constrained Application Protocol (CoAP) is used to
   access datastore and data node resources specified in YANG, or SMIv2
   converted to YANG.  CORECONF uses the YANG to CBOR mapping and
   converts YANG identifier strings to numeric identifiers for payload
   size reduction.  CORECONF extends the set of YANG based protocols,
   NETCONF and RESTCONF, with the capability to manage constrained
   devices and networks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-20"/>
        </reference>
        <reference anchor="I-D.draft-openconfig-rtgwg-gnmi-spec">
          <front>
            <title>gRPC Network Management Interface (gNMI)</title>
            <author fullname="Rob Shakir" initials="R." surname="Shakir">
              <organization>Google</organization>
            </author>
            <author fullname="Anees Shaikh" initials="A." surname="Shaikh">
              <organization>Google</organization>
            </author>
            <author fullname="Paul Borman" initials="P." surname="Borman">
              <organization>Google</organization>
            </author>
            <author fullname="Marcus Hines" initials="M." surname="Hines">
              <organization>Google</organization>
            </author>
            <author fullname="Carl Lebsack" initials="C." surname="Lebsack">
              <organization>Google</organization>
            </author>
            <author fullname="Chris Morrow" initials="C." surname="Morrow">
              <organization>Google</organization>
            </author>
            <date day="5" month="March" year="2018"/>
            <abstract>
              <t>   This document describes the gRPC Network Management Interface (gNMI),
   a network management protocol based on the gRPC framework.  gNMI
   supports retrieval and manipulation of state from network elements
   where the data is represented by a tree structure, and addressable by
   paths.  The gNMI service defines operations for configuration
   management, operational state retrieval, and bulk data collection via
   streaming telemetry.  The authoritative gNMI specification is
   maintained at [GNMI-SPEC].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-openconfig-rtgwg-gnmi-spec-01"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V96XIj15XmfzxFBiuiSdoASFaxNkjWiCJLJdpFVg1JWe2w
PB0JIAmmKpGJzkyQgst09GvM682TzPnOcpcEyJK67VmqOywQyLzLuWff7mAw
6LV5W2Sj5CRvJtVtVq+S99fJRda0k6q8Ts6yNp2mbZpcV3VyWS3rSTZoFtkk
v84nyXxZtPkkbdpeOh7X2S0N8v7i7LI3rSZlOqcxp3V63Q7yrL0ezMdVmU0H
06qeN4P95z0aNBv1JvS/s6pejZKmnfZ6+aIeJW29bNqn+/uv95/20jpLR8n7
RdO7q+qPs7paLkbJGQ/V+5it6MvpKDkt26wus3Zwgul6vaZNy+m/pQU9NUpW
WdNb5KPkz2016SdNVbd1dt3Qp9UcH/7S66XL9qaqR71k0EvoX142o+T3w+S7
qihoHP5OdvP79GMWfV3Vs1Fy9DGdp3lylU1uyqqoZnlGo5+WkyE/0tB0WTtK
Dp7vJ9/UVTq9S1f8wyRvadfH6Xxc59NZ1k/OjpL9pweHh/JrtSxbgOX7Mm+z
aXLZEqCapLpOjuZZTTDnpzKauBglP9G6bmRZQwLD1zN8PZxU82hLfxgmF1WT
Bfv5w6rI/He/ZjOHz/9pm/lY04K+5v8d0pKiLZwNk2/rtPwYbuIs/Tn8kndx
9X3yTVYXeRkOPL/mp77OCUTDdjkY8xPDaRav8W1Wz9Ny1euVhKlpm98SlibJ
xbfHTw8OXtvHZwcv7ePLV0/147Pnr1/oxxdPDw/s4+vX9vHl6+f7+vHV/qH7
ePDy0D4+fe0+PvMPPHODvTo85CnubtL2bja4ztrJzYjX36b1DEdz07aLZrS3
xz8NQalDeRjA3JNHhd63fvju6OqHt8m3eDJ5l9/m5QxHU07TerrFTzKNJu8n
bUXASp7uP90nEi2vO4A52H926D8+N8C8fmarfuY3++zZS4PRsxevXtnHVwf2
wOGL/UP/0aD8fP/gmcGTVmEfn7nZXhwe2MeXr56/cuB65eD5+pAfOB2cDNe5
0mScTiYP/0x4nW/4dVLVGf3PvPNbtchK8M58NqjbGR3TrJznzDRHvd5gMEjS
MRFSOiFOdXWTNwlxy+U8K9tkml0TcjbCRJOd/wpD3u0naTLPiLFNk7ZKpjpU
Qqeb1Flb59ltlmQ/t1nZ5GPiAnMbNR1Xy5bY5APjJpObtCyzokmWDfDl4s3l
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

-->

</rfc>
