<?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  (Ruby 3.1.2) -->
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc subcompact="no"?>
<?rfc iprnotified="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-core-resource-directory-extensions-09" category="exp" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title>CoRE Resource Directory Extensions</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-resource-directory-extensions-09"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="23"/>
    <area>Internet</area>
    <workgroup>CoRE</workgroup>
    <keyword>CoRE, Web Linking, Resource Discovery, Resource Directory, Proxy</keyword>
    <abstract>
      <t>A collection of extensions to the Resource Directory <xref target="rfc9176"/>
that can stand on their own, and have no clear future in specification yet.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://gitlab.com/chrysn/resource-directory-extensions"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document pools some extensions to the Resource Directory
<xref target="rfc9176"/> that might be useful but have no place in
the original document.</t>
      <t>They might become individual documents for IETF submission, simple
registrations in the RD Parameter Registry at IANA, or grow into a shape where
they can be submitted as a collection of tools.</t>
      <t>At its current state, this draft is a collection of ideas.</t>
    </section>
    <section anchor="reverseproxy">
      <name>Reverse Proxy requests</name>
      <t>When a registrant registers at a Resource Directory, it might not have a
suitable address it can use as a base address.
Typical reasons include being inside a NAT without control over port forwarding,
or only being able to open outgoing connections
(as program running inside a web browser utilizing CoAP over WebSocket <xref target="RFC8323"/> might be).</t>
      <t><xref target="rfc9176"/> suggests (in the Cellular M2M use case) that proxy access to such endpoints can be provided,
it gives no concrete mechanism to do that; this is such a mechanism.</t>
      <t>This mechanism is intended to be a last-resort option to provide connectivity.
Where possible, direct connections are preferred.
Before registering for proxying,
the registrant should attempt to obtain a publicly available port,
for example using PCP (<xref target="RFC6887"/>).</t>
      <t>The same mechanism can also be employed by registrants that want to conceal their network address from its clients.</t>
      <t>A deployed application where this is implicitly done is LwM2M [citation missing].
Notable differences are that the protocol used between the client and the proxying RD is not CoAP but application specific,
and that the RD (depending on some configuration) eagerly populates its proxy caches
by sending requests and starting observations at registration time.</t>
      <section anchor="discovery">
        <name>Discovery</name>
        <t>An RD that provides proxying functionality advertises it by announcing the additional resource type "TBD1" on its directory resource.</t>
      </section>
      <section anchor="registration">
        <name>Registration</name>
        <t>A client passes the "proxy=yes" or "proxy=ondemand" query parameter
in addition to (but typically instead of) a "base" query parameter.</t>
        <t>A server that receives a "proxy=yes" query parameter in a registration
(or receives "proxy=ondemand" and decides it needs to proxy)
MUST come up with a "Proxy URL" on which it accepts requests,
and which it uses as a Registration Base URI for lookups on the present registration.</t>
        <t>The Proxy URL SHOULD have no path component,
as acting as a reverse proxy in such a scenario
means that any relative references in all representations that are proxied must be recognized
and possibly rewritten.</t>
        <t>The RD MAY accept connections also on alternative Registration Base URIs
using different protocols;
it can advertise them using the mechanisms of <xref target="I-D.ietf-core-transport-indication"/>.</t>
        <t>The registrant is not informed of the chosen public name by the RD.
(<xref target="propagation"/> discusses means how to change that).</t>
        <t>This mechanism is applicable to all transports that can be used to register.
If proxying is active, the restrictions on when the base parameter needs to be present
(<xref target="rfc9176"/> Registration template)
are relaxed:
The base parameter may also be absent if the connection originates from an ephemeral port,
as long as the underlying protocol supports role reversal,
and link-local IPv6 addresses may be used without any concerns of expressibility.</t>
        <t>If the client uses the role reversal rule relaxation,
both it and the server keep that connection open for as long as it wants to be reachable.
When the connection terminates, the RD SHOULD treat the registration as having timed out
(even if its lifetime has not been exceeded) and MAY eventually remove the registration.
It is yet to be decided whether the RD's announced ability to do proxying
should imply that infinite lifetimes are necessarily supported for such registrations;
at least, it is RECOMMENDED.</t>
        <section anchor="registration-updates">
          <name>Registration updates</name>
          <t>The "proxy" query parameter can not be changed or repeated in a registration update;
RD servers MUST answer 4.00 Bad Request to any registration update that has a "proxy" query parameter.</t>
          <t>As always, registration updates can explicitly or implicitly update the Registration Base URI.
In proxied registrations, those changes are not propagated to lookup,
but do change the forwarding address of the proxy.</t>
          <t>For example, if a registration is established over TCP,
an update can come along in a new TCP connection.
Starting then, proxied requests are forwarded along that new connection.</t>
        </section>
      </section>
      <section anchor="proxy-behavior">
        <name>Proxy behavior</name>
        <t>The RD operates as a reverse-proxy as described in <xref target="RFC7252"/> Section 5.7.3 at the announced Proxy URL(s),
where it decides based on the requested host and port
to which registrant endpoint to forward the request.</t>
        <t>The address the incoming request are forwarded to is the base address of the registration.
If an explicit "base" paremter is given,
the RD will forward requests to that location.
Otherwise, it forwards to the registration's source address
(which is the implied base parameter).</t>
        <t>When an implicit base is used,
the requests forwarded by the RD to the EP contain no Uri-Host option.
EPs that want to run multiple parallel registrations
(especially gateway-like devices)
can either open up separate connections,
or use an additional (to-be-specified) mechanism to set the "virtual host name" for that registration in a separate argument.</t>
        <section anchor="limitations-from-using-a-reverse-proxy">
          <name>Limitations from using a reverse proxy</name>
          <t>The registrant requesting the reverse proxying needs to ensure that all services it provides are compatible with being operated behind a reverse proxy with an unknown name.
In particular, this rules out all applications that refer to local resources by a full URI
(as opposed to relative references without scheme and host).
Applications behind a reverse proxy can not use role reversal.</t>
          <t>Some of these limitations can be mitigated if the application knows its advertised address.
The mechanisms of <xref target="propagation"/> might be used to change that.</t>
        </section>
      </section>
      <section anchor="on-demand-proxying">
        <name>On-Demand proxying</name>
        <t>If an endpoint is deployed in an unknown network,
it might not know whether it is behind a NAT that would require it to configure an explicit base address,
and ask the RD to assist by proxying if necessary by registering with the "proxy=ondemand" query parameter.</t>
        <t>A server receiving that SHOULD use a different IP address to try
to access the registrant's .well-known/core file using a GET request under the Registration Base URI.
If that succeeds, it may assume that no NAT is present, and ignore the proxying request.
Otherwise, it configures proxying as if "proxy=yes" were requested.</t>
        <t>Note that this is only a heuristic
[ and not tested in deployments yet ].</t>
      </section>
      <section anchor="multiple-upstreams">
        <name>Multiple upstreams</name>
        <t>When a proxying RD is operating behind a router that has uplinks with multiple provisioning domains (see <xref target="RFC7556"/>) or a similar setup,
it MAY mint multiple addresses that are reachable on the respective provisioning domains.
When possible, it is preferred to keep the number of URIs handed out low (avoiding URI aliasing);
this can be achieved by announcing both the proxy's public addresses under the same wildcard name.</t>
        <t>If RDs are announced by the uplinks using RDAO,
the proxy may use the methods of <xref target="I-D.amsuess-core-rd-replication"/> to distribute its registrations to all the announced upstream RDs.</t>
        <t>In such setups, the router can forward the upstream RDs using the PvD option (<xref target="RFC8801"/>) to PvD-aware hosts
and only announce the local RD to PvD-unaware ones (which then forwards their registrations).
It can be expected that PvD-aware endpoints are capable of registering with multiple RDs simultaneously.</t>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <section anchor="registration-through-a-firewall">
          <name>Registration through a firewall</name>
          <artwork><![CDATA[
Req from [2001:db8:42::9876]:5683:
POST coap://rd.example.net/rd?ep=node9876&proxy=ondemand
</some-resource>;rt="example.x"

Req from other-address.rd.example.net:
GET coap://[2001:db8:42::9876]/.well-known/core

Request blocked by stateful firewall around [2001:db8:42::]

RD decides that proxying is necessary

Res: 2.04 Created
Location: /reg/abcd
]]></artwork>
          <t>Later, lookup of that registration might say:</t>
          <artwork><![CDATA[
Req: GET coap://rd.example.net/lookup/res?rt=example.x

Res: 2.05 Content
<coap://node987.rd.example.net/some-resource>;rt="example.x
]]></artwork>
          <t>A request to that resource will end up at an IP address of the RD,
which will forward it using its the IP and port on which the registrant had registered as source port,
thus reaching the registrant through the stateful firewall.</t>
        </section>
        <section anchor="browser">
          <name>Registration from a browser context</name>
          <artwork><![CDATA[
Req: POST coaps+ws://rd.example.net/rd?ep=node1234&proxy=yes
</gyroscope>;rt="core.s"

Res: 2.04 Created
Location: /reg/123
]]></artwork>
          <t>The gyroscope can now not only be looked up in the RD, but also be reached:</t>
          <artwork><![CDATA[
Req: GET coap://rd.example.net/lookup/res?rt=core.s

Res: 2.05 Content
<coap://[2001:db8:1::1]:10123/gyroscope>;rt="core.s"
]]></artwork>
          <t>In this example, the RD has chosen to do port-based rather than host-based virtual hosting
and announces its literal IP address
as that allows clients to not send the lengthy Uri-Host option with all requests.</t>
        </section>
      </section>
      <section anchor="notes-on-stability-and-maturity">
        <name>Notes on stability and maturity</name>
        <t>Using this with UDP can be quite fragile;
the author only draws on own experience that this can work across cell-phone NATs
and does not claim that this will work over generic firewalls.</t>
        <t>[ It may make sense to have the example as TCP right away. ]</t>
      </section>
      <section anchor="security-considerations">
        <name>Security considerations</name>
        <t>An RD MAY impose additional restrictions on which endpoints can register for proxying,
and thus respond 4.01 Unauthorized to request that would pass had they not requested proxying.</t>
        <t>Attackers could do third party registrations with an attacked device's address as base URI,
though the RD would probably not amplify any attacks in that case.</t>
        <t>The RD MUST NOT reveal the address at which it reaches the registrant
except for adaequately authenticated and authorized debugging purposes,
as that address could reveal sensitive location data the registrant may wish to hide by using a proxy.</t>
        <t>Usual caveats for proxies apply.</t>
      </section>
      <section anchor="alternatives-to-be-explored">
        <name>Alternatives to be explored</name>
        <t>With the mechanisms of <xref target="I-D.ietf-core-transport-indication"/>,
an RD could also operate as a forward proxy,
and indicate its availability for that purpose in a <tt>has-proxy</tt> link it creates on its own,
and which it makes discoverable through its lookup interfaces.</t>
        <t>How a registrant opts in to that behavior,
how it selects a suitable public address (using the <tt>base</tt> attribute is tempting, but conflicts with the currently prescribed proxy behavior)
and for which scenarios this is preferable is a topic being explored.</t>
        <t>As with the reverse proxy address,
the registrant is not informed of the public addresses (though again, <xref target="propagation"/> can be used to change that).
Knowing these addresses can be relevant when the endpoint advertises its services out of band
(e.g. by showing a QR code or exposing links through NFC),
but also when the mechanism of <xref target="I-D.ietf-core-transport-indication"/> Appendix D is used.</t>
      </section>
    </section>
    <section anchor="infinite-lifetime">
      <name>Infinite lifetime</name>
      <t>An RD can indicate support for infinite lifetimes
by adding the resoruce type "TBD2" to its list of resource types.</t>
      <t>A registrant that wishes to keep its registration alive indefinitely
can set the lifetime value as "lt=inf".</t>
      <t>Registrations with infinite lifetimes never time out.
Unlike regular registrations, they are not "soft state";
the registrant can expect the RD to persist the registrations
across network changes, reboots, softare updates and that like.</t>
      <t>Typical use cases for infinite life times are:</t>
      <ul spacing="normal">
        <li>Commissioning tools (CTs) that do not return to the deployment site,
and thus can not refresh the soft state</li>
        <li>Proxy registrations whose lifetime is limited by a connection that is kept alive</li>
      </ul>
      <section anchor="example">
        <name>Example</name>
        <t>Had the example of <xref target="browser"/> discovered support for infinite lifetimes during lookup like this:</t>
        <artwork><![CDATA[
Req: GET coaps+ws://rd.example.net/.well-known/core?rt=core.rd*

Res: 2.05 Content
</rd>;rt="core.rd TBD1 TBD2";ct=40
]]></artwork>
        <t>it could register like that:</t>
        <artwork><![CDATA[
Req: POST coaps+ws://rd.example.net/rd?ep=node1234&proxy=yes&lt=inf
</gyroscope>;rt="core.s"

Res: 2.04 Created
Location: /reg/123
]]></artwork>
        <t>and never need to update the registration for as long as the websocket connection is open.</t>
        <t>(When it gets terminated, it could try renewing the registration,
but needs to be prepared for the RD to already have removed the original registration.)</t>
      </section>
    </section>
    <section anchor="limited-lifetimes">
      <name>Limited lifetimes</name>
      <t>Even if an RD supports infinite lifetimes,
it may not accept them from just any registrant.
Even more, an RD may have policies in place that require a certain frequency of updates
and thus place an upper limit on lt lower than the technical limit of 136 years.</t>
      <t>This document does not define any means of communicating lifetime limits,
but explores a few options:</t>
      <ul spacing="normal">
        <li>
          <t>Administrative channels.  </t>
          <t>
An RD that sees registrations with unreasonably long lifetimes can flag them for its operator
to take further measures.  </t>
          <t>
While sounding tediously manual,
this captures the observation that different components are configured in a softly incompatible way,
and need operator intervention (because if there were automatic means, they obviously failed).</t>
        </li>
        <li>
          <t>General advertisement of preferred lifetimes.  </t>
          <t>
When the limitations on the lifetimes are not from authorization
but from general setup,
an RD could advertise that property in a to-be-created link target attribute of its registration resource.
Different attributes could express preference or hard limits.  </t>
          <t>
This information is also available easily for registrants,
which may then heed the advice if supported,
and may notify their operators that they just started spending more resources than they were configured to.  </t>
          <t>
It is also available to tools that provision endpoints with their RD address (and parameters),
as they can use the same lookup interface.</t>
        </li>
        <li>
          <t>Per-registration information.  </t>
          <t>
For soft limits, the RD can offer the endpoint additional metadata if it queries them post-registration.
That query can use the endpoint lookup interface,
or the extension of <xref target="propagation"/>.
This may require additional round-trips on the part of endpoint.</t>
        </li>
        <li>
          <t>Hard limits informed by error codes.  </t>
          <t>
An RD can reject registrations with overly long lifetimes if the endpoint is not authorized to use such long lifetimes
with a 4.01 Unauthorized error.
The mechanisms of <xref target="RFC9290"/>,
with a to-be-defined error detail on the permissible lifetime,
can be used to propagate information back to then endpoint.  </t>
          <t>
This behavior is explicitly NOT RECOMMENDED,
because devices may crucially depend on the RD's services --
this rejection may even be the reason why the device is not configured with the new settings that would contain a shorter lifetime.</t>
        </li>
      </ul>
    </section>
    <section anchor="lookup-across-link-relations">
      <name>Lookup across link relations</name>
      <t>Resource lookup occasionally needs execute multiple queries to follow links.</t>
      <t>An RD server
(or any other server that supports <xref target="RFC6690"/> compatible lookup),
can announce support for following links in resource lookups
by announcing support for the TBD3 interface type on its resource lookup.</t>
      <t>A client can the query that server to not only provide the matched links,
but also links that are reachable over relations given in "follow" query parameters.</t>
      <section anchor="example-1">
        <name>Example</name>
        <t>Assume a node presents the following data in its &lt;.well-known/core&gt; resource
(and submitted the same to the RD):</t>
        <artwork><![CDATA[
</temp>;if="core.s";rt="example.temperature",
</t-prot>;rel="calibration-protocol";anchor="/temp",
<http://vendor.example.com/temp9000>;rel="describedby";anchor="/temp",
</hum>;if="core.s";rt="example.humidity",
</h-prot>;rel="calibration-protocol";anchor="/hum",
]]></artwork>
        <t>A lookup client can, in one query,
find the temperature sensor
and its relevant metadata:</t>
        <artwork><![CDATA[
Req: GET /rd-lookup/res?rt=example.temperature&follow=calibration-protocol&follow=describedby

<coap://node1/temp>;if="core.s";rt="example.temperature";anchor="coap://node1",
<coap://node1/t-prot>;rel="calibration-protocol";anchor="coap://node1/temp",
<http://vendor.example.com/temp9000>;rel="describedby";anchor="coap://node1/temp",
]]></artwork>
        <t>[
There is a <eref target="https://github.com/ace-wg/ace-oauth/issues/120#issuecomment-407997786">better example</eref> in an earlier stage of <xref target="I-D.tiloca-core-oscore-discovery"/>
]</t>
        <t>Given the likelihood of a CoRAL based successor to <xref target="RFC6690"/>,
this lookup variant might easily be superseeded by a
CoRAL FETCH format;
it might look like this there:</t>
        <artwork><![CDATA[
Req: FETCH /reef-lookup
Content-Format: application/template-coral+cbor
Payload:
#using core = <...>
#using reef = <...>
reef:content ?x {
  core:rt "example.temperature"
  calibration-protocol ?y {
    core:describedby ?z
  }
}

Res: 2.01 Content
Content-Format: aplication/coral+cbor
Payload:
reef:content <coap://node1/temp> {
    core:rt "example.temperature"
    calibration-protocol <coap://node1/t-prot> {
      core:describedby <http://vendor.example.com/temp9000>
    }
}
]]></artwork>
      </section>
    </section>
    <section anchor="lifetime-age">
      <name>Lifetime Age</name>
      <t>This extension is described in <xref target="I-D.amsuess-core-rd-replication"/> Section 5.2.</t>
      <t>The "provenance" extension in Section 5.1 of the same document
should probably be expressed differently to avoid using non-target link attributes.</t>
    </section>
    <section anchor="zone-identifier-introspection">
      <name>Zone identifier introspection</name>
      <t>The 'split-horizon' mechanism of <xref target="rfc9176"/>
(that registrations with link-local bases can only be read from the zone they registered on)
reduces the usability of the endpoint lookup interface for debugging purposes.</t>
      <t>To allow an administrator to read out the "show-zone-id" query parameter for endpoint and resource lookup is introduced.</t>
      <t>A Resource Directory that understands this parameter MUST NOT limit lookup results to registrations from the lookup's zone,
and MUST use <xref target="RFC6874"/> zone identifiers to annotate which zone those registrations are valid on.</t>
      <t>The RD MUST limit such requests to authenticated and authorized debugging requests,
as registrants may rely on the RD to keep their presence secret from other links.</t>
      <section anchor="example-2">
        <name>Example</name>
        <artwork><![CDATA[
Req: GET /rd-lookup/ep?show-zone-id&et=printer

Res: 2.05 Content
</reg/1>;base="coap://[2001:db8::1]";et=printer;ep="bigprinter",
</reg/2>;base="coap://[fe80::99%wlan0]";et=printer;ep="localprinter-1234",
</reg/3>;base="coap://[fe80::99%eth2]";et=printer;ep="localprinter-5678",
]]></artwork>
      </section>
    </section>
    <section anchor="proxying-multicast-requests">
      <name>Proxying multicast requests</name>
      <t>Multicast requests are hard to forward at a proxy:
Even if a media type is used
in which multiple responses can be aggregated transparently,
the proxy can not reliably know when all responses have come in.
<xref target="RFC7390"/> Section 2.9 describes the difficulties in more detail.</t>
      <t>Note that <xref target="I-D.tiloca-core-groupcomm-proxy"/> provides a mechanism
that <em>does</em> allow the forwarding of multicast requests.
It is yet to be determined what the respective pros and cons are.
Conversely, that lookup mechanism may also serve as an alternative to resource lookup on an RD.</t>
      <t>A proxy MAY expose an interface compatible with the RD lookup interface,
which SHOULD be advertised by a link to it that indicates the resource types
core.rd-lookup-res and TBD4.</t>
      <t>The proxy sends multicast requests to All CoAP Nodes (<xref target="RFC7252"/> Section 12.8)
requesting their .well-known/core files
either eagerly (ie. in regular intervals independent of queries)
or on demand
(in which case it SHOULD limit the results by applying <xref target="RFC6690"/> query filtering;
if it has received multiple query parameters it should forward the one it deems most likely to limit the results,
as .well-known/core only supports a single query parameter).</t>
      <t>In comparison to classical RD operation,
this RD behaves roughly as if it had received a simple registration
with a All CoAP Nodes address as the source address,
if such behavior were specified.
The individual registrations that result from this
neither have an explicit registration resource
nor an explicit endpoint name;
given that the endpoint lookup interface is not present on such proxies,
neither can be queried.</t>
      <t>Clients that would intend to do run a multicast discovery operation behind the proxy
can then instead query that resource lookup interface.
They SHOULD use observation on lookups,
as an on-demand implementation MAY return the first result before others have arrived,
or MAY even return an empty link set immediately.</t>
      <section anchor="example-3">
        <name>Example</name>
        <artwork><![CDATA[
Req: GET coap+ws://gateway.example.com/.well-known/core?rt=TBD4

Res: 2.05 Content
</discover>;rt="core.rd-lookup-res TBD4";ct=40

Req: GET coap+ws://gateway.example.com/discover?rt=core.s
Observe: 0

Res: 2.05 Content
Observe: 0
Content-Format: 40
(empty payload)
]]></artwork>
        <t>At the same time, the proxy sends out multicast requests on its interfaces:</t>
        <artwork><![CDATA[
Req: GET coap://ff05::fd/.well-known/core?rt=core.s

Res (from [2001:db8::1]:5683): 2.05 Content
</temp>;ct="0 112";rt="core.s"

Res (from [2001:db8::2]:5683): 2.05 Content
</light>;ct="0 112";rt="core.s"
]]></artwork>
        <t>upon receipt of which it sends out a notification to the websocket client:</t>
        <artwork><![CDATA[
Res: 2.05 Content
Observe: 1
Content-Format: 40
<coap://[2001:db8::1]/temp>;ct="0 112";rt="core.s";anchor="coap://[2001:db8::1]",
<coap://[2001:db8::2]/light>;ct="0 112";rt="core.s";anchro="coap://[2001:db8::2]"
]]></artwork>
      </section>
    </section>
    <section anchor="opportunistic-rd">
      <name>Opportunistic RD</name>
      <t>An application that wants to advertise its resources in Resource Directory
can find itself in a network that has no RD deployed.
It may be able to start an RD on its own to fill in that gap until an explicitly configured one gets installed.</t>
      <t>This bears the risk of having competing RDs on the same network,
where resources registered at one can not be discovered on the other.
To mitigate that, such Opportunistic Resource Directories should follow those steps:</t>
      <ul spacing="normal">
        <li>
          <t>The RD chooses its own Opportunistic Capability value.
That integer number is an estimate of number of target attributes it expects to be able to store,
where in absence of better estimates one would assume that a registration contains 16 links,
and each links contains three target attributes each with an eight byte key and a 16 byte value.  </t>
          <t>
The Opportunistic Capability value is advertised as a TBD5-cap= target attribute on the registration resource.</t>
        </li>
        <li>
          <t>The RD chooses its own Opportunistic Tie-Break value.
That integer number needs no other properties than being likely to be different
even for two instances of the same device being started;
numeric forms of MAC addresses or random numbers make good candidates.  </t>
          <t>
The Opportunistic Capability value is advertised as a TBD5-tie= target attribute on the registration resource.</t>
        </li>
        <li>The Opportunistic RD, before advertising its resources, performs RD discovery itself,
using at least all the discovery paths it may become discoverable on itself.</li>
        <li>
          <t>If the Opportunistic RD finds no other RD,
or if the RD it finds is less capable than itself,
it can start advertising itself as a Resource Directory.  </t>
          <t>
An RD is called more capable than another if its TBD5-cap value is greater than the other's,
or if its TBD5-tie value is greater than the other's if the former results in a tie.
Absent or unparsable attributes are considered greater than any present attribute.  </t>
          <t>
In case an RD observes a tie even after evaluating the tie breaker,
it may change its Opportunistic Tie-Break value if that was picked randomly,
or reevaluate its life choices if it uses its own MAC address.</t>
        </li>
        <li>
          <t>A running Opportunistic RD needs to perform discovery for other RDs repeatedly.
If it discovers a more capable RD,
it stops advertising its own resources.
It should continue to serve lookup requests,
but refuse any new registration or registration updates
(which will trigger the registrant endpoints to look for a new RD).  </t>
          <t>
An inactive Opportunistic RD will be notified of the highter capability RD's shutdown
by the expiry of whatever it may be started to advertise that was now advertised there;
see below for possible improvements.</t>
        </li>
        <li>
          <t>An RD that discovers an Opportunistic RD of lower capability may speed up the transition process
by (not mutually exclusive) two ways
          </t>
          <ul spacing="normal">
            <li>It can register its own (registration) resource(s) into the lower capability directory.
That RD can take that as having discovered a higher capability RD and stop advertising.</li>
            <li>It can expose resources and registrations of the lower capability directory
using the methods described in <xref target="I-D.amsuess-core-rd-replication"/>.</li>
          </ul>
        </li>
        <li>An Opportunistic RD that yields to a more capable RD may ease the transition
by attempting to register its active registrations at the more capable RD,
taking the role of a CT.
The lifetimes picked for those must not exceed the remaining lifetime of its registrations,
and it must not renew those registrations.</li>
      </ul>
      <t>Future iterations of this document may want to cut down on the possibilities listed above.</t>
      <t>Some ideas are around for making the shutdown of a commissioned or otherwise high-capability RD more graceful,
but they still have some problems</t>
      <ul spacing="normal">
        <li>Setting a commissioned or high-capability RD's Capability to zero in preparation of the shutdown
may create loops in any distributed lookups.</li>
        <li>Asking the lower capability RD to register its registration resource
(even though not otherwise advertised) at the higher capability RD
still creates a situation where clients may find two RDs running simultaneously,
and we can't expect clients to make any decisions based on TBD5 values.</li>
        <li>Asking the higher capability RD to register its registration resource
with the lower capability RD contradicts the current recommendation for the
passive Opportunistic RD to not accept registrations / renewals.
Also, the deployed RD may not know that Opportunistic RDs are a thing.</li>
        <li>Advertising an almost-but-not-quite rt= value on passive registration resources may be an option,
but needs to be thought through thoroughly.</li>
      </ul>
      <t>Installations of Opportunistic RDs are at special risk of resource exhaustion
because they are not sized with their actual deployment in mind,
but rely on defaults set by the application that starts the RD.
Opportunistic RDs should only be started if the application's administrator
can be informed in a timely fashion when the RD's resources are nearing exhaustion;
guidance towards installing a more capable RD on the network should be provided in that case.</t>
      <section anchor="applications">
        <name>Applications</name>
        <ul spacing="normal">
          <li>Group managers using <xref target="I-D.tiloca-core-oscore-discovery"/> can ship its own low-priority Opportunistic RD
to announce its join resources.
This provides benefits over announcing them on multicast discovery
if the network can efficiently route requests to the All CoAP Resource Directories multicast address
(so group members get a response back from an early focused request to all RDs
rather than falling back to multicasting All CoAP Nodes for <tt>?rt=osc.j&amp;...</tt>),
or if discovery of the group's multicast address is used.</li>
          <li>
            <t>Administrative tools that try to provide a broad overview of a network's CoAP devices
could offer to open an Opportunistic RD if they find no active RD on the network
(but should ask the user in interactive scenarios).  </t>
            <t>
That allows them to see devices that newly join the network quickly (by observing their own or the found RD),
rather than relying periodic multicasts.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="registrations-that-update-dns-records">
      <name>Registrations that update DNS records</name>
      <t>An RD that is provisioned with means to update a DNS zone
and that has a known mapping from registrants to host names
could use registrations to populate DNS records from registration base addresses.</t>
      <t>When combined with <xref target="reverseproxy"/>,
these records point to the RD's built-in proxy rather than to the base address.</t>
      <t>This mechanism is not described in further detail yet as it does not interact well yet
with how the <tt>base</tt> registration attribute interacts with the proxy announcements of <xref target="I-D.ietf-core-transport-indication"/>.</t>
    </section>
    <section anchor="propagation">
      <name>Propagating server generated registration information</name>
      <t>The RD can populate some data into the registration:
The RD may pick the sector and endpoint name based on the endpoint's credentials,
or (as introduced in this documents)
reverse proxy names and soft lifetime limits can be added.</t>
      <t>With the exception of sector and endpoint name,
the registrant can query those properties through the endpoint lookup interface.
However, this is cumbersome as it requires it to use both the registration and the lookup interface.</t>
      <t>The architecture of <xref target="I-D.ietf-core-coap-pubsub"/> offers a different architectural setup:
Applied to the RD,
the registration would generate both a registration metadata resource
(at which the registrant can set or query its registration's metadata)
and a registration link resource
(which contains all the links the registrant provides).
Such a setup would make it easier for registrants
to query or update registration metadata,
including querying for an implicitly assigned endpoint name or sector.</t>
      <t>Extending the RD specification to allow this style of operation
would be possible without altering its client facing interfaces.
Alternatively, using a new media type for operations on the registration resource
and/or the FETCH and PATCH methods
would enable such operations in a less intrusive way.
While it would be tempting to add an Accept option to the registration request
to solicit immediate information on the registration that was just created,
the Accept option's criticality would render this incompatible with existing servers.
The option can still be set if the new content format is advertised by the RD.</t>
      <t>Without any media type suggested so far,
this is what a registration could look like if the RD advertised that it provided content format TBD6 on the registration interface:</t>
      <artwork><![CDATA[
Req from [2001:db8::1]:5683:
POST coap://rd.example.net/rd
Accept: TBD6
Payload:
</some-resource>;rt="example.x"

Res: 2.04 Created
Location: /reg/abcd
Content-Format: TBD6
Payload:
Soft lifetime limit 3600, please update your registration in time.
Forward proxy services are offered at coaps+ws://rd.example.net and
coaps+tcp://rd.example.net.
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="rfc9176">
          <front>
            <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
            <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9176"/>
          <seriesInfo name="DOI" value="10.17487/RFC9176"/>
        </reference>
        <reference anchor="I-D.amsuess-core-rd-replication">
          <front>
            <title>Resource Directory Replication</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="11" month="March" year="2019"/>
            <abstract>
              <t>   Discovery of endpoints and resources in M2M applications over large
   networks is enabled by Resource Directories, but no special
   consideration has been given to how such directories can scale beyond
   what can be managed by a single device.

   This document explores different ways in which Resource Directories
   can be scaled up from single network to enterprise and global scale.
   It does not attempt to standardize any of those methods, but only to
   demonstrate the feasibility of such extensions and to provide
   terminology and exploratory groundwork for later documents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-rd-replication-02"/>
        </reference>
        <reference anchor="RFC6874">
          <front>
            <title>Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes how the zone identifier of an IPv6 scoped address, defined as in the IPv6 Scoped Address Architecture (RFC 4007), can be represented in a literal IPv6 address and in a Uniform Resource Identifier that includes such a literal address. It updates the URI Generic Syntax specification (RFC 3986) accordingly.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6874"/>
          <seriesInfo name="DOI" value="10.17487/RFC6874"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="RFC6887">
          <front>
            <title>Port Control Protocol (PCP)</title>
            <author fullname="D. Wing" initials="D." role="editor" surname="Wing"/>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="R. Penno" initials="R." surname="Penno"/>
            <author fullname="P. Selkirk" initials="P." surname="Selkirk"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Port Control Protocol allows an IPv6 or IPv4 host to control how incoming IPv6 or IPv4 packets are translated and forwarded by a Network Address Translator (NAT) or simple firewall, and also allows a host to optimize its outgoing NAT keepalive messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6887"/>
          <seriesInfo name="DOI" value="10.17487/RFC6887"/>
        </reference>
        <reference anchor="I-D.ietf-core-transport-indication">
          <front>
            <title>CoAP Protocol Indication</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP, [RFC7252]) is available
   over different transports (UDP, DTLS, TCP, TLS, WebSockets), but
   lacks a way to unify these addresses.  This document provides
   terminology and provisions based on Web Linking [RFC8288] to express
   alternative transports available to a device, and to optimize
   exchanges using these.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-transport-indication-03"/>
        </reference>
        <reference anchor="RFC7556">
          <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="RFC8801">
          <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="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-discovery">
          <front>
            <title>Discovery of OSCORE Groups with the CoRE Resource Directory</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>Consultant</organization>
            </author>
            <date day="8" month="September" year="2023"/>
            <abstract>
              <t>   Group communication over the Constrained Application Protocol (CoAP)
   can be secured by means of Group Object Security for Constrained
   RESTful Environments (Group OSCORE).  At deployment time, devices may
   not know the exact security groups to join, the respective Group
   Manager, or other information required to perform the joining
   process.  This document describes how a CoAP endpoint can use
   descriptions and links of resources registered at the CoRE Resource
   Directory to discover security groups and to acquire information for
   joining them through the respective Group Manager.  A given security
   group may protect multiple application groups, which are separately
   announced in the Resource Directory as sets of endpoints sharing a
   pool of resources.  This approach is consistent with, but not limited
   to, the joining of security groups based on the ACE framework for
   Authentication and Authorization in constrained environments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-discovery-14"/>
        </reference>
        <reference anchor="RFC7390">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Rahman" initials="A." role="editor" surname="Rahman"/>
            <author fullname="E. Dijk" initials="E." role="editor" surname="Dijk"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for constrained devices and constrained networks. It is anticipated that constrained devices will often naturally operate in groups (e.g., in a building automation scenario, all lights in a given room may need to be switched on/off as a group). This specification defines how CoAP should be used in a group communication context. An approach for using CoAP on top of IP multicast is detailed based on existing CoAP functionality as well as new features introduced in this specification. Also, various use cases and corresponding protocol flows are provided to illustrate important concepts. Finally, guidance is provided for deployment in various network topologies.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7390"/>
          <seriesInfo name="DOI" value="10.17487/RFC7390"/>
        </reference>
        <reference anchor="I-D.tiloca-core-groupcomm-proxy">
          <front>
            <title>Proxy Operations for CoAP Group Communication</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="31" month="August" year="2023"/>
            <abstract>
              <t>   This document specifies the operations performed by a proxy, when
   using the Constrained Application Protocol (CoAP) in group
   communication scenarios.  Such a proxy processes a single request
   sent by a client over unicast, and distributes the request over IP
   multicast to a group of servers.  Then, the proxy collects the
   individual responses from those servers and relays those responses
   back to the client, in a way that allows the client to distinguish
   the responses and their origin servers through embedded addressing
   information.  This document updates RFC7252 with respect to caching
   of response messages at proxies.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-groupcomm-proxy-09"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="20" month="October" year="2023"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-13"/>
        </reference>
      </references>
    </references>
    <section anchor="change-log">
      <name>Change log</name>
      <t>Since -08:</t>
      <ul spacing="normal">
        <li>Add section on propagating server generated information.</li>
        <li>Reference transport-indication appendix as one reason why propagation can be relevant.</li>
      </ul>
      <t>Since -07:</t>
      <ul spacing="normal">
        <li>Update references.</li>
      </ul>
      <t>Since -06:</t>
      <ul spacing="normal">
        <li>Add sketch for DNS updates.</li>
        <li>Add sketch for forward proxying.</li>
        <li>Fix erroneous section numbers.</li>
      </ul>
      <t>Since -05:</t>
      <ul spacing="normal">
        <li>Add section on Limited Lifetimes.</li>
        <li>Point out limitations to applications that use reverse proxying.</li>
        <li>Minor reference and bugfix updates.</li>
      </ul>
      <t>Since -04:</t>
      <ul spacing="normal">
        <li>
          <t>Minor adjustments:
          </t>
          <ul spacing="normal">
            <li>Mention LwM2M and how it is already doing RD proxying.</li>
            <li>Tie proxying in with infinite lifetimes.</li>
            <li>Remove note on not being able to switch protocols: RDs that support some future protocol negotiation can do that.</li>
            <li>Point out that there is no Uri-Host from the RD proxy to the EP, but there could be.</li>
            <li>Infinite lifetimes: Take up CTs more explicitly from RD discussion.</li>
            <li>Start exploring interactions with groupcomm-proxy.</li>
          </ul>
        </li>
      </ul>
      <t>Since -03:</t>
      <ul spacing="normal">
        <li>Added interaction with PvD (Provisioning Domains)</li>
      </ul>
      <t>Since -02:</t>
      <ul spacing="normal">
        <li>Added abstract</li>
        <li>Added example of CoRAL FETCH to Lookup across link relations section</li>
      </ul>
      <t>Since -01:</t>
      <ul spacing="normal">
        <li>Added section on Opportunistic RDs</li>
      </ul>
      <t>Since -00:</t>
      <ul spacing="normal">
        <li>Add multicast proxy usage pattern</li>
        <li>ondemand proxying: Probing queries must be sent from a different address</li>
        <li>proxying: Point to RFC7252 to describe how the actual proxying happens</li>
        <li>proxying: Describe this as a last-resort options and suggest attempting PCP first</li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>[ Reviews from: Jaime Jimenez ]</t>
      <t><xref target="limited-lifetimes"/> was inspired by Ben Kaduk's comments from reviewing <xref target="rfc9176"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
JElK/0M+otg2v5ydnJzOivmT2YOz2ezpk8ePfp09fPTk/owfe/MzB06zzeze
vaaYqtM0Jb1E//zObJ5XdWHw0jdDYc8v/+UewvSh/uCvz5r2+YFf4tPB6CA1
ZOHE697hZnIYyGw9y55T3xsL/LA+C/l5iYQbcwKnQpES9iAhDBAFFCNY/KoL
XAafp8+vaWwtKEG/l5ulZ9OTB+lFw048//pKvYRZeo9Qey+b50WSvKI/kxkm
XqzYL2MbVRS+y7azcJNZDIMRPmQp2sJ9R3AOYB6e7GF6USMv1wqCdCVF4gjo
t2IPurvp4wx6evVs2Gsi+oaVzwHoWHOrX/b2Ek4l2GngY3GEnaHbik7Hm+pO
9mH6US5vlRWBayQprgeRaGG76pyog942D+96BmF5OiaMfbEdiUmG9C58KfOp
TT/f0V++RNgK7OP+9drdxkKnZ/cffBOUvHLPctvULiclK7AHTU/dwZ8gNVpV
vJSwkprS12wKaL6biZDFcV+lcCyZOQ3VMuwQ0v3zdCiH/hoi7JnvdDY7/XV2
ekLHvxEGLyuxdkIYR+1V2BwaotfIICL9EqwgBEowkWAAHaA/x04jzHO2gFUn
OA11thx87qk4ybylUZbwIDQPiz0BWSQZRZ2YatmutmM3W300zr6Ixy6CHKYc
B+YRfpL4Jk6zzlqy5FqSMh9U11m1qD5cvvF6hgx9Ur2LJluSnfuM1brULAme
iya75qXhV0AnNdaI0vOGI9aRLHNOMKd/Q5xuVsgTk2ErCrOojQR78zKz6+hl
ZmJ+m8NlS1PRBnlgJNyPjNCXYjavs4+Id1eOkxuc8sJxfWqdYIs4WsPyj5Tl
dkq2KcPnnckZEOA6lFr4+INmYWEX2jUc0VEudZT0sDsVEV56jGoGJDbP0sNt
SLchxnqafqgEsEiFicOrcrD3u5B0ZbHEZTsAWB8i88tzjU6bkVZq6BD8Glda
2KZgV307sqG8X5/JS4UGVxAVV9GaSVgOViekXpBrCGTJsZp6niFnhxMB2Hax
5RixrKllSpxcciZK5yHK/NPP79nvzkqfrJY92z43KnJi7IslyAlsWslfFBnB
geQV7K4OhlQLIxJCG1zXg7Uw82655IxO1wCj7rjnOd06VxeXzwRysmzc+6hc
WmRtNhb3ID9yuFZMeKg7mW+DT+jDwx8cxEFOZJlpjZfEbSUrpzbXeZ/D9CkY
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

-->

</rfc>
