rfc9510.original   rfc9510.txt 
ICNRG C. Gündoğan Internet Research Task Force (IRTF) C. Gündoğan
Internet-Draft Huawei Request for Comments: 9510 Huawei
Updates: 8609 (if approved) TC. Schmidt Updates: 8609 TC. Schmidt
Intended status: Experimental HAW Hamburg Category: Experimental HAW Hamburg
Expires: 6 April 2024 D. Oran ISSN: 2070-1721 D. Oran
Network Systems Research and Design Network Systems Research and Design
M. Wählisch M. Wählisch
TU Dresden TU Dresden
4 October 2023 February 2024
Alternative Delta Time Encoding for CCNx Using Compact Floating-Point Alternative Delta Time Encoding for Content-Centric Networking (CCNx)
Arithmetic Using Compact Floating-Point Arithmetic
draft-irtf-icnrg-ccnx-timetlv-05
Abstract Abstract
CCNx utilizes delta time for a number of functions. When using CCNx Content-Centric Networking (CCNx) utilizes delta time for a number of
in environments with constrained nodes or bandwidth constrained functions. When using CCNx in environments with constrained nodes or
networks, it is valuable to have a compressed representation of delta bandwidth constrained networks, it is valuable to have a compressed
time. In order to do so, either accuracy or dynamic range has to be representation of delta time. In order to do so, either accuracy or
sacrificed. Since the current uses of delta time do not require both dynamic range has to be sacrificed. Since the current uses of delta
simultaneously, one can consider a logarithmic encoding. This time do not require both simultaneously, one can consider a
document updates RFC 8609 ("CCNx messages in TLV Format") to specify logarithmic encoding. This document updates RFC 8609 ("CCNx messages
this alternative encoding. in TLV Format") to specify this alternative encoding.
This document is a product of the IRTF Information-Centric Networking This document is a product of the IRTF Information-Centric Networking
Research Group (ICNRG). Research Group (ICNRG).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This document is not an Internet Standards Track specification; it is
provisions of BCP 78 and BCP 79. published for examination, experimental implementation, and
evaluation.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document defines an Experimental Protocol for the Internet
and may be updated, replaced, or obsoleted by other documents at any community. This document is a product of the Internet Research Task
time. It is inappropriate to use Internet-Drafts as reference Force (IRTF). The IRTF publishes the results of Internet-related
material or to cite them other than as "work in progress." 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.
This Internet-Draft will expire on 6 April 2024. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9510.
Copyright Notice Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document.
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology
3. Usage of Time Values in CCNx . . . . . . . . . . . . . . . . 3 3. Usage of Time Values in CCNx
3.1. Relative Time in CCNx . . . . . . . . . . . . . . . . . . 3 3.1. Relative Time in CCNx
3.2. Absolute Time in CCNx . . . . . . . . . . . . . . . . . . 4 3.2. Absolute Time in CCNx
4. A Compact Time Representation with Logarithmic Range . . . . 5 4. A Compact Time Representation with Logarithmic Range
5. Protocol Integration of the Compact Time Representation . . . 7 5. Protocol Integration of the Compact Time Representation
5.1. Interest Lifetime . . . . . . . . . . . . . . . . . . . . 7 5.1. Interest Lifetime
5.2. Recommended Cache Time . . . . . . . . . . . . . . . . . 8 5.2. Recommended Cache Time
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 6. IANA Considerations
7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 7. Security Considerations
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 8. References
8.1. Normative References . . . . . . . . . . . . . . . . . . 9 8.1. Normative References
8.2. Informative References . . . . . . . . . . . . . . . . . 10 8.2. Informative References
Appendix A. Test Vectors . . . . . . . . . . . . . . . . . . . . 10 Appendix A. Test Vectors
Appendix B. Efficient Time Value Approximation . . . . . . . . . 11 Appendix B. Efficient Time Value Approximation
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 11 Acknowledgments
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 Authors' Addresses
1. Introduction 1. Introduction
CCNx is well suited for Internet of Things (IoT) applications CCNx is well suited for Internet of Things (IoT) applications
[RFC7927]. LoWPAN adaptation layers (e.g., [RFC9139]) confirm the [RFC7927]. Low-Power Wireless Personal Area Network (LoWPAN)
advantages of a space-efficient packet encoding for low-power and adaptation layers (e.g., [RFC9139]) confirm the advantages of a
lossy networks. CCNx utilizes absolute and delta time values for a space-efficient packet encoding for low-power and lossy networks.
number of functions. When using CCNx in resource-constrained CCNx utilizes absolute and delta time values for a number of
environments, it is valuable to have a compact representation of time functions. When using CCNx in resource-constrained environments, it
values. However, any compact time representation has to sacrifice is valuable to have a compact representation of time values.
accuracy or dynamic range. For some time uses this is relatively However, any compact time representation has to sacrifice accuracy or
straightforward to achieve, for other uses, it is not. As a result 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 of experiments in bandwidth-constrained IEEE 802.15.4 deployments
[ICNLOWPAN], this document discusses the various cases of time [ICNLOWPAN], this document discusses the various cases of time
values, proposes a compact encoding for delta times, and updates values, proposes a compact encoding for delta times, and updates
[RFC8609] to utilize this encoding format in CCNx messages. [RFC8609] to utilize this encoding format in CCNx messages.
This document has received fruitful reviews by the members of the This document has received fruitful reviews by the members of the
research group (see the Acknowledgments section). It is the research group (see the Acknowledgments section). It is the
consensus of ICNRG that this document should be published in the IRTF consensus of ICNRG that this document should be published in the IRTF
Stream of the RFC series. This document does not constitute an IETF Stream of the RFC series. This document does not constitute an IETF
standard. standard.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in
14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
This document uses the terminology of [RFC8569] and [RFC8609] for This document uses the terminology of [RFC8569] and [RFC8609] for
CCNx entities. CCNx entities.
The following terms are used in the document and defined as follows: The following terms are used in the document and defined as follows:
byte: synonym for octet byte: synonym for octet
time value: a time offset measured in seconds time value: a time offset measured in seconds
time code: an 8-bit encoded time value as defined in [RFC5497] time code: an 8-bit encoded time value as defined in [RFC5497]
3. Usage of Time Values in CCNx 3. Usage of Time Values in CCNx
3.1. Relative Time in CCNx 3.1. Relative Time in CCNx
CCNx, as currently specified in [RFC8569], utilizes delta time for CCNx, as currently specified in [RFC8569], utilizes delta time for
only the lifetime of an Interest message (see sections 2.1, 2.2, only the lifetime of an Interest message (see Sections 2.1, 2.2,
2.4.2, 10.3 of [RFC8569]). It is a hop-by-hop header value, and is 2.4.2, and 10.3 of [RFC8569]). It is a hop-by-hop header value, and
currently encoded via the T_INTLIFE TLV as a 64-bit integer is currently encoded via the T_INTLIFE TLV as a 64-bit integer
([RFC8609] section 3.4.1). While formally an optional TLV, in all (Section 3.4.1 of [RFC8609]). While formally an optional TLV, every
but some corner cases every Interest message is expected to carry the Interest message is expected to carry the Interest Lifetime TLV in
Interest Lifetime TLV, and hence having compact encoding is all but some corner cases; hence, having compact encoding is
particularly valuable for keeping Interest messages short. particularly valuable to keep Interest messages short.
Since the current uses of delta time do not require both accuracy and Since the current uses of delta time do not require both accuracy and
dynamic range simultaneously, one can consider a logarithmic encoding dynamic range simultaneously, one can consider a logarithmic encoding
such as that specified in [IEEE.754.2019] and outlined in Section 4. such as that specified in [IEEE.754.2019] and as outlined in
This document updates _CCNx messages in TLV Format_ [RFC8609] to Section 4. This document updates CCNx messages in TLV format
permit this alternative encoding for selected time values. [RFC8609] to permit this alternative encoding for selected time
values.
3.2. Absolute Time in CCNx 3.2. Absolute Time in CCNx
CCNx, as currently specified in [RFC8569], utilizes absolute time for CCNx, as currently specified in [RFC8569], utilizes absolute time for
various important functions. Each of these absolute time usages various important functions. Each of these absolute time usages
poses a different challenge for a compact representation. These are poses a different challenge for a compact representation. These are
discussed in the following subsections. discussed in the following subsections.
3.2.1. Signature Time and Expiry Time 3.2.1. Signature Time and Expiry Time
_Signature Time_ is the time the signature of a content object was Signature Time is the time the signature of a Content Object was
generated (sections 8.2-8.4 [RFC8569]). _Expiry Time_ indicates the generated (see Sections 8.2-8.4 of [RFC8569]). Expiry Time indicates
expiry time of a content object (section 4 [RFC8569]). Both values the time after which a Content Object is considered expired
are content message TLVs and represent absolute timestamps in (Section 4 of [RFC8569]). Both values are content message TLVs and
milliseconds since the POSIX epoch. They are currently encoded via represent absolute timestamps in milliseconds since the POSIX epoch.
the T_SIGTIME and T_EXPIRY TLVs as 64-bit unsigned integers (see They are currently encoded via the T_SIGTIME and T_EXPIRY TLVs as
section 3.6.4.1.4.5 and 3.6.2.2.2 [RFC8609]). 64-bit unsigned integers (see Sections 3.6.4.1.4.5 and 3.6.2.2.2 of
[RFC8609], respectively).
Both time values could be in the past, or in the future, potentially 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 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 the message. Therefore, it seems there is no practical way to define
an alternative compact encoding that preserves its semantics and an alternative compact encoding that preserves its semantics and
security properties; hence we don't consider it further as a security properties; therefore, this approach is not considered
candidate. further.
3.2.2. Recommended Cache Time 3.2.2. Recommended Cache Time
_Recommended Cache Time_ (RCT) for a content object (see section 4 Recommended Cache Time (RCT) for a Content Object (Section 4 of
[RFC8569]) is a hop-by-hop header stating the expiration time for a [RFC8569]) is a hop-by-hop header stating the expiration time for a
cached content object in milliseconds since the POSIX epoch. It is cached Content Object in milliseconds since the POSIX epoch. It is
currently encoded via the T_CACHETIME TLV as a 64-bit unsigned currently encoded via the T_CACHETIME TLV as a 64-bit unsigned
integer (see section 3.4.2 [RFC8609]). integer (see Section 3.4.2 of [RFC8609]).
A recommended cache time could be far in the future, but cannot be in A Recommended Cache Time could be far in the future, but it cannot be
the past and is likely to be a reasonably short offset from the in the past and is likely to be a reasonably short offset from the
current time. Therefore, this document allows the recommended cache current time. Therefore, this document allows the Recommended Cache
time to be interpreted as a relative time value rather than an Time to be interpreted as a relative time value rather than an
absolute time, since the semantics associated with an absolute time absolute time, because the semantics associated with an absolute time
value do not seem to be critical to the utility of this value. This value do not seem to be critical to the utility of this value. This
document therefore updates the recommended cache time with the document therefore updates the Recommended Cache Time with the
following rule set: following rule set:
* Use absolute time as per [RFC8609] * Use absolute time as per [RFC8609]
* Use relative time, if the compact time representation is used (see * Use relative time, if the compact time representation is used (see
Section 4 and Section 5) Sections 4 and 5)
If relative time is used, the time offset recorded in a message will 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 typically not account for residence times on lower layers (e.g., for
processing, queuing) and link delays for every hop. The recommended processing, queuing) and link delays for every hop. Thus, the
cache time can thus not be expressed as accurate as with absolute Recommended Cache Time cannot be as accurate as when absolute time is
time. This document targets low-power networks, where delay bounds used. This document targets low-power networks, where delay bounds
are rather loose, or do not exist. An accumulated error due to are rather loose or do not exist. An accumulated error due to
transmission delays in the range of milliseconds and seconds for the transmission delays in the range of milliseconds and seconds for the
recommended cache time is still tolerable in these networks, and does Recommended Cache Time is still tolerable in these networks and does
not impact the protocol performance. not impact the protocol performance.
Networks with tight latency bounds use dedicated hardware, optimized Networks with tight latency bounds use dedicated hardware, optimized
software routines, and traffic engineering to reduce latency software routines, and traffic engineering to reduce latency
variations. Time offsets can then be corrected on every hop to yield variations. Time offsets can then be corrected on every hop to yield
exact cache times. exact cache times.
4. A Compact Time Representation with Logarithmic Range 4. A Compact Time Representation with Logarithmic Range
This document uses the compact time representation of ICNLoWPAN (see This document uses the compact time representation described in
section 7 of [RFC9139]) that is inspired by [RFC5497] and "Information-Centric Networking (ICN) Adaptation to Low-Power
[IEEE.754.2019]. Its logarithmic encoding supports a representation Wireless Personal Area Networks (LoWPANs)" (see Section 7 of
ranging from milliseconds to years. Figure 1 depicts the logarithmic [RFC9139]) that was inspired by [RFC5497] and [IEEE.754.2019]. Its
nature of this time representation. logarithmic encoding supports a representation ranging from
milliseconds to years. Figure 1 depicts the logarithmic nature of
this time representation.
|| | | | | | | | | | | || | | | | | | | | | |
+-----------------------------------------------------------------+ +-----------------------------------------------------------------+
milliseconds years milliseconds years
Figure 1: A logarithmic range representation allows for higher Figure 1: A logarithmic range representation allows for higher
precision in the smaller time ranges and still supports large precision in the smaller time ranges and still supports large
time deltas. time deltas.
Time codes encode exponent and mantissa values in a single byte, but Time codes encode exponent and mantissa values in a single byte. In
in contrast to the representation in [IEEE.754.2019], time codes only contrast to the representation in [IEEE.754.2019], time codes only
encode non-negative numbers and hence do not include a separate sign encode non-negative numbers and hence do not include a separate bit
bit. Figure 2 shows the configuration of a time code: an exponent to indicate integer signedness. Figure 2 shows the configuration of
width of 5 bits, and a mantissa width of 3 bits. a time code: an exponent width of 5 bits, and a mantissa width of 3
bits.
<--- one byte wide ---> <--- one byte wide --->
+----+----+----+----+----+----+----+----+ +----+----+----+----+----+----+----+----+
| exponent (b) | mantissa (a) | | exponent (b) | mantissa (a) |
+----+----+----+----+----+----+----+----+ +----+----+----+----+----+----+----+----+
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Figure 2: A time code with exponent and mantissa to encode a Figure 2: A time code with exponent and mantissa to encode a
logarithmic range time representation. logarithmic range time representation.
The base unit for time values are seconds. A time value is The base unit for time values is seconds. A time value is calculated
calculated using the following formula (adopted from [RFC5497] and using the following formula (adopted from [RFC5497] and [RFC9139]),
[RFC9139]), where (a) represents the mantissa, (b) the exponent, and where (a) represents the mantissa, (b) the exponent, and (C) a
(C) a constant factor set to C := 1/32. constant factor set to C := 1/32.
Subnormal (b == 0): (0 + a/8) * 2 * C Subnormal (b == 0): (0 + a/8) * 2 * C
Normalized (b > 0): (1 + a/8) * 2^b * C Normalized (b > 0): (1 + a/8) * 2^b * C
The subnormal form provides a gradual underflow between zero and the The subnormal form provides a gradual underflow between zero and the
smallest normalized number. Eight time values exist in the subnormal smallest normalized number. Eight time values exist in the subnormal
range [0s,~0.0546875s] with a step size of ~0.0078125s between each range [0s,~0.0546875s] with a step size of ~0.0078125s between each
time value. This configuration also encodes the following convenient time value. This configuration also encodes the following convenient
numbers in seconds: [1, 2, 4, 8, 16, 32, 64, ...]. Appendix A numbers in seconds: [1, 2, 4, 8, 16, 32, 64, ...]. Appendix A
further includes test vectors to illustrate the logarithmic range. includes test vectors to illustrate the logarithmic range.
An example algorithm to encode a time value into the corresponding An example algorithm to encode a time value into the corresponding
exponent and mantissa is given as pseudo code in Figure 3. Not all exponent and mantissa is given as pseudocode in Figure 3. Not all
time values can be represented by a time code. For these instances, time values can be represented by a time code. For these instances,
the closest time code is chosen that is smaller than the value to a time code is produced that represents a time value closest to and
encode. smaller than the initial time value input.
input: float v // time value input: float v // time value
output: int a, b // mantissa, exponent of time code output: int a, b // mantissa, exponent of time code
(a, b) encode (v): (a, b) encode (v):
if (v == 0) if (v == 0)
return (0, 0) return (0, 0)
if (v < 2 * C) // subnormal if (v < 2 * C) // subnormal
a = floor (v * 4 / C) // round down a = floor (v * 4 / C) // round down
return (a, 0) return (a, 0)
else // normalized else // normalized
if (v > (1 + 7/8) * 2^31 * C) // check bounds if (v > (1 + 7/8) * 2^31 * C) // check bounds
return (7, 31) // return maximum return (7, 31) // return maximum
else else
b = floor (log2(v / C)) // round down b = floor (log2(v / C)) // round down
a = floor ((v / (2^b * C) - 1) * 8) // round down a = floor ((v / (2^b * C) - 1) * 8) // round down
return (a, b) return (a, b)
Figure 3: Algorithm in pseudo code. Figure 3: Algorithm in pseudocode.
As an example: No specific time code for 0.063 exists, but this For example, no specific time code for 0.063 exists. However, this
algorithm maps to the closest valid time code that is smaller, i.e., algorithm maps to the closest valid time code that is smaller than
exponent 1 and mantissa 0 (the same as for time value 0.0625). 0.063, i.e., exponent 1 and mantissa 0 (the same as for time value
0.0625).
5. Protocol Integration of the Compact Time Representation 5. Protocol Integration of the Compact Time Representation
A straightforward way to accommodate the compact time approach is to A straightforward way to accommodate the compact time approach is to
use a 1-byte length field to indicate this alternative encoding while use a 1-byte length field to indicate this alternative encoding while
retaining the existing TLV registry entries. This approach has retaining the existing TLV registry entries. This approach has
backward compatibility problems, but is still considered for the backward compatibility problems, but it is still considered for the
following reasons: following reasons:
* Both CCNx RFCs are experimental and not Standards Track, hence * Both CCNx RFCs ([RFC8569] and [RFC8609]) are Experimental and not
expectations for forward and backward compatibility are not as Standards Track; hence, expectations for forward and backward
stringent. "Flag day" upgrades of deployed CCNx networks, while compatibility are not as stringent. "Flag day" upgrades of
inconvenient, are still feasible. deployed CCNx networks, while inconvenient, are still feasible.
* The major use case for these compressed encodings are smaller- * The major use case for these compressed encodings are smaller-
scale IoT and/or sensor networks where the population of scale IoT and/or sensor networks where the population of
consumers, producers, and forwarders is reasonably small. consumers, producers, and forwarders is reasonably small.
* Since the current TLVs have hop-by-hop semantics, they are not * 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 covered by any signed hash and hence may be freely re-encoded by
any forwarder. That means a forwarder supporting the new encoding any forwarder. That means a forwarder supporting the new encoding
can translate freely between the two encodings. can translate freely between the two encodings.
* The alternative of assigning new TLV registry values does not * The alternative of assigning new TLV registry values does not
substantially mitigate the interoperability problems anyway. substantially mitigate the interoperability problems anyway.
5.1. Interest Lifetime 5.1. Interest Lifetime
The Interest Lifetime definition in [RFC8609] allows for a variable- The Interest Lifetime definition in [RFC8609] allows for a variable-
length lifetime representation, where a length of 1 encodes the length lifetime representation, where a length of 1 encodes the
linear range [0,255] in milliseconds. This document changes the linear range [0,255] in milliseconds. This document changes the
definition to always encode 1-byte Interest lifetime values in the definition to always encode 1-byte Interest Lifetime values in the
compact time value representation (Figure 4). compact time value representation (see Figure 4). For any other
length, Interest Lifetimes are encoded as described in Section 3.4.1
of [RFC8609].
1 2 3 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 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 | | T_INTLIFE | Length = 1 |
+---------------+---------------+---------------+---------------+ +---------------+---------------+---------------+---------------+
| COMPACT_TIME | | COMPACT_TIME |
+---------------+ +---------------+
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 |
+---------------+---------------+---------------+---------------+
/ /
/ Lifetime (Length octets) /
/ /
+---------------+---------------+---------------+---------------+
Figure 4: Changes to the definition of the Interest Lifetime TLV. Figure 4: Changes to the definition of the Interest Lifetime TLV.
5.2. Recommended Cache Time 5.2. Recommended Cache Time
The Recommended Cache Time definition in [RFC8609] specifies an The Recommended Cache Time definition in [RFC8609] specifies an
absolute time representation that is of a length fixed to 8 bytes. absolute time representation that is of a length fixed to 8 bytes.
This document changes the definition to always encode 1-byte This document changes the definition to always encode 1-byte
Recommended Cache Time values in the compact relative time value Recommended Cache Time values in the compact relative time value
representation (Figure 5). representation (see Figure 5). For any other length, Recommended
Cache Times are encoded as described in Section 3.4.2 of [RFC8609].
1 2 3 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 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 | | T_CACHETIME | Length = 1 |
+---------------+---------------+---------------+---------------+ +---------------+---------------+---------------+---------------+
| COMPACT_TIME | | COMPACT_TIME |
+---------------+ +---------------+
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 = 8 |
+---------------+---------------+---------------+---------------+
/ /
/ Recommended Cache Time /
/ /
+---------------+---------------+---------------+---------------+
Figure 5: Changes to the definition of the Recommended Cache Time Figure 5: Changes to the definition of the Recommended Cache Time
TLV. TLV.
The packet processing is adapted to calculate an absolute time from The packet processing is adapted to calculate an absolute time from
the relative time code based on the absolute reception time. On the relative time code based on the absolute reception time. On
transmission, a new relative time code is calculated based on the transmission, a new relative time code is calculated based on the
current system time. current system time.
6. IANA Considerations 6. IANA Considerations
This document has no IANA actions. This document has no IANA actions.
7. Security Considerations 7. Security Considerations
This document makes no semantic changes to [RFC8569], nor to any of This document makes no semantic changes to [RFC8569], nor to any of
the security properties of the message encodings of [RFC8609], and the security properties of the message encodings described in
hence has the same security considerations as those two existing [RFC8609]; hence, it has the same security considerations as those
documents. Additional considerations need to be made in networks two documents. Careful consideration is needed for networks that
that deploy forwarders with support (updated forwarder) and without deploy forwarders with support (updated forwarder) and without
support (legacy forwarder) for this compact time representation: support (legacy forwarder) for this compact time representation:
Interest Lifetime: A legacy forwarder interprets a time code as an Interest Lifetime: A legacy forwarder interprets a time code as an
Interest lifetime between 0 and 255 milliseconds. This may lead Interest Lifetime between 0 and 255 milliseconds. This may lead
to a degradation of network performance, since Pending Interest to a degradation of network performance, since Pending Interest
Table (PIT) entries timeout quicker than expected. An updated Table (PIT) entries timeout quicker than expected. An updated
forwarder interprets short lifetimes set by a legacy forwarder as forwarder interprets short lifetimes set by a legacy forwarder as
time codes, thus configuring timeouts of up to 4 years. This time codes, thus configuring timeouts of up to 4 years. This
leads to an inefficient occupation of state space. leads to an inefficient occupation of state space.
Recommended Cache Time: A legacy forwarder considers a Recommended Recommended Cache Time: A legacy forwarder considers a Recommended
Cache Time with length 1 as a structural or syntactical error and Cache Time with length 1 as a structural or syntactical error and
it SHOULD discard the packet (section 10.3.9 [RFC8569]). it SHOULD discard the packet (Section 10.3.9 of [RFC8569]).
Otherwise, a legacy forwarder interprets time codes as absolute Otherwise, a legacy forwarder interprets time codes as absolute
time values far in the past, which impacts cache utilization. time values far in the past, which impacts cache utilization.
8. References 8. References
8.1. Normative References 8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
skipping to change at page 10, line 21 skipping to change at line 414
Networking (CCNx) Messages in TLV Format", RFC 8609, Networking (CCNx) Messages in TLV Format", RFC 8609,
DOI 10.17487/RFC8609, July 2019, DOI 10.17487/RFC8609, July 2019,
<https://www.rfc-editor.org/info/rfc8609>. <https://www.rfc-editor.org/info/rfc8609>.
8.2. Informative References 8.2. Informative References
[ICNLOWPAN] [ICNLOWPAN]
Gündoğan, C., Kietzmann, P., Schmidt, T., and M. Wählisch, Gündoğan, C., Kietzmann, P., Schmidt, T., and M. Wählisch,
"Designing a LoWPAN convergence layer for the Information "Designing a LoWPAN convergence layer for the Information
Centric Internet of Things", Computer Communications, Vol. Centric Internet of Things", Computer Communications, Vol.
164, No. 1, p. 114123, Elsevier, December 2020, 164, No. 1, p. 114-123, Elsevier, December 2020,
<https://doi.org/10.1016/j.comcom.2020.10.002>. <https://doi.org/10.1016/j.comcom.2020.10.002>.
[IEEE.754.2019] [IEEE.754.2019]
Institute of Electrical and Electronics Engineers, C/MSC - IEEE, "Standard for Floating-Point Arithmetic", IEEE
Microprocessor Standards Committee, "Standard for Std 754-2019, DOI 10.1109/IEEESTD.2019.8766229, June 2019,
Floating-Point Arithmetic", June 2019,
<https://standards.ieee.org/content/ieee-standards/en/ <https://standards.ieee.org/content/ieee-standards/en/
standard/754-2019.html>. standard/754-2019.html>.
[RFC5497] Clausen, T. and C. Dearlove, "Representing Multi-Value [RFC5497] Clausen, T. and C. Dearlove, "Representing Multi-Value
Time in Mobile Ad Hoc Networks (MANETs)", RFC 5497, Time in Mobile Ad Hoc Networks (MANETs)", RFC 5497,
DOI 10.17487/RFC5497, March 2009, DOI 10.17487/RFC5497, March 2009,
<https://www.rfc-editor.org/info/rfc5497>. <https://www.rfc-editor.org/info/rfc5497>.
[RFC7927] Kutscher, D., Ed., Eum, S., Pentikousis, K., Psaras, I., [RFC7927] Kutscher, D., Ed., Eum, S., Pentikousis, K., Psaras, I.,
Corujo, D., Saucez, D., Schmidt, T., and M. Waehlisch, Corujo, D., Saucez, D., Schmidt, T., and M. Waehlisch,
skipping to change at page 11, line 32 skipping to change at line 473
| 0xF8 | 67108864.0000000 | | 0xF8 | 67108864.0000000 |
+-----------+----------------------+ +-----------+----------------------+
| 0xFF | 125829120.0000000 | | 0xFF | 125829120.0000000 |
+-----------+----------------------+ +-----------+----------------------+
Table 1: Test Vectors Table 1: Test Vectors
Appendix B. Efficient Time Value Approximation Appendix B. Efficient Time Value Approximation
A forwarder frequently converts compact time into milliseconds to A forwarder frequently converts compact time into milliseconds to
compare Interest lifetimes and the duration of cache entries. On compare Interest Lifetimes and the duration of cache entries. On
many architectures, multiplication and division perform slower than many architectures, multiplication and division perform slower than
addition, subtraction, and bit shifts. The following equations addition, subtraction, and bit shifts. The following equations
approximate the formulas in Section 4, and scale from seconds into approximate the formulas in Section 4, and scale from seconds into
the milliseconds range by applying a factor of 2^10 instead of 10^3. the milliseconds range by applying a factor of 2^10 instead of 10^3.
This results in an error of 2.4%. This results in an error of 2.4%.
b == 0: 2^10 * a * 2^-3 * 2^1 * 2^-5 b == 0: 2^10 * a * 2^-3 * 2^1 * 2^-5
= a << 3 = a << 3
b > 0: (2^10 + a * 2^-3 * 2^10) * 2^b * 2^-5 b > 0: (2^10 + a * 2^-3 * 2^10) * 2^b * 2^-5
= (1 << 5 + a << 2) << b = (1 << 5 + a << 2) << b
Acknowledgments Acknowledgments
We would like to thank the active members of the ICNRG research group We would like to thank the active members of the ICNRG research group
for constructive thoughts. In particular, we thank Marc Mosko and for their constructive thoughts. In particular, we thank Marc Mosko
Ken Calvert for their valuable feedback on the encoding scheme and and Ken Calvert for their valuable feedback on the encoding scheme
the protocol integration. Special thanks also to Carsten Bormann for and protocol integration. Special thanks also go to Carsten Bormann
his constructive in-depth comments during the IRSG review. for his constructive in-depth comments during the IRSG review.
Authors' Addresses Authors' Addresses
Cenk Gündoğan Cenk Gündoğan
Huawei Technologies Duesseldorf GmbH Huawei Technologies Duesseldorf GmbH
Riesstrasse 25 Riesstrasse 25
D-80992 Munich D-80992 Munich
Germany Germany
Email: cenk.gundogan@huawei.com Email: cenk.gundogan@huawei.com
 End of changes. 50 change blocks. 
178 lines changed or deleted 169 lines changed or added

This html diff was produced by rfcdiff 1.48.