<?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-rfc2629 version 1.2.13 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mboned-mnat-01" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="MNAT">Multicast Network Address Translation</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mboned-mnat-01"/>
    <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>
    <date year="2022" month="March" day="07"/>
    <area>Ops</area>
    <workgroup>Mboned</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines a method for a network to maintain Network Address Translation address mappings for the transport of globally addressed multicast traffic within a network that can't otherwise forward the globally addressed traffic.
A new Multicast Network Address Translation (MNAT) service is defined to communicate the address mappings to ingress and egress points within the network, and considerations for operation of the MNAT service are described.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Network Address Translation is very widely used for unicast traffic in a variety of networks and according to a variety of mechanisms.
<xref target="RFC2663" format="default"/> is recommended reading for background on the ways unicast NAT is used.</t>
      <t>The handling of multicast traffic can pose a variety of additional problems for a network, some of which can be mitigated or avoided if traffic can be mapped to a different address space than its original addressing.
This document defines a new service, Multicast Network Address Translation (MNAT) as a mechanism to administer network address mappings for multicast traffic within a network, for the purpose of working around various addressing-related issues.
An overview of some of the motivating use cases that can be resolved by network address remapping for multicast traffic is given in <xref target="motivation" format="default"/>.
An explanation of the protocol operation is given in <xref target="protocol" format="default"/>.</t>
      <t>Messaging to and from the MNAT service is defined with RESTCONF <xref target="RFC8040" format="default"/> using the YANG <xref target="RFC7950" format="default"/> model in <xref target="model" format="default"/>.</t>
      <t>Unlike traditional unicast NAT, MNAT performs address translation at both an ingress point to the network (where the traffic is transformed to use an address scheme local to the network), and also at an egress point from the network (where the traffic is transformed back to the original address scheme for further forwarding, or for further processing by a receiving application).</t>
      <section anchor="background" numbered="true" toc="default">
        <name>Background</name>
        <t>The reader is assumed to be familiar with the concepts and terminology regarding source-specific multicast as described in <xref target="RFC4607" format="default"/> and the use of IGMPv3 <xref target="RFC3376" format="default"/> and MLDv2 <xref target="RFC3810" format="default"/> for group management of source-specific multicast channels, as described in <xref target="RFC4604" format="default"/>.</t>
        <t>The reader is also assumed to be familiar with the concepts and terminology for RESTCONF <xref target="RFC8040" format="default"/> and YANG <xref target="RFC7950" format="default"/>.</t>
        <t>The reader is also assumed to be familiar with the use of DNS-SD <xref target="RFC6763" format="default"/> for discovery of services provided by the network to end hosts.</t>
      </section>
      <section anchor="terminology" numbered="true" toc="default">
        <name>Terminology</name>
        <table align="center">
          <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" format="default"/>. A pair of IP addresses with a source host IP and destination group IP.</td>
            </tr>
            <tr>
              <td align="right">egress node</td>
              <td align="left">A MNAT client operating at a point where NATted multicast traffic exits the network (close to the receiver)</td>
            </tr>
            <tr>
              <td align="right">ingress node</td>
              <td align="left">A MNAT client operating at a point where multicast traffic enters the network and gets NATted (close to the sender)</td>
            </tr>
            <tr>
              <td align="right">MNAT client</td>
              <td align="left">A client using the ietf-mnat YANG model via RESTCONF, or a client with equivalent signaling to an MNAT service.</td>
            </tr>
            <tr>
              <td align="right">NATted traffic</td>
              <td align="left">Multicast traffic that has been translated to use addressing or encapsulation assigned locally within the network, rather than its original global addressing.</td>
            </tr>
            <tr>
              <td align="right">SSM</td>
              <td align="left">Source-specific multicast, as described in <xref target="RFC4607" format="default"/></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" format="default"/> and <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
      <section anchor="motivation" numbered="true" toc="default">
        <name>Motivation</name>
        <t>This section lists use cases where a global (S,G) may not be possible to transport within a network, requiring the use of some kind of encapsulation or address translation in order to adequately communicate the group membership for packet replication within the network, or in order to perform the forwarding for the subscribed traffic within the network.</t>
        <ol spacing="normal" type="1"><li>Global IPv6 (S,G)s subscribed from within an IPv4-only network, or global IPv4 (S,G)s subscribed from within an IPv6-only network.</li>
          <li>Networks with legacy devices that support only IGMPv2 or MLDv1, or otherwise do not support SSM and cannot discover the external sources without the use of non-standard services since interdomain any-source multicast has been deprecated (see <xref target="RFC8815" format="default"/>).</li>
          <li>Networks that ingest external multicast traffic in a way that the route to the source of the traffic does not go through the ingest point may need to use a different source so that the Reverse Path Forwarding (RPF) can find the correct network location for the ingest.</li>
          <li>Networks that provision multicast transport and packet replication channels with static routing instead of dynamic tree-building protocols like PIM-SM <xref target="RFC7761" format="default"/>.</li>
          <li>Networks using VLAN <xref target="IEEE-802.1Q" format="default"/> for traffic segregation and has Layer 2 access devices that assign VLAN tags according to MAC addresses will get MAC address collisions among multicast groups.  Because the bits used for the multicast addresses come from the bottom 23 bits of the destination group address as described in <xref target="RFC1112" format="default"/> and those bits can collide between groups, especially in SSM.  The technological limitations of VLAN assignment using MAC addresses at Layer 2 breaks the traffic segregation of multicast traffic for different services in such devices.</li>
        </ol>
        <t>A note elaborating on the use of static routing for multicast groups:</t>
        <t>Some networks have found that there are good use cases to deliver a limited set of packet-replicating flows, including sometimes the use of externally sourced multicast traffic, but have struggled with the operational complexity of operating a dynamic tree-building system based on PIM-SM <xref target="RFC7761" format="default"/>.
Operating an MNAT service can allow these networks to provide for the limited use of packet-replicating data channels while keeping the operational complexity of handling a dynamically changing set of channels confined to a single service that implements their business logic for admission control, rather than trying to apply access control lists for group membership propagation spread across the network.</t>
      </section>
      <section anchor="notes-for-contributors-and-reviewers" numbered="true" toc="default">
        <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" numbered="true" toc="default">
          <name>Venues for Contribution and Discussion</name>
          <t>This document is in the Github repository at:</t>
          <t>https://github.com/GrumpyOldTroll/draft-ietf-mnat</t>
          <t>Readers with feedback are invited 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>Join: https://www.ietf.org/mailman/listinfo/mboned</li>
            <li>Search: https://mailarchive.ietf.org/arch/browse/mboned/</li>
          </ul>
        </section>
        <section anchor="implementation-status" numbered="true" toc="default">
          <name>Implementation status</name>
          <t>There is an implementation prototype (MIT-licensed) at:</t>
          <ul spacing="normal">
            <li>https://github.com/GrumpyOldTroll/mnat</li>
          </ul>
          <t>Pull requests, comments, testing and deployment reports, etc. are very welcome.  Contributors before the final stages of RFC publication will be credited in this document unless requested otherwise.</t>
        </section>
      </section>
    </section>
    <section anchor="protocol" numbered="true" toc="default">
      <name>Protocol Operation</name>
      <section anchor="overview" numbered="true" toc="default">
        <name>Overview</name>
        <t>The use of MNAT within a network is defined in terms the folowing entities:</t>
        <ul spacing="normal">
          <li>MNAT service</li>
          <li>ingress nodes</li>
          <li>egress nodes</li>
        </ul>
        <t>Address translation is performed at the ingress (closest to the sender) and egress (closest to the receiver) nodes.
Ingress is where an external (S,G) is mapped to locally assigned address mapping before being forwarded for transport within the network.
Egress is where the traffic received on locally assigned addresses is translated back to the corresponding external (S,G) address before being forwarded for further transmission or processed by a receiving application.</t>
        <t>The MNAT service maintains the mapping between external (S,G)s and the local network addresses used to transport traffic of those (S,G)s within the network.
The address mapping is performed according to the needs of the network operating the MNAT service, to satisfy whatever constraints and restrictions may be necessary or desirable according to the operational considerations within that network.
Some example considerations that have motivated the design of MNAT are described in <xref target="motivation" format="default"/>.</t>
        <t>Ingress and egress nodes communicate with the MNAT service according to the schema defined by the YANG model in <xref target="model" format="default"/>.
Based on the messages exchanged with the MNAT service, each ingress or egress node maintains an up-to-date table of the mappings between the external (S,G)s and the locally assigned addresses for transport within the network.
The table of mappings is used to perform the corresponding network address translations.</t>
        <t>TBD: probably add a diagram here.
Probably something roughly similar to page 7 of the IETF 108 mboned presentation touching on this: https://www.ietf.org/proceedings/108/slides/slides-108-mboned-status-update-on-multicast-to-the-browser-00.pdf#page=7</t>
        <section anchor="virtual" numbered="true" toc="default">
          <name>Egress Node Operational Modes</name>
          <t>Egress nodes can run in at least two separate modes of operation.</t>
          <t>One of the modes is "bump in the wire", which refers to a node that receives traffic using the network-assigned locally chosen addresses, and translates the traffic back to the associated externally addressed (S,G) before forwarding the traffic along the rest of the network paths to the receiving applications that tried to join the external (S,G).</t>
          <t>The second mode is "bump in the host", which refers to a virtual node operating inside a client application.</t>
          <t>As a "bump in the host" egress node, the virtual egress node can discover and connect to the MNAT service from a receiving application.
The receiving application would then use the knowledge about the address mapping within the network to perform a join for the mapped addresses in the local network, rather than for the external (S,G).
The payloads of the traffic received with the locally mapped addresses are treated by the application as though they arrived with the external (S,G) addressing.</t>
          <t>A common scenario for a bump in the wire egress node deployment might be to have egress nodes operating in Customer Premises Equipment (CPE), such as a Cable Modem or Wi-Fi router inside the home of a customer to a multicast-capable Internet Service Provider (ISP).
In this scenario, the egress node discovery mechanism for the MNAT service might be a static configuration for the MNAT service's hostname, pushed by the ISP to the CPE devices.</t>
          <t>For a bump in the host egress node, the discovery of the MNAT service might either operate via DNS-SD <xref target="RFC6763" format="default"/> using a search domain for the ISP distributed to hosts via a DHCP Domain Search option <xref target="RFC3397" format="default"/>, or via configuration instructions the ISP gives to their customers to configure a search domain for their devices, or to configure the MNAT service's hostname for that ISP in their applications.</t>
        </section>
      </section>
      <section anchor="service-discovery" numbered="true" toc="default">
        <name>Service Discovery</name>
        <t>It is RECOMMENDED that egress devices in end-user operating systems or applications use DNS-SD <xref target="RFC6763" format="default"/> by default to discover an MNAT service within their containing networks.
However, a network may require the use of other mechanisms, including options such as manual configuration, so implementors are advised to offer manual configuration options in addition to automatic discovery with DNS-SD.</t>
        <t>As long as an MNAT client can find a valid hostname to use, it can connect to the given MNAT service and monitor changes to the address assignments within the network.</t>
        <section anchor="detecting-invalid-services" numbered="true" toc="default">
          <name>Detecting Invalid Services</name>
          <t>TBD: recommendations for noticing and discontinuing use of MNAT services that report mappings that don't correspond to the mappings apparently in use in the client's local network (particularly from egress nodes).</t>
        </section>
      </section>
      <section anchor="restconf-bootstrap" numbered="true" toc="default">
        <name>RESTCONF Bootstrap</name>
        <t>TBD: describe the RESTCONF validation and bootstrapping steps.
Use the same section name from I-D.draft-ietf-mboned-dorms as a template, assuming it passes a wider review.</t>
      </section>
      <section anchor="message-handling" numbered="true" toc="default">
        <name>Message Handling</name>
        <section anchor="notification-subscription" numbered="true" toc="default">
          <name>Notification Subscription</name>
          <t>When possible, changes to the group assignments should be communicated with subscriptions to data model updates using a server push mechanism, for example as described in <xref target="RFC8641" format="default"/>.</t>
          <t>Where clients or servers do not support server push updates, long polling can be used instead to provide timely updates.  See <xref target="RFC6202" format="default"/> for an explanation of the approach and a discussion of its pros and cons.</t>
          <t>If long polling and server push are both unavailable, MNAT clients may need to poll the server to monitor updates instead.
This approach is likely to encounter delays in the detection of changes to mapping decisions within the MNAT service, but can be used as a last resort for providing multicast connectivity where the use of MNAT is required by a network to enable multicast forwarding.</t>
        </section>
        <section anchor="watcher-keys" numbered="true" toc="default">
          <name>Watcher Keys</name>
          <t>MNAT clients open a persistent connection to the MNAT service and request allocation of a watcher key with the get-new-watcher-key Remote Procedure Call (RPC).
Watcher keys are identifiers chosen by the MNAT service and communicated to client nodes in the response to a successful get-new-egress-key RPC.
Watcher keys SHOULD be based on a random value and unique per new key requested.</t>
          <t>Egress nodes communicate an interest in global (S,G)s by posting updates to the egress-global-joined container under a watcher with id equal to their watcher-key.</t>
          <t>Ingress nodes communicate an interest in sets of global (S,G)s by providing a monitor object with a matching filter under a watcher with id equal to their watcher-key.</t>
          <t>Watcher-keys expire if the refresh-watcher-id rpc is not invoked within the refresh-period given in the response to the get-new-watcher-id rpc.</t>
          <t>TBD: better explanation about how the service times out egress nodes that don't refresh their egress key on schedule, and how egress nodes that reconnect can attempt to refresh the prior key they were using, but must request a new one on error.
Probably define a state per egress key (e.g. active vs. recently expired vs. non-existant) for the MNAT service to maintain.
Explain how the MNAT service should use population count from the egress joins to make prioritization decisions for the assignment of flows when there is limited flow space.
Probably reference CBACC in that explanation (I-D.draft-ietf-mboned-cbacc).</t>
        </section>
        <section anchor="egress-group-management" numbered="true" toc="default">
          <name>Egress Group Management</name>
          <t>The egress-global-joined container in the YANG model provides a mechanism for egress nodes to directly advertise their group membership to the MNAT service for externally addressed (S,G)s.</t>
          <t>Egress nodes advertise their group membership to external (S,G)s to the MNAT service and also advertise group membership to their next-hop router using IGMP or MLD for the locally mapped addressing withing the network.
Joins and leaves for the locally mapped network addresses occur in response to downstream joins for an external (S,G) that has or gains a mapping according to the MNAT service, when the join or leave propagates to the egress node.</t>
          <t>Payloads of the locally mapped traffic should be treated as though they were carried in packets addressed as the external (S,G), including any authentication checks that should be performed for the traffic.
Egress nodes that forward traffic (non-virtual egress nodes) will perform an address translation from the locally mapped addressing to the original (S,G) (according to the address mapping the MNAT service provides) before forwarding packets matching a locally mapped address.
It is the responsibility of the MNAT service and the network that operates it to ensure that multiple different traffic streams are not merged to the same locally mapped addresses in a way that collides.</t>
          <t>TBD: describe the effects of transient and persistent collisions?</t>
        </section>
        <section anchor="ingress-considerations" numbered="true" toc="default">
          <name>Ingress Considerations</name>
          <t>Like egress nodes, ingress nodes monitor the assignments provided by the MNAT service and perform network address translation and group membership propagation.
Ingress nodes perform the translation from an external (S,G) to the internally mapped addressing for the local network transport.</t>
          <t>In general, ingress nodes are translating traffic before the in-network multicast fanout to multiple egress nodes.
So an ingress node is generally assumed to be feeding one or more egress nodes.
Because one ingress node can feed many egress nodes, ingress nodes should be given priority ahead of egress nodes for notifications about changes to the address mapping from the MNAT service.</t>
        </section>
        <section anchor="mnat-service-considerations" numbered="true" toc="default">
          <name>MNAT Service Considerations</name>
          <t>The details of the address assignment strategies used by the internal logic of the MNAT service are out of scope for this document.
Different instances of MNAT services are expected to use a wide range of considerations specific to the networks in which the instances operate.</t>
          <t>However, outside of address assignment there are some operational points an MNAT service instance should take into consideration:</t>
          <ol spacing="normal" type="1"><li>
              <t>Assignment Transition Grace Period  </t>
              <t>
It's recommended to provide a grace period between reassigning a local address mapping to a new external (S,G) after unassigning its mapping to an old (S,G).
The grace period should account for the expected time for the connected ingress and egress nodes to process the unassigning of the external (S,G) and for egress nodes to perform leave operations for the old locally mapped address, and for the leave operations to propagate through the network.
For most networks, 250 seconds is a good default, as this allows a usually sufficient time for IGMP and MLD membership to time out and for any resulting prune operations to propagate through the network.
However, different networks may tune the grace period differently for a variety of operational considerations.</t>
            </li>
            <li>
              <t>Scaling  </t>
              <t>
The MNAT service should be appropriately provisioned to support the expected number of ingress and egress nodes within the network.
In an eyeball network, restrictions on the number of egress nodes per shared receiver IP address may be appropriate in order to prevent a rogue client application from forming an excessive number of egress connections.
Alternately, for bump-in-the-wire deployments of egress nodes in CPE devices it may be appropriate to authenticate the egress connections with a client certificate for each home to avoid denial of service attacks based on overloading the MNAT service with egress connections.  </t>
              <t>
Additionally, it's RECOMMENDED to provide per-egress limits on the number of external simultaneous (S,G)s permitted per egress at a level appropriate to the scaling limitations for the network, to prevent denial of service attacks based on overloading the group assignments from a single malicious egress node.</t>
            </li>
          </ol>
        </section>
        <section anchor="example-messaging-walkthrough" numbered="true" toc="default">
          <name>Example Messaging Walkthrough</name>
          <t>TBD: show what an expected example message sequence or 2 would look like.</t>
        </section>
      </section>
    </section>
    <section anchor="model" numbered="true" toc="default">
      <name>YANG Model</name>
      <section anchor="yang-tree" numbered="true" toc="default">
        <name>Yang Tree</name>
        <t>The tree diagram below uses the notation defined in <xref target="RFC8340" format="default"/>.</t>
        <figure>
          <name>MNAT Tree Diagram</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
module: ietf-mnat
  +--rw egress-global-joined
  |  +--rw watcher* [id]
  |     +--rw id           watcher-key
  |     +--rw joined-sg* [id]
  |        +--rw id                 string
  |        +--rw (channel-type)?
  |           +--:(ssm-channel)
  |           |  +--rw source       inet:ip-address
  |           |  +--rw group
  |           |          rt-types:ip-multicast-group-address
  |           +--:(asm-channel)
  |              +--rw asm-group
  |                      rt-types:ip-multicast-group-address
  +--rw ingress-watching
  |  +--rw watcher* [id]
  |     +--rw id         watcher-key
  |     +--rw monitor* [id]
  |        +--rw id                            string
  |        +--rw (monitor-type)?
  |           +--:(monitor-global-sources)
  |              +--rw global-source-prefix    inet:ip-prefix
  +--ro assigned-channels
     +--ro watcher* [id]
        +--ro id           watcher-key
        +--ro mapped-sg* [id]
           +--ro id                     assignment-id
           +--ro state                  assignment-state
           +--ro global-subscription
           |  +--ro (channel-type)?
           |     +--:(ssm-channel)
           |     |  +--ro source       inet:ip-address
           |     |  +--ro group
           |     |          rt-types:ip-multicast-group-address
           |     +--:(asm-channel)
           |        +--ro asm-group
           |                rt-types:ip-multicast-group-address
           +--ro local-mapping
              +--ro (mapping-type)?
                 +--:(local-multicast-mapping)
                    +--ro (channel-type)?
                       +--:(ssm-channel)
                       |  +--ro source       inet:ip-address
                       |  +--ro group
                       |          rt-types:ip-multicast-group-address
                       +--:(asm-channel)
                          +--ro asm-group
                                  rt-types:ip-multicast-group-address

  rpcs:
    +---x get-new-watcher-id
    |  +--ro output
    |     +--ro watcher-id        watcher-key
    |     +--ro refresh-period?   uint16
    +---x refresh-watcher-id
       +---w input
       |  +---w watcher-id    watcher-key
       +--ro output
          +--ro refresh-period?   uint16

]]></artwork>
        </figure>
      </section>
      <section anchor="yang-module" numbered="true" toc="default">
        <name>Yang Module</name>
        <sourcecode name="" type="" markers="true"><![CDATA[ file ietf-mnat@2022-03-07.yang
module ietf-mnat {
  yang-version 1.1;

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

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }

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

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

  contact
    "WG Web:   <https://datatracker.ietf.org/wg/mboned/>
     WG List:  <mailto:mboned@ietf.org>

     Author:   Jake Holland
               <mailto:jakeholland.net@gmail.com>";

  description
    "Multicast Network Address Translation Model.

     Copyright (c) 2012 - 2020 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; see
     the RFC itself for full legal notices.";

  revision "2020-10-22" {
    description
      "Initial version.";
  }

  grouping multicast-channel {
    choice channel-type {
      description
        "ASM or SSM multicast channels can be represented.";
      case ssm-channel {
        leaf source {
          type inet:ip-address;
          mandatory true;
          description
            "Source address of a multicast channel";
        }
        leaf group {
          type rt-types:ip-multicast-group-address;
          mandatory true;
          description "The global (S,G)'s group address";
        }
      }
      case asm-channel {
        leaf asm-group {
          type rt-types:ip-multicast-group-address;
          mandatory true;
          description "The global (S,G)'s group address";
        }
      }
    }
  }

  grouping monitor-definition {
    choice monitor-type {
      description
        "Definition of monitor characteristics.";
      case monitor-global-sources {
        leaf global-source-prefix {
          type inet:ip-prefix;
          mandatory true;
          description
            "Prefix to match for source IPs.";
        }
      }
    }
  }

  typedef watcher-key {
    type string;
    description
      "A key for egress identification.";
  }

  typedef assignment-id {
    type uint32;
    description
      "A type for assignment identifiers.";
  }

  identity assignment-state {
    description
      "Base identity to represent assignment states";
  }

  typedef assignment-state {
    type identityref {
      base assignment-state;
    }
    description "Status of an assigned (S,G).";
  }

  identity unassigned {
    base assignment-state;
    description
      "Represents an unassigned global (S,G) that cannot be
       received in the local network.";
  }

  identity assigned-local-multicast {
    base assignment-state;
    description
      "Represents an assigned global (S,G) that can be
       received in the local network by joining the associated
       local-mapping.";
  }

  container egress-global-joined {
    description
      "Declarations of subscriptions to global (S,G)s per
       egress.";

    list watcher {
      key "id";
      description
        "Mappings of traffic that correspond to the registered
         interest list for a given watch id (from the
         get-new-watcher-id rpc)";
      leaf id {
        type watcher-key;
        description
          "Identifier from get-new-watcher-id.  Tracks assignments
           of interest to the specific watcher.";
      }
      list joined-sg {
        key "id";
        leaf id {
          type string;
          description
            "id of the joined (S,G)";
        }
        description
          "(S,G)s in the global address space that an egress is
           joined to.  These should get corresponding entries in
           the assigned-channels lists.";
        uses multicast-channel;
      }
    }
  }
  container ingress-watching {
    description
      "Matches on (S,G)s that get ingested from this ingress.";

    list watcher {
      key "id";
      description
        "Mappings of traffic that correspond to the registered
         interest list for a given watch id (from the
         get-new-watcher-id rpc)";
      leaf id {
        type watcher-key;
        description
          "Identifier from get-new-watcher-id.  Tracks assignments
           of interest to the specific watcher.";
      }
      list monitor {
        key "id";
        leaf id {
          type string;
          description
            "id of the monitor definition";
        }
        uses monitor-definition;
      }
    }
  }
  container assigned-channels {
    config false;
    description
      "MNAT mappings of global (S,G)s into a local transport.";

    list watcher {
      key "id";
      description
        "Mappings of traffic that correspond to the registered
         interest list for a given watch id (from the
         get-new-watcher-id rpc)";
      leaf id {
        type watcher-key;
        description
          "Identifier from get-new-watcher-id.  Tracks assignments
           of interest to the specific watcher.";
      }
      list mapped-sg {
        key "id";
        description
          "The local network's assignment of global channels to
           local transport characteristics.";

        leaf id {
          type assignment-id;
          mandatory true;
          description
            "Identifier for this assignment.";
        }
        leaf state {
          type assignment-state;
          mandatory true;
          description
            "Status of the global (S,G)s that are assigned in the
             local network.";
        }
        container global-subscription {
          description
            "The global channel that's mapped.";
          uses multicast-channel;
        }
        container local-mapping {
          choice mapping-type {
            description
              "The description of how the global channel is
               transported within the local network";

            case local-multicast-mapping {
              description
                "Defines the use of a local multicast (S,G) or
                 (*,G).";
              uses multicast-channel;
            }
          }
        }
      }
    }
  }

  rpc get-new-watcher-id {
    description
      "Obtain a secret key unique to an individual mnat-egress
       instance, assigned by the server and used for subscription
       management.";
    output {
      leaf watcher-id {
        type watcher-key;
        mandatory true;
        description
          "Identifier for assignment monitoring.";
      }
      leaf refresh-period {
        type uint16;
        default 10;
        description
          "Number of seconds to wait between refresh messages.";
      }
    }
  }
  rpc refresh-watcher-id {
    description
      "A secret key unique to an individual mnat-egress instance,
       assigned by the server and used for subscription
       management.";
    input {
      leaf watcher-id {
        type watcher-key;
        mandatory true;
        description
          "Egress identifier for assignment monitoring.";
      }
    }
    output {
      leaf refresh-period {
        type uint16;
        default 10;
        description
          "Number of seconds to wait between refresh messages.";
      }
    }
  }
}

]]></sourcecode>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="the-yang-module-names-registry" numbered="true" toc="default">
        <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" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
      name:      ietf-mnat
      namespace: urn:ietf:params:xml:ns:yang:ietf-mnat
      prefix:    mnat
      reference: I-D.draft-jholland-mboned-mnat
]]></artwork>
      </section>
      <section anchor="the-xml-registry" numbered="true" toc="default">
        <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" format="default"/>, referencing this document.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
       URI: urn:ietf:params:xml:ns:yang:ietf-mnat
       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" numbered="true" toc="default">
        <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" format="default"/>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
     Service Name:            mnat
     Transport Protocol(s):   TCP, UDP
     Assignee:                IESG <iesg@ietf.org>
     Contact:                 IETF Chair <chair@ietf.org>
     Description:             The MNAT service (RESTCONF that
                              includes ietf-mnat YANG model)
     Reference:               I-D.draft-jholland-mboned-mnat
     Port Number:             N/A
     Service Code:            N/A
     Known Unauthorized Uses: N/A
     Assignment Notes:        N/A
]]></artwork>
      </section>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>TBD.  (What, me worry?)</t>
      <t>Notable points to cover:</t>
      <ul spacing="normal">
        <li>communcation with the MNAT service should be secured.  RESTCONF does this, alternate methods should also do it.</li>
        <li>separate authentication of the contents of the multicast traffic is recommended (e.g. with AMBI or TESLA).  Probably it's not recommended for a network with MNAT to pass external traffic that does not provide authentication, and if the internal traffic is not authenticated, to segregate the internal from the external traffic in the MNAT assignment pools.</li>
        <li>mistaken mappings can result in receipt of payloads for the wrong channel.  This can happen transiently even during normal operation.  Recommend some steps to mitigate and avoid (e.g. the grace period and the authentication-TBD: explain how they help)</li>
        <li>Clients can (deliberately or accidentally) overload the service.  Limits should be set to avoid disrupting traffic to the rest of the network.</li>
      </ul>
    </section>
    <section anchor="acknowledgements" numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>Thanks to Lenny Giuliano and Sandy Zhang for their very helpful comments on this document.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC1112" target="https://www.rfc-editor.org/info/rfc1112">
          <front>
            <title>Host extensions for IP multicasting</title>
            <author initials="S.E." surname="Deering" fullname="S.E. Deering">
              <organization/>
            </author>
            <date year="1989" month="August"/>
            <abstract>
              <t>This memo specifies the extensions required of a host implementation of the Internet Protocol (IP) to support multicasting.  Recommended procedure for IP multicasting in the Internet.  This RFC obsoletes RFCs 998 and 1054.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="1112"/>
          <seriesInfo name="DOI" value="10.17487/RFC1112"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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="RFC3810" target="https://www.rfc-editor.org/info/rfc3810">
          <front>
            <title>Multicast Listener Discovery Version 2 (MLDv2) for IPv6</title>
            <author initials="R." surname="Vida" fullname="R. Vida" role="editor">
              <organization/>
            </author>
            <author initials="L." surname="Costa" fullname="L. Costa" role="editor">
              <organization/>
            </author>
            <date year="2004" month="June"/>
            <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="RFC3376" target="https://www.rfc-editor.org/info/rfc3376">
          <front>
            <title>Internet Group Management Protocol, Version 3</title>
            <author initials="B." surname="Cain" fullname="B. Cain">
              <organization/>
            </author>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization/>
            </author>
            <author initials="I." surname="Kouvelas" fullname="I. Kouvelas">
              <organization/>
            </author>
            <author initials="B." surname="Fenner" fullname="B. Fenner">
              <organization/>
            </author>
            <author initials="A." surname="Thyagarajan" fullname="A. Thyagarajan">
              <organization/>
            </author>
            <date year="2002" month="October"/>
          </front>
          <seriesInfo name="RFC" value="3376"/>
          <seriesInfo name="DOI" value="10.17487/RFC3376"/>
        </reference>
        <reference anchor="RFC4604" target="https://www.rfc-editor.org/info/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 initials="H." surname="Holbrook" fullname="H. Holbrook">
              <organization/>
            </author>
            <author initials="B." surname="Cain" fullname="B. Cain">
              <organization/>
            </author>
            <author initials="B." surname="Haberman" fullname="B. Haberman">
              <organization/>
            </author>
            <date year="2006" month="August"/>
            <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" target="https://www.rfc-editor.org/info/rfc4607">
          <front>
            <title>Source-Specific Multicast for IP</title>
            <author initials="H." surname="Holbrook" fullname="H. Holbrook">
              <organization/>
            </author>
            <author initials="B." surname="Cain" fullname="B. Cain">
              <organization/>
            </author>
            <date year="2006" month="August"/>
            <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="RFC6763" target="https://www.rfc-editor.org/info/rfc6763">
          <front>
            <title>DNS-Based Service Discovery</title>
            <author initials="S." surname="Cheshire" fullname="S. Cheshire">
              <organization/>
            </author>
            <author initials="M." surname="Krochmal" fullname="M. Krochmal">
              <organization/>
            </author>
            <date year="2013" month="February"/>
            <abstract>
              <t>This document specifies how DNS resource records are named and structured to facilitate service discovery.  Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6763"/>
          <seriesInfo name="DOI" value="10.17487/RFC6763"/>
        </reference>
        <reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor">
              <organization/>
            </author>
            <date year="2016" month="August"/>
            <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" target="https://www.rfc-editor.org/info/rfc8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author initials="A." surname="Bierman" fullname="A. Bierman">
              <organization/>
            </author>
            <author initials="M." surname="Bjorklund" fullname="M. Bjorklund">
              <organization/>
            </author>
            <author initials="K." surname="Watsen" fullname="K. Watsen">
              <organization/>
            </author>
            <date year="2017" month="January"/>
            <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" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <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="RFC8340" target="https://www.rfc-editor.org/info/rfc8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author initials="M." surname="Bjorklund" fullname="M. Bjorklund">
              <organization/>
            </author>
            <author initials="L." surname="Berger" fullname="L. Berger" role="editor">
              <organization/>
            </author>
            <date year="2018" month="March"/>
            <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="RFC8641" target="https://www.rfc-editor.org/info/rfc8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author initials="A." surname="Clemm" fullname="A. Clemm">
              <organization/>
            </author>
            <author initials="E." surname="Voit" fullname="E. Voit">
              <organization/>
            </author>
            <date year="2019" month="September"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore.  Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC2663" target="https://www.rfc-editor.org/info/rfc2663">
          <front>
            <title>IP Network Address Translator (NAT) Terminology and Considerations</title>
            <author initials="P." surname="Srisuresh" fullname="P. Srisuresh">
              <organization/>
            </author>
            <author initials="M." surname="Holdrege" fullname="M. Holdrege">
              <organization/>
            </author>
            <date year="1999" month="August"/>
            <abstract>
              <t>This document attempts to describe the operation of NAT devices and the associated considerations in general, and to define the terminology used to identify various flavors of NAT.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2663"/>
          <seriesInfo name="DOI" value="10.17487/RFC2663"/>
        </reference>
        <reference anchor="RFC3397" target="https://www.rfc-editor.org/info/rfc3397">
          <front>
            <title>Dynamic Host Configuration Protocol (DHCP) Domain Search Option</title>
            <author initials="B." surname="Aboba" fullname="B. Aboba">
              <organization/>
            </author>
            <author initials="S." surname="Cheshire" fullname="S. Cheshire">
              <organization/>
            </author>
            <date year="2002" month="November"/>
          </front>
          <seriesInfo name="RFC" value="3397"/>
          <seriesInfo name="DOI" value="10.17487/RFC3397"/>
        </reference>
        <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688">
          <front>
            <title>The IETF XML Registry</title>
            <author initials="M." surname="Mealling" fullname="M. Mealling">
              <organization/>
            </author>
            <date year="2004" month="January"/>
            <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="RFC6020" target="https://www.rfc-editor.org/info/rfc6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor">
              <organization/>
            </author>
            <date year="2010" month="October"/>
            <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="RFC6202" target="https://www.rfc-editor.org/info/rfc6202">
          <front>
            <title>Known Issues and Best Practices for the Use of Long Polling and Streaming in Bidirectional HTTP</title>
            <author initials="S." surname="Loreto" fullname="S. Loreto">
              <organization/>
            </author>
            <author initials="P." surname="Saint-Andre" fullname="P. Saint-Andre">
              <organization/>
            </author>
            <author initials="S." surname="Salsano" fullname="S. Salsano">
              <organization/>
            </author>
            <author initials="G." surname="Wilkins" fullname="G. Wilkins">
              <organization/>
            </author>
            <date year="2011" month="April"/>
            <abstract>
              <t>On today's Internet, the Hypertext Transfer Protocol (HTTP) is often used (some would say abused) to enable asynchronous, "server- initiated" communication from a server to a client as well as communication from a client to a server.  This document describes known issues and best practices related to such "bidirectional HTTP" applications, focusing on the two most common mechanisms: HTTP long polling and HTTP streaming.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6202"/>
          <seriesInfo name="DOI" value="10.17487/RFC6202"/>
        </reference>
        <reference anchor="RFC6335" target="https://www.rfc-editor.org/info/rfc6335">
          <front>
            <title>Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry</title>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization/>
            </author>
            <author initials="L." surname="Eggert" fullname="L. Eggert">
              <organization/>
            </author>
            <author initials="J." surname="Touch" fullname="J. Touch">
              <organization/>
            </author>
            <author initials="M." surname="Westerlund" fullname="M. Westerlund">
              <organization/>
            </author>
            <author initials="S." surname="Cheshire" fullname="S. Cheshire">
              <organization/>
            </author>
            <date year="2011" month="August"/>
            <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="RFC7761" target="https://www.rfc-editor.org/info/rfc7761">
          <front>
            <title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)</title>
            <author initials="B." surname="Fenner" fullname="B. Fenner">
              <organization/>
            </author>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization/>
            </author>
            <author initials="H." surname="Holbrook" fullname="H. Holbrook">
              <organization/>
            </author>
            <author initials="I." surname="Kouvelas" fullname="I. Kouvelas">
              <organization/>
            </author>
            <author initials="R." surname="Parekh" fullname="R. Parekh">
              <organization/>
            </author>
            <author initials="Z." surname="Zhang" fullname="Z. Zhang">
              <organization/>
            </author>
            <author initials="L." surname="Zheng" fullname="L. Zheng">
              <organization/>
            </author>
            <date year="2016" month="March"/>
            <abstract>
              <t>This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM).  PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base.  It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and it optionally creates shortest-path trees per source.</t>
              <t>This document obsoletes RFC 4601 by replacing it, addresses the errata filed against it, removes the optional (*,*,RP), PIM Multicast Border Router features and authentication using IPsec that lack sufficient deployment experience (see Appendix A), and moves the PIM specification to Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="83"/>
          <seriesInfo name="RFC" value="7761"/>
          <seriesInfo name="DOI" value="10.17487/RFC7761"/>
        </reference>
        <reference anchor="RFC8815" target="https://www.rfc-editor.org/info/rfc8815">
          <front>
            <title>Deprecating Any-Source Multicast (ASM) for Interdomain Multicast</title>
            <author initials="M." surname="Abrahamsson" fullname="M. Abrahamsson">
              <organization/>
            </author>
            <author initials="T." surname="Chown" fullname="T. Chown">
              <organization/>
            </author>
            <author initials="L." surname="Giuliano" fullname="L. Giuliano">
              <organization/>
            </author>
            <author initials="T." surname="Eckert" fullname="T. Eckert">
              <organization/>
            </author>
            <date year="2020" month="August"/>
            <abstract>
              <t>This document recommends deprecation of the use of Any-Source Multicast (ASM) for interdomain multicast. It recommends the use of Source-Specific Multicast (SSM) for interdomain multicast applications and recommends that hosts and routers in these deployments fully support SSM.  The recommendations in this document do not preclude the continued use of ASM within a single organization or domain and are especially easy to adopt in existing deployments of intradomain ASM using PIM Sparse Mode (PIM-SM).</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="229"/>
          <seriesInfo name="RFC" value="8815"/>
          <seriesInfo name="DOI" value="10.17487/RFC8815"/>
        </reference>
        <reference anchor="IEEE-802.1Q" target="https://standards.ieee.org/findstds/standard/802.1Q-2011.html">
          <front>
            <title>Local and Metropolitan Area Networks -- Media Access Control (MAC) Bridges and Virtual Bridged Local Area Networks</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="IEEE" value="Std 802.1Q"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
3OEi8Qoge+m/vZQ4NA7+P62mDLJHgAAA

-->

</rfc>
