<?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-ietf-core-transport-indication-04" category="std" consensus="true" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title>CoAP Protocol Indication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-transport-indication-04"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <author fullname="Martine Sophie Lenders">
      <organization abbrev="TU Dresden">TUD Dresden University of Technology</organization>
      <address>
        <postal>
          <street>Helmholtzstr. 10</street>
          <city>Dresden</city>
          <code>D-01069</code>
          <country>Germany</country>
        </postal>
        <email>martine.lenders@tu-dresden.de</email>
      </address>
    </author>
    <date year="2024" month="March" day="05"/>
    <area>Internet</area>
    <workgroup>CoRE</workgroup>
    <keyword>CoRE, Web Linking, Proxy, URI, aliasing</keyword>
    <abstract>
      <t>The Constrained Application Protocol (CoAP, <xref target="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 <xref target="RFC8288"/>
to express alternative transports available to a device,
and to optimize exchanges using these.</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://github.com/core-wg/transport-indication"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) provides transports mechanisms
(UDP and DTLS since <xref target="RFC7252"/>, TCP, TLS and WebSockets since <xref target="RFC8323"/>),
with some additional being used in LwM2M <xref target="lwm2m"/>
and even more being explored (<xref target="I-D.bormann-t2trg-slipmux"/>, <xref target="I-D.amsuess-core-coap-over-gatt"/>).
These are mutually incompatible on the wire,
but CoAP implementations commonly support several of them,
and proxies can translate between them.</t>
      <t>CoAP currently lacks a way to indicate which transports are available for a given resource,
and to indicate that a device is prepared to serve as a proxy;
this document solves both by introducing the "has-proxy" terminology to Web Linking <xref target="RFC8288"/> that expresses the former through the latter.
The additional "has-unique-proxy" term is introduced
to negate any per-request overhead that would otherwise be introduced in the course of this.</t>
      <t>CoAP also lacks a unified scheme to label a resource in a transport-independent way.
This document does <em>not</em> attempt to introduce any new scheme here,
or raise a scheme to be the canonical one.
Instead, each host or application can pick a canonical address for its resources,
and advertise other transports in addition.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>Readers are expected to be familiar with the terms and concepts
described in CoAP <xref target="RFC7252"/>
and link format (<xref target="RFC6690"/>
(or, equivalently, web links as described in <xref target="RFC8288"/>).</t>
        <dl>
          <dt>Same-host proxy:</dt>
          <dd>
            <t>A CoAP server that accepts forward proxy requests (i.e., requests carrying the Proxy-Scheme option)
exclusively for URIs that it is also the authoritative server for is defined as a "same-host proxy".</t>
          </dd>
          <dt/>
          <dd>
            <t>The distinction between a same-host and any other proxy is only relevant on a practical, server-implementation and illustrative level;
this specification does not use the distinction in normative requirements,
and clients need not make the distinction at all.</t>
          </dd>
          <dt>hosts:</dt>
          <dd>
            <t>The verb "to host" is used here in the sense of the link relation of the same name defined in <xref target="RFC6690"/>.</t>
            <t>For resources discovered via CoAP's discovery interface,
a hosting statement is typically provided by the defaults implied by <xref target="RFC6690"/>
where a link like <tt>&lt;/sensor/temp&gt;</tt> is implied to have the relation "hosts" and the anchor <tt>/</tt>,
such that a statement "coap://hostname hosts coap://hostname/sensor/temp" is implied in the link.</t>
            <t>The link relation has been occasionally used with different interpretations,
which ascribe more meaning to the term than it has in its definition.
In particular,</t>
            <ul spacing="normal">
              <li>the "hosts" relation can not be inferred merely by two URIs having
the same scheme, host and port (and vice versa), and</li>
              <li>the "hosts" relation on its own does not make any statement
about the physical devices that hold the resource's representation.</li>
            </ul>
            <t>[ TBD: The former could probably still be used without too many ill effects;
but things might also get weird when a dynamic resource created
with one transport from use with another transport unless explicitly cleared.</t>
            <t>Whether or not "to host" is used exclusively along the "hosts" relation or using the more generic same-start-of-URI sense
is the largest open issue in this document.
]</t>
            <t>For the purpose of this document, "hosting" is used in a transitive way:
If A hosts B and B hosts C, it is implied that A hosts C.</t>
            <t>[ TBD: It may make sense for many other relations to imply "hosts",
e.g. any relations that occur in a pub-sub context,
but that'd need further consideration. ]</t>
          </dd>
        </dl>
        <t>When talking of proxy requests,
this document only talks of the Proxy-Scheme option.
Given that all URIs this is usable with can be expressed in decomposed CoAP URIs,
the need for using the Proxy-URI option should never arise.
The Proxy-URI option is still equivalent to the decomposed options,
and can be used if the server supports it.</t>
        <section anchor="using-uris-to-identify-protocol-endpoints">
          <name>Using URIs to identify protocol endpoints</name>
          <t>The URI <tt>coap://device.example.com</tt> identifies a particular resource, possibly a "welcome" text.
It is, colloquially, also used to identify the combination
of a host (identified through a name), the default port, and the CoAP method of sending requests to the host.</t>
          <t>For precision, this document uses the term
"the transport address indicated by (a URI)" to refer to the host / port / protocol combination,
but otherwise no big deal is made of it.</t>
          <t>For the CoAP schemes (coap, coaps, coap+tcp, coaps+tcp, coap+ws, coaps+ws),
URIs indicating a transport are always given with an empty path
(which under their URI normalization rules is equivalent to a path containing a single slash).
For the coap and coap+tcp schemes, URIs with different host names
can indicate the same transport as long as the names resolve to the same addresses.
For the other protocols, the given host name informs the name set in TLS's Server Name Indication (SNI)
and/or the host sent in the "Host" header of the underlying HTTP request.</t>
          <t>If an update to this document extends the list,
for new schemes it might be allowed to have paths, queries or fragment identifiers present in the URI indicating the transport address.
No guidance can be given here for these,
as no realistic example is known.
(Note that while the coap+ws scheme does use the well-known path <tt>/.well-known/coap</tt> internally,
that is used purely on the HTTP side, and not part of the CoAP URI, not even for indicating the transport address).</t>
          <t>A similar concept is used in <xref target="I-D.ietf-core-observe-multicast-notifications"/> (expressed as pieces of its <tt>tp_info</tt> parameter),
but not expressed with URIs yet.
As that document migrates towards using CRIs (<xref target="I-D.ietf-core-href"/>),
it is expected that its transport addresses coincide with the URIs (CRIs, equivalently) indicating a transport.</t>
          <t>URIs indicating a transport are especially useful when talking about proxies;
this use is aligned with the way they are exprssed in the conventional environment variables <tt>http_proxy</tt> etc.
[ cite https://about.gitlab.com/blog/2021/01/27/we-need-to-talk-no-proxy/ ].
Furthermore, URIs processing is widespread in CoAP systems,
and when that changes (e.g. through the introduction of <xref target="I-D.ietf-core-href"/>),
URIs indicating a transport will still be efficient to encode.
And last but not least, it lines up well with the colloquial identity mentioned above.
(An alternative would be using a dedicated naming scheme, say, <tt>transport:coap:device.example.com:port</tt>,
but that would needlessly introduce implementation complexity).</t>
          <t>Note that this mechanism can only used with proxies that use CoAP's native address indication mechanisms.
Proxies that perform URI mapping
(as described in Section 5 of <xref target="RFC8075"/>, especially using URI templates)
are not supported in this document.</t>
          <t>[ TBD: Do we want to extend this to HTTP proxies? Probably just not, and if so, only to those that can just take coap://... for a URI. ]</t>
        </section>
      </section>
      <section anchor="goals">
        <name>Goals</name>
        <t>This document introduces provisions for the seamless use of different transport mechanisms for CoAP.
Combined, these provide:</t>
        <ol spacing="normal" type="1"><li>Enablement: Inform clients of the availability of other transports of servers.</li>
          <li>No Aliasing: Any URI aliasing must be opt-in by the server. Any defined mechanisms must allow applications to keep working on the canonical URIs given by the server.</li>
          <li>Optimization: Do not incur per-request overhead from switching protocols. This may depend on the server's willingness to create aliased URIs.</li>
          <li>Proxy usability: All information provided must be usable by aware proxies to reduce the need for duplicate cache entries.</li>
          <li>Proxy announcement: Allow third parties to announce that they provide alternative transports to a host.</li>
        </ol>
        <t>For all these functions, security policies must be described that allow the client to use them as securely as the original transport.</t>
        <t>This document will not concern itself with changes in transport availability over time,
neither in causing them ("Please take up your TCP interface, I'm going to send a firmware update")
nor in advertising their availability in advance.
Hosts whose transport's availability changes over time can utilize
any suitable mechanism to keep client updated,
such as placing a suitable Max-Age value on their resources
or having them observable.</t>
      </section>
    </section>
    <section anchor="indicating-alternative-transports">
      <name>Indicating alternative transports</name>
      <t>While CoAP can set the authority component of the requested URI in all requests (by means of Uri-Host and Uri-Port),
setting the scheme of a requested URI (by means of Proxy-Scheme) makes the request implicitly a proxy request.
However, this needs to be of only little practical concern:
Any device can serve as a proxy for itself (a "same-host proxy")
by accepting requests that carry the Proxy-Scheme option.
<xref section="5.7.2" sectionFormat="of" target="RFC7252"/> already mandates that a proxy recognize its own addresses.
A minimal same-host proxy supports only those and respond with 5.05 (Proxying Not Supported).
In many cases (precisely: on hosts that alias their resources across protocols),
this is equivalent to ignoring the Proxy-Scheme option in that request.</t>
      <t>A server can advertise a recommended proxy
by serving a Web Link with the "has-proxy" relation to a URI indicating its transport address.
In particular (and that is a typical case),
it can indicate its own transport address on an alternative transport when implementing same-host proxy functionality.</t>
      <t>The semantics of a link from S to P with relations has-proxy ("S has-proxy P", <tt>&lt;P&gt;;rel=has-proxy;anchor="S"</tt>)
are that for any resource R hosted on S ("S hosts R"), the proxy with the transport address indicated by P can be used to obtain R.</t>
      <section anchor="example">
        <name>Example</name>
        <t>A constrained device at the address 2001:db8::1 that supports CoAP over TCP in addition to CoAP can self-describe like this:</t>
        <figure anchor="fig-has-proxy">
          <name>Discovery and follow-up request through a has-proxy relation</name>
          <artwork><![CDATA[
Req: to [ff02::fd]:5683 on UDP
Code: GET
Uri-Path: /.well-known/core
Uri-Query: if=tag:example.com,sensor

Res: from [2001:db8::1]:5683
Content-Format: application/link-format
Payload:
</sensors/temp>;if="tag:example.com,sensor",
<coap+tcp://[2001:db8::1]>;rel=has-proxy;anchor="/"


Req: to [2001:db8::1]:5683 on TCP
Code: GET
Proxy-Scheme: coap
Uri-Path: /sensors/temp
Observe: 0

Res: 2.05 Content
Observe: 0
Payload:
39.1°C
]]></artwork>
        </figure>
        <t>Note that generating this discovery file needs to be dynamic based on its available addresses;
only if queried using a link-local source address, the server may also respond with a link-local address in the authority component of the proxy URI.</t>
        <t>Unless the device makes resources discoverable at <tt>coap+tcp://[2001:db8::1]/.well-known/core</tt> or another discovery mechanism,
clients may not assume that <tt>coap+tcp://[2001:db8::1]/sensors/temp</tt> is a valid resource (let alone is equivalent to the other resource on the same path).
The server advertising itself like this may reject any request on CoAP-over-TCP unless it contains a Proxy-Scheme option.</t>
        <t>Clients that want to access the device using CoAP-over-TCP would send a request
by connecting to 2001:db8::1 TCP port 5683
and sending a GET with the options Proxy-Scheme: coap, no Uri-Host or -Port options (utilizing their default values),
and the Uri-Paths "sensors" and "temp".</t>
      </section>
      <section anchor="secctx-propagation">
        <name>Security context propagation</name>
        <t>If the originally requested URI R or the application requirements demand a security mechanism is used,
the client MUST only use the proxy P if the proxy can provide suitable credentials.
(The hosting URI S is immaterial to these considerations).</t>
        <t>For example, if the application uses the host name and a public key infrastructure and R is <tt>coap://example.com/</tt>
the proxy accessed as <tt>coap+tcp://[2001:db8::1]</tt> still needs to provide a certificate chain for the name example.com to one of the system's trust anchors.
If, on the other hand, the application is doing a firmware update and requires any certificate from its configured firmware update issuer,
the proxy needs to provide such a firmware update certificate.</t>
        <t>Some applications have requirements
exceeding the requirements of a secure connection,
e.g., (explicitly or implicitly) requiring that
name resolution happen through a secure process
and packets are only routed into networks where it trusts that they will not be intercepted on the path to the server.
Such applications need to extend their requirements to the source of the <tt>has-proxy</tt> statement;
a sufficient (but maybe needlessly strict) requirement is to only follow <tt>has-proxy</tt> statements
that are part of the same resource that advertises the link currently being followed.
Section <xref target="proxy-foreign-advertisement"/> adds further considerations.</t>
      </section>
      <section anchor="choice-of-transports">
        <name>Choice of transports</name>
        <t>It is up to the client whether to use an advertised proxy transport,
or (if multiple are provided) which to pick.</t>
        <t>Links to proxies may be annotated with additional metadata that may help guide such a choice;
defining such metadata is out of scope for this document.</t>
        <t>Clients MAY switch between advertised transports as long as the document describing them is fresh;
they may even do so per request.
(For example, they may perform individual requests using CoAP-over-UDP,
but choose CoAP-over-TCP for requests with large expected responses).
When the describing document approaches expiry,
the client can use the representation's ETag to efficiently renew its justification for using the alternative transport.</t>
      </section>
      <section anchor="selection-of-a-canonical-origin">
        <name>Selection of a canonical origin</name>
        <t>While a server is at liberty to provide the same resource independently on different transports (i.e. to create aliases),
it may make sense for it to pick a single scheme and authority under which it announces its resources.
Using only one address helps proxies keep their caches efficient,
and makes it easier for clients to avoid exploring the same server twice from different angles.</t>
        <t>When there is a predominant scheme and authority through which an existing service is discovered,
it makes sense to use these for the canonical addresses.</t>
        <t>Otherwise,
it is suggested to use the <tt>coap</tt> or <tt>coaps</tt> scheme
(given that these are the most basic and widespread ones),
and the most stable usable name the host has.</t>
        <section anchor="unreachable-canonical-origin-addresses">
          <name>Unreachable canonical origin addresses</name>
          <t>For devices that are not generally reachable at a stable address,
it may make sense to use a scheme and authority as the canonical address that can not actually be dereferenced.</t>
          <t>The registered names available for that purpose depend on the locally defined host or service name registry.
When the Domain Name System (DNS) is used,
such names would not be associated with any A or AAAA records
(but may still use, for example, TLSA records).</t>
          <t>Such URIs are <em>only</em> usable to clients that discover a suitable proxy along with the URI,
and which can place sufficient trust in that proxy.</t>
        </section>
      </section>
      <section anchor="advertisement-through-a-resource-directory">
        <name>Advertisement through a Resource Directory</name>
        <t>In the Resource Directory specification <xref target="rfc9176"/>,
protocol negotiation was anticipated to use multiple base values.
This approach was abandoned since then,
as it would incur heavy URI aliasing.</t>
        <t>Instead, devices can submit their has-proxy links to the Resource Directory like all their other metadata.</t>
        <t>A client performing resource lookup can ask the RD to provide available (same-host-)proxies in a follow-up request
by asking for <tt>?anchor=&lt;the-discovered-host&gt;&amp;rel=has-proxy</tt>.
<!-- We don't say that the RD can not do that, right? -->
The RD may also volunteer that information during resource lookups even though the has-proxy link itself does not match the search criteria.</t>
        <t>[</t>
        <t>It may be useful to define RD parameters for use with lookup here, which'd guide which available proxies to include.
For example, asking <tt>?if=tag:example.com,sensor&amp;proxy-links=tcp</tt> could give as a result:</t>
        <t><tt>&lt;coap://[2001:db8::1]/s&gt;;rt=tag:example.com,sensor,&lt;coap+tcp://[2001:db8::1]/&gt;;rel=has-proxy;anchor="coap://[2001:db8::1]/"</tt></t>
        <t>This is similar to the extension suggested in <xref section="5" sectionFormat="of" target="I-D.amsuess-core-resource-directory-extensions"/>.</t>
        <t>]</t>
      </section>
    </section>
    <section anchor="elision-of-proxy-scheme-and-uri-host">
      <name>Elision of Proxy-Scheme and Uri-Host</name>
      <t>A CoAP server may publish and accept multiple URIs for the same resource,
for example when it accepts requests on different IP addresses that do not carry a Uri-Host option,
or when it accepts requests both with and without the Uri-Host option carrying a registered name.
Likewise, the server may serve the same resources on different transports.
This makes for efficient requests (with no Proxy-Scheme or Uri-Host option),
but in general is discouraged <xref target="aliases"/>.</t>
      <t>To make efficient requests possible without creating URI aliases that propagate,
the "has-unique-proxy" specialization of the has-proxy relation is defined.</t>
      <t>If a proxy is unique,
it means that requests arriving at the proxy are treated the same
no matter whether the scheme, authority and port of the link context are set in the Proxy-Scheme, Uri-Host and Uri-Port options, respectively,
or whether all of them are absent.</t>
      <t>[ The following two paragraphs are both true but follow different approaches to explaining the observable and implementable behavior;
   it may later be decided to focus on one or the other in this document. ]</t>
      <t>While this creates URI aliasing in the requests as they are sent over the network,
applications that discover a proxy this way should not "think" in terms of these URIs,
but retain the originally discovered URIs (which, because Cool URIs Don't Change<xref target="cooluris"/>, should be long-term usable).
They use the proxy for as long as they have fresh knowledge of the has-(unique-)proxy statement.</t>
      <t>In a way, advertising <tt>has-unique-proxy</tt> can be viewed as a description of the link target in terms of SCHC <xref target="I-D.ietf-lpwan-coap-static-context-hc"/>:
In requests to that target, the link source's scheme and host are implicitly present.</t>
      <t>While applications retain knowledge of the originally requested URI
(even if it is not expressed in full on the wire),
the original URI is not accessible to caches both within the host and on the network
(for the latter, see <xref target="actualproxies"/>).
Thus, cached responses to the canonical and any aliased URI are mutually interchangeable
as long as both the response and the proxy statement are fresh.</t>
      <t>A client MAY use a unique-proxy like a proxy and still send the Proxy-Scheme and Uri-Host option;
such a client needs to recognize both relation types, as relations of the has-unique-proxy type
are a specialization of has-proxy and typically don't carry the latter (redundant) annotation.
[ To be evaluated -- on one hand, supporting it this way means that the server needs to identify all of its addresses and reject others.
   Then again, is a server that (like many now do) fully ignore any set Uri-Host correct at all? ]</t>
      <t>Example:</t>
      <figure anchor="fig-has-unique-proxy">
        <name>Follow-up request through a has-unique-proxy relation. Compared to the last example, 5 bytes of scheme indication are saved during the follow-up request.</name>
        <artwork><![CDATA[
Req: to [ff02::fd]:5683 on UDP
Code: GET
Uri-Path: /.well-known/core
Uri-Query: if=tag:example.com,sensor

Res: from [2001:db8::1]:5683
Content-Format: application/link-format
Payload:
</sensors/>;if="tag:example.com,collection",
<coaps+ws://[2001:db8::1]>;rel=has-unique-proxy;anchor="/"


Req: to [2001:db8::1] via WebSockets over HTTPS
Code: GET
Uri-Path: /sensors/

Res: 2.05 Content
Content-Format: application/link-format
Payload:
</sensors/temperature>;if="tag:example.com,sensor"
]]></artwork>
      </figure>
      <t>It is noteworthy that when the URI reference <tt>/sensors/temperature</tt> is resolved,
the base URI is <tt>coap://device0815.example.com</tt> and not its coaps+ws counterpart --
as the request is still for that URI, which both the client and the server are aware of.
However, this detail is of little practical importance:
A simplistic client that uses <tt>coaps+ws://device0815.proxy.rd.example.com</tt> as a base URI will still arrive at an identical follow-up request with no ill effect,
as long as it only uses the wrongly assembled URI for dereferencing resources,
the security context is the same,
the state is kept no longer than the has-unique-proxy statement is fresh,
and it does not (for example) pass the URI on to other devices.</t>
      <section anchor="impact-on-caches">
        <name>Impact on caches</name>
        <t>[ This section is written with the "there is implied URI aliasing" mindset;
it should be possible to write it with the "compression" mindset as well
(but there is no point in having both around in the document at this time).</t>
        <t>It is also slightly duplicating, but also more detailed than,
the brief note on the topic in <xref target="actualproxies"/>
]</t>
        <t>When a node that performs caching learns of a <tt>has-unique-proxy</tt> statement,
it can utilize the information about the implied URI aliasing:
Requests to resources hosted by S can be answered with cached entries from P
(because by the rules of <tt>has-unique-proxy</tt> a request can be crafted that is sent to P for which a fresh response is available).
The inverse direction (serving resources whose URI "starts with" P from a cached request that was sent to S) is harder to serve because it additionaly requires a fresh statement
that "S hosts R" for the matching resource R.</t>
      </section>
      <section anchor="unique-security">
        <name>Using unique proxies securely</name>
        <t>[
This section is work in progress, it is more a flow of considerations turning back on each other.
This is all made a bit trickier by not applying to OSCORE which is usually the author's go-to example,
because OSCORE's requirements already preclude all these troubles.
]</t>
        <t>The use of unique proxies requires slightly more care in terms of security.</t>
        <t>No requirements are necessary on the client side; those of {#secctx-propagation} suffice.
(In particular, it is not necessary for the statement to originate from the original server
unless that were already a requirement without the uniqueness property).</t>
        <t>The extra care is necessary on the side of servers that are commissioned with wide ranging authorization [ or is it? ]:
These may now be tricked into serving a resource of which the client assumes a different name.
For example,
if the desired resource is <tt>coaps://high-security.example.org/configuration</tt>,
and there exists a "home page" style service for employees with patterns of
<tt>coaps+tcp://user-${username}.example.org/</tt> at which they can store files,
and the server operating that service is commissioned with a wild-card certificate "*.example.org",
then a device that receives the (malicious) information
<tt>&lt;coaps+tcp://user-mave.example.org&gt;;rel=has-unique-proxy;anchor="coaps://high-security.example.org"</tt>
might use this statement to contact the transport address indicated by <tt>coaps+tcp://user-mave.example.org</tt> and ask for <tt>/config</tt>
(which, to the server, is indistinguishable from <tt>coaps+tcp://user-mave.example.org/config</tt>)
and obtain a malicious configuration.</t>
        <t>In a non-unique proxy situation,
the error would have been caught by the server,
which would have seen the request for <tt>coaps://high-security.example.com</tt>
and refused to serve a request containing critical options it can not adaequately process.</t>
        <t>In the unique proxy situation, ...
[ TBD:
now whose fault is it?
Can only be the client's ...
because it looked at the wildcard certificate rather than whether the host-name it was narrowing it down to is authorized to speak for high-security.example.com?
The server (operator) can barely be blamed,
for while the certificate is needlessly wide,
to the server it did look precisely like a good request.
]</t>
      </section>
    </section>
    <section anchor="thirdparty">
      <name>Third party proxy services</name>
      <t>A server that is aware of a suitable cross proxy may use the has-proxy relation to advertise that proxy.
If the protocol used towards the proxy provides name indication (as CoAP over TLS or WebSockets does),
or by using a large number of addresses or ports,
it can even advertise a (more efficient) has-unique-proxy relation.
This is particularly interesting when the advertisements are made available across transports,
for example in a Resource Directory.</t>
      <t>How the server can discover and trust such a proxy
is out of scope for this document,
but generally involves the same kind of links.
In particular, a server may obtain a link to a third party proxy from an administrator as part of its configuration.</t>
      <t>The proxy may advertise itself without the origin server's involvement;
in that case, the client needs to take additional care (see <xref target="proxy-foreign-advertisement"/>).</t>
      <figure anchor="fig-external-proxy">
        <name>HTTP based discovery and CoAP-over-WS request to a CoAP resource through a has-unique-proxy relation</name>
        <artwork><![CDATA[
Req: GET http://rd.example.com/rd-lookup?if=tag:example.com,sensor

Res:
Content-Format: application/link-format
Payload:
<coap://device0815.example.com/sensors/>;if="tag:example.com,collection",
<coap+wss://device0815.proxy.rd.example.com>;rel=has-unique-proxy;anchor="coap://device0815.example.com/"


Req: to device0815.proxy.rd.example.com on WebSocket
Host (indicated during upgrade): device0815.proxy.rd.example.com
Code: GET
Uri-Path: /sensors/

Res: 2.05 Content
Content-Format: application/link-format
Payload:
</sensors/temperature>;if="tag:example.com,sensor"
]]></artwork>
      </figure>
      <section anchor="generic-advertisements">
        <name>Generic proxy advertisements</name>
        <t>A third party proxy may advertise its availability to act as a proxy for arbitrary CoAP requests.
This use is not directly related to the protocol indication in other parts of this document,
but sufficiently similar to warrant being described in the same document.</t>
        <t>The resource type "TBDcore.proxy" can be used to describe such a proxy.
The link target attribute "proxy-schemes" can be used to indicate the scheme(s) supported by the proxy, separated by the space character.</t>
        <figure anchor="fig-6lbr-proxy">
          <name>A CoAP client discovers that its border router can also serve as a proxy, and uses that to access a resource on an HTTP server.</name>
          <artwork><![CDATA[
Req: GET coap://[fe80::1]/.well-known/core?rt=TBDcore.proxy

Res:
Content-Format: application/link-format
Payload:
<>;rt=TBDcore.proxy;proxy-schemes="coap coap+tcp coap+ws http"

Req: to [fe80::1] via CoAP
Code: GET
Proxy-Scheme: http
Uri-Host: example.com
Uri-Path: /motd
Accept: text/plain

Res: 2.05 Content
Content-Format: text/plain
Payload:
On Monday, October 25th 2021, there is no special message of the day.
]]></artwork>
        </figure>
        <t>The considerations of <xref target="proxy-foreign-advertisement"/> apply here.</t>
        <t>A generic advertised proxy is always a forward proxy,
and can not be advertised as a "unique" proxy as it would lack information about where to forward.
(A proxy limited to a single outbound protocol might in theory work as a unique proxy when using a transport in which the full default Uri-Host value is configured at setup time,
but these are considered impractical and thus not assigned a resource type here.)</t>
        <t>The use of a generic proxy can be limited to a set of devices that have permission to use it.
Clients can be allowed by their network address if they can be verified,
or by using explicit client authentication using the methods of <xref target="I-D.tiloca-core-oscore-capable-proxies"/>.</t>
      </section>
    </section>
    <section anchor="actualproxies">
      <name>Client picked proxies</name>
      <t>This section is purely informative,
and serves to illustrate that the mechanisms introduced in this document do not hinder the continued use of existing proxies.</t>
      <t>When a resource is accessed through an "actual" proxy (i.e., a host between the client and the server, which itself may have a same-host proxy in addition to that),
the proxy's choice of the upstream server is originally (i.e., without the mechanisms of this document)
either configured (as in a "chain" of proxies)
or determined by the request URI (where a proxy picks CoAP over TCP and resolves the given name for a request aimed at a coap+tcp URI).</t>
      <t>A proxy that has learned,
by active solicitation of the information or by consulting links in its cache,
that the requested URI is available through a (possibly same-host) proxy,
may use that information
in choosing the upstream transport,
to correct the URI associated with a cached response,
and to use responses obtained through one transport to satisfy requests on another.</t>
      <t>For example, if a host at coap://h1.example.com has advertised <tt>&lt;/res&gt;,&lt;coap+tcp://h1.example.com&gt;;rel=has-proxy;anchor="/"</tt>,
then a proxy that has an active CoAP-over-TCP connection to h1.example.com
can forward an incoming request for coap://h1.example.com/res through that CoAP-over-TCP connection
with a suitable Proxy-Scheme on that connection.</t>
      <t>If the host had marked the proxy point as <tt>&lt;coap+tcp://h1.example.com&gt;;rel=has-unique-proxy</tt> instead,
then the proxy could elide the Proxy-Scheme and Uri-Host options,
and would (from the original CoAP caching rules) also be allowed
to use any fresh cache representation of coap+tcp://h1.example.com/res
to satisfy requests for coap://h1.example.com/res.</t>
      <t>A client that uses a forward proxy
and learns of a different proxy advertised to access a particular resource
will not change its behavior if its original proxy is part of its configuration.
If the forward proxy was only used out of necessity
(e.g., to access a resource on the protocol not supported by the client)
it can be practical for the client to use the advertised proxy instead.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <section anchor="security-context-propagation">
        <name>Security context propagation</name>
        <t>Clients need to strictly enforce the rules of <xref target="secctx-propagation"/>.
Failure to do so,
in particular using a thusly announced proxy based on a certificate that attests the proxy's name,
would allow attackers to circumvent the client's security expectation.</t>
        <t>When security is terminated at proxies (as is in DTLS and TLS),
a third party proxy can usually not satisfy this requirement;
these transports are limited to same-host proxies.</t>
      </section>
      <section anchor="proxy-foreign-advertisement">
        <name>Traffic misdirection</name>
        <t>Accepting arbitrary proxies,
even with security context propagation performed properly,
would allow attackers to redirect traffic through systems under their control.
Not only does that impact availability,
it also allows an attacker to observe traffic patterns.</t>
        <t>This affects both OSCORE and (D)TLS,
as neither protect the participants' network addresses.</t>
        <t>Other than the security context propagation rules,
there are no hard and general rules about when an advertised proxy is a suitable candidate.
Aspects for consideration are:</t>
        <ul spacing="normal">
          <li>
            <t>When no direct connection is possible
(e.g. because the resource to be accessed is served as coap+tcp and TCP is not implemented in the client,
or because the resource's host is available on IPv6 while the client has no default IPv6 route),
using a proxy is necessary if complete service disruption is to be avoided.  </t>
            <t>
While an adversary can cause such a situation (e.g. by manipulating routing or DNS entries),
such an adversary is usually already in a position to observe traffic patterns.</t>
          </li>
          <li>
            <t>A proxy advertised by the device hosting the resource to be accessed is less risky to use than one advertised by a third party.  </t>
            <t>
The <tt>/.well-known/core</tt> resource is regarded as a source of authoritative information on the endpoint's CoAP related metadata,
and can be queried early in the discovery process,
or queried for verification (with filtering applied) after discovery through an RD.
Other resources may be less trustworthy as they may be controlled by entities not trusted with the endpoint's traffic.</t>
          </li>
        </ul>
        <!-- Note that these aspects' applicability is mutually exclusive:
When the advertisement was obtained from the target host,
that needs to be reachable. -->

<t><xref target="ead"/> describes an extension to <xref target="I-D.ietf-lake-edhoc"/> by which the client can verify that the proxy used by the client is recognized by the server.
This is similar to querying <tt>/.well-known/core</tt> for any proxies advertised there,
but happens earlier in the connection establishment,
and leaves the decision whether the proxy is legitimate to the server.</t>
        <t>It only conveys information about the URI of the proxy.
The mapping of any host name inside it to an IP address,
or of an IP address to a routing decision,
is left to the security mechanisms of the respective layers.</t>
      </section>
      <section anchor="protecting-the-proxy">
        <name>Protecting the proxy</name>
        <t>A widely published statement about a host's availability as a proxy can cause many clients to attempt to use it.</t>
        <t>This is mitigated in well-behaved clients by observing the rate limits of <xref target="RFC7252"/>,
and by ceasing attempts to reach a proxy for the Max-Age of received errors.</t>
        <t>Operators can further limit ill-effects
by ensuring that their client systems do not needlessly use proxies advertised in an unsecured way,
and by providing own proxies when their clients need them<!-- in a sense, avoid having starving clients that grab any straw at connectivity -->.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA considerations</name>
      <section anchor="link-relation-types">
        <name>Link Relation Types</name>
        <t>IANA is asked to add two entries into the Link Relation Type Registry last updated in <xref target="RFC8288"/>:</t>
        <table anchor="tab-iana">
          <name>New Link Relation types</name>
          <thead>
            <tr>
              <th align="left">Relation Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">has-proxy</td>
              <td align="left">The link target can be used as a proxy to reach the link context.</td>
              <td align="left">RFCthis</td>
            </tr>
            <tr>
              <td align="left">has-unique-proxy</td>
              <td align="left">Like has-proxy, and using this proxy implies scheme and host of the target.</td>
              <td align="left">RFCthis</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="resource-types">
        <name>Resource Types</name>
        <t>IANA is asked to add an entry into the "Resource Type (rt=) Link Target Attribute Values" registry under the Constrained RESTful Environments (CoRE) Parameters:</t>
        <t>[ The RFC Editor is asked to replace any occurrence of TBDcore.proxy with the actually registered attribute value. ]</t>
        <t>Attribute Value: core.proxy</t>
        <t>Description: Forward proxying services</t>
        <t>Reference: [ this document ]</t>
        <t>Notes: The schemes for which the proxy is usable may be indicated using the proxy-schemes target attribute as per <xref target="generic-advertisements"/> of [ this document ].</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <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>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="aliases" target="https://www.w3.org/TR/webarch/#uri-aliases">
          <front>
            <title>Architecture of the World Wide Web, Section 2.3.1 URI aliases</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="cooluris" target="https://www.w3.org/Provider/Style/URI">
          <front>
            <title>Cool URIs don't change</title>
            <author initials="T." surname="BL" fullname="Tim BL">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="lwm2m" target="https://omaspecworks.org/white-paper-lightweight-m2m-1-1/">
          <front>
            <title>White Paper – Lightweight M2M 1.1</title>
            <author>
              <organization>OMA SpecWorks</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="22" month="January" year="2024"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-23"/>
        </reference>
        <reference anchor="w3address" target="http://info.cern.ch/hypertext/WWW/Addressing/BNF.html#43">
          <front>
            <title>W3 address syntax: BNF</title>
            <author initials="T." surname="BL" fullname="Tim BL">
              <organization/>
            </author>
            <date year="1992" month="June" day="29"/>
          </front>
        </reference>
        <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="I-D.bormann-t2trg-slipmux">
          <front>
            <title>Slipmux: Using an UART interface for diagnostics, configuration, and packet transfer</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universitaet Bremen TZI</organization>
            </author>
            <author fullname="Tobias Kaupat" initials="T." surname="Kaupat">
              <organization>Lobaro UG</organization>
            </author>
            <date day="4" month="November" year="2019"/>
            <abstract>
              <t>   Many research and maker platforms for Internet of Things
   experimentation offer a serial interface.  This is often used for
   programming, diagnostic output, as well as a crude command interface
   ("AT interface").  Alternatively, it is often used with SLIP
   (RFC1055) to transfer IP packets only.

   The present report describes how to use a single serial interface for
   diagnostics, configuration commands and state readback, as well as
   packet transfer.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-slipmux-03"/>
        </reference>
        <reference anchor="I-D.amsuess-core-coap-over-gatt">
          <front>
            <title>CoAP over GATT (Bluetooth Low Energy Generic Attributes)</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   Interaction from computers and cell phones to constrained devices is
   limited by the different network technologies used, and by the
   available APIs.  This document describes a transport for the
   Constrained Application Protocol (CoAP) that uses Bluetooth GATT
   (Generic Attribute Profile) and its use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-coap-over-gatt-05"/>
        </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.ietf-core-observe-multicast-notifications">
          <front>
            <title>Observe Notifications as CoAP Multicast Responses</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) allows clients to
   "observe" resources at a server, and receive notifications as unicast
   responses upon changes of the resource state.  In some use cases,
   such as based on publish-subscribe, it would be convenient for the
   server to send a single notification addressed to all the clients
   observing a same target resource.  This document updates RFC7252 and
   RFC7641, and defines how a server sends observe notifications as
   response messages over multicast, synchronizing all the observers of
   a same resource on a same shared Token value.  Besides, this document
   defines how Group OSCORE can be used to protect multicast
   notifications end-to-end between the server and the observer clients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-observe-multicast-notifications-08"/>
        </reference>
        <reference anchor="I-D.ietf-core-href">
          <front>
            <title>Constrained Resource Identifiers</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="9" month="January" year="2024"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that represents the URI components
   in Concise Binary Object Representation (CBOR) instead of a sequence
   of characters.  This simplifies parsing, comparison, and reference
   resolution in environments with severe limitations on processing
   power, code size, and memory size.


   // (This "cref" paragraph will be removed by the RFC editor:) The
   // present revision –14 of this draft picks up comments from the
   // shepherd review and adds sections on CoAP integration and on cri
   // application-oriented literals for the Extended Diagnostic
   // Notation.  This revision still contains open issues and is
   // intended to serve as a snapshot while the processing of the
   // shepherd review is being completed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-14"/>
        </reference>
        <reference anchor="RFC8075">
          <front>
            <title>Guidelines for Mapping Implementations: HTTP to the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Castellani" initials="A." surname="Castellani"/>
            <author fullname="S. Loreto" initials="S." surname="Loreto"/>
            <author fullname="A. Rahman" initials="A." surname="Rahman"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="E. Dijk" initials="E." surname="Dijk"/>
            <date month="February" year="2017"/>
            <abstract>
              <t>This document provides reference information for implementing a cross-protocol network proxy that performs translation from the HTTP protocol to the Constrained Application Protocol (CoAP). This will enable an HTTP client to access resources on a CoAP server through the proxy. This document describes how an HTTP request is mapped to a CoAP request and how a CoAP response is mapped back to an HTTP response. This includes guidelines for status code, URI, and media type mappings, as well as additional interworking advice.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8075"/>
          <seriesInfo name="DOI" value="10.17487/RFC8075"/>
        </reference>
        <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-resource-directory-extensions">
          <front>
            <title>CoRE Resource Directory Extensions</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   A collection of extensions to the Resource Directory [rfc9176] that
   can stand on their own, and have no clear future in specification
   yet.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Constrained RESTful
   Environments Working Group mailing list (core@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/core/.

   Source for this draft and an issue tracker can be found at
   https://gitlab.com/chrysn/resource-directory-extensions.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-resource-directory-extensions-10"/>
        </reference>
        <reference anchor="I-D.ietf-lpwan-coap-static-context-hc">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Acklio</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>Institut MINES TELECOM; IMT Atlantique</organization>
            </author>
            <author fullname="Ricardo Andreasen" initials="R." surname="Andreasen">
              <organization>Universidad de Buenos Aires</organization>
            </author>
            <date day="8" month="March" year="2021"/>
            <abstract>
              <t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework.  SCHC defines a header compression mechanism adapted for Constrained Devices.  SCHC uses a static description of the header to reduce the header's redundancy and size.  While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers.  The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length.  The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages.  This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lpwan-coap-static-context-hc-19"/>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-capable-proxies">
          <front>
            <title>OSCORE-capable Proxies</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   Object Security for Constrained RESTful Environments (OSCORE) can be
   used to protect CoAP messages end-to-end between two endpoints at the
   application layer, also in the presence of intermediaries such as
   proxies.  This document defines how to use OSCORE for protecting CoAP
   messages also between an origin application endpoint and an
   intermediary, or between two intermediaries.  Also, it defines how to
   secure a CoAP message by applying multiple, nested OSCORE
   protections, e.g., both end-to-end between origin application
   endpoints, as well as between an application endpoint and an
   intermediary or between two intermediaries.  Thus, this document
   updates RFC 8613.  The same approach can be seamlessly used with
   Group OSCORE, for protecting CoAP messages when group communication
   with intermediaries is used.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-capable-proxies-07"/>
        </reference>
        <reference anchor="RFC7838">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7838"/>
          <seriesInfo name="DOI" value="10.17487/RFC7838"/>
        </reference>
        <reference anchor="RFC6763">
          <front>
            <title>DNS-Based Service Discovery</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <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="I-D.amsuess-t2trg-rdlink">
          <front>
            <title>rdlink: Robust distributed links to constrained devices</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="23" month="September" year="2019"/>
            <abstract>
              <t>   Thing to thing communication in Constrained RESTful Environments
   (CoRE) relies on URIs to link to servers.  Next to hierarchical
   configuration and short-lived IP addresses, this document introduces
   a naming scheme for devices based on cryptographic identifiers.  A
   special purpose domain is reserved for expressing those identifiers,
   and mechanisms for constrained devices to announce their names and to
   look them up are described.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-t2trg-rdlink-01"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="RFC2616">
          <front>
            <title>Hypertext Transfer Protocol -- HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="J. Gettys" initials="J." surname="Gettys"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <author fullname="H. Frystyk" initials="H." surname="Frystyk"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as "HTTP/1.1", and is an update to RFC 2068. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2616"/>
          <seriesInfo name="DOI" value="10.17487/RFC2616"/>
        </reference>
        <reference anchor="RFC6698">
          <front>
            <title>The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schlyter" initials="J." surname="Schlyter"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>Encrypted communication on the Internet often uses Transport Layer Security (TLS), which depends on third parties to certify the keys used. This document improves on that situation by enabling the administrators of domain names to specify the keys used in that domain's TLS servers. This requires matching improvements in TLS client software, but no change in TLS server software. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6698"/>
          <seriesInfo name="DOI" value="10.17487/RFC6698"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC1123">
          <front>
            <title>Requirements for Internet Hosts - Application and Support</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1123"/>
          <seriesInfo name="DOI" value="10.17487/RFC1123"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="I-D.lenders-core-dnr">
          <front>
            <title>Discovery of Network-designated CoRE Resolvers</title>
            <author fullname="Martine Sophie Lenders" initials="M. S." surname="Lenders">
              <organization>TUD Dresden University of Technology</organization>
            </author>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Thomas C. Schmidt" initials="T. C." surname="Schmidt">
              <organization>HAW Hamburg</organization>
            </author>
            <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
              <organization>TUD Dresden University of Technology &amp; Barkhausen Institut</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document specifies solutions to discover DNS resolvers that
   support encrypted DNS resolution in constrained environments.  The
   discovery is based DNS SVCB records, Router Advertisements, or DHCP.
   In particular, the proposed specification allows a host to learn DNS
   over CoAP (DoC) servers, including configurations to use DoC over
   TLS/DTLS, OSCORE, and EDHOC when resolving names.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-lenders-core-dnr-00"/>
        </reference>
        <reference anchor="I-D.silverajan-core-coap-protocol-negotiation">
          <front>
            <title>CoAP Protocol Negotiation</title>
            <author fullname="Bill Silverajan" initials="B." surname="Silverajan">
              <organization>TUT</organization>
            </author>
            <author fullname="Mert Ocak" initials="M." surname="Ocak">
              <organization>Ericsson</organization>
            </author>
            <date day="2" month="July" year="2018"/>
            <abstract>
              <t>   CoAP has been standardised as an application-level REST-based
   protocol.  When multiple transport protocols exist for exchanging
   CoAP resource representations, this document introduces a way forward
   for CoAP endpoints as well as intermediaries to agree upon alternate
   transport and protocol configurations as well as URIs for CoAP
   messaging.  Several mechanisms are proposed: Extending the CoRE
   Resource Directory with new parameter types, introducing a new CoAP
   Option with which clients can interact directly with servers without
   needing the Resource Directory, and finally a new CoRE Link Attribute
   allowing exposing alternate locations on a per-resource basis.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-silverajan-core-coap-protocol-negotiation-09"/>
        </reference>
      </references>
    </references>
    <section anchor="change-log">
      <name>Change log</name>
      <t>Since draft-ietf-core-transport-indication-03:</t>
      <ul spacing="normal">
        <li>Added appendices on alternative history and Literals beyond IP addresses.
The remaining document was not brought in sync with those new parts.</li>
      </ul>
      <t>Since draft-ietf-core-transport-indication-02:</t>
      <ul spacing="normal">
        <li>Added EAD appendix, adjusted security considerations to match.</li>
      </ul>
      <t>Since draft-ietf-core-transport-indication-01:</t>
      <ul spacing="normal">
        <li>Simplify same-host proxy behavior by referring to existing RFC7252 mandate.</li>
        <li>proxy-links= lookup: Refer to prior art.</li>
      </ul>
      <t>Since draft-ietf-core-transport-indication-00:</t>
      <ul spacing="normal">
        <li>Add section on canonical URIs that are not necessarily reachable.</li>
        <li>Clarify that the the "hosts" relation is followed transitively.</li>
        <li>Cross reference with compatible multicast-notifications concept.</li>
      </ul>
      <t>Since draft-amsuess-core-transport-indication-03:</t>
      <ul spacing="normal">
        <li>No changes (merely changing the name after WG adoption)</li>
      </ul>
      <t>Since -02 (mainly processing reviews from Marco and Klaus):</t>
      <ul spacing="normal">
        <li>Acknowledge that 'coap://hostname/' is not the proxy but a URI that (in a particular phrasing) is used to stand in for the proxy's address (while it regularly identifies a resurce on the server)</li>
        <li>Security: Referencing traffic misdirection already in the first security block.</li>
        <li>Security: Add (incomplete) considerations for unique-proxy case.</li>
        <li>Narrow down "unique" proxy semantics to those properties used by the client, allowing unique proxies to be co-hosted with forward proxies.</li>
        <li>"Client picked proxies" clarified to merely illustrate how this is compatible with them.</li>
        <li>Use of "hosts" relation sharpened.</li>
        <li>Precision on how this does and does not consider changing transports.</li>
        <li>"Related work" section demoted to appendix.</li>
        <li>Add note on DTLS session resumption.</li>
        <li>Variable renaming.</li>
        <li>Various editorial fixes.</li>
      </ul>
      <t>Since -01:</t>
      <ul spacing="normal">
        <li>Removed suggestion for generally trusted proxies;
now stating that with (D)TLS,
"a third party proxy can usually not satisfy [the security context propagation requirement]".</li>
        <li>State more clearly that valid cache entries for resources aliased through has-unique-proxy can be used.</li>
        <li>Added considerations for Multipath TCP.</li>
        <li>Added concrete suggestion and example for advertisement of general proxies.</li>
        <li>Added concrete suggestion for RD lookup extension that provides proxies.</li>
        <li>Minor editorial and example changes.</li>
      </ul>
      <t>Since -00:</t>
      <ul spacing="normal">
        <li>Added introduction</li>
        <li>Added examples</li>
        <li>Added SCHC analogy</li>
        <li>Expanded security considerations</li>
        <li>Added guidance on choice of transport, and canonical addresses</li>
        <li>Added subsection on interaction with a Resource Directory</li>
        <li>Added comparisons with related work, including rdlink and DNS-SD sketches</li>
        <li>Added IANA considerations</li>
        <li>Added section on open questions</li>
      </ul>
    </section>
    <section anchor="related-work-and-applicability-to-related-fields">
      <name>Related work and applicability to related fields</name>
      <section anchor="on-http">
        <name>On HTTP</name>
        <t>The mechanisms introduced here are similar to the Alt-Svc header of <xref target="RFC7838"/>
in that they do not create different application-visible addresses,
but provide dispatch through lower transport implementations.</t>
        <t>Unlike in HTTP, the variations of CoAP protocols each come with their unique URI schemes
and thus enable the "transport address indicated by a URI" concept.
Thus, there is no need for a distinction between protocol-id and scheme.</t>
        <t>To accommodate the message size constraints typical of CoRE environments,
and accounting for the differences between HTTP headers and CoAP options,
information is delivered once at discovery time.</t>
        <t>Using the has-proxy and has-unique-proxy with HTTP URIs as the context is NOT RECOMMENDED;
the HTTP provisions of the Alt-Svc header and ALPN are preferred.</t>
      </section>
      <section anchor="using-dns">
        <name>Using DNS</name>
        <t>As pointed out in <xref target="RFC7838"/>,
DNS can already serve some of the applications of Alt-Svc and has-unique-proxy by providing different CNAME records.
These cover cases of multiple addresses,
but not different ports or protocols.</t>
        <t>While not specified for CoAP yet (and neither being specified here),</t>
        <t>[ which is an open discussion point for CoRE -- should we? Here? In a separate DNS-SD document? ]</t>
        <t>DNS SRV records (possibly in combination with DNS Service Discovery <xref target="RFC6763"/>) can provide records that could be considered equivalent to has-unique-proxy relations.
If <tt>_coap._tcp</tt>, <tt>_coaps._tcp</tt>, <tt>_coap._udp</tt>, <tt>_coap+ws._tcp</tt> etc. were defined with suitable semantics,
these can be equivalent:</t>
        <artwork><![CDATA[
_coap._udp.device.example.com SRV 0 0 device.example.com 61616
device.example.com AAAA 2001:db8::1

<coap://[2001:db8::1]>;rel=has-unique-proxy;anchor="coap://device.example.com"
]]></artwork>
        <t>It would be up to such a specification to give details on what the link's context is;
unlike the link based discovery of this document,
it would either need to pick one distinguished context scheme for which these records are looked up,
or would introduce aliasing on its own.</t>
      </section>
      <section anchor="using-names-outside-regular-dns">
        <name>Using names outside regular DNS</name>
        <t>Names that are resolved through different mechanisms than DNS,
or names which are defined within the scope of DNS but have no universally valid answers to A/AAAA requests,
can be advertised using the relation types defined here and CoAP discovery.</t>
        <t>In <xref target="fig-rdlink"/>, a server using a cryptographic name as described in <xref target="I-D.amsuess-t2trg-rdlink"/> is discovered and used.</t>
        <figure anchor="fig-rdlink">
          <name>Obtaining a sensor value from a local device with a global name</name>
          <artwork><![CDATA[
Req: to [ff02::fd]:5683 on UDP
Code: GET
Uri-Path: /.well-known/core
Uri-Query: rel=has-proxy
Uri-Query: anchor=coap://nbswy3dpo5xxe3denbswy3dpo5xxe3de.ab.rdlink.arpa

Res: from [2001:db8::1]:5683
Content-Format: application/link-format
Payload:
<coap+tcp://[2001:db8::1]>;rel=has-unique-proxy;
  anchor="coap://nbswy3dpo5xxe3denbswy3dpo5xxe3de.ab.rdlink.arpa"


Req: to [2001:db8::1]:5683 on TCP
Code: GET
OSCORE: ...
Uri-Path: /sensors/temp
Observe: 0

Res: 2.05 Content
OSCORE: ...
Observe: 0
Payload:
39.1°C
]]></artwork>
        </figure>
      </section>
      <section anchor="multipath-tcp">
        <name>Multipath TCP</name>
        <t>When CoAP-over-TCP is used over Multipath TCP
and no Uri-Host option is sent,
the implicit assumption is that there is aliasing between URIs containing any of the endpoints' addresses.</t>
        <t>As these are negotiated within MPTCP,
this works independently of this document's mechanisms.
As long as all the server's addresses are equally reachable,
there is no need to advertise multiple addresses that can later be discovered through MPTCP anyway.
When advertisements are long-lived and there is no single more stable address,
several available addresses can be advertised (independently of whether MPTCP is involved or not).
If a client uses an address that is merely a proxy address (and not a unique proxy address),
but during MPTCP finds out that the network location being accessed is actually an MPTCP alternative address of the used one,
the client MAY forego sending of the Proxy-Scheme and Uri-Path option.</t>
        <t>[ This follows from multiple addresses being valid for that TCP connection;
at some point we may want to say something about what that means for the default value of the Uri-Host option --
maybe something like "has the default value of any of the associated addresses, but the server may only enable MPTCP if there is implicit aliasing between all of them" (similar to OSCORE's statement)?  ]</t>
        <t>[ TBD: Do we need a section analog to this that deals with (D)TLS session resumption in absence of SNI? ]</t>
      </section>
    </section>
    <section anchor="open-questions-further-ideas">
      <name>Open Questions / further ideas</name>
      <ul spacing="normal">
        <li>
          <t>OSCORE interaction: <xref target="RFC8613"/> Section 4.1.3.2 requirements place OSCORE use in a weird category between has-proxy and has-unique-proxy
(because if routing still works, the result will be correct).
Not sure how to write this down properly,
or whether it's actionable at all.  </t>
          <t>
Possibly there is an inbetween category of
"The host needs the Uri-Host etc. when accessed through CoAP,
but because the host does not use the same OSCORE KID across different virtual hosts,
it's has-unique-proxy as soon as you talk OSCORE".</t>
        </li>
        <li>
          <t>Self-uniqueness:  </t>
          <t>
A host that wants to indicate that it doesn't care about Uri-Host
can probably publish something like <tt>&lt;/&gt;;rel=has-unique-proxy</tt> to do so.  </t>
          <t>
This'd help applications justify when they can elide the Uri-Host,
even when no different protocols are involved.</t>
        </li>
        <li>
          <t>Advertising under a stable name:  </t>
          <t>
If a host wants to advertise its host name rather than its IP address during multicast, how does it best do that?  </t>
          <t>
Options, when answering from 2001:db8::1 to a request to ff02::fd are:  </t>
          <artwork><![CDATA[
<coap://myhostname/foo>,...,
<coap://[2001:db8::1]>;rel=has-unique-proxy;anchor="coap://myhostname"
]]></artwork>
          <t>
which is verbose but formally clear, and  </t>
          <artwork><![CDATA[
</foo>,...,
<coap://[2001:db8::1]>;rel=has-unique-proxy;anchor="coap://myhostname"
]]></artwork>
          <t>
which is compatible with unaware clients,
but its correctness with respect to canonical URIs needs to be argued by the client, in this sequence  </t>
          <ul spacing="normal">
            <li>understanding the has-unique-proxy line,</li>
            <li>understanding that the request that went to 2001:db8::1 was really a Proxy-Scheme/Uri-Host-elided version of a request to coap://myhostname, and then</li>
            <li>processing any relative reference with this new base in mind.</li>
          </ul>
          <t>
(Not that it'd need to happen in software in that sequence,
but that's the sequence needed to understand how the <tt>/foo</tt> here is really <tt>coap://myhostname/foo</tt>).  </t>
          <t>
If CoRAL is used during discovery, a base directive or reverse relation to has-unique-proxy would make this easier.</t>
        </li>
      </ul>
    </section>
    <section anchor="ead">
      <name>EDHOC EAD for verifying legitimate proxies</name>
      <t>This document sketches an extension to <xref target="I-D.ietf-lake-edhoc"/> that informs the server of the public address the client is using,
allowing it to detect undesired reverse proxies.</t>
      <t>[ This section is immature, and written up as a discussion starting point. Further research into prior art is still necessary. ]</t>
      <t>The External Authorization Data (EAD) item with name "Proxy CRI", label TBD24, is defined for use with messages 1, 2 and 3.</t>
      <t>A client can set this label in uncritical form, followed by a CRI (<xref target="I-D.ietf-core-href"/>) that is CBOR-encoded in a byte string as a CBOR sequence.
The transport indicated by the URI is the proxy the client chose from information advertised about the server.</t>
      <t>If a server can not determine its set of legitimate proxies,
it ignores the option (as does any EDHOC implementation that is unaware of it).</t>
      <t>If it recognizes the CRI as belonging to a legitimate proxy,
it places the label in its non-critical form in the next message to confirm the proxy choice.
Otherwise, it places the label in its critical form.
The client may then decide to discontinue using the proxy,
or to use more extensive padding options to sidestep the attack.
Both the client and the server may alert their administrators of a possible traffic misdirection.</t>
    </section>
    <section anchor="alternative-history-what-if-svcb-had-been-around-before-coap-over-tcp">
      <name>Alternative History: What if SVCB had been around before CoAP over TCP?</name>
      <t>This appendix explores a hypothetical scenario in which SVCB <xref target="RFC9460"/> was around and supported before the controversial decision to establish the "coap+tcp" scheme.
It serves to provide a fresh perspective of what logically necessary
before looking into how the facilities can be unified.</t>
      <section anchor="hypothetical-retrospecification">
        <name>Hypothetical retrospecification</name>
        <t>CoAP is specified for several transports:
CoAP over UDP, over DTLS, over TCP, over TLS and over (secure or insecure) WebSockets.
URIs of all these are expressed using the "coap" or "coaps" scheme,
depending on whether a (D)TLS connection is to be used.</t>
        <t>Any server providing CoAP services
announces not only its address
but also its SVCB Service Parameters,
including at least one of alpn and coaptransfer.</t>
        <t>For example, a host serving "coap://sensor.example.com" and "coaps://sensor.example.com"
might have these records:</t>
        <t><tt>
_coap.sensor.example.com IN SVCB 0 . alpn="coap" coaptransfer="tcp,udp" port="61616"
sensor.example.com IN AAAA 2001:db8::1
</tt></t>
        <t>A client connecting to the server loops up the name's service parameters using its system's discovery mechanisms.</t>
        <t>For example, if DNS is used, it obtains SVCB records for _coap.sensor.example.com,
and receives the corresponding AAAA record either immediately from an SVCB aware resolver
or through a second query.
It learns that the service is available through CoAP-over-DTLS (ALPN "coap")
or through unencrypted TCP or UDP, and that port 61616 needs to be used.</t>
        <t>If the server and the client do not have a transport in common,
or if one of them supports only IPv4 and the other only IPv6,
no exchange is possible;
the client may resort to using a proxy.</t>
      </section>
      <section anchor="shortcomings">
        <name>Shortcomings</name>
        <t>While the mechanism above would have unified the CoAP transports under a pair of schemes,
it would have rendered the use of IP literals impossible.
<xref target="newlit"/> provides a solution for this issue.</t>
      </section>
    </section>
    <section anchor="newlit">
      <name>Literals beyond IP addresses</name>
      <t>[
This section is placed here preliminarily:
After initial review in CoRE, this may be better moved into a separate document aiming for a wider IETF audience.
]</t>
      <section anchor="motivation-for-new-literal-ish-names">
        <name>Motivation for new literal-ish names</name>
        <t>IP literals were part of URIs from the start <xref target="w3address"/>.
Initially, they were equivalent to host names in their expressiveness,
save for their inherent difference that the former can be used without a shared resolver,
and the latter can be switched to a different network address.</t>
        <t>This equivalence got lost gradually:
Certificates for TLS (its precursor SSL has been available since 1995)
<!-- TBD cite - https://en.wikipedia.org/wiki/HTTPS or https://www.digicert.com/blog/evolution-of-ssl ? -->
have only practically been available to host names.
The Host header introduced in HTTP 1.1 <xref section="14.23" sectionFormat="of" target="RFC2616"/>
introduced name based virtual hosting in 1999.
DANE <xref target="RFC6698"/>, which provides TLS public keys augmenting the or outside of the public key infrastructure,
is only available for host names resolved through DNSSEC.
SVCB records <xref target="RFC9460"/> introduced in 2023
allow starting newer HTTP transports without going through HTTP/1.1 first,
enables load balancing, fail-over,
and enable Encrypted Client Hello --
again, only for host names resolved through DNS.</t>
        <t>This document proposes an expression for the host component of a URI
that fills that gap.
Note that no attempt is yet made to register <tt>service.arpa</tt> in the .ARPA Zone Management;
that name is used only for the purpose of discussion.</t>
        <t><cref anchor="prelim">The structure and even more the syntax used here is highly preliminary.
They serves to illustrate that the desired properties can be obtained,
and do not claim to be optimal.
As one of many aspects, they are missing considerations for normalization
and for internationalization.</cref></t>
      </section>
      <section anchor="structure-of-servicearpa">
        <name>Structure of <tt>service.arpa</tt></name>
        <t>Names under service.arpa are structured into
an optional custom prefix,
an ordered list of key-value component pairs,
and the common name service.arpa.</t>
        <t>The custom prefix can contain user defined components.
The intended use is labelling, and to differentiate services provided by a single host.
Any data is allowed within the structure of a URI (ABNF reg-name) and DNS name rules (63 bytes per segment).
(While not ever carried by DNS,
this upholds the constraints of DNS for names.
That decision may be revised later,
but is upheld while demonstrating that the desired properties can be obtained).</t>
        <t>Component pairs consist of a registered component type
(no precise registry is proposed at this early point)
followed by encoded data.
The component type "--" is special in that it concatenates the values to its left and to its right,
creating component values that may exceed 63 bytes in length.</t>
        <t>Initial component types are:</t>
        <ul spacing="normal">
          <li>
            <t>"6": The value encodes an IPv6 address
in <xref target="RFC5952"/> format, with the colon character (":") replaced with a dash ("-").  </t>
            <t>
It indicates an address of a host providing the service.  </t>
            <t>
If any address information is present,
a client SHOULD use that information to access the service.</t>
          </li>
          <li>
            <t>"4": The value encodes an IPv4 address
in dotted decimal format <xref target="RFC1123"/>, with the dot character (".") replaced with a dash ("-").  </t>
            <t>
It indicates an address of a host providing the service.</t>
          </li>
          <li>
            <t>"tlsa": The data of a DNS TLSA record <xref target="RFC6698"/> encoded in base32 <xref target="RFC4648"/>.  </t>
            <t>
Depending on the usage, this describes TLS credentials through which the service can be authenticated.  </t>
            <t>
If present,
a client MUST establish a secure connection,
and MUST reject the connection if the TLSA record's requirements are not met.</t>
          </li>
          <li>
            <t>"s": Service Parameters <xref target="RFC9460"/>).
SvcbParams in base32 encoding of their wire format.  </t>
            <t>
TBD: There is likely a transformation of the parameters' presentation format that is compatible with the reuqirements of the authority component,
but this will require some more work on the syntax.  </t>
            <t>
If present,
a client SHOULD use these hints to establish a connection.  </t>
            <t>
TBD: Encoding only the SvcParams and not priorities and targets appears to be the right thing to do for the immediate record,
but does not enable load balancing and failover.
Further work is required to explore how those can be expressed,
and how data pertaining to the target can be expressed,
possibly in a nested structure.</t>
          </li>
        </ul>
      </section>
      <section anchor="syntax-of-servicearpa">
        <name>Syntax of <tt>service.arpa</tt></name>
        <sourcecode type="abnf"><![CDATA[
name = [ custom ".-." ] *(component) "service.arpa"

custom = reg-name
component = 1*63nodot "." comptype "."
comptype = nodotnodash /  2*63nodot

; unreserved/subdelims without dot
nodot  = nodotnodash / "-"
; unreserved/subdelims without dot or dash
nodotnodash = ALPHA / DIGIT / "_" / "~" / sub-delims

; reg-name and sub-delims as in RFC3986
]]></sourcecode>
        <t>Due to <xref target="RFC3986"/>'s rules,
all components are case insensitive and canonically lowercase.</t>
        <t>Note that while using the IPvFuture mechanism of <xref target="RFC3986"/> would avoid compatibility issues around the 63 character limit
and some of the character restrictions,
it would not resolve the larger limitation of case insensitivity.</t>
      </section>
      <section anchor="processing-servicearpa">
        <name>Processing <tt>service.arpa</tt></name>
        <t>A client accessing a resource under a service.arpa name
does not consult DNS,
but obtains information equivalent to the results of a DNS query from parsing the name.</t>
        <t>DNS resolvers should refuse to resolve service.arpa names.
(They would have all the information needed to produce sensible results,
but operational aspects would need a lot of consideration;
future versions of this document may revise this).</t>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <t>TBD: For SvcParams, the examples are inconsistent with the base32 recommendation;
they serve to explore the possible alternatives.</t>
        <ul spacing="normal">
          <li>http://s.alpn_h2c.6.2001-db8--1.service.arpa/ -- The server is reachable on 2001:db8::1 using HTTP/2</li>
          <li>https://mail.-.tlsa.amaqckrkfivcukrkfivcukrkfivcukrkfivcukrkfivcukrkfivcukrk.service.arpa/ -- No address information is provided, the client needs to resort to other discovery mechanisms.
Any server is eligible to serve the resource if it can present a (possibly self-signed) certificate whose public key SHA256 matches the encoded value.
The "mail.-." part is provided to the server as part of the Host header,
and can be used for name based virtual hosting.</li>
          <li>coap://s.coaptransfer_tcp_coapsecurity_edhoc_oauth-aud_.6.2001-db8--1.service.arpa/ -- The server is reachable using CoAP over TCP with EDHOC security at 2001:db8::1. (The SVCB parameters are experimental values from <xref target="I-D.lenders-core-dnr"/>).</li>
        </ul>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document heavily builds on concepts
explored by Bill Silverajan and Mert Ocak in <xref target="I-D.silverajan-core-coap-protocol-negotiation"/>,
and together with Ines Robles and Klaus Hartke inside T2TRG.</t>
      <t>[ TBD: reviewers
Marco
Klaus
]</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91965Ib2ZHe/3qKWtBhAlwATTZnqGFzRtyebo7YscPLsnuW
sZbk6QKqAJRYqIKqCg1CvVT4HfwifgD/st/ET+LMLzPPOQWgyRnt2hG2FCGx
gcKpc8mT1y8zR6NR1OZtkZ3EZ9Xp2/htXbXVtCriizLNp0mbV2WUVtMyWdIT
aZ3M2lGetbPRtKqzUVsnZbOqavrMPT16+FXUtEmZ/pwUVUk/aut1FuWrGv9q
2uOHD58+PI7o4ZO4adNolZ9EMf2rzqf0yf1t1tynv2kOnT/SbNUu6JPH/Hez
XdbZrPEPNDSF7ifTarlKwgHpg2VWtvQIfcA/WU/8M2XFj9Acy6rNZ3mW6mdJ
nSUntBNtVpdZG23mvEnvXkQfNvKPYfw+m8Q/5uWHvJwPee8+bofxT+8uhnFS
5ElDn0bJul1U9Uk0ivOS3n42jk+Xzf/87w1PQnb1bFHnTZsnZfDNtFqXbb09
iU/XvDUJfZQtk7w4iaf29D8ky2adNc2Y1kGjz9ZFIeO9Suo2L7P4slot8iz+
MSvTrOZBq5oWcPXTeXxeZ02alfFPZX5DX+XtNq5m8VU2XZRVUc239GwymdTZ
DT9uT8spZRlt2MusWC6qov0LfTCOHz3kCdMgJ8Gj0yqlqZyPHj56+ORpuKDf
ZfUyKbd+QUuZ7riQef5Dux6lMsw4zaKyosdbmuZJlJcz/0csO5w1/E8iESHh
03q6yNts2q7rjJfULrL4fVUXafw+TzM+rWF8SV8TncbH48fjR3xYNhIGsuOK
8R/s2PvHZ/KOpJ7z6hdtu2pOjo42m81483hMzxxdvTvaZJOE3n50b13nIz/i
tKoK+qQ7zTP6kN/cxGlV3m/pTJNynh14vxzoVb6Mv//xS3Mg6ruhRdZHl+22
yI5oePpFsVkeLzvvfs8bFL9NVlkd/6//8l+JeueLdpPx/8avjl/Fj8aP7tqI
N69O48tVNqUd/dAcnE61TBp6YMMPYFIbfttoxW8bFf5NI5rV6NHo0RGNcjE6
H4OlFMmHbJSlC7r69PHmcZIyHXR3rvf+cayfExso2+TjSfz96x96v3bvaK5M
TuMp3ewxndpiSzNss4/t0fv3749O5Q10fY9o8PGiXRb3vnqMQdKkpVEfPX16
PHr4ZHT8NIpGoxHdFroJxEui6Ioo7qwq+U8i6jQ+Xa0K5Yyet/aZ1Q7j29u/
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
9e53Yw+ylxAPrT1CvZ0Iv+GgzP8Gl0KZb17UAAA=

-->

</rfc>
