Constrained RESTful Environments (CoRE) L. Toutain
Internet-Draft IMT Atlantique
Intended status: Standards Track 1 June 2026
Expires: 3 December 2026
Private SID Translation for CORECONF
draft-toutain-core-private-sid-translation-00
Abstract
This document describes a mechanism for translating privately
assigned YANG SID values to globally allocated SIDs, enabling
constrained devices to use compact local identifiers while remaining
interoperable with standard CORECONF implementations.
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 3 December 2026.
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Toutain Expires 3 December 2026 [Page 1]
Internet-Draft private-sid-translation June 2026
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
2. Private SID Computation . . . . . . . . . . . . . . . . . . . 3
2.1. Offset . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Processing and Interoperability . . . . . . . . . . . . . . . 4
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.1. SCHC Management . . . . . . . . . . . . . . . . . . . . . 5
4.2. PEN . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3. Other SDOs . . . . . . . . . . . . . . . . . . . . . . . 6
5. SID Allocation Strategy . . . . . . . . . . . . . . . . . . . 6
5.1. Example: SCHC Rule Data Model . . . . . . . . . . . . . . 7
6. SCHC Considerations . . . . . . . . . . . . . . . . . . . . . 12
6.1. sid-translation CDA . . . . . . . . . . . . . . . . . . . 13
7. Security Considerations . . . . . . . . . . . . . . . . . . . 14
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.1. Normative References . . . . . . . . . . . . . . . . . . 14
9.2. Informative References . . . . . . . . . . . . . . . . . 15
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 16
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16
1. Introduction
YANG SID identifiers [I-D.ietf-core-sid] are designed to be globally
unique, ensuring that any node from any YANG Data Model can be
unambiguously identified without conflict across implementations and
deployments. SIDs are compact integers, far smaller than their ASCII
path equivalents, and their delta encoding in CBOR maps [RFC9254]
further reduces the on-wire size.
However, on very constrained networks — such as LPWANs operating
under strict duty cycles or satellite links with tight bandwidth
budgets — even a few extra bytes per message can have a significant
impact on energy consumption and transmission cost. In these
environments, the globally allocated SID values, which may require
two or more bytes in CBOR encoding, can still be considered too
large.
This document defines a mechanism for using small negative integers
as private SID aliases. Negative SIDs have no meaning in the global
allocation scheme and encode in a single byte in CBOR for values in
the range -1 to -24. A device can therefore maintain a local
translation table mapping each official SID to a private negative
alias, use the compact alias in all on-air exchanges, and perform the
substitution to the canonical SID when interoperability with standard
CORECONF implementations is required.
Toutain Expires 3 December 2026 [Page 2]
Internet-Draft private-sid-translation June 2026
For reason of simplicity this translation is purely arithmetic and
applied to the whole module.
This approach is intended for closed deployments where both endpoints
share the same translation table and full CORECONF interoperability
is not a requirement.
1.1. Requirements Language
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.
2. Private SID Computation
Each YANG Data Model is assigned a contiguous range of globally
allocated SIDs. The private SID translator uses that allocation to
derive a compact negative alias for every node in the model according
to the following formula:
privateSID = (offset - 1) - (current_sid - entry_point)
where:
* entry_point is the lowest SID in the official range allocated to
the model, found in the entry-point field of the assignment-range
list in the .sid file ([RFC9595]).
* current_sid is the globally allocated SID of the node to be
translated.
* offset is a non-positive integer that shifts the private range to
avoid overlapping with other translated models (e.g., 0 for the
first model).
With offset = 0, the node whose current_sid equals entry_point maps
to -1, the next node maps to -2, and so on. The resulting private
SIDs form a dense sequence of negative integers starting from -1,
each encoding in a single byte in CBOR for values in the range -1 to
-24 [RFC8949].
The inverse translation is:
current_sid = entry_point - (privateSID - offset + 1)
Toutain Expires 3 December 2026 [Page 3]
Internet-Draft private-sid-translation June 2026
Both endpoints MUST be configured with identical values of
entry_point and offset for the translation to be consistent. The
translation table is therefore fully determined by these two
parameters together with the official SID range of the model.
2.1. Offset
The offset parameter allows multiple YANG Data Models to be
translated into non-overlapping regions of the private SID space.
The first module SHOULD use offset = 0, so that its first node maps
to private SID -1 and the translated range starts at the most compact
encoding possible.
When a second module must also be translated, its offset MUST be set
so that its range does not overlap with the first module. If the
first module covers N SIDs (i.e., its official SID range has N
entries), then the second module MUST use:
offset = -N
More generally, each additional module uses an offset equal to the
negative of the cumulative number of SIDs already allocated to
previously translated modules. This ensures that all private SIDs
remain distinct and that each endpoint can unambiguously determine
which module a received private SID belongs to.
3. Processing and Interoperability
Private SID translation is a wire-encoding optimization applied
exclusively when transmitting or receiving datastore elements over a
constrained link. It MUST NOT be used as an internal representation
for data processing.
Any validation, comparison, augmentation, or other processing of YANG
data MUST be performed using the official SID values. An
implementation MUST translate incoming private SIDs back to their
official counterparts before passing data to any processing layer,
and MUST translate outgoing data to private SIDs only at the point of
serialization.
If a YANG Data Model has not been configured for private SID
translation, its SIDs are transmitted as-is, using their official
values. Translation is therefore purely opt-in per model:
untranslated models and translated models can coexist within the same
message, each identified by whether the SID falls in the negative
(private) or positive (official) range.
Toutain Expires 3 December 2026 [Page 4]
Internet-Draft private-sid-translation June 2026
4. Use Cases
4.1. SCHC Management
SCHC [RFC8724] compresses IPv6, UDP, and CoAP headers by applying
rules stored in a Static Context shared between two entities. When
the Static Context needs to be updated, management messages must be
exchanged between these two entities.
In this deployment, the only YANG Data Model in use is the SCHC Rule
Data Model [RFC9363]. Both endpoints are pre-configured with the
same private SID translation table covering exactly that model, and
no other YANG module is expected to be exchanged over the link.
There is therefore no risk of SID collision with another data model,
and full CORECONF interoperability with third-party implementations
is not required.
The SCHC SID allocation [RFC9363] has already been manually designed
to optimize delta encoding: nodes are ordered so that consecutive
siblings stay within a delta range of 23, which allows each CBOR map
key to be encoded in a single byte.
However, SCHC rules make extensive use of identityref leaves (field-
id, direction-indicator, matching-operator, comp-decomp-action) to
allow easy extensibility. Unlike map keys, identityref values are
encoded as absolute SIDs, not as deltas. Even though the SCHC SIDs
are relatively small (around 2550-2950), each identityref value still
requires 3 bytes of CBOR encoding. A typical rule entry contains
four such identityrefs, contributing 12 bytes per field entry in
overhead.
Private SID translation addresses both costs: delta keys become small
negative integers (one byte each), and identityref values mapped into
the -1 to -24 range also encode in a single byte, reducing the per-
entry identityref overhead from 12 bytes to 4.
Note that if the Data Model is augmented, the additional nodes can
either be covered by a separate private SID zone defined with offset
or left with their official SIDs.
An illustration of this translation applied to an IPv6/UDP/CoAP
compression rule is provided in Section 5.1.
Toutain Expires 3 December 2026 [Page 5]
Internet-Draft private-sid-translation June 2026
4.2. PEN
Private Enterprise Numbers (PENs) [RFC9371] are IANA-assigned
identifiers used by organizations to define their own private SID
ranges, following the formula described in [RFC9595]. Since PENs can
reach values up to 2^32, the resulting SID values can be very large
and require up to 9 bytes of CBOR encoding.
Even if delta encoding is used to limit the impact of large SID
values, the base SID still appears in full at least once per message.
The cost may therefore be significant for short messages such as
FETCH or iPATCH requests.
4.3. Other SDOs
SID ranges are allocated globally by IANA following [RFC9595]. The
IETF receives the first million values (1 to 999,999). Within this
range, most IETF YANG Data Models are assigned SIDs in the low
thousands, requiring at most 3 bytes of CBOR encoding per absolute
value, and benefiting from single-byte delta keys within a well-
ordered model.
Other Standards Development Organizations (SDOs) such as ETSI, 3GPP,
or oneM2M receive ranges starting in the millions. Their SID values
immediately require 5 bytes of CBOR encoding for absolute references,
and even delta keys spanning tens of thousands of positions may cost
3 to 5 bytes. This represents a significant overhead for any
deployment over constrained networks — precisely the environments
where those SDOs are often active (e.g., NB-IoT, LoRaWAN, or Zigbee-
based management).
Private SID translation levels this asymmetry: regardless of where a
SID range falls in the global allocation, the entire model can be
remapped to a dense set of small negative integers, giving any SDO
the same on-wire efficiency that the IETF enjoys by virtue of its
early allocation.
5. SID Allocation Strategy
The ordering of nodes within the official SID range directly
determines which private SIDs they receive. Since the formula maps
the node at entry_point to offset - 1 (e.g., -1 when offset=0),
entry_point+1 to offset - 2 (e.g., -2), and so on, nodes that appear
most frequently in on-wire messages SHOULD be allocated the lowest
offsets from entry_point so that they receive the smallest private
SIDs and benefit from single-byte CBOR encoding (values -1 to -24).
Toutain Expires 3 December 2026 [Page 6]
Internet-Draft private-sid-translation June 2026
For a YANG Data Model containing identityref leaves, the values of
those identities are the elements that appear most often in
serialized instances. The SID allocation SHOULD therefore place the
most-used identity values at the beginning of the range, ahead of
structural nodes and less-frequent identities.
5.1. Example: SCHC Rule Data Model
In the SCHC Rule Data Model [RFC9363], every compression rule entry
contains at least one Matching Operator (MO), one Compression/
Decompression Action (CDA), and a Field Length function. These three
categories of identityref appear in every field descriptor of every
rule and are therefore the most bandwidth-sensitive values.
The allocation for the SCHC Rule Data Model uses entry_point = 2551
and offset = 0. The first 24 entries (private SIDs -1 to -24) cover
MO, CDA, Direction Indicator, and Field Length identities, all
encoding in a single CBOR byte. Field Identifiers (FID) start at
rank 24 (private SID -25) and require two bytes, which remains
acceptable since a FID appears once per field descriptor whereas MO,
CDA, and FL appear in every entry.
Toutain Expires 3 December 2026 [Page 7]
Internet-Draft private-sid-translation June 2026
SID Private Identity
---- ------- ------------------------------
2551 -1 mo-equal
2552 -2 mo-ignore
2553 -3 mo-match-mapping
2554 -4 mo-msb
2555 -5 cda-not-sent
2556 -6 cda-value-sent
2557 -7 cda-mapping-sent
2558 -8 cda-lsb
2559 -9 cda-compute
2560 -10 cda-deviid
2561 -11 cda-appiid
2562 -12 di-bidirectional
2563 -13 di-down
2564 -14 di-up
2565 -15 fl-length-bits
2566 -16 fl-length-bytes
2567 -17 fl-token-length
2568 -18 fl-variable
2569 -19 fl-variable-bits
2570 -20 (reserved)
2571 -21 space-id-coap
2572 -22 (reserved)
2573 -23 (reserved)
2574 -24 (reserved) ← last single-byte encoding
---- ------- ------------------------------
2575 -25 fid-ipv6-version
2576 -26 fid-ipv6-trafficclass
2577 -27 fid-ipv6-trafficclass-ds
2578 -28 fid-ipv6-trafficclass-ecn
2579 -29 fid-ipv6-flowlabel
2580 -30 fid-ipv6-payload-length
2581 -31 fid-ipv6-nextheader
2582 -32 fid-ipv6-hoplimit
2583 -33 fid-ipv6-deviid
2584 -34 fid-ipv6-devprefix
2585 -35 fid-ipv6-appiid
2586 -36 fid-ipv6-appprefix
2590 -40 fid-udp-dev-port
2591 -41 fid-udp-app-port
2592 -42 fid-udp-length
2593 -43 fid-udp-checksum
... ... ...
Figure 1: Private SID allocation for the SCHC Rule Data Model
Toutain Expires 3 December 2026 [Page 8]
Internet-Draft private-sid-translation June 2026
The following figure shows an IPv6/UDP/CoAP compression rule with
private SID translation applied. All delta keys in CBOR maps become
negative because the private SID delta equals the negative of the
official delta: p(child) - p(parent) = -(child - parent).
Identityref values (field-id, direction-indicator, matching-operator,
comp-decomp-action) are also replaced by their private SID aliases.
Target values are encoded as h’hex’.
The following example shows the translation from a SCHC rule into the
private SID address space. The start of the rule in JSON is given
for clarity. The full Set or Rules contains 5 compression rules.
The file before translation is 3994 byte long and after translation
3057, so a compression rate of 23 %.
{
"ietf-schc:schc": {
"rule": [
{
"entry": [
{
"entry-index": 0,
"field-id": "ietf-schc:fid-ipv6-version",
"field-length": 4,
"field-position": 1,
"direction-indicator": "ietf-schc:di-bidirectional",
"matching-operator": "ietf-schc:mo-equal",
"comp-decomp-action": "ietf-schc:cda-not-sent",
"target-value": [
{
"index": 0,
"value": "Bg=="
}
]
},
{
"entry-index": 1,
"field-id": "ietf-schc:fid-ipv6-trafficclass",
"field-length": 8,
"field-position": 1,
"direction-indicator": "ietf-schc:di-bidirectional",
"matching-operator": "ietf-schc:mo-ignore",
"comp-decomp-action": "ietf-schc:cda-value-sent",
"target-value": [
{
"index": 0,
"value": "AA=="
}
]
Toutain Expires 3 December 2026 [Page 9]
Internet-Draft private-sid-translation June 2026
},
{
"entry-index": 2,
"field-id": "ietf-schc:fid-ipv6-flowlabel",
"field-length": 20,
"field-position": 1,
"direction-indicator": "ietf-schc:di-bidirectional",
"matching-operator": "ietf-schc:mo-ignore",
"comp-decomp-action": "ietf-schc:cda-value-sent",
"target-value": [
{
"index": 0,
"value": "AA=="
}
]
},
{2700: {23: [
{23: [
{1: 0, 2: 2575, 5: 4, 8: 1, 7: 2562, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'06'}]},
{1: 1, 2: 2576, 5: 8, 8: 1, 7: 2562, 12: 2552, 16: 2556,
9: [{1: 0, 2: h'00'}]},
{1: 2, 2: 2579, 5: 20, 8: 1, 7: 2562, 12: 2552, 16: 2556,
9: [{1: 0, 2: h'00'}]},
{1: 3, 2: 2580, 5: 16, 8: 1, 7: 2562, 12: 2552, 16: 2559},
{1: 4, 2: 2581, 5: 8, 8: 1, 7: 2562, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'11'}]},
{1: 5, 2: 2582, 5: 8, 8: 1, 7: 2562, 12: 2552, 16: 2555,
9: [{1: 0, 2: h'ff'}]},
{1: 6, 2: 2584, 5: 64, 8: 1, 7: 2562, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'2001066073015c4c'}]},
{1: 7, 2: 2583, 5: 64, 8: 1, 7: 2562, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'0000000000000005'}]},
{1: 8, 2: 2586, 5: 64, 8: 1, 7: 2562, 12: 2552, 16: 2556},
{1: 9, 2: 2585, 5: 64, 8: 1, 7: 2562, 12: 2552, 16: 2556},
{1: 10, 2: 2590, 5: 16, 8: 1, 7: 2562, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'1633'}]},
{1: 11, 2: 2591, 5: 16, 8: 1, 7: 2562, 12: 2552, 16: 2556},
{1: 12, 2: 2592, 5: 16, 8: 1, 7: 2562, 12: 2552, 16: 2559,
9: [{1: 0, 2: h'00'}]},
{1: 13, 2: 2593, 5: 16, 8: 1, 7: 2562, 12: 2552, 16: 2559,
9: [{1: 0, 2: h'00'}]},
{1: 14, 2: 2600, 5: 2, 8: 1, 7: 2562, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'01'}]},
{1: 15, 2: 2601, 5: 2, 8: 1, 7: 2562, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'01'}]},
{1: 16, 2: 2602, 5: 4, 8: 1, 7: 2562, 12: 2552, 16: 2556,
Toutain Expires 3 December 2026 [Page 10]
Internet-Draft private-sid-translation June 2026
9: [{1: 0, 2: h'00'}]},
{1: 17, 2: 2603, 5: 8, 8: 1, 7: 2562, 12: 2553, 16: 2557,
9: [{1: 0, 2: h'05'},
{1: 1, 2: h'07'},
{1: 2, 2: h'45'}]},
{1: 18, 2: 2606, 5: 16, 8: 1, 7: 2562, 12: 2552, 16: 2556,
9: [{1: 0, 2: h'00'}]},
{1: 19, 2: 2607, 5: CBORTag(45, 2566), 6: 16,
8: 1, 7: 2562, 12: 2552, 16: 2556},
{1: 20, 3: 2571, 4: 11, 5: CBORTag(45, 2568),
8: 1, 7: 2563, 12: 2553, 16: 2557,
9: [{1: 0, 2: h'63'},
{1: 1, 2: h'73'}]},
{1: 21, 3: 2571, 4: 12, 5: CBORTag(45, 2568),
8: 1, 7: 2563, 12: 2553, 16: 2557,
9: [{1: 0, 2: h'8d'},
{1: 1, 2: h'8e'}]},
{1: 22, 3: 2571, 4: 12, 5: CBORTag(45, 2568),
8: 1, 7: 2564, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'8e'}]},
{1: 23, 3: 2571, 4: 15, 5: CBORTag(45, 2568),
8: 1, 7: 2563, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'643d30'}]},
{1: 24, 3: 2571, 4: 17, 5: CBORTag(45, 2568),
8: 1, 7: 2563, 12: 2551, 16: 2555,
9: [{1: 0, 2: h'8e'}]}],
2: 0, 1: 5, 3: 2655},
{-151: {-23: [
{-23: [
{-1: 0, -2: -25, -5: 4, -8: 1, -7: -12, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'06'}]},
{-1: 1, -2: -26, -5: 8, -8: 1, -7: -12, -12: -2, -16: -6,
-9: [{-1: 0, -2: h'00'}]},
{-1: 2, -2: -29, -5: 20, -8: 1, -7: -12, -12: -2, -16: -6,
-9: [{-1: 0, -2: h'00'}]},
{-1: 3, -2: -30, -5: 16, -8: 1, -7: -12, -12: -2, -16: -9},
{-1: 4, -2: -31, -5: 8, -8: 1, -7: -12, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'11'}]},
{-1: 5, -2: -32, -5: 8, -8: 1, -7: -12, -12: -2, -16: -5,
-9: [{-1: 0, -2: h'ff'}]},
{-1: 6, -2: -34, -5: 64, -8: 1, -7: -12, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'2001066073015c4c'}]},
{-1: 7, -2: -33, -5: 64, -8: 1, -7: -12, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'0000000000000005'}]},
{-1: 8, -2: -36, -5: 64, -8: 1, -7: -12, -12: -2, -16: -6},
{-1: 9, -2: -35, -5: 64, -8: 1, -7: -12, -12: -2, -16: -6},
{-1: 10, -2: -40, -5: 16, -8: 1, -7: -12, -12: -1, -16: -5,
Toutain Expires 3 December 2026 [Page 11]
Internet-Draft private-sid-translation June 2026
-9: [{-1: 0, -2: h'1633'}]},
{-1: 11, -2: -41, -5: 16, -8: 1, -7: -12, -12: -2, -16: -6},
{-1: 12, -2: -42, -5: 16, -8: 1, -7: -12, -12: -2, -16: -9,
-9: [{-1: 0, -2: h'00'}]},
{-1: 13, -2: -43, -5: 16, -8: 1, -7: -12, -12: -2, -16: -9,
-9: [{-1: 0, -2: h'00'}]},
{-1: 14, -2: -50, -5: 2, -8: 1, -7: -12, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'01'}]},
{-1: 15, -2: -51, -5: 2, -8: 1, -7: -12, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'01'}]},
{-1: 16, -2: -52, -5: 4, -8: 1, -7: -12, -12: -2, -16: -6,
-9: [{-1: 0, -2: h'00'}]},
{-1: 17, -2: -53, -5: 8, -8: 1, -7: -12, -12: -3, -16: -7,
-9: [{-1: 0, -2: h'05'},
{-1: 1, -2: h'07'},
{-1: 2, -2: h'45'}]},
{-1: 18, -2: -56, -5: 16, -8: 1, -7: -12, -12: -2, -16: -6,
-9: [{-1: 0, -2: h'00'}]},
{-1: 19, -2: -57, -5: CBORTag(45, -16), -6: 16,
-8: 1, -7: -12, -12: -2, -16: -6},
{-1: 20, -3: -21, -4: 11, -5: CBORTag(45, -18),
-8: 1, -7: -13, -12: -3, -16: -7,
-9: [{-1: 0, -2: h'63'},
{-1: 1, -2: h'73'}]},
{-1: 21, -3: -21, -4: 12, -5: CBORTag(45, -18),
-8: 1, -7: -13, -12: -3, -16: -7,
-9: [{-1: 0, -2: h'8d'},
{-1: 1, -2: h'8e'}]},
{-1: 22, -3: -21, -4: 12, -5: CBORTag(45, -18),
-8: 1, -7: -14, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'8e'}]},
{-1: 23, -3: -21, -4: 15, -5: CBORTag(45, -18),
-8: 1, -7: -13, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'643d30'}]},
{-1: 24, -3: -21, -4: 17, -5: CBORTag(45, -18),
-8: 1, -7: -13, -12: -1, -16: -5,
-9: [{-1: 0, -2: h'8e'}]}],
-2: 0, -1: 5, -3: -105},
Figure 2: IPv6/UDP/CoAP rule with private SID translation
6. SCHC Considerations
When SCHC [RFC8724] is used to compress CORECONF messages that carry
private SIDs, the compression rules themselves need to account for
the translation mapping. This document defines a new Compression/
Decompression Action (CDA) to support this use case.
Toutain Expires 3 December 2026 [Page 12]
Internet-Draft private-sid-translation June 2026
6.1. sid-translation CDA
The sid-translation CDA is applied to fields that carry SID values
(map keys and identityref values) in a CORECONF CBOR message. It
replaces the SID value in the field with its private alias, or
restores the original SID upon decompression, according to the
translation parameters configured in the rule.
The CDA takes the following Function Arguments, which MAY be repeated
to cover multiple YANG Data Models translated in the same session:
sid-file: A reference to an augmented
SID file for a given YANG Data Model. The augmented SID file
extends the standard SID allocation file with two additional
pieces of information:
* *Leaf types*: for each node in the model, the SID file records
whether the corresponding YANG leaf carries an identityref
value. This allows the CDA to identify which fields in the
CBOR encoding contain SID values that require translation, in
addition to the map keys that always carry SID deltas.
* **entry_point and **sid_range: the lowest SID value allocated
to the model and the number of consecutive SIDs in its range.
These two values, already present in any standard SID file, are
used as the translation parameters defined in this document.
offset: The offset parameter for that
model’s private SID translation, as defined in this document.
Combined with the entry_point and sid_range values extracted from
the sid-file, it fully determines the bijective mapping between
official and private SIDs.
Each (sid-file, offset) pair describes the translation for one YANG
Data Model. When multiple models are translated in the same session,
one pair per model is included in the Function Arguments list,
ordered by ascending entry_point.
During compression, the residue sent for a field carrying an official
SID that falls within a configured range is the corresponding private
SID. For SID values outside all configured ranges, the official SID
is sent unchanged. During decompression, the inverse formula is
applied to recover the official SID.
The following example shows a SCHC rule entry that applies sid-
translation to the CORECONF payload field, using the SCHC Rule Data
Model SID file (file.sid, offset=0):
Toutain Expires 3 December 2026 [Page 13]
Internet-Draft private-sid-translation June 2026
/--------+-----+----+----+----+--------+------------------------\
| FID | FL | FP | DI | TV | MO | CDA |
+========+=====+====+====+====+========+========================+
| CoAP | var | 1 | bi | | ignore | sid-translation |
| Payload| | | | | | (file.sid, 0) |
\--------+-----+----+----+----+--------+------------------------/
Figure 3: SCHC rule entry for CORECONF SID translation
7. Security Considerations
TODO
8. IANA Considerations
This document requests that IANA update the “YANG Schema Item
iDentifier (SID)” registry established by [RFC9595] to define the
semantics of negative SID values.
Specifically, this document requests the reservation of the range -1
to -1000 for use as private SIDs, as defined in this document. These
values MUST NOT be used as globally allocated SIDs. They are
intended exclusively for local, bilateral use between two endpoints
that have agreed on a private SID translation configuration, as
described in Section 3.
The following table summarizes the requested addition to the SID
registry:
+=======+========================+==================+===========+
| Range | Registration Procedure | Description | Reference |
+=======+========================+==================+===========+
| -1 to | Reserved | Private SID | This |
| -1000 | | (local use only) | document |
+-------+------------------------+------------------+-----------+
Table 1: Addition to the YANG SID Registry
9. References
9.1. Normative References
[RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
Application Protocol (CoAP)", RFC 7252,
DOI 10.17487/RFC7252, June 2014,
.
Toutain Expires 3 December 2026 [Page 14]
Internet-Draft private-sid-translation June 2026
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016,
.
[RFC9254] Veillette, M., Ed., Petrov, I., Ed., Pelov, A., Bormann,
C., and M. Richardson, "Encoding of Data Modeled with YANG
in the Concise Binary Object Representation (CBOR)",
RFC 9254, DOI 10.17487/RFC9254, July 2022,
.
[RFC9595] Veillette, M., Ed., Pelov, A., Ed., Petrov, I., Ed.,
Bormann, C., and M. Richardson, "YANG Schema Item
iDentifier (YANG SID)", RFC 9595, DOI 10.17487/RFC9595,
July 2024, .
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, .
[I-D.ietf-core-comi]
Veillette, M., Van der Stok, P., Pelov, A., Bierman, A.,
and C. Bormann, "CoAP Management Interface (CORECONF)",
Work in Progress, Internet-Draft, draft-ietf-core-comi-21,
2 March 2026, .
[I-D.ietf-core-sid]
Veillette, M., Pelov, A., Petrov, I., Bormann, C., and M.
Richardson, "YANG Schema Item iDentifier (YANG SID)", Work
in Progress, Internet-Draft, draft-ietf-core-sid-24, 22
December 2023, .
9.2. Informative References
[RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object
Representation (CBOR)", STD 94, RFC 8949,
DOI 10.17487/RFC8949, December 2020,
.
Toutain Expires 3 December 2026 [Page 15]
Internet-Draft private-sid-translation June 2026
[RFC8724] Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and JC.
Zuniga, "SCHC: Generic Framework for Static Context Header
Compression and Fragmentation", RFC 8724,
DOI 10.17487/RFC8724, April 2020,
.
[RFC9363] Minaburo, A. and L. Toutain, "A YANG Data Model for Static
Context Header Compression (SCHC)", RFC 9363,
DOI 10.17487/RFC9363, March 2023,
.
[RFC9371] Baber, A. and P. Hoffman, "Registration Procedures for
Private Enterprise Numbers (PENs)", RFC 9371,
DOI 10.17487/RFC9371, March 2023,
.
Acknowledgments
This work is supported by the SCHC Chair from IMT Atlantique and
Afnic.
Author's Address
Laurent Toutain
IMT Atlantique
Email: laurent.toutain@imt-atlantique.fr
Toutain Expires 3 December 2026 [Page 16]