



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:

   <spanx style="verb">sid-file</spanx>:  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.

   <spanx style="verb">offset</spanx>:  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,
              <https://www.rfc-editor.org/info/rfc7252>.





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,
              <https://www.rfc-editor.org/info/rfc7950>.

   [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,
              <https://www.rfc-editor.org/info/rfc9254>.

   [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, <https://www.rfc-editor.org/info/rfc9595>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [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, <https://datatracker.ietf.org/doc/html/
              draft-ietf-core-comi-21>.

   [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, <https://datatracker.ietf.org/doc/html/
              draft-ietf-core-sid-24>.

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,
              <https://www.rfc-editor.org/info/rfc8949>.







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,
              <https://www.rfc-editor.org/info/rfc8724>.

   [RFC9363]  Minaburo, A. and L. Toutain, "A YANG Data Model for Static
              Context Header Compression (SCHC)", RFC 9363,
              DOI 10.17487/RFC9363, March 2023,
              <https://www.rfc-editor.org/info/rfc9363>.

   [RFC9371]  Baber, A. and P. Hoffman, "Registration Procedures for
              Private Enterprise Numbers (PENs)", RFC 9371,
              DOI 10.17487/RFC9371, March 2023,
              <https://www.rfc-editor.org/info/rfc9371>.

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]
