Internet-Draft ShoPinC July 2025
Amsüss Expires 25 January 2026 [Page]
Workgroup:
CoRE
Internet-Draft:
draft-amsuess-core-shopinc-latest
Published:
Intended Status:
Informational
Expires:
Author:
C. Amsüss

Short Paths in CoAP

Abstract

Applications built on CoAP face a conflict between the technical need for short message sizes and the interoperability requirement of following BCP190 and thus registering (relatively verbose) well-known URI paths. This document introduces an option that allows expressing well-known paths in as little as two bytes.

About This Document

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

Status information for this document may be found at https://datatracker.ietf.org/doc/draft-amsuess-core-shopinc/.

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

Source for this draft and an issue tracker can be found at https://github.com/chrysn/shopinc.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 25 January 2026.

Table of Contents

1. Introduction

[ This is a -00, please read the abstract. ]

1.1. Conventions and Definitions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

This document assumes basic familiarity with CoAP ([RFC7252]), in particular its Uri-* options.

2. The Short-Uri-Path option

The Short-Uri-Path option expresses a request's URI path in a more compact form.

The Short-Uri-Path option represents a particular path, and is thus equivalent to any number of Uri-Path options. Those paths are typically in a "/.well-known" location as described in [RFC8615]. The option values are coordinated by IANA in the Short-Uri-Path registry established in this document.

A client may use the option instead of the Uri-Path option if there is a suitable value that can express the requested path. Unless the client can be assured that the server supports it (e.g. because the specification describing the interaction mandates support for the option in the server) it SHOULD fall back to sending the path explicitly if it receives an error indicating that the option was not understood (otherwise, it would have limited interoperability).

A server receiving the option with an unknown value MUST treat it as an unprocessable critical option, returning 4.02 Bad Option and MUST NOT return a 4.04 Not Found response, because the equivalent path may be present on the server. A server that supports a Short-Uri-Path value MUST also support the equivalent request composed of Uri-Path components.

Table 1: Short-Uri-Path Option Summary (C = Critical, U = Unsafe, N = NoCacheKey, R = Repeatable)
No. C U N R Name Format Len. Default
CPA13 x     x Short-Uri-Path opaque any (none)

RFC-Editor: This document uses the CPA (code point allocation) convention described in [I-D.bormann-cbor-draft-numbers]. For each usage of the term "CPA", please remove the prefix "CPA" from the indicated value and replace the residue with the value assigned by IANA; perform an analogous substitution for all other occurrences of the prefix "CPA" in the document. Finally, please remove this note.

The Short-Uri-Path option has an opaque value. It is a critical and safe-to-forward option that is part of the cache key, used in CoAP requests. Table 1 summarizes these, extending Table 4 of [RFC7252]). Its OSCORE treatment is as Class E ([RFC8613]).

These properties only deviate from the Uri-Path (for which it stands in) in that this option is safe to forward. This has unfortunate consequences for the interactions with the Proxy-URI option, but is generally desirable: It allows the option to be used with proxies that do not implement the option.

A proxy MAY expand or introduce a Short-Uri-Path when forwarding a request, in particular for serving cached responses, as long as this introduces no new errors to the client.

2.1. Interaction with other options

The option is mutually exclusive with the Uri-Path option. Receiving both options in a single request MUST treated like the presence of a critical request option that could not be processed (that option being either the Short-Uri-Path option or the conflicting option).

The Short-Uri-Path option MUST NOT be used in combination with the Proxy-Uri option (or the similar Proxy-CRI option (of [I-D.ietf-core-href])) by clients, and proxies that convert Uri-* options into Proxy-Path MUST expand any Short-Uri-Path if they know the value. By the (de)composition rules of Proxy-Uri and Short-Uri-Path being safe-to-forward, a proxy is allowed to combine the option with Proxy-Uri (or Proxy-CRI) when it combines the Uri-* options. In such a combined message, the Uri-Path segments to which the Short-Uri-Path corresponds are appended to the path as if all components were present as individual options in the request without conflicting. Servers that support both Short-Uri-Path and Proxy-URI/-CRI SHOULD process requests accordingly. (This is not a strict requirement, as there are no known implementations of proxies that actually ).

2.2. Repeated use

If the document defining the registered value of the first Short-Uri-Path option allows it, further Short-Uri-Path options may be added after that. Their value is not expanded through the Short-Uri-Path IANA registry, but according to rules set up in that particular registration. To be implementable on a wide variety of platforms, those rules should allow expansion into Uri-Path options in an iterative way (i.e., any added Short-Uri-Path option corresponds only to appended Uri-Path options, or cause a 4.02 Bad Option error).

Examples of rules are:

  • Options after the first are treated exactly like Uri-Path options.

  • There can be only one added Short-Uri-Path option, and its opaque value is looked up in a table shaped like the Short-Uri-Path IANA registry.

2.3. Choice of the option number

TBD: Rephrase this to either be useful for readers of the final document who can thus learn how the option number namespace is managed, or remove before publication.

  • It's already 1+1 -- we generally do try to keep even the 1+1 high so that later option typically paired with a low option (like EDHOC paired with OSCORE) can use the small delta. In this case, there's a good reason (being ordered before Uri-Query) though, and I don't expect that any other option would need this particular property (especially given that this option on its own has an extensible value range).

3. Initial Short-Uri-Path values

This document registers values for the following well-known URIs:

TBD: Ask BRSKI for a description

For none of these, the repeated use of the option is specified; note that both are commonly used with Uri-Query options.

4. Security Considerations

Having alternative expressions for information that is input to policy decisions can be problematic when the mechanism performing the check has a different interpretation of the presented data than the mechanism at time of use. That concern is not new to this document: Both the Proxy-Uri of [RFC7252] and the Proxy-Cri option of [I-D.ietf-core-href] have the same properties in that regard. The appropriate behavior is for policy checkers to reject any request that contains critical options that is not understood; the application protected by the checker may provide the checker with an allow-list of options that it will treat as unchecked input.

5. IANA Considerations

5.1. CoAP option: Short-Uri-Path

IANA is requested to enter an one option into the CoAP Option Numbers registry in the CoRE Parameters group:

  • Number: CPA13

  • Name: Short-Uri-Path

  • Reference: this document

5.2. Short-Uri-Path registry

IANA is requested to establish a new registry in the CoRE parameters group: Values of the first Short-Uri-Path option in a CoAP request correspond to a URI path according to this registry.

The policy for adding any value is IETF Review (as described in [RFC8126]). Change control for the registry follows this document's publication stream. Initial values are given in Table 2.

Entry fields are:

  • First option value.

    An arbitrary length byte sequence given in hexadecimal format; this value needs to be unique within this registry.

    The most significant bit of the first byte can not be 1.

  • Simple expanded path.

    This text is the URI path (starting with /) that the option, when present only once in a request, is expanded to.

    This field may be empty if the document describes that the option needs to be repeated when using this first value.

  • Reference.

    A document that requested the allocation, and describes whether the option may be repeated after this first value, and how later values are expanded

Reviewer instructions:

The reviewer is instructed to be frugal with the 128 single-byte values, focusing on applications that are expected to be useful in different constrained ecosystems.

The expanded path (or paths) are expected to be well-known paths at the time of writing, but it is up to the reviewers to exceptionally also admit paths that are not well-known.

If the registration foresees updates, those should always just allow previously unacceptable values into new path segments, and not alter the semantics of previously valid expansions.

Table 2: Initial values for the Short-Uri-Path registry
First option value Simple expanded path Reference
(empty) /.well-known/core Section 3 of this document
00 /.well-known/rd Section 3 of this document, and [RFC9176]

6. References

6.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC7252]
Shelby, Z., Hartke, K., and C. Bormann, "The Constrained Application Protocol (CoAP)", RFC 7252, DOI 10.17487/RFC7252, , <https://www.rfc-editor.org/rfc/rfc7252>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.

6.2. Informative References

[I-D.bormann-cbor-draft-numbers]
Bormann, C., "Managing CBOR codepoints in Internet-Drafts", Work in Progress, Internet-Draft, draft-bormann-cbor-draft-numbers-06, , <https://datatracker.ietf.org/doc/html/draft-bormann-cbor-draft-numbers-06>.
[I-D.ietf-core-href]
Bormann, C. and H. Birkholz, "Constrained Resource Identifiers", Work in Progress, Internet-Draft, draft-ietf-core-href-23, , <https://datatracker.ietf.org/doc/html/draft-ietf-core-href-23>.
[RFC8126]
Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, , <https://www.rfc-editor.org/rfc/rfc8126>.
[RFC8613]
Selander, G., Mattsson, J., Palombini, F., and L. Seitz, "Object Security for Constrained RESTful Environments (OSCORE)", RFC 8613, DOI 10.17487/RFC8613, , <https://www.rfc-editor.org/rfc/rfc8613>.
[RFC8615]
Nottingham, M., "Well-Known Uniform Resource Identifiers (URIs)", RFC 8615, DOI 10.17487/RFC8615, , <https://www.rfc-editor.org/rfc/rfc8615>.
[RFC8790]
Keränen, A. and M. Mohajer, "FETCH and PATCH with Sensor Measurement Lists (SenML)", RFC 8790, DOI 10.17487/RFC8790, , <https://www.rfc-editor.org/rfc/rfc8790>.
[RFC9175]
Amsüss, C., Preuß Mattsson, J., and G. Selander, "Constrained Application Protocol (CoAP): Echo, Request-Tag, and Token Processing", RFC 9175, DOI 10.17487/RFC9175, , <https://www.rfc-editor.org/rfc/rfc9175>.
[RFC9176]
Amsüss, C., Ed., Shelby, Z., Koster, M., Bormann, C., and P. van der Stok, "Constrained RESTful Environments (CoRE) Resource Directory", RFC 9176, DOI 10.17487/RFC9176, , <https://www.rfc-editor.org/rfc/rfc9176>.

Appendix A. Further development

Several possible further directions are anticipated in this document, but not specified at this point in time; they are left for further documents:

Appendix B. Open questions

This section will be gone by the time this document is published.

Acknowledgments

This document was created out of discussion with Esko Dijk and Michael Richardson. Care to become authors?

Author's Address

Christian Amsüss
Austria