<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc version="3" category="std" docName="draft-chen-spring-satellite-csid-00" submissionType="IETF" ipr="trust200902" xmlns:xi="http://www.w3.org/2001/XInclude">
  <front>
    <title abbrev="SRv6 SID Compression for Satelite">SRv6 Segment Identifier Compression for Satelite Networks</title>
    <seriesInfo name="Internet-Draft" value="draft-chen-spring-satellite-csid-00"/>
    <author fullname="Hongyan Chen" initials="H." surname="Chen">
      <organization>Nanjing University</organization>
      <address>
        <postal>
          <street>163 Xianlin Avenue, Qixia District</street>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <code>210023</code>
          <country>China</country>
        </postal>
        <email>chenhongyan6176@163.com</email>
      </address>
    </author>
    <author fullname="Jun Liu" initials="J." surname="Liu">
      <organization>Nanjing University</organization>
      <address>
        <postal>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <country>China</country>
        </postal>
        <email>Johnson.liu@nju.edu.cn</email>
      </address>
    </author>
    <author fullname="Wenfeng Li" initials="W." surname="Li">
      <organization>Nanjing University</organization>
      <address>
        <postal>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <country>China</country>
        </postal>
        <email>wenfeng@nju.edu.cn</email>
      </address>
    </author>
    <author fullname="Kanglian Zhao" initials="K." surname="Zhao">
      <organization>Nanjing University</organization>
      <address>
        <postal>
          <city>Nanjing</city>
          <region>Jiangsu</region>
          <country>China</country>
        </postal>
        <email>zhaokanglian@nju.edu.cn</email>
      </address>
    </author>
    <date year="2026" month="1" day="28"/>
    <abstract>
      <t>
        This document defines a compression method for Segment Identifiers (SIDs) in
        Segment Routing over IPv6 (SRv6) specifically designed for satellite networks.
        By leveraging the topological location information of satellite nodes, a 128-bit
        SID is compressed into a 32-bit Compressed SID (C-SID).  The method introduces
        a "SID Container" structure to support the co-existence of 128-bit SIDs and
        32-bit C-SIDs within a single Segment List without modifying the SRv6 control
        plane or the fixed SRH header format defined in RFC 8754.
      </t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction">
      <t>Satelite networks face unique constraints such as limited onboard computing power and storage resources. When applying SRv6 to satellite constellations, long service paths or complex policies lead to significant Segment Routing Header (SRH) <xref target="RFC8754"/> overhead, which reduces effective payload and increases the risk of MTU fragmentation. Existing compression schemes often rely on complex endpoint behaviors or rigid block planning, which are difficult to implement and maintain in dynamic satellite environments. This document <xref target="CHEN-SAT-CSID"/> proposes a lightweight compression method that maps satellite topological semantics (layer, orbit, and node index) directly into a 32-bit C-SID. This approach enhances network observability and efficiency while maintaining full compatibility with standard SRv6 data plane processing <xref target="RFC8986"/>.</t>
    </section>
    <section title="Conventions Used in This Document">
      <t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section title="Terminology">
      <dl>
        <dt>SID Container:</dt>
        <dd>A 128-bit basic unit in the SRH Segment List used to carry either one 128-bit SID or multiple 32-bit C-SIDs.</dd>
        <dt>C-SID:</dt>
        <dd>Compressed Segment Identifier, 32 bits in length.</dd>
        <dt>CSI (Compressed SID Index):</dt>
        <dd>A field used to indicate the position of a C-SID within a SID Container.</dd>
        <dt>C-Flag (Compression Flag):</dt>
        <dd>A flag used to distinguish between C-SIDs and standard SIDs.</dd>
      </dl>
    </section>
    <section title="Design Goals">
      <t>This document targets satellite constellation environments where SRv6 policies may traverse long paths and frequently change. The mechanism is designed to achieve the following goals:</t>
      <ul spacing="normal">
        <li><t>Compatibility: Preserve the fixed SRH header format and standard SRv6 processing model.</t></li>
        <li><t>No control-plane extension: Avoid modifications to SRv6 control plane signaling; only the segment list representation is optimized.</t></li>
        <li><t>Topology awareness: Encode satellite topological semantics (layer, orbit, and node index) directly into the identifier.</t></li>
        <li><t>Multi-scale orchestration: Allow interleaving of compressed 32-bit C-SIDs and regular 128-bit SIDs within a single Segment List.</t></li>
        <li><t>Implementation simplicity: Use lightweight packing/decoding logic suitable for resource-constrained onboard platforms.</t></li>
      </ul>
    </section>
    <section title="Protocol Overview">
      <t>The Segment List in an SRH <xref target="RFC8754"/> is reorganized into 128-bit units called SID Containers. A container operates in either Standard Mode (one 128-bit SID) or Compressed Mode (1 to 4 C-SIDs). A 32-bit C-SID carries satellite topological semantics and SRv6 behavior information. During forwarding, a node reads the active container indicated by Segment Left (SL) and decides whether to process a full SID or a C-SID based on a container flag bit. When a C-SID is encountered, it can be decoded to a 128-bit IPv6 address for forwarding, without changing the SRH base format.</t>
    </section>
    <section title="Protocol Specification">
      <section title="C-SID Structure and Encoding">
        <t>A C-SID MUST be defined as a 32-bit field. The structure is as follows:</t>
        <figure anchor="fig_csid">
          <name>C-SID Format (CSI is 2 bits; C-Arguments is 8 bits)</name>
          <artwork type="ascii-art">
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           C-Locator           | C-Func  |     C-Args     |CSI|F|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          </artwork>
        </figure>
        <t>Bit numbering in <xref target="fig_csid"/> follows the convention used in IETF bit diagrams where the leftmost bit is bit 0. The fields MUST be assigned as: C-Locator bits 0-15, C-Func bits 16-20, C-Args bits 21-28, CSI bits 29-30, and F bit 31.</t>
        <dl>
          <dt>C-Locator (16 bits):</dt>
          <dd>Carries satellite topological information. It is divided into three sub-fields representing the layer index, orbit index, and in-orbit index of the node.</dd>
          <dt>C-Function (5 bits):</dt>
          <dd>Represents the segment behavior instructions mapped from the original SID <xref target="RFC8986"/>.</dd>
          <dt>C-Arguments (8 bits):</dt>
          <dd>Carries behavior extension parameters.</dd>
          <dt>CSI (2 bits):</dt>
          <dd>Indicates the slot index within the SID Container.</dd>
        </dl>
        <ul spacing="normal">
          <li><t>11: Slot 1 (bits 0-31 of the container)</t></li>
          <li><t>10: Slot 2</t></li>
          <li><t>01: Slot 3</t></li>
          <li><t>00: Slot 4 (bits 96-127)</t></li>
        </ul>
        <t>C-Flag (1 bit): MUST be set to 1 if the unit is a C-SID; it MUST be set to 0 if it is a standard SID or padding.</t>
      </section>
      <section title="SID Container and Multi-scale Orchestration">
        <t>The SRH Segment List is reorganized into 128-bit SID Containers. Each container MUST function in one of two modes:</t>
        <ol>
          <li><t>Standard Mode: Carries a single 128-bit uncompressed SID. The lowest bit (C-Flag) of the container MUST be set to 0.</t></li>
          <li><t>Compressed Mode: Carries 1 to 4 C-SIDs. The lowest bit (C-Flag) of the container MUST be set to 1.</t></li>
        </ol>
        <t>This design allows for multi-scale identifier orchestration where C-SIDs and standard SIDs are interleaved within the same Segment List. If a container is not fully filled with 4 C-SIDs, the remaining bits SHOULD be set to zero as padding, with their C-Flags marked as 0.</t>
      </section>
      <section title="Forwarding and Decoding Logic">
        <section title="Identification and Reading">
          <t>When a satellite node processes an SRH, it SHOULD locate the current SID Container via the Segment Left (SL) pointer. The type is judged by the lowest bit (C-Flag):</t>
          <ul>
            <li>
              <t>If C-Flag == 0: Read as a standard SID. After processing, decrement SL by 1.</t>
            </li>
            <li>
              <t>If C-Flag == 1: Read the C-SID.</t>
              <ul>
                <li><t>If CSI != 0: Process the C-SID and offset the internal reading pointer by 32 bits within the container.</t></li>
                <li><t>If CSI == 0: After processing, the container is exhausted. Decrement SL by 1 to point to the next container.</t></li>
              </ul>
            </li>
          </ul>
        </section>
        <section title="Decoding to IPv6 Address">
          <t>To facilitate forwarding, a 32-bit C-SID MUST be decoded into a 128-bit IPv6 destination address:</t>
          <ul spacing="normal">
            <li><t>Prefix (48 bits): Taken from the common prefix of the satellite constellation (derived from the Source IP address).</t></li>
            <li><t>C-Locator (16 bits): Appended to the prefix to form a 64-bit addressing prefix.</t></li>
            <li><t>Behavioral Mapping (16 bits): C-SID bits C[15:0] MUST be mapped to bits 65-80 of the IPv6 address.</t></li>
            <li><t>Final Flags: The C-Flag MUST be mapped to the lowest bit of the IPv6 address, with remaining bits set to zero.</t></li>
          </ul>
        </section>
        <section title="Operational Advantages">
          <ul spacing="normal">
            <li><t>No Protocol Extension: Works with existing SRH formats <xref target="RFC8754"/> and SRv6 control plane protocols.</t></li>
            <li><t>Topological Awareness: Directly correlates SIDs with satellite coordinates (layer/orbit/node).</t></li>
            <li><t>High Efficiency: Eliminates the need to carry 128-bit Block prefixes in the first segment of compressed lists.</t></li>
          </ul>
        </section>
      </section>
    </section>
    <section title="Security Considerations">
      <t>As satellite networks are vulnerable to link exposure, the integrity of the SID Container SHOULD be protected. Standard SRH security mechanisms SHOULD be applied <xref target="RFC8754"/>.</t>
      <section title="Privacy and Topology Exposure">
        <t>Because C-SIDs embed topological semantics, deployments SHOULD consider the risk of topology disclosure on untrusted links.</t>
      </section>
      <section title="Address Scanning">
        <t>Implementations SHOULD consider rate limiting and filtering to reduce scanning and probing risks in exposed environments.</t>
      </section>
    </section>
    <section title="IANA Considerations">
      <t>This document requests no new allocations from IANA.</t>
    </section>
    <section title="Acknowledgements">
      <t>The authors thank the IETF SPRING working group and the satellite networking research community for discussions that motivated this work.</t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/rfc/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author><organization>RFC Editor</organization></author>
          <date month="March" year="1997"/>
        </front>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/rfc/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author><organization>RFC Editor</organization></author>
          <date month="May" year="2017"/>
        </front>
      </reference>
      <reference anchor="RFC8754" target="https://www.rfc-editor.org/rfc/rfc8754">
        <front>
          <title>IPv6 Segment Routing Header (SRH)</title>
          <author><organization>RFC Editor</organization></author>
          <date month="March" year="2020"/>
        </front>
      </reference>
      <reference anchor="RFC8986" target="https://www.rfc-editor.org/rfc/rfc8986">
        <front>
          <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
          <author><organization>RFC Editor</organization></author>
          <date month="February" year="2021"/>
        </front>
      </reference>
    </references>
    <references title="Informative References">
      <reference anchor="CHEN-SAT-CSID">
        <front>
          <title>SRv6 Segment Identifier Compression for Satelite Networks</title>
          <author initials="H." surname="Chen"/>
          <date year="2026"/>
        </front>
        <annotation>Unpublished work provided by the authors.</annotation>
      </reference>
    </references>
  </back>
</rfc>