<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="exp" docName="draft-irtf-icnrg-ccnx-timetlv-05" number="9510" ipr="trust200902" updates="8609" obsoletes="" submissionType="IRTF" consensus="true" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" prepTime="2024-02-22T15:19:13" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-irtf-icnrg-ccnx-timetlv-05" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9510" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="TimeTLV for CCNx">Alternative Delta Time Encoding for Content-Centric Networking (CCNx) Using Compact Floating-Point Arithmetic</title>
    <seriesInfo name="RFC" value="9510" stream="IRTF"/>
    <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
      <organization abbrev="Huawei" showOnFrontPage="true">Huawei Technologies Duesseldorf GmbH</organization>
      <address>
        <postal>
          <street>Riesstrasse 25</street>
          <city>Munich</city>
          <code>D-80992</code>
          <country>Germany</country>
        </postal>
        <email>cenk.gundogan@huawei.com</email>
      </address>
    </author>
    <author fullname="Thomas C. Schmidt" initials="TC." surname="Schmidt">
      <organization abbrev="HAW Hamburg" showOnFrontPage="true">HAW Hamburg</organization>
      <address>
        <postal>
          <street>Berliner Tor 7</street>
          <city>Hamburg</city>
          <code>D-20099</code>
          <country>Germany</country>
        </postal>
        <email>t.schmidt@haw-hamburg.de</email>
        <uri>http://inet.haw-hamburg.de/members/schmidt</uri>
      </address>
    </author>
    <author fullname="Dave Oran" initials="D." surname="Oran">
      <organization showOnFrontPage="true">Network Systems Research and Design</organization>
      <address>
        <postal>
          <street>4 Shady Hill Square</street>
          <city>Cambridge</city>
          <region>MA</region>
          <code>02138</code>
          <country>United States of America</country>
        </postal>
        <phone/>
        <email>daveoran@orandom.net</email>
      </address>
    </author>
    <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
      <organization abbrev="TU Dresden" showOnFrontPage="true">TUD Dresden University of Technology</organization>
      <address>
        <postal>
          <street>Helmholtzstr. 10</street>
          <city>Dresden</city>
          <code>D-01069</code>
          <country>Germany</country>
        </postal>
        <email>m.waehlisch@tu-dresden.de</email>
      </address>
    </author>
    <date month="02" year="2024"/>
    <workgroup>Information-Centric Networking</workgroup>
    <keyword>CCNx</keyword>
    <keyword>constrained networks</keyword>
    <keyword>compressed delta time</keyword>
    <keyword>IoT</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">Content-Centric Networking (CCNx) utilizes delta time for a number of functions. When using CCNx in environments with constrained nodes or bandwidth-constrained networks, it is valuable to have a compressed representation of delta time. In order to do so, either accuracy or dynamic range has to be sacrificed. Since the current uses of delta time do not require both simultaneously, one can consider a logarithmic encoding. This document updates RFC 8609 ("CCNx messages in TLV Format") to specify this alternative encoding.</t>
      <t indent="0" pn="section-abstract-2">This document is a product of the IRTF Information-Centric
      Networking Research Group (ICNRG).</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for examination, experimental implementation, and
            evaluation. 
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document defines an Experimental Protocol for the Internet
            community.  This document is a product of the Internet Research
            Task Force (IRTF).  The IRTF publishes the results of Internet-related
            research and development activities.  These results might not be
            suitable for deployment.  This RFC represents the consensus of the
            Information-Centric Networking Research Group of the Internet Research Task Force
            (IRTF).  Documents approved for publication by the IRSG are not
            candidates for any level of Internet Standard; see Section 2 of RFC
            7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9510" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-usage-of-time-values-in-ccn">Usage of Time Values in CCNx</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-relative-time-in-ccnx">Relative Time in CCNx</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-absolute-time-in-ccnx">Absolute Time in CCNx</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-a-compact-time-representati">A Compact Time Representation with Logarithmic Range</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-protocol-integration-of-the">Protocol Integration of the Compact Time Representation</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-interest-lifetime">Interest Lifetime</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recommended-cache-time-2">Recommended Cache Time</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-test-vectors">Test Vectors</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="Appendix B" format="default" sectionFormat="of" target="section-appendix.b"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-efficient-time-value-approx">Efficient Time Value Approximation</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">CCNx is well suited for Internet of Things (IoT) applications <xref target="RFC7927" format="default" sectionFormat="of" derivedContent="RFC7927"/>.
Low-Power Wireless Personal Area Network (LoWPAN) adaptation layers (e.g., <xref target="RFC9139" format="default" sectionFormat="of" derivedContent="RFC9139"/>) confirm the advantages of a space-efficient packet encoding for low-power and lossy networks.
CCNx utilizes absolute and delta time values for a number of functions.
When using CCNx in resource-constrained environments, it is valuable to have a compact representation of time values.  However, any compact time representation has to sacrifice accuracy or dynamic range. For some time uses, this is relatively straightforward to achieve; for other uses, it is not.
As a result of experiments in bandwidth-constrained IEEE 802.15.4 deployments <xref target="ICNLOWPAN" format="default" sectionFormat="of" derivedContent="ICNLOWPAN"/>, this document discusses the various cases of time values, proposes a compact encoding for delta times, and updates <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/> to utilize this encoding format in CCNx messages.</t>
      <t indent="0" pn="section-1-2">This document has received fruitful reviews by the members of the research
group (see the Acknowledgments section).  It is the consensus of ICNRG that this
document should be published in the IRTF Stream of the RFC series. This document
does not constitute an IETF standard.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
      </t>
      <t indent="0" pn="section-2-2">This document uses the terminology of <xref target="RFC8569" format="default" sectionFormat="of" derivedContent="RFC8569"/> and <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/> for CCNx entities.</t>
      <t indent="0" pn="section-2-3">The following terms are used in the document and defined as follows:
      </t>
      <dl newline="false" spacing="normal" indent="14" pn="section-2-4">
        <dt pn="section-2-4.1">byte:</dt>
        <dd pn="section-2-4.2">synonym for octet</dd>
        <dt pn="section-2-4.3">time value:</dt>
        <dd pn="section-2-4.4">a time offset measured in seconds</dd>
        <dt pn="section-2-4.5">time code:</dt>
        <dd pn="section-2-4.6">an 8-bit encoded time value as defined in <xref target="RFC5497" format="default" sectionFormat="of" derivedContent="RFC5497"/></dd>
      </dl>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-usage-of-time-values-in-ccn">Usage of Time Values in CCNx</name>
      <section anchor="relativeTime" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-relative-time-in-ccnx">Relative Time in CCNx</name>
        <t indent="0" pn="section-3.1-1">CCNx, as currently specified in <xref target="RFC8569" format="default" sectionFormat="of" derivedContent="RFC8569"/>, utilizes delta time for only the lifetime of an Interest message (see Sections <xref target="RFC8569" section="2.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-2.1" derivedContent="RFC8569"/>, <xref target="RFC8569" section="2.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-2.2" derivedContent="RFC8569"/>, <xref target="RFC8569" section="2.4.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-2.4.2" derivedContent="RFC8569"/>, and <xref target="RFC8569" section="10.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-10.3" derivedContent="RFC8569"/> of <xref target="RFC8569" format="default" sectionFormat="of" derivedContent="RFC8569"/>). It is a hop-by-hop header value, and is currently encoded via the T_INTLIFE TLV as a 64-bit integer (<xref target="RFC8609" sectionFormat="of" section="3.4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8609#section-3.4.1" derivedContent="RFC8609"/>). While formally an optional TLV, every Interest message is expected to carry the Interest Lifetime TLV in all but some corner cases; hence, having compact encoding is particularly valuable to keep Interest messages short.</t>
        <t indent="0" pn="section-3.1-2">Since the current uses of delta time do not require both accuracy and dynamic range simultaneously, one can consider a logarithmic encoding such as that specified in <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/> and as outlined in <xref target="sec.timetlv" format="default" sectionFormat="of" derivedContent="Section 4"/>. This document updates CCNx messages in TLV format <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/> to permit this alternative encoding for selected time values.
</t>
      </section>
      <section anchor="absoluteTime" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-absolute-time-in-ccnx">Absolute Time in CCNx</name>
        <t indent="0" pn="section-3.2-1">CCNx, as currently specified in <xref target="RFC8569" format="default" sectionFormat="of" derivedContent="RFC8569"/>, utilizes absolute time for various important functions. Each of these absolute time usages poses a different challenge for a compact representation. These are discussed in the following subsections.</t>
        <section toc="exclude" numbered="true" removeInRFC="false" pn="section-3.2.1">
          <name slugifiedName="name-signature-time-and-expiry-t">Signature Time and Expiry Time</name>
          <t indent="0" pn="section-3.2.1-1">Signature Time is the time the signature of a Content Object was generated (see Sections <xref target="RFC8569" sectionFormat="bare" section="8.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-8.2" derivedContent="RFC8569"/>-<xref target="RFC8569" sectionFormat="bare" section="8.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-8.4" derivedContent="RFC8569"/> of <xref target="RFC8569" format="default" sectionFormat="of" derivedContent="RFC8569"/>).
  Expiry Time indicates the time after which a Content Object is considered expired (<xref target="RFC8569" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-4" derivedContent="RFC8569"/>).
  Both values are content message TLVs and represent absolute timestamps in milliseconds since the POSIX epoch.
  They are currently encoded via the T_SIGTIME and T_EXPIRY TLVs as 64-bit unsigned integers (see Sections <xref target="RFC8609" sectionFormat="bare" section="3.6.4.1.4.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8609#section-3.6.4.1.4.5" derivedContent="RFC8609"/> and <xref target="RFC8609" sectionFormat="bare" section="3.6.2.2.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8609#section-3.6.2.2.2" derivedContent="RFC8609"/> of <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/>, respectively).</t>
          <t indent="0" pn="section-3.2.1-2">Both time values could be in the past or in the future, potentially by a large delta.
  They are also included in the security envelope of the message.
  Therefore, it seems there is no practical way to define an alternative compact encoding that preserves its semantics and security properties; therefore, this approach is not considered further.</t>
        </section>
        <section toc="exclude" numbered="true" removeInRFC="false" pn="section-3.2.2">
          <name slugifiedName="name-recommended-cache-time">Recommended Cache Time</name>
          <t indent="0" pn="section-3.2.2-1">Recommended Cache Time (RCT) for a Content Object (<xref target="RFC8569" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-4" derivedContent="RFC8569"/>) is a hop-by-hop header stating the expiration time for a cached Content Object in milliseconds since the POSIX epoch. It is currently encoded via the T_CACHETIME TLV as a 64-bit unsigned integer (see <xref target="RFC8609" sectionFormat="of" section="3.4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8609#section-3.4.2" derivedContent="RFC8609"/>).</t>
          <t indent="0" pn="section-3.2.2-2">A Recommended Cache Time could be far in the future, but it cannot be in the past and is likely to be a reasonably short offset from the current time.
  Therefore, this document allows the Recommended Cache Time to be interpreted as a relative time value rather than an absolute time, because the semantics associated with an absolute time value do not seem to be critical to the utility of this value.
  This document therefore updates the Recommended Cache Time with the following rule set:
          </t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2.2-3">
            <li pn="section-3.2.2-3.1">
              <t indent="0" pn="section-3.2.2-3.1.1">Use absolute time as per <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/></t>
            </li>
            <li pn="section-3.2.2-3.2">
              <t indent="0" pn="section-3.2.2-3.2.1">Use relative time, if the compact time representation is used (see Sections <xref target="sec.timetlv" format="counter" sectionFormat="of" derivedContent="4"/> and <xref target="sec.integration" format="counter" sectionFormat="of" derivedContent="5"/>)</t>
            </li>
          </ul>
          <t indent="0" pn="section-3.2.2-4">If relative time is used, the time offset recorded in a message will typically not account for residence times on lower layers (e.g., for processing, queuing) and link delays for every hop. Thus,
the Recommended Cache Time cannot be as accurate as when absolute time is used.
  This document targets low-power networks, where delay bounds are rather loose or do not exist.
  An accumulated error due to transmission delays in the range of milliseconds and seconds for the Recommended Cache Time is still tolerable in these networks and does not impact the protocol performance.
</t>
          <t indent="0" pn="section-3.2.2-5">Networks with tight latency bounds use dedicated hardware, optimized software routines, and traffic engineering to reduce latency variations.
  Time offsets can then be corrected on every hop to yield exact cache times.
          </t>
        </section>
      </section>
    </section>
    <section anchor="sec.timetlv" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-a-compact-time-representati">A Compact Time Representation with Logarithmic Range</name>
      <t indent="0" pn="section-4-1">
    This document uses the compact time representation described in "Information-Centric Networking (ICN) Adaptation to Low-Power Wireless Personal Area Networks (LoWPANs)" (see <xref target="RFC9139" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9139#section-7" derivedContent="RFC9139"/>) that was inspired by <xref target="RFC5497" format="default" sectionFormat="of" derivedContent="RFC5497"/> and <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>.
    Its logarithmic encoding supports a representation ranging from milliseconds to years.
    <xref target="fig.time-value" format="default" sectionFormat="of" derivedContent="Figure 1"/> depicts the logarithmic nature of this time representation.
      </t>
      <figure anchor="fig.time-value" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-a-logarithmic-range-represe">A logarithmic range representation allows for higher precision in the smaller time ranges and still supports large time deltas.</name>
        <artwork align="center" name="" type="" alt="" pn="section-4-2.1">
|| |  |   |    |     |      |       |        |         |          |
+-----------------------------------------------------------------+
milliseconds                                                  years
</artwork>
      </figure>
      <t indent="0" pn="section-4-3">
    Time codes encode exponent and mantissa values in a single byte. In contrast to the representation in <xref target="IEEE.754.2019" format="default" sectionFormat="of" derivedContent="IEEE.754.2019"/>, time codes only encode non-negative numbers and hence do not include a separate bit to indicate integer signedness.
    <xref target="fig.time-code" format="default" sectionFormat="of" derivedContent="Figure 2"/> shows the configuration of a time code: an exponent width of 5 bits, and a mantissa width of 3 bits.
      </t>
      <figure anchor="fig.time-code" align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-a-time-code-with-exponent-a">A time code with exponent and mantissa to encode a logarithmic range time representation.</name>
        <artwork align="center" name="" type="" alt="" pn="section-4-4.1">
&lt;---          one byte wide          ---&gt;
+----+----+----+----+----+----+----+----+
|      exponent (b)      | mantissa (a) |
+----+----+----+----+----+----+----+----+
  0    1    2    3    4    5    6    7
</artwork>
      </figure>
      <t indent="0" pn="section-4-5">
    The base unit for time values is seconds. A time value is calculated using the following formula (adopted from <xref target="RFC5497" format="default" sectionFormat="of" derivedContent="RFC5497"/> and <xref target="RFC9139" format="default" sectionFormat="of" derivedContent="RFC9139"/>),
    where (a) represents the mantissa, (b) the exponent, and (C) a constant factor set to <tt>C := 1/32</tt>.
      </t>
      <dl newline="false" spacing="normal" indent="3" pn="section-4-6">
        <dt pn="section-4-6.1">Subnormal (b == 0):</dt>
        <dd pn="section-4-6.2"> (0 + a/8) * 2 * C
      </dd>
        <dt pn="section-4-6.3">Normalized (b &gt; 0):</dt>
        <dd pn="section-4-6.4"> (1 + a/8) * 2^b * C
      </dd>
      </dl>
      <t indent="0" pn="section-4-7">
    The subnormal form provides a gradual underflow between zero and the smallest normalized number.
    Eight time values exist in the subnormal range [0s,~0.0546875s] with a step size of ~0.0078125s between each time value.
    This configuration also encodes the following convenient numbers in seconds: [1, 2, 4, 8, 16, 32, 64, ...].
    <xref target="sec.testvectors" format="default" sectionFormat="of" derivedContent="Appendix A"/> includes test vectors to illustrate the logarithmic range.
      </t>
      <t indent="0" pn="section-4-8">
    An example algorithm to encode a time value into the corresponding exponent and mantissa is given as pseudocode in <xref target="fig.algo" format="default" sectionFormat="of" derivedContent="Figure 3"/>.
    Not all time values can be represented by a time code.
    For these instances, a time code is produced that represents a time value closest to and smaller than the initial time value input.
      </t>
      <figure anchor="fig.algo" align="left" suppress-title="false" pn="figure-3">
        <name slugifiedName="name-algorithm-in-pseudocode">Algorithm in pseudocode.</name>
        <sourcecode type="pseudocode" markers="false" pn="section-4-9.1">
 input: float v    // time value
output:   int a, b // mantissa, exponent of time code

(a, b) encode (v):

    if (v == 0)
        return (0, 0)

    if (v &lt; 2 * C)                              // subnormal
        a = floor (v * 4 / C)                   // round down
        return (a, 0)
    else                                        // normalized
        if (v &gt; (1 + 7/8) * 2^31 * C)           // check bounds
            return (7, 31)                      // return maximum
        else
            b = floor (log2(v / C))             // round down
            a = floor ((v / (2^b * C) - 1) * 8) // round down
            return (a, b)
</sourcecode>
      </figure>
      <t indent="0" pn="section-4-10">
    For example, no specific time code for <tt>0.063</tt> exists. However, this algorithm maps to the closest valid time code that is smaller than <tt>0.063</tt>, i.e., exponent <tt>1</tt> and mantissa <tt>0</tt> (the same as for time value <tt>0.0625</tt>).
      </t>
    </section>
    <section anchor="sec.integration" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-protocol-integration-of-the">Protocol Integration of the Compact Time Representation</name>
      <t indent="0" pn="section-5-1">A straightforward way to accommodate the compact time approach is to use a 1-byte length field to indicate this alternative encoding while retaining the existing TLV registry entries.
    This approach has backward compatibility problems, but it is still considered for the following reasons:
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5-2">
        <li pn="section-5-2.1">
          <t indent="0" pn="section-5-2.1.1">Both CCNx RFCs (<xref target="RFC8569" format="default" sectionFormat="of" derivedContent="RFC8569"/> and <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/>) are Experimental and not Standards Track; hence, expectations for forward and backward compatibility are not as stringent. "Flag day" upgrades of deployed CCNx networks, while inconvenient, are still feasible.</t>
        </li>
        <li pn="section-5-2.2">
          <t indent="0" pn="section-5-2.2.1">The major use case for these compressed encodings are smaller-scale IoT and/or sensor networks where the population of consumers, producers, and forwarders is reasonably small.</t>
        </li>
        <li pn="section-5-2.3">
          <t indent="0" pn="section-5-2.3.1">Since the current TLVs have hop-by-hop semantics, they are not covered by any signed hash and hence may be freely re-encoded by any forwarder. That means a forwarder supporting the new encoding can translate freely between the two encodings.</t>
        </li>
        <li pn="section-5-2.4">
          <t indent="0" pn="section-5-2.4.1">The alternative of assigning new TLV registry values does not substantially mitigate the interoperability problems anyway.</t>
        </li>
      </ul>
      <section anchor="sec.integration.intlife" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-interest-lifetime">Interest Lifetime</name>
        <t indent="0" pn="section-5.1-1">The Interest Lifetime definition in <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/> allows for a variable-length lifetime representation, where a length of <tt>1</tt> encodes the linear range [0,255] in milliseconds.
    This document changes the definition to always encode 1-byte Interest Lifetime values in the compact time value representation (see <xref target="def-intlifetime" format="default" sectionFormat="of" derivedContent="Figure 4"/>).
    For any other length, Interest Lifetimes are encoded as described in <xref target="RFC8609" section="3.4.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8609#section-3.4.1" derivedContent="RFC8609"/>.
        </t>
        <figure anchor="def-intlifetime" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-changes-to-the-definition-o">Changes to the definition of the Interest Lifetime TLV.</name>
          <artwork align="left" name="" type="" alt="" pn="section-5.1-2.1">
                     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_INTLIFE           |           Length = 1          |
+---------------+---------------+---------------+---------------+
| COMPACT_TIME  |
+---------------+
</artwork>
        </figure>
      </section>
      <section anchor="sec.integration.recctime" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-recommended-cache-time-2">Recommended Cache Time</name>
        <t indent="0" pn="section-5.2-1">The Recommended Cache Time definition in <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/> specifies an absolute time representation that is of a length fixed to 8 bytes.
    This document changes the definition to always encode 1-byte Recommended Cache Time values in the compact relative time value representation (see <xref target="def-recctime" format="default" sectionFormat="of" derivedContent="Figure 5"/>).
    For any other length, Recommended Cache Times are encoded as described in <xref target="RFC8609" section="3.4.2" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8609#section-3.4.2" derivedContent="RFC8609"/>.
        </t>
        <figure anchor="def-recctime" align="left" suppress-title="false" pn="figure-5">
          <name slugifiedName="name-changes-to-the-definition-of">Changes to the definition of the Recommended Cache Time TLV.</name>
          <artwork align="left" name="" type="" alt="" pn="section-5.2-2.1">
                     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_CACHETIME          |           Length = 1          |
+---------------+---------------+---------------+---------------+
| COMPACT_TIME  |
+---------------+
</artwork>
        </figure>
        <t indent="0" pn="section-5.2-3">The packet processing is adapted to calculate an absolute time from the relative time code based on the absolute reception time.
  On transmission, a new relative time code is calculated based on the current system time.</t>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-6-1">This document has no IANA actions.</t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-7-1">This document makes no semantic changes to <xref target="RFC8569" format="default" sectionFormat="of" derivedContent="RFC8569"/>, nor to any of the security properties of the message encodings described in <xref target="RFC8609" format="default" sectionFormat="of" derivedContent="RFC8609"/>; hence, it has the same security considerations as those two documents.
        Careful consideration is needed for networks that deploy forwarders with support (updated forwarder) and without support (legacy forwarder) for this compact time representation:
      </t>
      <dl newline="false" spacing="normal" indent="3" pn="section-7-2">
        <dt pn="section-7-2.1">Interest Lifetime:</dt>
        <dd pn="section-7-2.2">
          A legacy forwarder
          interprets a time code as an Interest Lifetime between 0 and
          255 milliseconds. This may lead to a degradation of network
          performance, since Pending Interest Table (PIT) entries timeout
          quicker than expected.
          An updated forwarder interprets short lifetimes set by a legacy forwarder as time codes, thus configuring timeouts of up to 4 years.
          This leads to an inefficient occupation of state space.
          </dd>
        <dt pn="section-7-2.3">Recommended Cache Time:</dt>
        <dd pn="section-7-2.4">
            A legacy forwarder
            considers a Recommended Cache Time with length 1 as a
            structural or syntactical error and it <bcp14>SHOULD</bcp14> discard the packet (<xref target="RFC8569" sectionFormat="of" section="10.3.9" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8569#section-10.3.9" derivedContent="RFC8569"/>).
            Otherwise, a legacy forwarder interprets time codes as absolute
            time values far in the past, which impacts cache utilization.
          </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8569" target="https://www.rfc-editor.org/info/rfc8569" quoteTitle="true" derivedAnchor="RFC8569">
          <front>
            <title>Content-Centric Networking (CCNx) Semantics</title>
            <author fullname="M. Mosko" initials="M." surname="Mosko"/>
            <author fullname="I. Solis" initials="I." surname="Solis"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="July" year="2019"/>
            <abstract>
              <t indent="0">This document describes the core concepts of the Content-Centric Networking (CCNx) architecture and presents a network protocol based on two messages: Interests and Content Objects. It specifies the set of mandatory and optional fields within those messages and describes their behavior and interpretation. This architecture and protocol specification is independent of a specific wire encoding.</t>
              <t indent="0">The protocol also uses a control message called an Interest Return, whereby one system can return an Interest message to the previous hop due to an error condition. This indicates to the previous hop that the current system will not respond to the Interest.</t>
              <t indent="0">This document is a product of the Information-Centric Networking Research Group (ICNRG). The document received wide review among ICNRG participants. Two full implementations are in active use and have informed the technical maturity of the protocol specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8569"/>
          <seriesInfo name="DOI" value="10.17487/RFC8569"/>
        </reference>
        <reference anchor="RFC8609" target="https://www.rfc-editor.org/info/rfc8609" quoteTitle="true" derivedAnchor="RFC8609">
          <front>
            <title>Content-Centric Networking (CCNx) Messages in TLV Format</title>
            <author fullname="M. Mosko" initials="M." surname="Mosko"/>
            <author fullname="I. Solis" initials="I." surname="Solis"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="July" year="2019"/>
            <abstract>
              <t indent="0">Content-Centric Networking (CCNx) is a network protocol that uses a hierarchical name to forward requests and to match responses to requests. This document specifies the encoding of CCNx messages in a TLV packet format, including the TLV types used by each message element and the encoding of each value. The semantics of CCNx messages follow the encoding-independent CCNx Semantics specification.</t>
              <t indent="0">This document is a product of the Information Centric Networking research group (ICNRG). The document received wide review among ICNRG participants and has two full implementations currently in active use, which have informed the technical maturity of the protocol specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8609"/>
          <seriesInfo name="DOI" value="10.17487/RFC8609"/>
        </reference>
      </references>
      <references pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="ICNLOWPAN" target="https://doi.org/10.1016/j.comcom.2020.10.002" quoteTitle="true" derivedAnchor="ICNLOWPAN">
          <front>
            <title>Designing a LoWPAN convergence layer for the Information Centric Internet of Things</title>
            <author initials="C." surname="Gündoğan">
              <organization showOnFrontPage="true">HAW Hamburg</organization>
            </author>
            <author initials="P." surname="Kietzmann">
              <organization showOnFrontPage="true">HAW Hamburg</organization>
            </author>
            <author initials="T." surname="Schmidt">
              <organization showOnFrontPage="true">HAW Hamburg</organization>
            </author>
            <author initials="M." surname="Wählisch">
              <organization showOnFrontPage="true">FU Berlin</organization>
            </author>
            <date month="December" year="2020"/>
          </front>
          <refcontent>Computer Communications, Vol. 164, No. 1, p. 114-123, Elsevier</refcontent>
        </reference>
        <reference anchor="IEEE.754.2019" target="https://standards.ieee.org/content/ieee-standards/en/standard/754-2019.html" quoteTitle="true" derivedAnchor="IEEE.754.2019">
          <front>
            <title>Standard for Floating-Point Arithmetic</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date month="June" year="2019"/>
          </front>
          <seriesInfo name="IEEE Std" value="754-2019"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2019.8766229"/>
        </reference>
        <reference anchor="RFC5497" target="https://www.rfc-editor.org/info/rfc5497" quoteTitle="true" derivedAnchor="RFC5497">
          <front>
            <title>Representing Multi-Value Time in Mobile Ad Hoc Networks (MANETs)</title>
            <author fullname="T. Clausen" initials="T." surname="Clausen"/>
            <author fullname="C. Dearlove" initials="C." surname="Dearlove"/>
            <date month="March" year="2009"/>
            <abstract>
              <t indent="0">This document describes a general and flexible TLV (type-length-value structure) for representing time-values, such as an interval or a duration, using the generalized Mobile Ad hoc NETwork (MANET) packet/ message format. It defines two Message TLVs and two Address Block TLVs for representing validity and interval times for MANET routing protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5497"/>
          <seriesInfo name="DOI" value="10.17487/RFC5497"/>
        </reference>
        <reference anchor="RFC7927" target="https://www.rfc-editor.org/info/rfc7927" quoteTitle="true" derivedAnchor="RFC7927">
          <front>
            <title>Information-Centric Networking (ICN) Research Challenges</title>
            <author fullname="D. Kutscher" initials="D." role="editor" surname="Kutscher"/>
            <author fullname="S. Eum" initials="S." surname="Eum"/>
            <author fullname="K. Pentikousis" initials="K." surname="Pentikousis"/>
            <author fullname="I. Psaras" initials="I." surname="Psaras"/>
            <author fullname="D. Corujo" initials="D." surname="Corujo"/>
            <author fullname="D. Saucez" initials="D." surname="Saucez"/>
            <author fullname="T. Schmidt" initials="T." surname="Schmidt"/>
            <author fullname="M. Waehlisch" initials="M." surname="Waehlisch"/>
            <date month="July" year="2016"/>
            <abstract>
              <t indent="0">This memo describes research challenges for Information-Centric Networking (ICN), an approach to evolve the Internet infrastructure to directly support information distribution by introducing uniquely named data as a core Internet principle. Data becomes independent from location, application, storage, and means of transportation, enabling or enhancing a number of desirable features, such as security, user mobility, multicast, and in-network caching. Mechanisms for realizing these benefits is the subject of ongoing research in the IRTF and elsewhere. This document describes current research challenges in ICN, including naming, security, routing, system scalability, mobility management, wireless networking, transport services, in-network caching, and network management.</t>
              <t indent="0">This document is a product of the IRTF Information-Centric Networking Research Group (ICNRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7927"/>
          <seriesInfo name="DOI" value="10.17487/RFC7927"/>
        </reference>
        <reference anchor="RFC9139" target="https://www.rfc-editor.org/info/rfc9139" quoteTitle="true" derivedAnchor="RFC9139">
          <front>
            <title>Information-Centric Networking (ICN) Adaptation to Low-Power Wireless Personal Area Networks (LoWPANs)</title>
            <author fullname="C. Gündoğan" initials="C." surname="Gündoğan"/>
            <author fullname="T. Schmidt" initials="T." surname="Schmidt"/>
            <author fullname="M. Wählisch" initials="M." surname="Wählisch"/>
            <author fullname="C. Scherb" initials="C." surname="Scherb"/>
            <author fullname="C. Marxer" initials="C." surname="Marxer"/>
            <author fullname="C. Tschudin" initials="C." surname="Tschudin"/>
            <date month="November" year="2021"/>
            <abstract>
              <t indent="0">This document defines a convergence layer for Content-Centric Networking (CCNx) and Named Data Networking (NDN) over IEEE 802.15.4 Low-Power Wireless Personal Area Networks (LoWPANs). A new frame format is specified to adapt CCNx and NDN packets to the small MTU size of IEEE 802.15.4. For that, syntactic and semantic changes to the TLV-based header formats are described. To support compatibility with other LoWPAN technologies that may coexist on a wireless medium, the dispatching scheme provided by IPv6 over LoWPAN (6LoWPAN) is extended to include new dispatch types for CCNx and NDN. Additionally, the fragmentation component of the 6LoWPAN dispatching framework is applied to Information-Centric Network (ICN) chunks. In its second part, the document defines stateless and stateful compression schemes to improve efficiency on constrained links. Stateless compression reduces TLV expressions to static header fields for common use cases. Stateful compression schemes elide states local to the LoWPAN and replace names in Data packets by short local identifiers.</t>
              <t indent="0">This document is a product of the IRTF Information-Centric Networking Research Group (ICNRG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9139"/>
          <seriesInfo name="DOI" value="10.17487/RFC9139"/>
        </reference>
      </references>
    </references>
    <section anchor="sec.testvectors" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-test-vectors">Test Vectors</name>
      <t indent="0" pn="section-appendix.a-1">
        The test vectors in <xref target="tab.testvectors" format="default" sectionFormat="of" derivedContent="Table 1"/> show sample time codes and their corresponding time values according to the algorithm outlined in <xref target="sec.timetlv" format="default" sectionFormat="of" derivedContent="Section 4"/>.
      </t>
      <table anchor="tab.testvectors" align="center" pn="table-1">
        <name slugifiedName="name-test-vectors-2">Test Vectors</name>
        <thead>
          <tr>
            <th align="center" colspan="1" rowspan="1">Time Code</th>
            <th align="right" colspan="1" rowspan="1">Time Value (seconds)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="center" colspan="1" rowspan="1">0x00</td>
            <td align="right" colspan="1" rowspan="1">0.0000000</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0x01</td>
            <td align="right" colspan="1" rowspan="1">0.0078125</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0x04</td>
            <td align="right" colspan="1" rowspan="1">0.0312500</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0x08</td>
            <td align="right" colspan="1" rowspan="1">0.0625000</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0x15</td>
            <td align="right" colspan="1" rowspan="1">0.2031250</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0x28</td>
            <td align="right" colspan="1" rowspan="1">1.0000000</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0x30</td>
            <td align="right" colspan="1" rowspan="1">2.0000000</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0xF8</td>
            <td align="right" colspan="1" rowspan="1">67108864.0000000</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">0xFF</td>
            <td align="right" colspan="1" rowspan="1">125829120.0000000</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="sec.tvapprox" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-efficient-time-value-approx">Efficient Time Value Approximation</name>
      <t indent="0" pn="section-appendix.b-1">
        A forwarder frequently converts compact time into milliseconds to compare Interest Lifetimes and the duration of cache entries.
        On many architectures, multiplication and division perform slower than addition, subtraction, and bit shifts.
        The following equations approximate the formulas in <xref target="sec.timetlv" format="default" sectionFormat="of" derivedContent="Section 4"/>, and scale from seconds into the milliseconds range by applying a factor of 2^10 instead of 10^3.
        This results in an error of 2.4%.

      </t>
      <dl newline="false" spacing="normal" indent="10" pn="section-appendix.b-2">
        <dt pn="section-appendix.b-2.1">b == 0:</dt>
        <dd pn="section-appendix.b-2.2">2^10 * a * 2^-3 * 2^1 * 2^-5<br/>= a &lt;&lt; 3
          </dd>
        <dt pn="section-appendix.b-2.3">b &gt; 0:</dt>
        <dd pn="section-appendix.b-2.4">(2^10 + a * 2^-3 * 2^10) * 2^b * 2^-5<br/>= (1 &lt;&lt; 5 + a &lt;&lt; 2) &lt;&lt; b
          </dd>
      </dl>
    </section>
    <section numbered="false" toc="include" anchor="ack" removeInRFC="false" pn="section-appendix.c">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.c-1">We would like to thank the active members of ICNRG for their constructive thoughts.
      In particular, we thank <contact fullname="Marc Mosko"/> and <contact fullname="Ken Calvert"/> for their valuable feedback on the encoding scheme and protocol integration.
      Special thanks also go to <contact fullname="Carsten Bormann"/> for his constructive in-depth comments during the IRSG review.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.d">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Cenk Gündoğan" initials="C." surname="Gündoğan">
        <organization abbrev="Huawei" showOnFrontPage="true">Huawei Technologies Duesseldorf GmbH</organization>
        <address>
          <postal>
            <street>Riesstrasse 25</street>
            <city>Munich</city>
            <code>D-80992</code>
            <country>Germany</country>
          </postal>
          <email>cenk.gundogan@huawei.com</email>
        </address>
      </author>
      <author fullname="Thomas C. Schmidt" initials="TC." surname="Schmidt">
        <organization abbrev="HAW Hamburg" showOnFrontPage="true">HAW Hamburg</organization>
        <address>
          <postal>
            <street>Berliner Tor 7</street>
            <city>Hamburg</city>
            <code>D-20099</code>
            <country>Germany</country>
          </postal>
          <email>t.schmidt@haw-hamburg.de</email>
          <uri>http://inet.haw-hamburg.de/members/schmidt</uri>
        </address>
      </author>
      <author fullname="Dave Oran" initials="D." surname="Oran">
        <organization showOnFrontPage="true">Network Systems Research and Design</organization>
        <address>
          <postal>
            <street>4 Shady Hill Square</street>
            <city>Cambridge</city>
            <region>MA</region>
            <code>02138</code>
            <country>United States of America</country>
          </postal>
          <phone/>
          <email>daveoran@orandom.net</email>
        </address>
      </author>
      <author fullname="Matthias Wählisch" initials="M." surname="Wählisch">
        <organization abbrev="TU Dresden" showOnFrontPage="true">TUD Dresden University of Technology</organization>
        <address>
          <postal>
            <street>Helmholtzstr. 10</street>
            <city>Dresden</city>
            <code>D-01069</code>
            <country>Germany</country>
          </postal>
          <email>m.waehlisch@tu-dresden.de</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
