<?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.6.35 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-pauly-intarea-proxy-config-pvd-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="Proxy Configuration PvDs">Communicating Proxy Configurations in Provisioning Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-pauly-intarea-proxy-config-pvd-00"/>
    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple, Inc.</organization>
      <address>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <date year="2023" month="June" day="27"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 21?>

<t>This document defines a mechanism for accessing provisioning domain information
associated with a proxy, such a list of DNS zones that are accessible via an HTTP
CONNECT proxy. It also defines a way to enumerate proxies that are associated with
a known provisioning domain.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/tfpauly/privacy-proxy"/>.</t>
    </note>
  </front>
  <middle>
    <?line 28?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP proxies that use the CONNECT method <xref section="9.3.6" sectionFormat="of" target="HTTP"/>
(often referred to as "forward" proxies) allow clients to open connections to
hosts via a proxy. These typically allow for TCP stream proxying, but can also support
UDP proxying <xref target="CONNECTUDP"/> and IP packet proxying
<xref target="CONNECTIP"/>. Such proxies are not just defined as
hostnames and ports, but can use URI templates <xref target="URITEMPLATE"/>.</t>
      <t>In order to make use of multiple related proxies, clients need a way to understand
which proxies are associated with one another.</t>
      <t>Client can also benefit from learning about additional information associated with
the proxy to optimize their proxy usage, such knowing that a proxy is configured
to only allow access to a limited set of next hops.</t>
      <t>These improvements to client behavior can be achieved through the use of
Provisioning Domains. Provisioning Domains (PvDs) are defined in <xref target="PVD"/>
as consistent sets of network configuration information, which can include proxy
configuration details <xref section="2" sectionFormat="of" target="PVD"/>. <xref target="PVDDATA"/> defines a JSON
<xref target="JSON"/> format for describing Provisioning Domain Additional Information,
which is an extensible dictionary of properties of the Provisioning Domain.</t>
      <t>This document defines two mechanisms to use PvDs to help clients understand how
to use proxies:</t>
      <ol spacing="normal" type="1"><li>A way to fetch PvD Additional Information associated with a proxy URI, which
allows defining a limited set of DNS zones that are accessible through the
proxy <xref target="proxy-pvd"/>.</li>
        <li>A way to associate one or more proxy URIs with a known PvD to allow clients to
learn about other proxies when they already know about a proxy PvD or
network-provided PvD <xref target="proxy-enumeration"/>.</li>
      </ol>
      <section anchor="background">
        <name>Background</name>
        <t>Other non-standard mechanisms for proxy configuration and discovery have been
used historically, some of which are described in <xref target="RFC3040"/>.</t>
        <t>Proxy Auto Configuration (PAC) files <xref section="6.2" sectionFormat="of" target="RFC3040"/> are Javascript
scripts that take URLs as input and provide an output of a proxy configuration
to use.</t>
        <t>Web Proxy Auto-Discovery Protocol (WPAD) <xref section="6.4" sectionFormat="of" target="RFC3040"/> allows
networks to advertise proxies to use by advertising a PAC file. This solution
squats on DHCP option 252.</t>
        <t>These common (but non-standard) mechanisms only support defining proxies by
hostname and port, and do not support configuring a full URI template
<xref target="URITEMPLATE"/>.</t>
        <t>The mechanisms defined in this document are intended to offer a standard
alternative that works for URI-based proxies and avoids dependencies
on executing Javascript scripts, which can open up security vulnerabilities.</t>
      </section>
      <section anchor="requirements">
        <name>Requirements</name>
        <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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
        </t>
      </section>
    </section>
    <section anchor="proxy-pvd">
      <name>Accessing PvD Additional Information for proxies</name>
      <t>This document defines a way to fetch PvD Additional Information associated with
a particular proxy resource. This PvD describes the properties of the network
accessible through the proxy.</t>
      <section anchor="fetching-proxy-pvds">
        <name>Fetching proxy PvDs</name>
        <t>Some HTTP forward proxies, like those used for UDP and IP proxying, are identified
by URI templates that contains paths, such as
"https://proxy.example.org/masque{?target_host,target_port}". For such
cases, a client can fetch the PvD Additional Information by issuing a GET request
<xref section="9.3.1" sectionFormat="of" target="HTTP"/> to the proxy URI, with template variables removed,
and setting the media type "application/pvd+json" <xref target="PVDDATA"/> in an Accept header.</t>
        <t>For example, a client would issue the following request for the PvD associated
with "https://proxy.example.org/masque{?target_host,target_port}":</t>
        <artwork><![CDATA[
:method = GET
:scheme = https
:authority = proxy.example.org
:path = /masque
accept = application/pvd+json
]]></artwork>
        <t>CONNECT forward proxies that proxy TCP streams do not contain a path. For such cases,
a client can fetch the PvD Additional Information by issuing a GET request to the path
"/". For example:</t>
        <artwork><![CDATA[
:method = GET
:scheme = https
:authority = proxy.example.org
:path = /
accept = application/pvd+json
]]></artwork>
      </section>
      <section anchor="proxy-pvd-contents">
        <name>Proxy PvD contents</name>
        <t>PvD Additional Information is required to contain the "identifier", "expires", and
"prefixes" keys.</t>
        <t>For proxy PvDs as defined in this document, the "identifier" MUST match the hostname
of the HTTP proxy. The "prefixes" array SHOULD be empty by default.</t>
        <section anchor="split-dns-accessibility">
          <name>Split DNS accessibility</name>
          <t>Split DNS configurations are cases where only a subset of domains is routed through
a VPN tunnel or a proxy. For example, IKEv2 defines split DNS configuration in
<xref target="IKEV2SPLIT"/>.</t>
          <t>PvD Additional Information can be used to indicate that a proxy PvD has a split DNS
configuration.</t>
          <t><xref section="4.3" sectionFormat="of" target="PVDDATA"/> defines the optional <tt>dnsZones</tt> key, which contains
searchable and accessible DNS zones as an array of strings.</t>
          <t>When present in a PvD Additional Information dictionary that is retrieved using a GET
request to the proxy URI as described in <xref target="proxy-pvd"/>, domains in the <tt>dnsZones</tt>
array indicate specific zones that are accessible using the proxy. If a hostname is
not included in the enumerated zones, then a client SHOULD assume that the hostname
will not be accessible through the proxy.</t>
          <t>Entries listed in <tt>dnsZones</tt> MUST NOT expand the set of domains that a client is
willing to send to a particular proxy. The list can only narrow the list of domains
that the client is willing to send through the proxy. For example, if the client
has a local policy to only send requests for "example.com" to a proxy
"proxy.example.com", and the <tt>dnsZones</tt> array contains "internal.example.com" and
"other.company.com", the client would end up only proxying "internal.example.com"
through the proxy.</t>
        </section>
      </section>
      <section anchor="example">
        <name>Example</name>
        <t>Given a proxy URI template "https://proxy.example.org/masque{?target_host,target_port}",
which in this case is for UDP proxying, the client could request PvD additional information
with the following request:</t>
        <artwork><![CDATA[
:method = GET
:scheme = https
:authority = proxy.example.org
:path = /masque
accept = application/pvd+json
]]></artwork>
        <t>If the proxy has a PvD definition for this proxy, it could return the following
response to indicate a PvD that has one accessible zone, "internal.example.org".</t>
        <artwork><![CDATA[
:status = 200
content-type = application/pvd+json
content-length = 135

{
  "identifier": "proxy.example.org.",
  "expires": "2023-06-23T06:00:00Z",
  "prefixes": [],
  "dnsZones": ["internal.example.org"]
}
]]></artwork>
        <t>The client could then choose to use this proxy only for accessing names that fall
within the "internal.example.org" zone.</t>
      </section>
    </section>
    <section anchor="proxy-enumeration">
      <name>Enumerating proxies within a PvD</name>
      <t>PvD Additional Information can also be used to list proxies that
are associated with a particular PvD. This association represents
availability of a proxy, but does not indicate any policy of the PvD that
requires clients to use a proxy or not.</t>
      <t>This document defines a new PvD Additional Information key, <tt>proxies</tt>, that
is an array of strings that is a list of proxy URIs (or URI templates
<xref target="URITEMPLATE"/>). The new key is registered in <xref target="iana"/>.</t>
      <t>The kind of proxy is implied by the URI scheme and any template variables.
For example, since UDP proxying <xref target="CONNECTUDP"/> has the URI template variables
<tt>target_host</tt> and <tt>target_port</tt>, the URI
"https://proxy.example.org:4443/masque{?target_host,target_port}" implies
that the proxy supports UDP proxying.</t>
      <section anchor="associating-proxies-with-known-proxies">
        <name>Associating proxies with known proxies</name>
        <t>When a PvD that contains the <tt>proxies</tt> key is fetched from a known proxy URI,
using the method described in <xref target="proxy-pvd"/>, the proxies list describes
equivalent proxies (potentially supporting other protocols) that can be used
in addition to the known proxy.</t>
        <t>Such cases are useful for informing clients of related proxies as a discovery
method, with the assumption that the client already is aware of one proxy.</t>
      </section>
      <section anchor="associating-proxies-with-a-pvd-identifier">
        <name>Associating proxies with a PvD identifier</name>
        <t>When a PvD that contains the <tt>proxies</tt> key is fetched from the well-known
PvD URI (".well-known/pvd"), the list allows enumeration of proxies
that apply to the entire PvD identifier. There are two use cases this can
support: configuring proxies from an FQDN and configuring proxies from a
network.</t>
        <section anchor="proxy-configuration-from-a-fqdn">
          <name>Proxy configuration from a FQDN</name>
          <t>Many historical methods of configuring a proxy only allow configuring
a single FQDN hostname for the proxy. A client can attempt to fetch the
PvD information from the well-known URI to learn the list of complete
URIs that support non-default protocols, such as <xref target="CONNECTUDP"/> and
<xref target="CONNECTIP"/>.</t>
          <t>For example, if a user has configured a proxy with the name
"proxy.example.com", the client can fetch
"https://proxy.example.com/.well-known/pvd" to detect a list of
associated proxies.</t>
        </section>
        <section anchor="network-specified-proxies">
          <name>Network-specified proxies</name>
          <t><xref target="PVDDATA"/> defines how PvD Additional Information is discovered based
on network advertisements using Router Advertisements <xref target="RFC4861"/>. A network
defining its configuration via PvD information can include the <tt>proxies</tt>
key to inform clients of a list of proxies available on the network.</t>
          <t>Policy for whether or not clients use the proxies is implementation-specific
and might depend on other keys defined in the PvD Additional Information.</t>
        </section>
      </section>
      <section anchor="example-1">
        <name>Example</name>
        <t>Given a known FQDN "company.example.org", which was discovered
from a PvD Router Advertisement option, a client could request PvD
additional information with the following request:</t>
        <artwork><![CDATA[
:method = GET
:scheme = https
:authority = company.example.org
:path = /.well-known/pvd
accept = application/pvd+json
]]></artwork>
        <t>If the proxy has a PvD definition for this FQDN, it could return the following
response to indicate a PvD that has two related proxy URIs.</t>
        <artwork><![CDATA[
:status = 200
content-type = application/pvd+json
content-length = 222

{
  "identifier": "company.example.org.",
  "expires": "2023-06-23T06:00:00Z",
  "prefixes": ["2001:db8:cafe::/48"],
  "proxies": ["https://proxy.example.org","https://proxy.example.org/masque{?target_host,target_port}"]
}
]]></artwork>
        <t>The client could then choose to use the available proxies, and could
look up the PvD Additional Information files on those URIs, depending on client
policy for using proxies.</t>
      </section>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <t>Configuration advertised via PvD Additional Information, such DNS zones or associated
proxies, can only be safely used when fetched over a secure TLS-protected connection,
and the client has validated that that the hostname of the proxy, the identifier of
the PvD, and the validated hostname identity on the certificate all match.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document registers a new key in the "Additional Information PvD Keys" registry.</t>
      <t>JSON Key: proxies</t>
      <t>Description: Array of proxy URIs associated with this PvD</t>
      <t>Type: Array of strings</t>
      <t>Example: ["https://proxy.example.com", "https://proxy.example.com/masque{?target_host,tcp_port}"]</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="CONNECTUDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP.  More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="CONNECTIP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky" initials="A." surname="Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="April" year="2023"/>
            <abstract>
              <t>   This document describes how to proxy IP packets in HTTP.  This
   protocol is similar to UDP proxying in HTTP, but allows transmitting
   arbitrary IP packets.  More specifically, this document defines a
   protocol that allows an HTTP client to create an IP tunnel through an
   HTTP server that acts as an IP proxy.  This document updates RFC
   9298.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-13"/>
        </reference>
        <reference anchor="URITEMPLATE">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion.  This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="PVDDATA">
          <front>
            <title>Discovering Provisioning Domain Names and Data</title>
            <author fullname="P. Pfister" initials="P." surname="Pfister"/>
            <author fullname="É. Vyncke" surname="É. Vyncke"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="W. Shao" initials="W." surname="Shao"/>
            <date month="July" year="2020"/>
            <abstract>
              <t>Provisioning Domains (PvDs) are defined as consistent sets of network configuration information. PvDs allows hosts to manage connections to multiple networks and interfaces simultaneously, such as when a home router provides connectivity through both a broadband and cellular network provider.</t>
              <t>This document defines a mechanism for explicitly identifying PvDs through a Router Advertisement (RA) option. This RA option announces a PvD identifier, which hosts can compare to differentiate between PvDs. The option can directly carry some information about a PvD and can optionally point to PvD Additional Information that can be retrieved using HTTP over TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8801"/>
          <seriesInfo name="DOI" value="10.17487/RFC8801"/>
        </reference>
        <reference anchor="JSON">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="PVD">
          <front>
            <title>Multiple Provisioning Domain Architecture</title>
            <author fullname="D. Anipko" initials="D." role="editor" surname="Anipko"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document is a product of the work of the Multiple Interfaces Architecture Design team.  It outlines a solution framework for some of the issues experienced by nodes that can be attached to multiple networks simultaneously.  The framework defines the concept of a Provisioning Domain (PvD), which is a consistent set of network configuration information.  PvD-aware nodes learn PvD-specific information from the networks they are attached to and/or other sources.  PvDs are used to enable separation and configuration consistency in the presence of multiple concurrent connections.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7556"/>
          <seriesInfo name="DOI" value="10.17487/RFC7556"/>
        </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="IKEV2SPLIT">
          <front>
            <title>Split DNS Configuration for the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document defines two Configuration Payload Attribute Types (INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA) for the Internet Key Exchange Protocol version 2 (IKEv2).  These payloads add support for private (internal-only) DNS domains.  These domains are intended to be resolved using non-public DNS servers that are only reachable through the IPsec connection.  DNS resolution for other domains remains unchanged.  These Configuration Payloads only apply to split- tunnel configurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8598"/>
          <seriesInfo name="DOI" value="10.17487/RFC8598"/>
        </reference>
        <reference anchor="RFC4861">
          <front>
            <title>Neighbor Discovery for IP version 6 (IPv6)</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <author fullname="H. Soliman" initials="H." surname="Soliman"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document specifies the Neighbor Discovery protocol for IP Version 6.  IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4861"/>
          <seriesInfo name="DOI" value="10.17487/RFC4861"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
hK8Au1POEY47uMXWnIuKOuH+A9kJy1CGLQAA

-->

</rfc>
