<?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-02" category="std" consensus="true" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>CoAP Protocol Indication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-transport-indication-02"/>
    <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="March" day="13"/>
    <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>
Note that in some applications, servers produce representations based on unverified user input.
In such cases, and more so when multiple applications share a security context, the advertisements' provenance may need to be considered.</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. -->

</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">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="S. Lemay" initials="S." surname="Lemay">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan">
              <organization/>
            </author>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor">
              <organization/>
            </author>
            <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="11" month="July" year="2022"/>
            <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-02"/>
        </reference>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <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="24" month="October" year="2022"/>
            <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-05"/>
        </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="6" month="March" year="2023"/>
            <abstract>
              <t>   The Constrained Resource Identifier (CRI) is a complement to the
   Uniform Resource Identifier (URI) that serializes 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.


   // The present revision -12 of this draft adds a registry that is
   // intended to provide full coverage for representing a URI scheme
   // (and certain text strings used in their place) as negative
   // integers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-href-12"/>
        </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">
              <organization/>
            </author>
            <author fullname="S. Loreto" initials="S." surname="Loreto">
              <organization/>
            </author>
            <author fullname="A. Rahman" initials="A." surname="Rahman">
              <organization/>
            </author>
            <author fullname="T. Fossati" initials="T." surname="Fossati">
              <organization/>
            </author>
            <author fullname="E. Dijk" initials="E." surname="Dijk">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="M. Koster" initials="M." surname="Koster">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok">
              <organization/>
            </author>
            <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="13" month="March" 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-05"/>
        </reference>
        <reference anchor="RFC7838">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P. McManus" initials="P." surname="McManus">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." surname="Reschke">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson">
              <organization/>
            </author>
            <author fullname="F. Palombini" initials="F." surname="Palombini">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <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-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="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:
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
eIcLFv0fylCRDpioAAA=

-->

</rfc>
