<?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-03" 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-03"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="23"/>
    <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="25" month="August" year="2023"/>
            <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-22"/>
        </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="23" month="October" year="2023"/>
            <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-07"/>
        </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="10" month="July" year="2023"/>
            <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 -13 of this draft picks up some additional
   // discussion points and is intended as input to the CoRE WG meeting
   // at IETF 117.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-13"/>
        </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="13" month="March" year="2023"/>
            <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-08"/>
        </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="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-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="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:
H4sIAAAAAAAAA91963LjVpLmfzwFRt4YkW6Sqkv70irbtbJUbleM6zKSPI6J
7o4WSIAiukCAgwOKxdHUxr7Dvsg+wP7afZN9ks38MvOcA5KqavdMbMRudURb
JIFzzZPXL/OMx+OkK7uqOE3Pm7O36du26ZpZU6Uv67ycZV3Z1EnezOpsSU/k
bTbvxmXRzcezpi3GXZvVbtW09J1/evzoaeK6rM7/nFVNTS917bpIylWLv1z3
5NGj3z16ktDDp6nr8mRVniYp/dWWM/rmeFu4Y/pMY+h9yItVt6BvnvJnt122
xdyFBxwNof/NrFmusrhB+mJZ1B09Ql/wK+tpeKZu+BEaY9105bwscv0ua4vs
lFaiK9q66JLNLS/S5Yvk3Ub+GKW/FNP0p7J+V9a3I16799tR+vPly1GaVWXm
6NskW3eLpj1NxmlZU+/nk/Rs6f7X/3A8CFnV80Vbuq7M6uiXWbOuu3Z7mp6t
eWky+qpYZmV1ms7s6f+cLd26cG5C80jqpl3S8t8Vp0lZz8OHVAZSOP6TVlJ2
+qydLcqumHXrtkibedotivSXpq3y9JcyL3hSo/SKfqbtTJ9Mnk4e85ysJTRk
s0rxr2lpZX55ei59ZO1tQau66LqVOz052Ww2k83TCT1zcn15simmGfV+8tm6
LcehxVnTVPRNf5jn9CX37NK8qY87mnpW3xYH+pd1vC6X6fc/fWoMtEl3NMn2
5KrbVsUJNU9vVJvlk2Wv7194gdK32apo0//9X/8bbfLtotsU/P/pqyev0seT
xw8txJtXZ+nVqpjRir5zB4fTLDNHD2z4AQxqw72NV9zbuAo9jWlU48fjxyfU
ysvxxQQnr8reFeMiX9AJSZLxeJxmUyIRIuQkuaZ9PG9q/ljWRZ6erVaVHstw
sAd8zkfp/f3fXf5w/tWTL558+DBMS5dmd0Rf2bQiirijSeflfF60dGRSf8pd
Mvj5gl69uP7papRen9Of+Ivo5aqZvSs6Nxwl03WXVtnsHTWYbrItHd50XZfz
LROZK9Isz1si2sJNaLQl7+xszQczXcm+uJQO27Ksm6q53abERuQHR1Nw6ZSo
JU9pMtGxo4k8p4l8/eTrrz98SKi34v2KeyBy5WOLcxBNIZomPZuleXFXzopR
wj3RF82qK5flvxbUilCbS9d8jGX0E1nwZZnnVZEknzFraJt8LSfl/rMy+vjh
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

-->

</rfc>
