<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->

<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="no" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->

<?rfc private="" ?>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IRTF" category="exp" docName="draft-irtf-icnrg-ccnxchunking-04" updates="8569, 8609" ipr="trust200902">

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
        full title is longer than 39 characters -->

    <title abbrev="CCNx chunking">CCNx Content Object Chunking</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Marc Mosko" initials="M.E." surname="Mosko">

      <address>
       <postal>
         <street/>

         <!-- Reorder these if your country does things differently -->

         <city>Kensington</city>

         <region>California</region>

         <code>94707</code>

         <country>USA</country>
       </postal>
       <email>marc@mosko.org</email>

       <!-- uri and facsimile elements may also be added -->
     </address>
    </author>

    <author initials="H" surname="Asaeda" fullname="Hitoshi Asaeda">
      <organization abbrev="NICT">National Institute of Information and Communications Technology</organization>
      <address>
        <postal>
          <street>4-2-1 Nukui-Kitamachi</street>
<!--	        <city>Koganei</city>-->
          <region>Tokyo</region>
          <code>184-8795</code>
          <country>Japan</country>
        </postal>
        <email>asaeda@nict.go.jp</email>
      </address>
    </author>

    <date year="2026"/>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill
        in the current day for you. If only the current year is specified, xml2rfc will fill
	 in the current day and month for you. If the year is not the current one, it is
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>IRTF</area>

    <workgroup>ICNRG</workgroup>

    <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions.
	 If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>Information Centric Networking</keyword>
    <keyword>CCNx</keyword>

    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

    <abstract>
      <t>This document specifies a chunking protocol for dividing a user payload
      into CCNx Content Objects. It defines a name segment type to identify each
      sequential chunk number and a Content Object field to identify the last 
      available chunk number.
      This includes specification for the naming convention to use for
      the chunked payload and a field added to a Content Object to represent the last chunk of an object.  
      This document updates RFC8569 and RFC8609.</t>
    </abstract>
  </front>

  <middle>
     <section title="Introduction">
       <t>CCNx Content Objects <xref target="RFC8569"></xref> are sized to amortize cryptographic operations over
       user data while simultaneously staying a reasonable size for transport over today's networks.
       This means a Content Object is usually within common UDP or jumbo Ethernet size.
       If a publisher has a larger amount of data to associate with a single Name, the data may be
       chunked with this chunking protocol.  This protocol uses state in
       the Name and in an optional field within the Content Object.  A chunked object may also have
       an external metadata that describes the original pre-chunked object.</t>
       
       <t>For example, a video file may be several gigabytes of data.  To publish the
       video, one would divide it up into transport-sized Content Objects.  Each
       Content Object would have a common name prefix plus a chunk number.</t>

      <t>CCNx uses two types of messages: Interests and Content Objects <xref target="RFC8569"></xref>. An Interest carries the hierarchically structured Name of a Content Object which serves as a request to return that object. A Content Object contains the Name, the object's Payload, and the cryptographic information used to bind the Name to the payload.</t>

      <t>This document introduces three new protocol elements to CCNx by updating <xref target="RFC8609"></xref>.</t>
      <dl>
        <dt><strong>ChunkNumber</strong></dt><dd>A new CCNx Name Segment TLV for conveying chunk numbers.</dd>
        <dt><strong>EndChunkNumber</strong></dt><dd>A new CCNx Message Type TLV for conveying the last chunk number of the content.</dd>
        <dt><strong>ChunkSize</strong></dt><dd>A new CCNx Message Type TLV for specifying a constant payload size.</dd>
      </dl>
<!--      - ChunkNumber: a new CCNx Name Segment TLV for conveying chunk numbers
- EndChunkNumber: a new CCNx Message Type TLV for conveying the last chunk number of the content
- ChunkSize: a new CCNx Message Type TLV for specifying a constant payload size.
      This document introduces the new CCNx Name Segment TLV, ChunkNumber, for conveying chunk numbers; the new CCNx Message Type TLV, EndChunkNumber, for conveying the last chunk number of the content; and the new CCNx Message Type TLV, ChunkSize, for specifying a constant payload size.
      This document updates <xref target="RFC8609"></xref>.</t>

      <t>Packets are represented as 32-bit wide words using ASCII art.  Because
      of the TLV encoding and optional fields or sizes, there is no concise
      way to represent all possibilities.  We use the convention that ASCII art
      fields enclosed by vertical bars "|" represent exact bit widths.  Fields
      with a forward slash "/" are variable bitwidths, which we typically pad
      out to word alignment for picture readability.</t>-->

      <t>Experiments employing ICN protocols like CCNx all require a consistent way to represent objects larger than can be carried as a single protocol message. This specification provides such capabilities for simple cases where the flexibility of a Manifest approach like that in <xref target="I-D.irtf-icnrg-flic">FLIC</xref> are not strictly needed. Experiments will shed light on how to best optimize the fetching of large objects using CCNx Interest/Data exchanges.</t>
    </section>

    <section anchor="terminology"><name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD 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 anchor="chunking" title="CCNx Chunking">

      <section anchor="protocol" title="Protocol Specification">

      <t>Chunking, as used in this specification, means serializing user data
      into one or more chunks, each encapsulated in a CCNx Content Object.
      A chunk is a contiguous byte range within the user data.
      One segment in the Name of each Content Object represents the chunk number.
      A field in the Content Object that a chunk is the last chunk of the object
      Chunks are denoted by a serial counter, beginning at 0 and incrementing by 1 for each contiguous chunk.
      Any Interest issued with a chunk number higher than the last chunk number MUST be dropped with no response.</t>

      <t>This document introduces the new CCNx Name Segment TLV, ChunkNumber, for conveying chunk numbers. The ChunkNumber is the serial order of the chunks. It MUST begin at 0 and MUST be incremented by 1. The value of the ChunkNumber TLV is a network byte order compact encoding of the chunk number.</t>

      <t>This document also introduces the new CCNx Message Type TLV, EndChunkNumber.
      The EndChunkNumber indicates the last chunk number of the chunked user data.
      It MUST be included in the Content Object which is the last chunk of user data,
      where the ChunkNumber TLV value and the EndChunkNumber TLV value MUST be the same.
      The value of the EndChunkNumber value is the same format as the ChunkNumber name segment.
      For example, if 3000 bytes of user data is split with a 1200 byte block size,
      there will be 3 chunks: 0, 1, and 2.  The EndChunkNumber is 2.</t>

      <t>The EndChunkNumber field MAY be present in any of the object's chunks, such as to assist in pipelining Interests. It MAY be placed repeatedly across multiple chunks to maximize the fetching flexibility of a consumer.</t>
      
      <!--<t>The last chunk is when the EndChunkNumber equals the right-most ChunkNumber name segment.</t>-->

      <!--<t>When a received Content Object contains both ChunkNumber TLV and EndChunkNumber TLV, and both values are the same, the consumer application will terminate reception of the content.</t>-->
      
      <t>The value of the EndChunkNumber MAY be increased by subsequent EndChunkNumber fields. However, it SHOULD NOT be decreased.
      If a publisher wishes to terminate creation of chunks before reaching the last chunk, it should publish empty Content Objects to fill out to the maximum EndChunkNumber ever published. These padding chunks MUST contain the real last chunk number in the EndChunkNumber with an empty Payload TLV. This mechanism for early termination is to accommodate circumstances where a data creation by the producer ended before expected.</t>
      
      <t>It may occur that a publisher never includes an EndChunkNumber, and thus
      has never published the last chunk.  This may happen due to an error or
      network conditions that do not allow finding the last chunk.  If a consumer
      times out trying to retrieve chunks, it SHOULD report an error to the user
      and terminate.  This is similar to a TCP client not hearing a FIN.</t>

	    <t>If the user data fits within one Content Object and the publisher uses the
	    Chunking protocol, the publisher names the content with "Chunk=0" and includes
	    "EndChunkNumber=0" (assuming the Payload is in the first chunk).</t>
	  
      <t>In addition, this document introduces the new CCNx Message Type TLV, ChunkSize, for specifying a constant payload size.
        Chunking MAY use a fixed block size, where only the last chunk MAY
        use a smaller block size.  This is required to allow a reader to seek
        to a specific byte offset once it knows the block size.
        If the first (Chunk 0) object has the field ChunkSize, then the
        series of chunked objects uses a fixed payload size.
        ChunkSize MUST only appear in Chunk 0, if it is used.
        The first chunk of user data (a chunk with a Payload TLV) may not be chunk 0.</t>

      <t>Any mismatch between the value of the length field of the payload TLV and the the ChunkSize TLV is considered an error of chunk creation by the producer. Such mismatched Data messages returned from a matching Interest MUST be discarded by the consumer.</t>

      <t>Because of the possible use of a fixed block size, the inclusion of certain cryptographic
      fields in the same Content Objects as user data would throw off the ability to seek.
      Therefore, it is RECOMMENDED that all required cryptographic data, such as public keys
      or key name links, be included in the leading chunks before the first byte of user data.
      User data SHOULD then run continuously.  If the publisher included ChunkSize in 
      Chunk 0, then all Payload sizes must be of ChunkSize except the last, which may be smaller.</t>

      <t>Data produced using the chunking protocol may also be represented via a Manifest (e.g., <xref target="I-D.irtf-icnrg-flic">FLIC</xref>). An advantage of using a Manifest is that all cryptographic data is in the manifest, which then links to each chunk via a full hash name. This means that the chunked user data can devote all available Content Object bytes after the name to the user data.</t>

  	  <t>To summarize:</t>
	  	<ol>
	  		<li>Every chunk MUST have a ChunkNumber name segment, beginning at 0 and
	  		incrementing by 1.</li>
	  		<li>The leading chunks MAY have missing or empty Payload TLVs
	  		and convey only cryptographic or other information.</li>
	  		<li>The last chunk MUST have an EndChunkNumber TLV and the value
	  		MUST be equal to the ChunkNumber TLV value.</li>
	  		<li>Content Objects before the last chunk MAY have an EndChunkNumber
	  		TLV with the expected last chunk number.  These hints MAY be
	  		updated in subsequent Content Objects but SHOULD NOT decrease.</li>
	  		<li>If the last chunk has a ChunkNumber less than a previously
	  		published EndChunkNumber, the publisher SHOULD pad out the chunks
	  		with empty Content Objects that have the real last chunk number in the EndChunkNumber.</li>
        <li>An optional ChunkSize TLV MAY be in, and only in, Chunk 0.  If it is present,
        it indicates that all Payloads are the same number of bytes, except the last chunk which
        may be smaller.</li>
	  	</ol>
      </section>
      
      <section anchor="crypto" title="Cryptographic Material">
        <t>Chunk 0 MAY include the public key or key name link used to verify the chunked data. It is RECOMMENDED to use the same key for the whole set of chunked data. If a publisher uses multiple keys, then the public key or key name link for all keys SHOULD be in the leading chunks before any user data. Each subsequent chunk only needs to include the KeyId and signature.</t>

<!--        <t>The rational for putting all cryptographic data not obtained separately from the chunked data in the lowest numbered chunks ahead of the user data is because the protocol requires using a fixed block size for all user data to enable seeking in the chunked stream.</t>-->
        
        <t>As noted above, using a Manifest eliminates the need for cryptographic material in the user-data Content Objects.</t>
      </section>

      <section anchor="examples" title="Examples">
      <t>Here are some examples of chunked Names using the Labeled Content
      Identifier URI scheme in human readable form (ccnx:).</t>

      <t>In this example,
      the content producer publishes a JPG that takes 4 Chunks.
      The EndChunkNumber is missing in the first content object (Chunk 0),
      but is known and included when Chunk 1 is published.
      It is omitted in Chunk 2, then appears in Chunk 3, where it is mandatory.</t>
      <figure>
        <artwork align="left"><![CDATA[
ccnx:/Name=example.com/Name=picture.jpg/Chunk=0  --
ccnx:/Name=example.com/Name=picture.jpg/Chunk=1  EndChunkNumber=3
ccnx:/Name=example.com/Name=picture.jpg/Chunk=2  --
ccnx:/Name=example.com/Name=picture.jpg/Chunk=3  EndChunkNumber=3
]]></artwork>
      </figure>

      <t>In this example, the publisher is publishing an audio stream that
      ends before expected so the publisher fills empty Content Objects
      out to the maximum
      ChunkNumber, stating the correct EndChunkNumber.  Chunks 4, 5, and
      6 do not contain any new user data.</t>
      <figure>
        <artwork align="left"><![CDATA[
ccnx:/Name=example.com/Name=talk.wav/Chunk=0  --
ccnx:/Name=example.com/Name=talk.wav/Chunk=1  EndChunkNumber=6
ccnx:/Name=example.com/Name=talk.wav/Chunk=2  --
ccnx:/Name=example.com/Name=talk.wav/Chunk=3  EndChunkNumber=3
ccnx:/Name=example.com/Name=talk.wav/Chunk=4  EndChunkNumber=3
ccnx:/Name=example.com/Name=talk.wav/Chunk=5  EndChunkNumber=3
ccnx:/Name=example.com/Name=talk.wav/Chunk=6  EndChunkNumber=3
]]></artwork>
      </figure>
      </section>
    </section>

    <section anchor="types" title="TLV Types">
      <t>This section specifies the TLV types used by CCNx chunking. TBA by IANA (see <xref target="IANA" />).</t>

      <section anchor="names" title="ChunkNumber TLV">
        <t>CCNx chunking defines one new CCNx Name Segment type in the IANA Registry: ChunkNumber.</t>

        <texttable anchor="name_tlvs" title="ChunkNumber">
          <ttcol align="center">Type</ttcol>
          <ttcol align="center">Abbrev</ttcol>
          <ttcol align="center">Name</ttcol>
          <ttcol align="left">Description</ttcol>
<!--          <c>%x0005</c>-->
          <c>TBA by IANA</c>
          <c>T_CHUNK</c>
          <c><xref target="names">Chunk Number</xref></c>
          <c>The Chunk number of the associated Content Object. It is an unsigned integer
          in network byte order without leading zeros. The value
          of zero is represented as the single byte %x00.</c>
         </texttable>

        <t>In ccnx: URI form, it is denoted as "Chunk", like the example shown in <xref target="examples" />.</t>

        <figure anchor="chunknum-tlv"><name>ChunkNumber TLV</name>
          <artwork align="left"><![CDATA[
                     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
+---------------+---------------+---------------+--------------+
|           T_CHUNK             |             Length           |
+---------------+---------------+---------------+--------------+
|     variable length integer   /
+---------------+---------------+
]]></artwork>
        </figure>

<!--        <figure anchor='Segment_Type' title="CCNx Name Segment Type Namespace (TBA by IANA)">
          <artwork align="center">
     Code         Type name
==============    ============================================
    %x0000        Reserved [RFC8609]
    %x0001        T_NAMESEGMENT [RFC8609]
    %x0002        T_IPID [RFC8609]
    %x0003        T_NONCE [RFC9508]
    %x0004        T_VERSION [I-D.irtf-icnrg-ccnxversioning]
    %x0005        T_CHUNK
    %x0006        T_REFLEXIVE_NAME
                  [I-D.irtf-icnrg-reflexive-forwarding]
%x0007-%x000F     Unassigned 	
%x0010-%x0013     Reserved [RFC8609]
%x0014-0x0FFE     Unassigned 	
    %x0FFF        T_ORG [RFC8609]
%x1000-0x1FFF     T_APP:00 - T_APP:4096 [RFC8609]
%x2000-0xFFFF     Unassigned
          </artwork>
        </figure>-->

      </section>

      <section anchor="signed_info" title="EndChunkNumber and ChunkSize TLVs">
        <t>CCNx chunking defines two new CCNx Message types in the IANA Registry: EndChunkNumber and ChunkSize.</t>

        <texttable anchor="si_tlvs" title="EndChunkNumber and ChunkSize">
          <ttcol align="center">Type</ttcol>
          <ttcol align="center">Abbrev</ttcol>
          <ttcol align="center">Name</ttcol>
          <ttcol align="left">Description</ttcol>
<!--          <c>%x0008</c>-->
          <c>TBA by IANA</c>
          <c>T_ENDCHUNK</c>
          <c><xref target="signed_info">EndChunkNumber</xref></c>
          <c>The value in the EndChunkNumber TLV indicates the last chunk number. It is an unsigned integer
            in network byte order without leading zeros.  The value
            of zero is represented as the single byte %x00.</c>

<!--          <c>%x0009</c>-->
          <c>TBA by IANA</c>
          <c>T_CHUNK_SIZE</c>
          <c><xref target="signed_info">ChunkSize</xref></c>
          <c>The fixed payload size of user data up to the last chunk.
            It MUST be a positive integer.</c>
        </texttable>

        <figure anchor="endchunk-tlv"><name>EndChunkNumber TLV</name>
          <artwork align="left"><![CDATA[
                     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
+---------------+---------------+---------------+--------------+
|          T_ENDCHUNK           |             Length           |
+---------------+---------------+---------------+--------------+
|     variable length integer   /
+---------------+---------------+
]]></artwork>
        </figure>

        <figure anchor="chunksize-tlv"><name>ChunkSize TLV</name>
          <artwork align="left"><![CDATA[
                     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
+---------------+---------------+---------------+--------------+
|         T_CHUNK_SIZE          |             Length           |
+---------------+---------------+---------------+--------------+
|     variable length integer   /
+---------------+---------------+
]]></artwork>
        </figure>

<!--       	<figure anchor='CCNx_Type' title="CCNx Message Type Namespace (TBA by IANA)">
      	  <artwork align="center">
     Code         Type name
==============    ===============================================
    %x0000        T_NAME [RFC8609]
    %x0001        T_PAYLOAD [RFC8609]
    %x0002        T_KEYIDRESTR [RFC8609]
    %x0003        T_OBJHASHRESTR [RFC8609]
    %x0004        Unassigned
    %x0005        T_PAYLDTYPE [RFC8609]
    %x0006        T_EXPIRY [RFC8609]
    %x0007        T_CURVERSION [I-D.irtf-icnrg-ccnxversioning]
    %x0008        T_ENDCHUNK
    %x0009        T_CHUNK_SIZE
%x000A-%x000C     Reserved [RFC8609]
    %x000D        T_DISC_REQ [RFC9344]
    %x000E        T_DISC_REPLY [RFC9344]
    %x0FFE        T_PAD [RFC8609]
    %x0FFF        T_ORG [RFC8609]
%x1000-%x1FFF     Reserved [RFC8609]
      	  </artwork>
      	</figure>-->
      </section>

    </section>


    <!-- This PI places the pagebreak correctly (before the section title) in the text output. -->

    <?rfc needLines="8" ?>


    <section anchor="Acknowledgements" title="Acknowledgements">

      <t>The authors would like to thank Ken Calvert and David Oran for their valuable comments and suggestions on this document.</t>

    </section>

    <section anchor="IANA" title="IANA Considerations">

      <t>As per <xref target="RFC8126" />, this section makes an assignment in one existing registry in the "Content-Centric Networking (CCNx)" registry group. The registration procedure is "RFC Required".</t>

    	<section anchor="sec.iana1" title="CCNx Name Segment Type Registry">
      	<t>This document defines one message type, T_CHUNK, whose suggested value is %x0005.</t>
    	</section>

     	<section anchor="sec.iana2" title="CCNx Message Type Registry">
      	<t>This document defines two message types, T_ENDCHUNK and T_CHUNK_SIZE, whose suggested values are %x0008 and %0x0009, respectively.</t>
    	</section>

    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The addition of chunking for large application objects does not affect the existing methods used in CCNx for authenticating user data as it employs CCNx Content Objects identically to how they are secured for non chunked data. Therefore, users of this chunking protocol may employ any of the existing signing and encrypting methods without additional considerations.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8569.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8609.xml"/>
    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.irtf-icnrg-flic.xml"/>
<!--      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.irtf-icnrg-ccnxversioning.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.irtf-icnrg-reflexive-forwarding.xml"/>-->

<!-- <reference anchor="I-D.ccnxcversioning" target="https://datatracker.ietf.org/doc/draft-asaeda-icnrg-ccnxcversioning/">
<front>
<title>CCNx Content Versioning</title>
<author initials="H." surname="Asaeda" fullname="Hitoshi Asaeda"></author>
<author initials="H. H." surname="Hlaing" fullname="Htet Htet Hlaing"></author>
<author initials="M. E." surname="Mosko" fullname="Marc Mosko"></author>
<date month="March" day="3" year="2025"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-asaeda-icnrg-ccnxcversioning-00"/>
</reference>

<reference anchor="FLIC" target="https://datatracker.ietf.org/doc/draft-irtf-icnrg-flic/">
<front>
<title>File-Like ICN Collections (FLIC)</title>
<author initials="C." surname="Tschudin" fullname="Christian Tschudin">
<organization>University of Basel</organization>
</author>
<author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
<organization>Cloudflare</organization>
</author>
<author initials="M." surname="Mosko" fullname="Marc Mosko">
<organization></organization>
</author>
<author initials="D. R." surname="Oran" fullname="David R. Oran">
<organization>Network Systems Research &amp; Design</organization>
</author>
<date month="March" day="3" year="2025"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-irtf-icnrg-flic-07"/>
</reference>-->
      
    </references>

  </back>
</rfc>
