rfc9034xml2.original.xml | rfc9034.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!-- This template is for creating an Internet Draft using xml2rfc, | ||||
which is available here: http://xml.resource.org. --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!-- One method to get references from the online citation libraries. | ||||
There has to be one entity for each item to be referenced. | ||||
An alternate method (rfc include) is described in the references. --> | ||||
<!ENTITY RFC2119 SYSTEM | ||||
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"> | ||||
<!ENTITY RFC2629 SYSTEM | ||||
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml"> | ||||
<!ENTITY RFC3552 SYSTEM | ||||
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml"> | ||||
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM | ||||
"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerat | ||||
ions-rfc2434bis.xml"> | ||||
]> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<!-- used by XSLT processors --> | ||||
<!-- For a complete list and description of processing instructions (PIs), | ||||
please see http://xml.resource.org/authoring/README.html. --> | ||||
<!-- Below are generally applicable Processing Instructions (PIs) that most | ||||
I-Ds might want to use. | ||||
(Here they are set differently than their defaults in xml2rfc v1.32) --> | ||||
<?rfc strict="yes" ?> | ||||
<!-- give errors regarding ID-nits and DTD validation --> | ||||
<!-- control the table of contents (ToC) --> | ||||
<?rfc toc="yes"?> | ||||
<!-- generate a ToC --> | ||||
<?rfc tocdepth="4"?> | ||||
<!-- the number of levels of subsections in ToC. default: 3 --> | ||||
<!-- control references --> | ||||
<?rfc symrefs="yes"?> | ||||
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] --> | ||||
<?rfc sortrefs="yes" ?> | ||||
<!-- sort the reference entries alphabetically --> | ||||
<!-- control vertical white space | ||||
(using these PIs as follows is recommended by the RFC Editor) --> | ||||
<?rfc compact="yes" ?> | ||||
<!-- do not start each main section on a new page --> | ||||
<?rfc subcompact="no" ?> | ||||
<!-- keep one blank line between list items --> | ||||
<!-- end of list of popular I-D processing instructions --> | ||||
<rfc category="std" | ||||
docName="draft-ietf-6lo-deadline-time-05" ipr="trust200902"> | ||||
<!-- category values: std, bcp, info, exp, and historic | ||||
http://umeeting.huawei.com/Portal/business.action?BMECID=1474233&BMETimestamp=1 | ||||
426658395147 | ||||
ipr values: full3667, noModification3667, noDerivatives3667 | ||||
you can add the attributes updates="NNNN" and obsoletes="NNNN" | ||||
they will automatically be output with "(if approved)" --> | ||||
<!-- ***** FRONT MATTER ***** --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | |||
submissionType="IETF" | ||||
category="std" | ||||
consensus="true" | ||||
docName="draft-ietf-6lo-deadline-time-05" | ||||
number="9034" | ||||
ipr="trust200902" | ||||
obsoletes="" | ||||
updates="" | ||||
xml:lang="en" | ||||
tocInclude="true" | ||||
tocDepth="2" | ||||
symRefs="true" | ||||
sortRefs="true" | ||||
version="3"> | ||||
<!-- xml2rfc v2v3 conversion 2.47.0 --> | ||||
<front> | <front> | |||
<!-- The abbreviated title is used in the page header - it is only | ||||
necessary if the full title is longer than 39 characters --> | ||||
<title abbrev="6lo Delivery Deadline Time"> | <title abbrev="6lo Delivery Deadline Time"> | |||
Packet Delivery Deadline time in 6LoWPAN Routing Header </title> | Packet Delivery Deadline Time in the Routing Header for IPv6 over Low-Pow | |||
er Wireless Personal Area Networks (6LoWPANs)</title> | ||||
<!-- add 'role="editor"' below for the editors if appropriate --> | <seriesInfo name="RFC" value="9034"/> | |||
<!-- Another author who claims to be an editor --> | ||||
<author fullname="Lijo Thomas" initials="" surname="Lijo Thomas"> | <author fullname="Lijo Thomas" initials="L." surname="Thomas"> | |||
<organization>C-DAC</organization> | <organization abbrev="C-DAC">Centre for Development of Advanced Computing< | |||
/organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Centre for Development of Advanced Computing (C-DAC), | <street>Vellayambalam</street> | |||
Vellayambalam</street> | ||||
<!-- Reorder these if your country does things differently --> | ||||
<city>Trivandrum</city> | <city>Trivandrum</city> | |||
<region/> | ||||
<code>695033</code> | <code>695033</code> | |||
<country>India</country> | <country>India</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<email>lijo@cdac.in</email> | <email>lijo@cdac.in</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | ||||
</author> | ||||
<author fullname="Satish Anamalamudi" initials="S." surname="Anamalamudi"> | </address> | |||
</author> | ||||
<author fullname="Satish Anamalamudi" initials="S." surname="Anamalamudi"> | ||||
<organization>SRM University-AP</organization> | <organization>SRM University-AP</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Amaravati Campus</street> | <street>Amaravati Campus</street> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Amaravati, Andhra Pradesh</city> | <city>Amaravati, Andhra Pradesh</city> | |||
<region/> | ||||
<code>522 502</code> | <code>522 502</code> | |||
<country>India</country> | <country>India</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<email>satishnaidu80@gmail.com</email> | <email>satishnaidu80@gmail.com</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="S.V.R. Anand" initials="S.V.R." surname="Anand"> | ||||
<author fullname="S.V.R Anand" initials="" surname="S.V.R.Anand"> | ||||
<organization>Indian Institute of Science</organization> | <organization>Indian Institute of Science</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | ||||
<!-- Reorder these if your country does things differently --> | ||||
<city>Bangalore</city> | <city>Bangalore</city> | |||
<region/> | ||||
<code>560012</code> | <code>560012</code> | |||
<country>India</country> | <country>India</country> | |||
</postal> | </postal> | |||
<phone/> | <email>anandsvr@iisc.ac.in</email> | |||
<email>anand@ece.iisc.ernet.in</email> | ||||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Malati Hegde" initials="M." surname="Hegde"> | ||||
<author fullname="Malati Hegde" initials="" surname="Malati Hegde"> | ||||
<organization>Indian Institute of Science</organization> | <organization>Indian Institute of Science</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | ||||
<!-- Reorder these if your country does things differently --> | ||||
<city>Bangalore</city> | <city>Bangalore</city> | |||
<region/> | ||||
<code>560012</code> | <code>560012</code> | |||
<country>India</country> | <country>India</country> | |||
</postal> | </postal> | |||
<phone/> | <email>malati@iisc.ac.in</email> | |||
<email>malati@ece.iisc.ernet.in</email> | ||||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Charles E. Perkins" initials="C.E." surname="Perkins"> | <author fullname="Charles E. Perkins" initials="C." surname="Perkins"> | |||
<organization>Futurewei</organization> | <organization>Lupin Lodge</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>2330 Central Expressway</street> | <street>20600 Aldercroft Heights Rd.</street> | |||
<!-- Reorder these if your country does things differently --> | <city>Los Gatos</city> | |||
<city>Santa Clara</city> | <region>CA</region> | |||
<region/> | <code>95033</code> | |||
<code>95050</code> | <country>United States of America</country> | |||
<country>Unites States</country> | ||||
</postal> | </postal> | |||
<phone/> | ||||
<email>charliep@computer.org</email> | <email>charliep@computer.org</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<date year="2021" month="June" /> | ||||
<date /> | ||||
<!-- If the month and year are both specified and are the current ones, | ||||
xml2rfc will fill in the current day for you. If only the current | ||||
year is specified, xml2rfc will fill in the current day and month for | ||||
you. If the year is not the current one, it is necessary to specify | ||||
at least a month (xml2rfc assumes day="1" if not specified for the | ||||
purpose of calculating the expiry date). With drafts it is normally | ||||
sufficient to specify just the year. --> | ||||
<!-- Meta-data Declarations --> | ||||
<area>Internet</area> | <area>Internet</area> | |||
<workgroup>6lo</workgroup> | <workgroup>6lo</workgroup> | |||
<!-- WG name at the upperleft corner of the doc; | <keyword>Routing header</keyword> | |||
IETF is fine for individual submissions. If this element is not | <keyword>Timestamp</keyword> | |||
present, the default is "Network Working Group", which is used by | ||||
the RFC Editor as a nod to the history of the IETF. --> | ||||
<keyword>Routing header, Timestamp</keyword> | ||||
<!-- Keywords will be incorporated into HTML output | ||||
files in a meta tag but they have no effect on text or nroff | ||||
output. If you submit your draft to the RFC Editor, the | ||||
keywords will be used for the search engine. --> | ||||
<abstract> | <abstract> | |||
<t> | ||||
<t> | ||||
This document specifies a new type for the 6LoWPAN routing header | This document specifies a new type for the 6LoWPAN routing header | |||
containing the deadline time for data packets, designed for use over | containing the deadline time for data packets, designed for use over | |||
constrained networks. The deadline time enables forwarding and | constrained networks. The deadline time enables forwarding and | |||
scheduling decisions for time critical IoT machine to machine (M2M) | scheduling decisions for time-critical machine-to-machine (M2M) | |||
applications that operate within time-synchronized networks that agree | applications running on Internet-enabled devices that operate within | |||
on the meaning of the time representations used for the deadline | time-synchronized networks. This document also specifies a | |||
time values. | representation for the deadline time values in such networks. | |||
</t> | </t> | |||
<!-- Lijo : Eric Vyncke Comment: "Last sentence needs to be parsed as it very | ||||
long" --> | ||||
<!-- Lijo : Suggested Change : "that operate within time-synchronized networks. | ||||
his document specifies the time representation --> | ||||
<!-- that needs to be followed by such networks for the de | ||||
adline time values.. " --> | ||||
<!-- Lijo : @Charlie : Should we expand M2M based on eric comment ?--> | ||||
</abstract> | ||||
</front> | ||||
<middle> | </abstract> | |||
<section title="Introduction" anchor="Intro"> | </front> | |||
<t> | <middle> | |||
Low Power and Lossy Networks (LLNs) are likely to be deployed for | <section anchor="Intro" numbered="true" toc="default"> | |||
real time industrial applications requiring end-to-end | <name>Introduction</name> | |||
delay guarantees <xref target="I-D.ietf-detnet-use-cases"/>. | <t> | |||
A Deterministic Network ("detnet") typically requires some data packets | Low-Power and Lossy Networks (LLNs) are likely to be deployed for | |||
real-time industrial applications requiring end-to-end | ||||
delay guarantees <xref target="RFC8578" format="default"/>. | ||||
A Deterministic Network ("DetNet") typically requires some data packets | ||||
to reach their receivers within strict time bounds. | to reach their receivers within strict time bounds. | |||
Intermediate nodes use the deadline information to make | Intermediate nodes use the deadline information to make | |||
appropriate packet forwarding and scheduling decisions to meet the | appropriate packet forwarding and scheduling decisions to meet the | |||
time bounds. | time bounds. | |||
</t> | </t> | |||
<t> | <t> | |||
This document specifies a new type for the Elective 6LoWPAN Routing | This document specifies a new type for the Elective 6LoWPAN Routing | |||
Header (6LoRHE), so that the deadline time (i.e., the time of latest | Header (6LoRHE), Deadline-6LoRHE, so that the deadline time (i.e., the ti me of latest | |||
acceptable delivery) of data | acceptable delivery) of data | |||
packets can be included within the 6LoWPAN routing header. | packets can be included within the 6LoRHE. | |||
<xref target="RFC8138"/> specifies the 6LoWPAN Routing Header (6LoRH), | <xref target="RFC8138" format="default"/> specifies the 6LoWPAN Routing H | |||
compression schemes for RPL routing (source routing) operation | eader (6LoRH), | |||
<xref target="RFC6554"/>, header compression of RPL Packet | compression schemes for RPL (Routing Protocol for Low-Power and Lossy Net | |||
Information <xref target="RFC6553"/>, and IP-in-IP encapsulation. | works) source routing <xref target="RFC6554" format="default"/>, header compress | |||
This document also specifies handling of the deadline | ion of RPL packet | |||
time when packets traverse between time-synchronized networks | information <xref target="RFC6553" format="default"/>, and IP-in-IP encap | |||
operating in different timezones or distinct reference clocks. | sulation. | |||
Time synchronization techniques are outside the scope of this | This document also specifies the handling of the deadline | |||
time when packets traverse time-synchronized networks | ||||
operating in different time zones or distinct reference clocks. | ||||
Time-synchronization techniques are outside the scope of this | ||||
document. There are a number of standards available for this | document. There are a number of standards available for this | |||
purpose, including IEEE 1588 <xref target="ieee-1588"/>, | purpose, including IEEE 1588 <xref target="IEEE.1588.2008" format="defaul | |||
IEEE 802.1AS <xref target="dot1AS-2011"/>, | t"/>, | |||
IEEE 802.15.4-2015 TSCH <xref target="dot15-tsch"/>, and more. | IEEE 802.1AS <xref target="IEEE.802.1AS.2011" format="default"/>, | |||
</t> | IEEE 802.15.4-2015 Time-Slotted Channel Hopping (TSCH) <xref target="IEEE | |||
<!-- Lijo : Eric Vyncke Comment: "does 'time zone' in this document doe | .802.15.4" format="default"/>, and more. | |||
s not refer to EST.." --> | </t> | |||
<!-- Lijo :suggestion: "time-synchronized networks operating over disti | ||||
nct reference clocks resulting in different timezones." --> | ||||
<t> | <t> | |||
The Deadline-6LoRHE can be used in any time synchronized 6Lo network. | The Deadline-6LoRHE can be used in any time-synchronized 6LoWPAN network. | |||
A 6TiSCH network is used to describe the implementation of the | A 6TiSCH (IPv6 over the TSCH mode of IEEE 802.15.4) network is used to de | |||
scribe the implementation of the | ||||
Deadline-6LoRHE, but this does not preclude its use in scenarios other | Deadline-6LoRHE, but this does not preclude its use in scenarios other | |||
than 6TiSCH. For instance, there is a growing interest in using 6lo | than 6TiSCH. For instance, there is a growing interest in using 6LoWPAN | |||
over a BLE mesh network <xref target="I-D.ietf-6lo-blemesh"/> in | over a Bluetooth Low Energy (BLE) mesh network <xref target="I-D.ietf-6lo | |||
industrial IoT <xref target="dotBLEMesh"/>. BLE mesh time | -blemesh" format="default"/> in | |||
industrial IoT (Internet of Things) <xref target="IEEE-BLE-MESH" format=" | ||||
default"/>. BLE mesh time | ||||
synchronization is being explored by the Bluetooth | synchronization is being explored by the Bluetooth | |||
community. There are also cases under consideration in Wi-SUN | community. There are also cases under consideration in Wi-SUN | |||
<xref target="Wi-SUN_PHY"/>, <xref target="dotWi-SUN"/>. | <xref target="PHY-SPEC" format="default"/> <xref target="Wi-SUN" format=" | |||
</t> | default"/>. | |||
</section> <!-- End of section "Introduction" --> | </t> | |||
</section> | ||||
<section anchor="acronyms_terms" title="Terminology"> | <section anchor="acronyms_terms" numbered="true" toc="default"> | |||
<name>Terminology</name> | ||||
<t> | <t> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | ", | |||
described in <xref target="RFC2119"/> <xref target="RFC8174"/>. | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
</t> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
<t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
This document uses the terminology defined in | be | |||
<xref target="RFC6550"/> and | interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | |||
<xref target="I-D.ietf-6tisch-terminology"/>. | target="RFC8174"/> when, and only when, they appear in all capitals, as | |||
</t> | shown here. | |||
</section> <!-- End of section "Terminology" --> | </t> | |||
<section title="6LoRHE Generic Format"> | <t> | |||
This document uses the terminology defined in | ||||
<xref target="RFC6550" format="default"/> and | ||||
<xref target="RFC9030" format="default"/>. | ||||
</t> | ||||
</section> | ||||
<t> | <section numbered="true" toc="default"> | |||
<name>6LoRHE Generic Format</name> | ||||
<t> | ||||
Note: this section is not normative and is included for convenience. | Note: this section is not normative and is included for convenience. | |||
The generic header format of the 6LoRHE is specified in | The generic header format of the 6LoRHE is specified in | |||
<xref target="I-D.ietf-roll-routing-dispatch"/>. | <xref target="RFC8138" format="default"/>. | |||
<xref target="fig1"/> illustrates the 6LoRHE generic format. | <xref target="fig1" format="default"/> illustrates the 6LoRHE generic for | |||
<figure anchor="fig1" title="6LoRHE format"> | mat. | |||
<artwork><![CDATA[ | </t> | |||
<figure anchor="fig1"> | ||||
<name>6LoRHE Format</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
|1|0|1| Length | Type | Options | | |1|0|1| Length | Type | Options | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ... -+ | |||
<--- length --->]]> | <--- length ---> | |||
</artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<!-- Lijo : Eric Vyncke Comment: Added "Options" in above figure . DONE --> | <dl> | |||
<list style="symbols"> | <dt>Length:</dt> | |||
<t> Length: Length of the 6LoRHE expressed | <dd>Length of the 6LoRHE expressed in bytes, excluding the first 2 bytes. Thi | |||
in bytes, excluding the first 2 bytes. This enables a node to | s | |||
skip a 6LoRHE if the Type is not recognized/supported.</t> | enables a node to skip a 6LoRHE if the Type is not recognized or supporte | |||
<t> Type (variable length): Type of the 6LoRHE | d.</dd> | |||
(see <xref target="iana"/>)</t> | <dt>Type (variable length):</dt> | |||
</list> | <dd>Type of the 6LoRHE (see <xref target="iana" format="default"/>).</dd> | |||
</t> | </dl> | |||
</section> <!-- End of section "6LoRHE Header Format" --> | ||||
<section title="Deadline-6LoRHE" anchor="Description"> | </section> | |||
<t> | ||||
The Deadline-6LoRHE (see <xref target="fig2"/>) is an elective | <section anchor="Description" numbered="true" toc="default"> | |||
6LoRH (i.e., a 6LoRHE <xref target="RFC8138"/>) that provides | <name>Deadline-6LoRHE</name> | |||
<t> | ||||
The Deadline-6LoRHE (see <xref target="fig2" format="default"/>) is | ||||
a 6LoRHE <xref target="RFC8138" format="default"/> that provides | ||||
the Deadline Time (DT) for an IPv6 datagram in a compressed form. | the Deadline Time (DT) for an IPv6 datagram in a compressed form. | |||
Along with the deadline, the header can include the packet | Along with the DT, the header can include the | |||
Origination Time Delta (OTD), the time at which the packet is | Origination Time Delta (OTD) packet, which contains the time when the | |||
packet was | ||||
enqueued for transmission (expressed as a value to be subtracted | enqueued for transmission (expressed as a value to be subtracted | |||
from DT); this enables a close estimate of the total delay | from DT); this enables a close estimate of the total delay | |||
incurred by a packet. The OTD field is initialized by the sender | incurred by a packet. The OTD field is initialized by the sender | |||
based on the current time at the outgoing network interface through | based on the current time at the outgoing network interface through | |||
which the packet is forwarded. Since the OTD is a delta, | which the packet is forwarded. Since the OTD is a delta, | |||
the length of the OTD field (i.e., OTL) will require fewer | the length of the OTD field (i.e., OTL) will require fewer | |||
bits than the length of the DT field (i.e., DTL). | bits than the length of the DT field (i.e., DTL). | |||
</t> | ||||
</t> | <t> The DT field contains the value of the deadline time for the | |||
<!-- Lijo : Mirja Kuhlewind Comment Changed SHOULD to should --> | ||||
<t> The deadline field contains the value of the deadline time for the | ||||
packet -- in other words, the time by which the application expects | packet -- in other words, the time by which the application expects | |||
the packet to be delivered to the Receiver. | the packet to be delivered to the receiver. | |||
</t> | ||||
<?rfc subcompact="yes" ?> | <t indent="3"> | |||
<list> | packet_deadline_time = packet_origination_time + max_delay | |||
<t> packet_deadline_time = packet_origination_time + max_delay </t> | </t> | |||
</list> | <t> | |||
<?rfc subcompact="no" ?> | In order to support delay-sensitive, deterministic applications, | |||
</t> | ||||
<t> | ||||
<!-- Lijo : Mirja Kuhlewind Comment: Change "SHOULD" to should, --> | ||||
In order to support delay-sensitive deterministic applications, | ||||
all nodes within the network should process the Deadline-6LoRHE. | all nodes within the network should process the Deadline-6LoRHE. | |||
The packet deadline time (DT) and origination time (OTD) are | The DT and OTD packets are | |||
represented in time units determined by a scaling parameter in | represented in time units determined by a scaling parameter in | |||
the routing header. The Network ASN (Absolute Slot Number) | the Routing Header. The Network ASN (Absolute Slot Number) | |||
can be used as a time unit in a time slotted | can be used as a time unit in a time-slotted | |||
synchronized network (for instance a 6TiSCH network, where global | synchronized network (for instance, a 6TiSCH network, where global | |||
time is maintained in the units of slot lengths of a certain | time is maintained in the units of slot lengths of a certain | |||
resolution). | resolution). | |||
</t> | </t> | |||
<t> The delay experienced by packets in the network is a useful | ||||
<t> The delay experienced by packets in the network is a useful | ||||
metric for network diagnostics and performance monitoring. | metric for network diagnostics and performance monitoring. | |||
Whenever a packet crosses into a network using | Whenever a packet crosses into a network using | |||
a different reference clock, the Destination Time field is updated | a different reference clock, the DT field is updated | |||
to represent the same Destination Time, but expressed using the | to represent the same deadline time, but expressed using the | |||
reference clock of the interface into the new network. Then the | reference clock of the interface into the new network. Then the | |||
origination time is the same as the current time when the packet | origination time is the same as the current time when the packet | |||
is transmitted into the new network, minus the delay already | is transmitted into the new network, minus the delay already | |||
experienced by the packet, say 'current_dly'. In this way, within | experienced by the packet, say 'current_dly'. In this way, within | |||
the newly entered network, the packet will appear to have | the newly entered network, the packet will appear to have | |||
originated 'current_dly' time units earlier with respect | originated 'current_dly' time units earlier with respect | |||
to the reference clock of the new network.</t> | to the reference clock of the new network.</t> | |||
<t> | ||||
new_network_origin_time = time_now_in_new_network - current_dly | <t indent="3"> | |||
</t> | new_network_origin_time = time_now_in_new_network - current_dly | |||
<t> | </t> | |||
<t> | ||||
The following example illustrates these calculations | The following example illustrates these calculations | |||
when a packet travels between three networks, each in a different | when a packet travels between three networks, each in a different | |||
time zone. 'x' can be 1, 2 or 3. Suppose that the deadline time | time zone (TZ). 'x' can be 1, 2, or 3. Suppose that the deadline tim | |||
as measured in timezone 1 is 1050 and the origination time is 50. | e | |||
as measured in TZ1 is 1050, and the origination time is 50. | ||||
Suppose that the difference between TZ2 and TZ1 is 900, and the | Suppose that the difference between TZ2 and TZ1 is 900, and the | |||
difference between TZ3 and TZ3 is 3600. In the figure, OT | difference between TZ2 and TZ3 is 3600. In the figure, OT | |||
is the origination time as measured in the current timezone, and | is the origination time as measured in the current time zone, and | |||
is equal to DT - OTD, that is, DT - 1000. | is equal to DT - OTD, that is, DT - 1000. | |||
<xref target="time-update"/> uses the following abbreviations: | <xref target="time-update" format="default"/> uses the following abbr | |||
<list> | eviations: | |||
<t>TxA : Time of arrival of packet in the network 'x'</t> | </t> | |||
<t>TxD : Departure time of packet from the network 'x'</t> | ||||
<t>dlyx : Delay experienced by the packet in the | <dl> | |||
previous network(s)</t> | <dt>TxA:</dt> | |||
<t>TZx : The time zone of network 'x' </t> | <dd>Time of arrival of packet in the network 'x' </dd> | |||
</list> | <dt>TxD:</dt> | |||
</t> | <dd>Departure time of packet from the network 'x' </dd> | |||
<t> | <dt>dlyx:</dt> | |||
<figure title="Destination Time Update example" anchor="time-update"> | <dd>Delay experienced by the packet in the previous network(s) </dd> | |||
<artwork> <![CDATA[ | <dt>TZx:</dt> | |||
<dd>The time zone of network 'x' </dd> | ||||
</dl> | ||||
<figure anchor="time-update"> | ||||
<name>Deadline Time Update Example</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
TZ1 TZ2 TZ3 | TZ1 TZ2 TZ3 | |||
T1A=50| | | | T1A=50| | | | |||
|---- dly1=50 | | | |---- dly1=50 | | | |||
| \ | | | | \ | | | |||
| \ | | | | \ | | | |||
| \ T1D=100 |T2A=1000 | | | \ T1D=100 |T2A=1000 | | |||
| -------->|----- dly2=450 | | | -------->|----- dly2=450 | | |||
| | \ | | | | \ | | |||
| | \ | | | | \ | | |||
| | \ T2D=1400 | T3A=5000 | | | \ T2D=1400 | T3A=5000 | |||
skipping to change at line 385 ¶ | skipping to change at line 304 ¶ | |||
| | | | | | | | |||
v v v | v v v | |||
dly0 = 0 dly1 = T1D-OT1 dly2 = T2D-OT2 | dly0 = 0 dly1 = T1D-OT1 dly2 = T2D-OT2 | |||
= 100-50 = 1400 - 950 | = 100-50 = 1400 - 950 | |||
= 50 = 450 | = 50 = 450 | |||
OT1 = T1A-dly0 OT2 = T2A-dly1 OT3 = T3A-dly2 | OT1 = T1A-dly0 OT2 = T2A-dly1 OT3 = T3A-dly2 | |||
= 50 = 1000-50 = 5000 - 450 | = 50 = 1000-50 = 5000 - 450 | |||
= 950 = 4550 | = 950 = 4550 | |||
]]></artwork> </figure> | ]]></artwork> | |||
</t> | </figure> | |||
<t> There are multiple ways that a packet can be delayed, including | <t> There are multiple ways that a packet can be delayed, including | |||
queuing delay, MAC layer contention delay, serialization delay, and | queuing delay, Media Access Control (MAC) layer contention delay, seriali | |||
propagation delays. Sometimes there are processing delays as well. | zation delay, and | |||
propagation delay. Sometimes there are processing delays as well. | ||||
For the purpose of determining whether or not the deadline has | For the purpose of determining whether or not the deadline has | |||
already passed, these various delays are not distinguished. | already passed, these various delays are not distinguished. | |||
</t> | </t> | |||
</section> <!-- End of section "Deadline-6LoRHE Description" --> | </section> | |||
<section title="Deadline-6LoRHE Format" anchor="Format"> | <section anchor="Format" numbered="true" toc="default"> | |||
<t> | <name>Deadline-6LoRHE Format</name> | |||
<figure anchor="fig2" title="Deadline-6LoRHE format"> | <figure anchor="fig2"> | |||
<artwork><![CDATA[ | <name>Deadline-6LoRHE Format</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|1|0|1| Length | 6LoRH Type |D| TU| DTL | OTL | BinaryPt | | |1|0|1| Length | 6LoRH Type |D| TU| DTL | OTL | BinaryPt | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| DT (variable length) | OTD(variable length)(optional)| | | DT (variable length) | OTD(variable length)(optional)| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
</artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</t> | ||||
<?rfc subcompact="yes" ?> | <dl> | |||
<t> <list style="symbols"> | <dt>Length (5 bits): | |||
<t> Length (5 bits): Length represents the total length of the | </dt> | |||
Deadline-6LoRHE type measured in octets.</t> | <dd>Length represents the total length of the Deadline-6LoRHE Type measured in o | |||
<t> 6LoRH Type: TBD (see <xref target="iana"/>)</t> | ctets. | |||
<t> D flag (1 bit): The 'D' flag, set by the Sender, qualifies the action | </dd> | |||
to be taken when a 6LR detects that the deadline time has elapsed. | <dt>6LoRH Type:</dt> | |||
If 'D' bit is 1, then the 6LR MUST drop the packet if the | <dd>7 (See <xref target="iana" format="default"/>.) | |||
deadline time is elapsed. | </dd> | |||
If 'D' bit is 0, the packet MAY be forwarded on an exception | ||||
basis, if the forwarding node is NOT in a situation of constrained | ||||
resource, and if there are reasons to suspect that downstream nodes | ||||
might find it useful (delay measurements, interpolations, etc.). | ||||
</t> | ||||
<t> TU (2 bits) : Indicates the time units for DT and OTD fields. | ||||
The encodings for the DT and OTD fields use the same | ||||
time units and precision. | ||||
<list> | ||||
<t>00 : Time represented in seconds and fractional seconds</t> | ||||
<t>01 : Reserved</t> | ||||
<t>10 : Network ASN</t> | ||||
<t>11 : Reserved</t> | ||||
</list> | ||||
</t> | ||||
<t> DTL (4 bits): Length of DT field as an unsigned 4-bit integer, | ||||
encoding the length of the field in hex digits, minus one. | ||||
</t> | ||||
<t> OTL (3 bits) : Length of OTD field as an unsigned 3-bit integer, | <dt>D flag (1 bit): | |||
encoding the length of the field in hex digits. If OTL == 0, the | </dt> | |||
OTD field is not present. The value of OTL MUST NOT exceed the | <dd><t>The 'D' flag, set by the sender, qualifies the action to be taken when a | |||
value of DTL plus one. | 6LoWPAN Router (6LR) detects that the deadline time has elapsed.</t> | |||
<list> | <t>If 'D' bit is 1, then the 6LR | |||
<t> For example, DTL = 0b0000 means the deadline time in the 6LoRHE is | <bcp14>MUST</bcp14> drop the packet if the deadline time is elapsed.</t> | |||
1 hex digit (4 bits) long. OTL = 0b111 means the origination time | <t>If 'D' | |||
is 7 hex digits (28 bits) long.</t> | bit is 0, the packet <bcp14>MAY</bcp14> be forwarded on an exception basis, if | |||
</list></t> | the forwarding node is NOT in a situation of constrained resource, and if | |||
<t> Binary Pt (6 bits) : If zero, the number of bits of the integer part | there are reasons to suspect that downstream nodes might find it useful (delay | |||
measurements, interpolations, etc.).</t> | ||||
</dd> | ||||
<dt>TU (2 bits): | ||||
</dt> | ||||
<dd> | ||||
<t>Indicates the time units for DT and OTD fields. The encodings for the | ||||
DT and OTD fields use the same time units and precision. </t> | ||||
<dl spacing="compact"> | ||||
<dt>00</dt><dd>Time represented in seconds and fractional seconds</d | ||||
d> | ||||
<dt>01</dt><dd>Reserved</dd> | ||||
<dt>10</dt><dd>Network ASN</dd> | ||||
<dt>11</dt><dd>Reserved</dd> | ||||
</dl> | ||||
</dd> | ||||
<dt>DTL (4 bits): | ||||
</dt> | ||||
<dd>Length of the DT field as an unsigned 4-bit integer, encoding the length of | ||||
the field in hex digits, minus one. | ||||
</dd> | ||||
<dt>OTL (3 bits): | ||||
</dt> | ||||
<dd><t>Length of the OTD field as an unsigned 3-bit integer, | ||||
encoding the length of the field in hex digits. If OTL == 0, the OTD field is | ||||
not present. The value of OTL <bcp14>MUST NOT</bcp14> exceed the value of DTL | ||||
plus one. | ||||
</t> | ||||
<t>For example, DTL = 0b0000 means the DT field in the | ||||
6LoRHE is 1 hex digit (4 bits) long. OTL = 0b111 means the | ||||
OTD field is 7 hex digits (28 bits) long.</t> | ||||
</dd> | ||||
<dt>BinaryPt (6 bits): | ||||
</dt> | ||||
<dd><t>If zero, the number of bits of the integer part | ||||
the DT is equal to the number of bits of the fractional part of | the DT is equal to the number of bits of the fractional part of | |||
the DT. if nonzero, the Binary Pt is a signed integer determining | the DT. If nonzero, the BinaryPt is a (2's complement) signed | |||
the position of the binary point within the value for the DT. | integer determining the position of the binary point within the value | |||
<list style="symbols"> | for the DT. This allows BinaryPt to be within the range [-32,31].</t> | |||
<t> If BinaryPt value is positive, then the number of bits for the | <ul> | |||
integer part of the DT is increased by the value of BinaryPt, | <li> If BinaryPt value is positive, then the number of bits for | |||
and the number of bits for the fractional part of the DT is | the integer part of the DT is increased by the value of BinaryPt, | |||
correspondingly reduced. This increases the range of DT.</t> | and the number of bits for the fractional part of the DT is | |||
<t> If BinaryPt value is negative, then the number of bits for the | correspondingly reduced. This increases the range of DT.</li> | |||
integer part of the DT is decreased by the value of BinaryPt, | <li> If BinaryPt value is negative, then the number of bits for | |||
and the number of bits for the fractional part of the DT is | the integer part of the DT is decreased by the value of BinaryPt, | |||
correspondingly increased. This increases the precision | and the number of bits for the fractional part of the DT is | |||
of the fractional seconds part of DT.</t> | correspondingly increased. This increases the precision of the | |||
fractional seconds part of DT.</li> | ||||
</ul> | ||||
</dd> | ||||
<!-- Lijo : Alexey Melnikov Comment: "It would be good if you specified how ne | <dt>DT Value (4..64 bits): | |||
gative values are represented --> | </dt> | |||
<!-- and the range for positive and negative | <dd>An unsigned integer of DTL+1 hex digits giving the DT value. | |||
values" --> | </dd> | |||
</list> </t> | <dt>OTD Value (4..28 bits): | |||
<t> DT Value (8..64-bit) : An unsigned integer of DTL+1 hex digits | </dt> | |||
giving the Deadline Time value </t> | <dd>If present, an unsigned integer of OTL hex digits giving the origination tim | |||
<t> OTD Value (8..64-bit) : An unsigned integer of OTL hex digits giving | e as a | |||
the Origination Time as a negative offset from the DT value </t> | negative offset from the DT value. | |||
</list> </t> | </dd> | |||
<?rfc subcompact="no" ?> | </dl> | |||
<t> Whenever a sender initiates the IP datagram, it includes the | ||||
Deadline-6LoRHE along with other 6LoRH information. For information | <t> Whenever a sender initiates the IP datagram, it includes the | |||
about the time synchronization requirements between sender and | Deadline-6LoRHE along with other 6LoRH information. For information about | |||
receiver see <xref target="sync"/>. | the time-synchronization requirements between sender and receiver, see <xref | |||
</t> | target="sync" format="default"/>. | |||
</t> | ||||
<t> | ||||
<t> | ||||
<!-- CEP: Wraparound, revisited... --> | ||||
For the chosen time unit, a compressed time representation is | For the chosen time unit, a compressed time representation is | |||
available as follows. First, the application on the originating node | available as follows. First, the application on the originating node | |||
has to determine | determines | |||
how many time bits are needed to represent the difference between the | how many time bits are needed to represent the difference between the | |||
time at which the packet is launched and the deadline time, including | time at which the packet is launched and the deadline time, including | |||
the representation of fractional time units. That number of bits | the representation of fractional time units. That number of bits | |||
(say, N_bits) determines DTL (the length of the Deadline Time (DT)) | (say, N_bits) determines DTL as follows: | |||
as follows: | </t> | |||
<list> | <t indent="3"> | |||
<t> DTL = (N_bits mod 4) </t> | DTL = ((N_bits - 1) / 4) | |||
</list> | </t> | |||
The number of bits determined by DTL allows counting any number of | <t> | |||
The number of bits determined by DTL allows the counting of any number of | ||||
fractional time units in the range of interest determined by DT and the | fractional time units in the range of interest determined by DT and the | |||
origination time OT. Denote this number of fractional time units to | OT. Denote this number of fractional time units to | |||
be Epoch_Range(DTL) (i.e., Epoch_Range is a function of DTL). | be Epoch_Range(DTL) (i.e., Epoch_Range is a function of DTL): | |||
<list> | </t> | |||
<t> Epoch_Range(DTL) = (2^(4*(DTL+1)) </t> | <t indent="3"> | |||
</list> | Epoch_Range(DTL) = 2<sup>4*(DTL+1)</sup> | |||
</t> | ||||
<t> | ||||
Each point of time between OT and DT is represented by a time unit and | Each point of time between OT and DT is represented by a time unit and | |||
a fractional time unit; in this section, this combined representation | a fractional time unit; in this section, this combined representation | |||
is called a rational time unit (RTU). 1 RTU measures the smallest | is called a rational time unit (RTU). 1 RTU measures the smallest | |||
fractional time that can be represented between two points of time | fractional time that can be represented between two points of time | |||
in the epoch (i.e., within the range of interest). | in the epoch (i.e., within the range of interest). | |||
</t> | </t> | |||
<t> | <t> | |||
DT - OT cannot exceed 2^(4*(DTL+1)) == 16^(DTL+1). A low value of DTL | DT - OT cannot exceed 2<sup>4*(DTL+1)</sup> == 16<sup>DTL+1</sup>. A low | |||
value of DTL | ||||
leads to a small Epoch_Range; if DTL = 0, there will only be 16 RTUs | leads to a small Epoch_Range; if DTL = 0, there will only be 16 RTUs | |||
within the Epoch_Range (DTL) = 16^1 (for any time unit TU). The | within the Epoch_Range (i.e., Epoch_Range(DTL) = 16<sup>1</sup>) for any TU. The | |||
values that can be represented in the current epoch are in the range | values that can be represented in the current epoch are in the range | |||
[0, (Epoch_Range(DTL) - 1)]. To minimize the required DTL, wraparound | [0, (Epoch_Range(DTL) - 1)].</t> | |||
is allowed but works naturally with the arithmetic modulo Epoch_Range. | <t> | |||
Assuming wraparound does not occur, OT is represented by the value (OT m | ||||
od Epoch_Range), | ||||
and DT is represented by the value (DT mod Epoch_Range). All arithmetic | ||||
is | ||||
to be performed modulo (Epoch_Range(DTL)), yielding only positive | ||||
values for DT - OT. | ||||
</t> | ||||
<t> | ||||
In order to allow fine-grained control over the setting of the | ||||
deadline time, the fields for DT and OTD use fractional seconds. This is don | ||||
e by specifying | ||||
a binary point, which allocates some of the bits for fractional times. | ||||
Thus, all such fractions are restricted to be negative powers of 2. | ||||
Each point of time between OT and DT is then represented by a time | ||||
unit (either seconds or ASNs) and a fractional time unit. | ||||
</t> | </t> | |||
<t> | <t> | |||
By default, DTL determines t_0 in the chosen RTUs as follows: | Let OT_abs, DT_abs, and CT_abs denote the true (absolute) values (on the | |||
<list> | synchronized timelines) for OT, DT, and | |||
<t> t_0 = [current_time - (current_time mod Epoch_Range (DTL))].< | current time. Let N be the number of bits to be used to represent | |||
/t> | the integer parts of OT_abs, DT_abs, and CT_abs: | |||
</list> | </t> | |||
<t indent="6">N = {4*(DTL+1)/2} + BinaryPt </t> | ||||
<t> | ||||
The originating node has to pick a segment size (2^N) so that | ||||
DT_abs - OT_abs < 2^N, and so that intermediate network nodes | ||||
can detect whether or not CT_abs > DT_abs. | ||||
</t> | ||||
<t> | ||||
Given a value for N, the value for DT is represented in the | ||||
deadline-time format by DT = (DT_abs mod 2^N). DT is typically | ||||
represented as a positive value (even though negative modular | ||||
values make sense). Also, let OT = OT_abs mod 2^N and | ||||
CT = CT_abs mod 2^N, where both OT and CT are also considered as | ||||
non-negative values. | ||||
</t> | ||||
<t> | ||||
When the packet is launched by the originating node, | ||||
CT_abs == OT_abs and CT == OT. Given a particular value for N, | ||||
then in order for downstream nodes to detect whether or not the | ||||
deadline has expired (i.e., whether DT_abs > CT_abs), the following is | ||||
required: | ||||
</t> | ||||
<t indent="6" anchor="assumption">Assumption 1: DT_abs - OT_abs < 2^N.</t | ||||
> | ||||
<t> | ||||
Otherwise the ambiguity | ||||
inherent in the modulus arithmetic yielding OT and DT will cause | ||||
failure: one cannot measure time differences greater than 2^N using | ||||
numbers in a time segment of length less than 2^N. | ||||
</t> | ||||
<t> | ||||
Under <xref target="assumption" format="none">Assumption 1</xref>, downst | ||||
ream nodes must effectively check | ||||
whether or not their current time is later than the DT -- but | ||||
the value of the DT has to be inferred from the | ||||
value of DT in the 6LoRHE, which is a number less than 2^N. This | ||||
inference cannot be expected to reliably succeed unless <xref target="ass | ||||
umption" format="none">Assumption 1</xref> | ||||
is valid, which means that the originating node has to be careful to pick | ||||
proper | ||||
values for DTL and for BinaryPt. | ||||
</t> | ||||
Naturally, t_0 occurs at time 0 (or time 0.0000...) in the current | <t> | |||
epoch. The last possible origination time representable in the current | Since OT is not necessarily provided in the 6loRHE, there may be a | |||
epoch (counted in RTUs) is t_last = (t0 + (2^(4*(DTL+1))-1)). In the | danger of ambiguity. Surely, when DT = CT, the deadline time | |||
RTUs chosen, the current epoch resides at the underlying time | is expiring and the packet should be dropped. However, what if an | |||
interval [t_0, t_last]. If DT - OT is greater than t_last - OT, then | intermediate node measures that CT = DT+1? Was the packet | |||
wraparound within the Epoch_Range occurs naturally. In all cases, | launched a short time before arrival at the intermediate node, | |||
OT is represented by the value (OT mod Epoch_Range) and DT is | or has the current time wrapped around so that | |||
represented by the value (DT mod Epoch_Range). All arithmetic is | CT_abs - OT_abs > 2^N? | |||
to be performed modulo (Epoch_Range(DTL)), yielding only positive | ||||
values for DT - OT. | ||||
</t> | </t> | |||
<t> | <t> | |||
<list> | In order to solve this problem, a safety margin has to be provided, | |||
<t> Example: Consider a 6TiSCH network with time-slot length of 10ms. | in addition to requiring that DT_abs - OT_abs < 2^N. The value | |||
of this safety margin is proportional to 2^N and is determined by | ||||
a new parameter, called the "SAFETY_FACTOR". Then, for safety the | ||||
originating node MUST further ensure that | ||||
(DT_abs - OT_abs) < 2^N*(1-SAFETY_FACTOR). | ||||
</t> | ||||
<t> | ||||
Each intermediate node that receives the packet with the | ||||
Deadline-6LoRHE must determine whether | ||||
((CT - DT) mod 2^N) > SAFETY_FACTOR*2^N. | ||||
If this test condition is not satisfied, the deadline time has expired. | ||||
See <xref target="modular"/> for more explanation about the test | ||||
condition. | ||||
All nodes that receive a packet with a Deadline-6LoRHE included | ||||
MUST use the same value for the SAFETY_FACTOR. The SAFETY_FACTOR | ||||
is to be chosen so that a packet with the Deadline-6LoRHE included | ||||
will be tested against the current time at least once during every | ||||
subinterval of length SAFETY_FACTOR*2^N. In this way, it can be | ||||
guaranteed that the packet will be tested often enough to make | ||||
sure it can be dropped whenever CT_abs > DT_abs. The value of | ||||
SAFETY_FACTOR is specified in this document to be 20%. | ||||
</t> | ||||
<t indent="3">Example: Consider a 6TiSCH network with time-slot length | ||||
of 10 ms. | ||||
Let the time units be ASNs (TU == (binary)0b10). Let the | Let the time units be ASNs (TU == (binary)0b10). Let the | |||
current ASN when the packet is originated be 54400, and the | current ASN when the packet is originated be 54400, and the | |||
maximum allowable delay (max_delay) for the packet delivery be 1 | maximum allowable delay (max_delay) for the packet delivery be 1 | |||
second from the packet origination, then: | second from the packet origination, then: | |||
<list> | </t> | |||
<t> deadline_time = packet_origination_time + max_delay | <t indent="6"> deadline_time = packet_origination_time + max_delay</t> | |||
<list> | <t indent="9"> = 0xD480 + 0x64 (Network ASNs) </t> | |||
<t> = 0xD480 + 0x64 (Network ASNs) </t> | <t indent="9"> = 0xD4E4 (Network ASNs) </t> | |||
<t> = 0xD4E4 (Network ASNs) </t> | ||||
</list> | ||||
</t> | ||||
<t> Then, the Deadline-6LoRHE encoding with nonzero OTL is: | ||||
<list> | ||||
<t> DTL = 3, OTL = 2, TU = 0b10, BinaryPt = 8, | ||||
DT = 0xD4E4, OTD = 0x64</t> | ||||
</list> | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> <!-- Put another example here. --></t> | ||||
</list> </t> | ||||
<?rfc subcompact="no" ?> | <t indent="6"> Then, the Deadline-6LoRHE encoding with nonzero OTL is: | |||
</section> <!-- End of section "Deadline-6LoRHE" --> | </t> | |||
<t indent="9"> DTL = 3, OTL = 2, TU = 0b10, BinaryPt = 8, DT = 0xD4 | ||||
E4, OTD = 0x64</t> | ||||
<section title="Deadline-6LoRHE in Three Network Scenarios"> | </section> | |||
<t> | ||||
In this section, Deadline-6LoRHE operation is described for 3 | <section numbered="true" toc="default"> | |||
network scenarios. <xref target="fig3"/> depicts a | <name>Deadline-6LoRHE in Three Network Scenarios</name> | |||
constrained time-synchronized LLN that has two subnets N1 and N2, | <t> | |||
connected through LBRs <xref target="I-D.ietf-6lo-backbone-router"/> | In this section, the Deadline-6LoRHE operation is described for three | |||
with different reference clock times T1 and T2. | network scenarios. <xref target="fig3" format="default"/> depicts a | |||
<figure anchor="fig3" title=" Intra-network Timezone Scenario"> | constrained time-synchronized LLN that has two subnets, N1 and N2, | |||
<artwork><![CDATA[ | connected through 6LoWPAN Border Routers (6LBRs) <xref target="RFC8929" f | |||
ormat="default"/> | ||||
with different reference clock times, T1 and T2. | ||||
</t> | ||||
<figure anchor="fig3"> | ||||
<name>Intra-Network Time Zone Scenario</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
+-------------------+ | +-------------------+ | |||
| Time Synchronized | | | Time-Synchronized | | |||
| Network | | | Network | | |||
+---------+---------+ | +---------+---------+ | |||
| | | | |||
| | | | |||
| | | | |||
+--------------+--------------+ | +--------------+--------------+ | |||
| | | | | | |||
+-----+ +-----+ | +-----+ +-----+ | |||
| | Backbone | | Backbone | | | Backbone | | Backbone | |||
o | | router | | router | o | | router | | router | |||
+-----+ +-----+ | +-----+ +-----+ | |||
o o o | o o o | |||
o o o o o o o o o | o o o o o o o o o | |||
o LLN o o LLN o o | o LLN o o LLN o o | |||
o o o o o o o o o | o o o o o o o o o | |||
6LoWPAN Network (subnet N1) 6LoWPAN Network (subnet N2) | 6LoWPAN Network (subnet N1) 6LoWPAN Network (subnet N2) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</t> | <section numbered="true" toc="default"> | |||
<name>Scenario 1: Endpoints in the Same DODAG (N1)</name> | ||||
<section | <t> | |||
title="Scenario 1: Endpoints in the same DODAG (N1)"> | In Scenario 1, shown in <xref target="fig4" format="default"/>, the Sende | |||
<t> | r 'S' has an | |||
In scenario 1, shown in <xref target="fig4"/>, the Sender 'S' has an | ||||
IP datagram to be routed to a Receiver 'R' within | IP datagram to be routed to a Receiver 'R' within | |||
the same DODAG. For the route segment from Sender to 6LBR, the Sender | the same Destination-Oriented Directed Acyclic Graph (DODAG). | |||
For the route segment from the sender to the 6LBR, the sender | ||||
includes a Deadline-6LoRHE by encoding the deadline time | includes a Deadline-6LoRHE by encoding the deadline time | |||
contained in the packet. Subsequently, each 6LR will perform hop-by-hop | contained in the packet. Subsequently, each 6LR will perform hop-by-hop | |||
routing to forward the packet towards the 6LBR. Once 6LBR receives | routing to forward the packet towards the 6LBR. Once the 6LBR receives | |||
the IP datagram, it sends the packet downstream towards 'R'. | the IP datagram, it sends the packet downstream towards 'R'. | |||
</t> | </t> | |||
<t> | <t> | |||
In case of a network running RPL non-storing mode, the 6LBR generates | In the case of a network running in RPL non-storing mode, the 6LBR genera | |||
a IPv6-in-IPv6 encapsulated packet when sending the packet downwards | tes | |||
to the Receiver <xref target="I-D.ietf-roll-useofrplinfo"/>. | an IPv6-in-IPv6 encapsulated packet when sending the packet downwards | |||
The 6LBR copies the Deadline-6LoRHE from the Sender originated IP | to the receiver <xref target="RFC9008" format="default"/>. | |||
The 6LBR copies the Deadline-6LoRHE from the sender-originated IP | ||||
header to the outer IP header. The Deadline-6LoRHE contained in | header to the outer IP header. The Deadline-6LoRHE contained in | |||
the inner IP header is removed. | the inner IP header is removed. | |||
</t> | </t> | |||
<t> | <figure anchor="fig4"> | |||
<figure anchor="fig4" title="End points within same DODAG (subnet N1)"> | <name>Endpoints within the Same DODAG (Subnet N1)</name> | |||
<artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
+-------+ | +-------+ | |||
^ | 6LBR | | | ^ | 6LBR | | | |||
| | | | | | | | | | |||
| +-------+ | | | +-------+ | | |||
Upward | / /| \ | Downward | Upward | / /| \ | Downward | |||
routing | (F) / | \ | routing | routing | (F) / | \ | routing | |||
| / \ (C) | (D) | | | / \ (C) | (D) | | |||
| / \ | | / |\ | | | / \ | | / |\ | | |||
| (A) (B) : (E) : R | | | (A) (B) : (E) : R | | |||
| /|\ | \ / \ | | | /|\ | \ / \ | | |||
| S : : : : : : v ]]></artwork> | | S : : : : : : v ]]></artwork> | |||
</figure> | </figure> | |||
</t> | <t> | |||
<t> | ||||
At the tunnel endpoint of the encapsulation, the | At the tunnel endpoint of the encapsulation, the | |||
Deadline-6LoRHE is copied back from the outer header to inner | Deadline-6LoRHE is copied back from the outer header to inner | |||
header, and the inner IP packet is delivered to 'R'. | header, and the inner IP packet is delivered to 'R'. | |||
</t> | </t> | |||
</section> <!-- End of section "Scenario 1: Endpoints in the same ..." --> | </section> | |||
<section | <section numbered="true" toc="default"> | |||
title="Scenario 2: Endpoints in Networks with Dissimilar L2 Technologies."> | <name>Scenario 2: Endpoints in Networks with Dissimilar L2 Technologies< | |||
<t> | /name> | |||
In scenario 2, shown in <xref target="fig5"/>, | <t> | |||
the Sender 'S' (belonging to DODAG 1) has IP datagram to be routed to | In Scenario 2, shown in <xref target="fig5" format="default"/>, | |||
the Sender 'S' (belonging to DODAG 1) has an IP datagram to be routed to | ||||
a Receiver 'R' over a time-synchronized IPv6 network. For the route | a Receiver 'R' over a time-synchronized IPv6 network. For the route | |||
segment from 'S' to 6LBR, 'S' includes a Deadline-6LoRHE. | segment from 'S' to 6LBR, 'S' includes a Deadline-6LoRHE. | |||
Subsequently, each 6LR will perform hop-by-hop routing to forward the | Subsequently, each 6LR will perform hop-by-hop routing to forward the | |||
packet towards the 6LBR. Once the Deadline Time information reaches | packet towards the 6LBR. Once the deadline time information reaches | |||
the border router, the packet will be encoded according to the | the 6LBR, the packet will be encoded according to the | |||
mechanism prescribed in the other time-synchronized network depicted | mechanism prescribed in the other time-synchronized network depicted | |||
as "Time Synchronized Network" in the figure 6. | as "Time-Synchronized Network" in <xref target="fig5" format="default"/>. | |||
The specific data encapsulation mechanisms followed in the new network | The specific data encapsulation mechanisms followed in the new network | |||
are beyond the scope of this document. | are beyond the scope of this document. | |||
<figure anchor="fig5" | </t> | |||
title="Packet transmission in Dissimilar L2 Technologies or Internet"> | <figure anchor="fig5"> | |||
<artwork><![CDATA[ | <name>Packet Transmission in Dissimilar L2 Technologies or Internet</n | |||
ame> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
+----------------+ | +----------------+ | |||
| Time | | | Time- | | |||
| Synchronized |------R | | Synchronized |------R | |||
| Network | | | Network | | |||
+----------------+ | +----------------+ | |||
| | | | |||
| | | | |||
----------+----------- | ----------+----------- | |||
^ | | ^ | | |||
| +---+---+ | | +---+---+ | |||
| | 6LBR | | | | 6LBR | | |||
Upward | | | | Upward | | | | |||
routing | +------++ | routing | +------++ | |||
| (F)/ /| \ | | (F)/ /| \ | |||
| / \ / | \ | | / \ / | \ | |||
| / \ (C) | (D) | | / \ (C) | (D) | |||
| (A) (B) | | / |\ | | (A) (B) | | / |\ | |||
| /|\ |\ : (E) : : | | /|\ |\ : (E) : : | |||
| S : : : : / \ | | S : : : : / \ | |||
: :]]> | : : | |||
</artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t> | ||||
</t> | For instance, the IP datagram could be routed to another time-synchronize | |||
d, | ||||
<t> | deterministic network using the mechanism specified in | |||
For instance, the IP datagram could be routed to another time | In-situ Operations, Administration, and Maintenance (IOAM) | |||
synchronized deterministic network using the mechanism specified in | <xref target="I-D.ietf-ippm-ioam-data" format="default"/>, and then | |||
the In-band OAM <xref target="I-D.ietf-ippm-ioam-data"/>, and then | ||||
the deadline time would be updated according to the measurement | the deadline time would be updated according to the measurement | |||
of the current time in the new network. | of the current time in the new network. | |||
</t> | </t> | |||
</section> <!-- End of section "Scenario 2: Packet transmission in ..." --> | </section> | |||
<section | <section numbered="true" toc="default"> | |||
title="Scenario 3: Packet transmission across different DODAGs (N1 to N2)."> | <name>Scenario 3: Packet Transmission across Different DODAGs (N1 to N2) | |||
<t> | </name> | |||
Consider the scenario depicted in <xref target="fig6"/>, in which | <t> | |||
Consider the scenario depicted in <xref target="fig6" format="default"/>, | ||||
in which | ||||
the Sender 'S' (belonging to DODAG 1) has an IP datagram to be | the Sender 'S' (belonging to DODAG 1) has an IP datagram to be | |||
sent to Receiver 'R' belonging to another DODAG (DODAG 2). The | sent to Receiver 'R' belonging to another DODAG (DODAG 2). The | |||
operation of this scenario can be decomposed into combination of case | operation of this scenario can be decomposed into a combination of | |||
1 and case 2 scenarios. For the route segment from 'S' to 6LBR1, | Scenarios 1 and 2. For the route segment from 'S' to 6LBR1, | |||
'S' includes the Deadline-6LoRHE. Subsequently, each 6LR will | 'S' includes the Deadline-6LoRHE. Subsequently, each 6LR will | |||
perform hop-by-hop operation to forward the packet towards the 6LBR1. | perform hop-by-hop operations to forward the packet towards 6LBR1. | |||
Once the IP datagram reaches 6LBR1 of DODAG1, it applies the same rule | Once the IP datagram reaches 6LBR1 of DODAG1, 6LBR1 applies the same rule | |||
as described in Case 2 while routing the packet to 6LBR2 over a (likely) | as described in Scenario 2 while routing the packet to 6LBR2 over a (like | |||
time synchronized wired backhaul. The wired side of 6LBR2 can be mapped | ly) | |||
to receiver of Case 2. Once the packet reaches 6LBR2, it updates the | time-synchronized wired backhaul. The wired side of 6LBR2 can be mapped | |||
to the receiver of Scenario 2. Once the packet reaches 6LBR2, it updates | ||||
the | ||||
Deadline-6LoRHE by adding or subtracting the difference of time of | Deadline-6LoRHE by adding or subtracting the difference of time of | |||
DODAG2 and sends the packet downstream towards 'R'. | DODAG2 and sends the packet downstream towards 'R'. | |||
</t> | </t> | |||
<figure anchor="fig6" | <figure anchor="fig6"> | |||
title="Packet transmission in different DODAGs(N1 to N2)"> | <name>Packet Transmission in Different DODAGs (N1 to N2)</name> | |||
<artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
Time Synchronized Network | Time-Synchronized Network | |||
-+---------------------------+- | -+---------------------------+- | |||
| | | | | | |||
DODAG1 +---+---+ +---+---+ DODAG2 | DODAG1 +---+---+ +---+---+ DODAG2 | |||
| 6LBR1 | | 6LBR2 | | | 6LBR1 | | 6LBR2 | | |||
| | | | | | | | | | |||
+-------+ +-------+ | +-------+ +-------+ | |||
(F)/ /| \ (F)/ /| \ | (F)/ /| \ (F)/ /| \ | |||
/ \ / | \ / \ / | \ | / \ / | \ / \ / | \ | |||
/ \ (C) | (D) / \ (C) | (D) | / \ (C) | (D) / \ (C) | (D) | |||
(A) (B) | | / |\ (A) (B) | | |\ | (A) (B) | | / |\ (A) (B) | | |\ | |||
/|\ |\ : (E) : : /|\ |\ : (E) : : | /|\ |\ : (E) : : /|\ |\ : (E) : : | |||
S : : : : / \ : : : : : / \ | S : : : : / \ : : : : : / \ | |||
: : : R | : : : R | |||
Network N1, time zone T1 Network N2, time zone T2]]> | Network N1, time zone T1 Network N2, time zone T2 | |||
</artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t> | <t> | |||
Consider an example of a 6TiSCH network in which S in DODAG1 | Consider an example of a 6TiSCH network in which S in DODAG1 | |||
generates the packet at ASN 20000 to R in DODAG2. Let the maximum | generates the packet at ASN 20000 to R in DODAG2. Let the maximum | |||
allowable delay be 1 second. The time-slot length in DODAG1 and DODAG2 | allowable delay be 1 second. The time-slot length in DODAG1 and DODAG2 | |||
is assumed to be 10ms. Once the deadline time is encoded in | is assumed to be 10 ms. Once the deadline time is encoded in | |||
Deadline-6LoRHE, the packet is forwarded to 6LBR of DODAG1. | Deadline-6LoRHE, the packet is forwarded to 6LBR1 of DODAG1. | |||
Suppose the packet reaches 6LBR of DODAG1 at ASN 20030. | Suppose the packet reaches 6LBR1 of DODAG1 at ASN 20030. | |||
</t> | </t> | |||
<t> | <t indent="3"> current_time = ASN at 6LBR * slot_length_value </t> | |||
<?rfc subcompact="yes" ?> | <t indent="3"> remaining_time = deadline_time - current_time</t> | |||
<list> | <t indent="6"> = ((packet_origination_time + max_delay) - current t | |||
<t> current_time = ASN at LBR * slot_length_value</t> | ime)</t> | |||
<t></t> | <t indent="6"> = (20000 + 100) - 20030 </t> | |||
<t> remaining_time = deadline_time - current_time</t> | <t indent="6"> = 30 (in Network ASNs)</t> | |||
<t> = ((packet_origination_time + max_delay) - current time)</t> | <t indent="6"> = 30 * 10<sup>3</sup> milliseconds </t> | |||
<t> = (20000 + 100) - 20030 </t> | ||||
<t> = 30 (in Network ASNs)</t> | <t> | |||
<t> = 30 * 10^3 milliseconds. </t> | Once the deadline time information reaches 6LBR2, | |||
</list> | ||||
<?rfc subcompact="no" ?> | ||||
</t> | ||||
<t> | ||||
Once the Deadline Time information reaches the border router, | ||||
the packet will be encoded according to the mechanism prescribed | the packet will be encoded according to the mechanism prescribed | |||
in the other time-synchronized network. | in the other time-synchronized network. | |||
</t> | </t> | |||
</section> <!-- End of section "Scenario 3: Packet transmission across ..." --> | </section> | |||
</section> <!-- End of section "Deadline-6LoRHE | </section> | |||
in different network scenarios" --> | ||||
<section title="IANA Considerations" anchor="iana"> | <section anchor="iana" numbered="true" toc="default"> | |||
<t> | <name>IANA Considerations</name> | |||
<t> | ||||
This document defines a new Elective 6LoWPAN Routing Header Type, | This document defines a new Elective 6LoWPAN Routing Header Type, | |||
and IANA is requested to assign a value (TBD) from the 6LoWPAN | and IANA has assigned the value 7 from the 6LoWPAN | |||
Dispatch Page1 number space for this purpose. | Dispatch Page 1 number space for this purpose. | |||
<!-- New: Donald E. Eastlake comments -> Modified writings . --> | </t> | |||
<figure anchor="fig8" title="Deadline-6LoRHE type"> | <table anchor="iana_reg"> | |||
<artwork><![CDATA[ | <name>Entry in the "Elective 6LoWPAN Routing Header Type" Registry</name> | |||
Elective 6LoRH Type Value | <thead> | |||
+----------------------+--------+ | <tr> | |||
| Deadline-6LoRHE | TBD | | <th>Value</th> | |||
+----------------------+--------+]]> | <th>Description</th> | |||
</artwork> | <th>Reference</th> | |||
</figure> | </tr> | |||
</t> | </thead> | |||
</section> <!-- End of section "IANA Considerations" --> | <tbody> | |||
<tr> | ||||
<td>7</td> | ||||
<td>Deadline-6LoRHE</td> | ||||
<td>RFC 9034</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section title="Synchronization Aspects" anchor="sync"> | <section anchor="sync" numbered="true" toc="default"> | |||
<t> | <name>Synchronization Aspects</name> | |||
<t> | ||||
The document supports time representation of the deadline and | The document supports time representation of the deadline and | |||
origination times carried in the packets traversing through networks | origination times carried in the packets traversing networks | |||
of different time zones having different time synchronization | of different time zones having different time-synchronization | |||
mechanisms. For instance, in a 6TiSCH network where the time is | mechanisms. For instance, in a 6TiSCH network where the time is | |||
maintained as ASN time slots, the time synchronization is achieved | maintained as ASN time slots, the time synchronization is achieved | |||
through beaconing among the nodes as described in | through beaconing among the nodes as described in | |||
<xref target="RFC7554"/>. | <xref target="RFC7554" format="default"/>. | |||
There could be 6lo networks that employ NTP where the nodes are | There could be 6lo networks that employ NTP where the nodes are | |||
synchronized with an external reference clock from an NTP server. | synchronized with an external reference clock from an NTP server. | |||
The specification of the time synchronization method that need to | The specification of the time-synchronization method that needs to | |||
be followed by a network is beyond the scope of the document. | be followed by a network is beyond the scope of the document. | |||
</t> | </t> | |||
<!-- | ||||
Lijo : Needs to work on the syncronization aspect, | ||||
@ Charlie, Kindly put your comments. | ||||
--> | ||||
<t> | <t> | |||
The number of hex digits chosen to represent DT, and the portion of | The number of hex digits chosen to represent DT, and the portion of | |||
that field allocated to represent integer number of seconds, determines | that field allocated to represent the integer number of seconds, determin | |||
the meaning of t_0, i.e., the meaning of DT == 0 in the chosen | es | |||
the meaning of t<sub>0</sub>, i.e., the meaning of DT == 0 in the chosen | ||||
representation. If DTL == 0, then there are only 4 bits that can | representation. If DTL == 0, then there are only 4 bits that can | |||
be used to count the time units, so that DT == 0 can never be more | be used to count the time units, so that DT == 0 can never be more | |||
than 16 time units (or fractional time units) in the past. This then | than 16 time units (or fractional time units) in the past. This then | |||
requires that the time | requires that the time | |||
synchronization between sender and receiver has to be tighter than | synchronization between sender and receiver has to be tighter than | |||
16 units. If the binary point were moved so that all the bits | 16 units. If the binary point were moved so that all the bits | |||
were used for fractional time units (e.g., fractional seconds or | were used for fractional time units (e.g., fractional seconds or | |||
fractional ASNs), the time synchronization requirement would be | fractional ASNs), the time-synchronization requirement would be | |||
correspondingly tighter. | correspondingly tighter. | |||
</t> | </t> | |||
<t> | <t> | |||
A 4-bit field for DT allows up to 16 hex digits, which is 64 bits. | A 4-bit field for DT allows up to 16 hex digits, which is 64 bits. | |||
That is enough to represent the NTP <xref target="RFC5905"/> | That is enough to represent the NTP 64-bit timestamp format <xref target= | |||
64-bit timestamp format, which is more than enough for the purposes | "RFC5905" format="default"/>, | |||
which is more than enough for the purposes | ||||
of establishing deadline times. Unless the binary point is moved, | of establishing deadline times. Unless the binary point is moved, | |||
this is enough to represent time since year 1900. | this is enough to represent time since year 1900. | |||
</t> | </t> | |||
<t> | <t> | |||
For example, suppose that DTL = 0b0000 and the DT bits are split | For example, suppose that DTL = 0b0000 and the DT bits are split | |||
evenly; then we can count up to 3.75 seconds by quarter-seconds. | evenly; then we can count up to 3.75 seconds by quarter-seconds. | |||
<!-- CEP: Deleted in favor of a more rigid mechanism, easier to specify and | </t> | |||
implement. | <t> | |||
In that case t_0 would be | ||||
the most recent second of the current minute that has | ||||
t mod 4 == 0. In other words, t_0 could be 0, 4, | ||||
8, 12, 16, ..., 52, or 56 seconds since the start of the most recent | ||||
minute. The networks have to be synchronized well enough to ensure | ||||
detection of overrun, and therefore to know which of those values is | ||||
the correct value for t_0. This is the hardest case. | ||||
--> | ||||
</t> | ||||
<t> | ||||
If DTL = 3 and the DT bits are again split evenly, then we can count | If DTL = 3 and the DT bits are again split evenly, then we can count | |||
up to 256 seconds (in steps of 1/256 of a second). | up to 256 seconds (in steps of 1/256 of a second). | |||
</t> | </t> | |||
<t> | <t> | |||
In all cases, t_0 is defined as specified in <xref target="Format"/> | In all cases, t<sub>0</sub> is defined as specified in <xref target="Form | |||
<list> | at" format="default"/>. | |||
<t> t_0 = [current_time - (current_time mod (2^(4*(DTL+1))))] </t | </t> | |||
> | ||||
</list> | <t indent="3">t<sub>0</sub> = [current_time - (current_time mod (2<sup>4 | |||
*(DTL+1)</sup>))] </t> | ||||
<t> | ||||
regardless of the choice of TU. | regardless of the choice of TU. | |||
</t> | </t> | |||
<t> | <t> | |||
<!-- | ||||
The ability to move the binary point doesn't affect the meaning of t_0. | ||||
The meaning of t_0 is determined by the range of the integer number of seconds ( | ||||
in the chosen precision for the DT field). | ||||
--> | ||||
For TU = 0b00, the time units are seconds. With DTL == 15, | For TU = 0b00, the time units are seconds. With DTL == 15, | |||
and Binary Pt == 0, the epoch is (by default) January 1, | and BinaryPt == 0, the epoch is (by default) January 1, | |||
1900 at 00:00 UTC. The resolution is then (2 ^ (- 32)) seconds, | 1900, at 00:00 UTC. The resolution is then 2<sup>-32</sup> seconds, | |||
which is the maximum possible. | which is the maximum possible. | |||
This time format wraps around every 2^32 seconds, which is | This time format wraps around every 2<sup>32</sup> seconds, which is | |||
roughly 136 years. | roughly 136 years. | |||
</t> | </t> | |||
<t> | <t> | |||
For TU = 0b10, the time units are ASNs. The start time is relative, | For TU = 0b10, the time units are ASNs. The start time is relative, | |||
and updated by a mechanism out of scope for this document. | and updated by a mechanism that is out of scope for this document. | |||
With 10 ms slots, DTL = 15, and Binary Pt == 0, it would take over | With 10 ms slots, DTL = 15, and BinaryPt == 0, it would take over | |||
a year for the ASN to wrap around. | a year for the ASN to wrap around. Typically, the number of hex | |||
<!-- CEP: The number of years is 4294967296 / 3155760000 --> | ||||
Typically, the number of hex | ||||
digits allocated for TU = 0b10 would be less than 15. | digits allocated for TU = 0b10 would be less than 15. | |||
</t> | </t> | |||
</section> <!-- End of section "Synchronization Aspects" --> | </section> | |||
<section title="Security Considerations"> | <section numbered="true" toc="default"> | |||
<t> | <name>Security Considerations</name> | |||
The security considerations of <xref target="RFC4944"/>, | <t> | |||
<xref target="RFC6282"/> and <xref target="RFC6553"/> apply. | The security considerations of | |||
Using a compressed format as opposed to the full in-line format is | <xref target="RFC4944" section="13" sectionFormat="parens" format="defau | |||
lt"/>, | ||||
<xref target="RFC6282" section="6" sectionFormat="parens" format="default | ||||
"/>, and | ||||
<xref target="RFC6553" section="5" sectionFormat="parens" format="defaul | ||||
t"/> apply. | ||||
Using a compressed format as opposed to the full inline format is | ||||
logically equivalent and does not create an opening for a new threat | logically equivalent and does not create an opening for a new threat | |||
when compared to <xref target="RFC6550"/>, <xref target="RFC6553"/> | when compared to <xref target="RFC6550" format="default"/>, <xref target= | |||
and <xref target="RFC6554"/>. | "RFC6553" format="default"/>, | |||
</t> | and <xref target="RFC6554" format="default"/>. | |||
<t> | </t> | |||
<t> | ||||
The protocol elements specified in this document are designed to work | The protocol elements specified in this document are designed to work | |||
in controlled operational environments (e.g., industrial process | in controlled operational environments (e.g., industrial process | |||
control and automation). In order to avoid misuse of the deadline | control and automation). In order to avoid misuse of the deadline | |||
information that could potentially result in a Denial of Service (DoS) | information that could potentially result in a Denial of Service (DoS) | |||
attack, proper functioning of this deadline time mechanism requires | attack, proper functioning of this deadline time mechanism requires | |||
the provisioning and management of network resources for supporting | the provisioning and management of network resources for supporting | |||
traffic flows with deadlines, performance monitoring, and admission | traffic flows with deadlines, performance monitoring, and admission | |||
control policy enforcement. The network provisioning can be done | control policy enforcement. The network provisioning can be done | |||
either centrally or in a distributed fashion. For example, tracks in | either centrally or in a distributed fashion. For example, tracks in | |||
a 6tisch network could be established by a centralized PCE, as | a 6TiSCH network could be established by a centralized Path Computation E | |||
described in the 6tisch architecture | lement (PCE), as | |||
<xref target="I-D.ietf-6tisch-architecture"/>. | described in the 6TiSCH architecture | |||
</t> | <xref target="RFC9030" format="default"/>. | |||
<t> | </t> | |||
The Security Considerations of Detnet architecture | <t> | |||
<xref target="I-D.ietf-detnet-architecture"/> mostly apply to | The security considerations of DetNet architecture | |||
<xref target="RFC8655" section="5" sectionFormat="parens" format="default | ||||
"/> mostly apply to | ||||
this document as well, as follows. To secure the request and control | this document as well, as follows. To secure the request and control | |||
of resources allocated for tracks, authentication and authorization | of resources allocated for tracks, authentication and authorization | |||
can be used for each device, and network controller devices. | can be used for each device and network controller devices. | |||
In the case of distributed control protocols, security is expected | In the case of distributed control protocols, security is expected | |||
to be provided by the security properties of the protocols in use. | to be provided by the security properties of the protocols in use. | |||
</t> | </t> | |||
<t> | <t> | |||
When deadline bearing flows are identified on a per-flow basis, which | The identification of deadline-bearing flows on a per-flow basis | |||
may provide attackers with additional information about the data flows, | may provide attackers with additional information about the data | |||
when compared to networks that do not include per-flow identification. | flows compared to networks that do not include per-flow | |||
The security implications of disclosing that additional information | identification. The security implications of disclosing that additiona | |||
deserve consideration when implementing this deadline specification. | l | |||
</t> | information deserve consideration when implementing this deadline | |||
<t> | specification. | |||
</t> | ||||
<t> | ||||
Because of the requirement of precise time synchronization, the | Because of the requirement of precise time synchronization, the | |||
accuracy, availability, and integrity of time synchronization is of | accuracy, availability, and integrity of time synchronization is of | |||
critical importance. Extensive discussion of this topic can be found | critical importance. Extensive discussion of this topic can be found | |||
in <xref target="RFC7384"/>. | in <xref target="RFC7384" format="default"/>. | |||
</t> | </t> | |||
<!-- | ||||
Lijo : Added above paragraphs | ||||
--> | ||||
</section> <!-- End of section "Security Considerations" --> | ||||
<section title="Acknowledgements"> | </section> | |||
<t> | ||||
The authors thank Pascal Thubert for suggesting the idea and | ||||
encouraging the work. Thanks to Shwetha Bhandari's suggestions which | ||||
were instrumental in extending the timing information to heterogeneous | ||||
networks. The authors acknowledge the 6TiSCH WG members for their | ||||
inputs on the mailing list. Special thanks to | ||||
Jerry Daniel, | ||||
Dan Frost (Routing Directorate) | ||||
Charlie Kaufman (Security Directorate) | ||||
Seema Kumar, | ||||
Tal Mizrahi | ||||
Avinash Mohan, | ||||
Shalu Rajendran, | ||||
Anita Varghese, | ||||
and Dale Worley (Gen-ART review) | ||||
for their support and valuable feedback. | ||||
</t> | ||||
</section> <!-- End of section "Acknowledgements" --> | ||||
</middle> | </middle> | |||
<back> | ||||
<back> <!-- *****BACK MATTER ***** --> | <displayreference target="I-D.ietf-ippm-ioam-data" to="IOAM-DATA"/> | |||
<!-- References split into informative and normative --> | <displayreference target="I-D.ietf-6lo-blemesh" to="6LO-BLEMESH"/> | |||
<!-- There are 2 ways to insert reference entries from the citation | ||||
libraries: | ||||
1. define an ENTITY at the top, and use "ampersand character" RFC2629; | ||||
here (as shown) | ||||
2. simply use a PI "less than character"?rfc | ||||
include="reference.RFC.2119.xml"?> here | ||||
(for I-Ds: | ||||
include="reference.I-D.narten-iana-considerations-rfc2434bis.xml") | ||||
Both are cited textually in the same manner: by using xref elements. | ||||
If you use the PI option, xml2rfc will, by default, try to find included | ||||
files in the same directory as the including file. You can also define | ||||
the XML_LIBRARY environment variable with a value containing a set of | ||||
directories to search. These can be either in the local filing system | ||||
or remote ones accessed by http (http://domain/dir/... ).--> | ||||
<references title="Normative References"> | ||||
<?rfc include="reference.I-D.ietf-6tisch-terminology" ?> | ||||
<?rfc include="reference.I-D.ietf-roll-routing-dispatch" ?> | ||||
<?rfc include="reference.I-D.ietf-detnet-architecture" ?> | ||||
<?rfc include='reference.RFC.2119'?> | ||||
<?rfc include='reference.RFC.4944'?> | ||||
<?rfc include='reference.RFC.5905'?> | ||||
<?rfc include='reference.RFC.6282'?> | ||||
<?rfc include='reference.RFC.6550'?> | ||||
<?rfc include='reference.RFC.6553'?> | ||||
<?rfc include='reference.RFC.6554'?> | ||||
<?rfc include='reference.RFC.7384'?> | ||||
<?rfc include='reference.RFC.7554'?> | ||||
<?rfc include='reference.RFC.8138'?> | ||||
<?rfc include='reference.RFC.8174'?> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include="reference.I-D.ietf-6tisch-architecture" ?> | ||||
<!-- | <references> | |||
- IEEE Standard for Local and metropolitan area networks - Part 15.4, - | <name>References</name> | |||
IEEE Std 802.15.42015, 2015. | <references> | |||
<name>Normative References</name> | ||||
IEEE Standard for Low-Rate Wireless Networks," in IEEE Std 802.15.4-2015 (Revisi | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
on of IEEE Std 802.15.4-2011) , vol., no., pp.1-709, April 22 2016 | ence.RFC.9030.xml"/> | |||
doi: 10.1109/IEEESTD.2016.7460875 | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
--> | ence.RFC.8655.xml"/> | |||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.4944.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.5905.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6282.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6550.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6553.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6554.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7384.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7554.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8138.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8174.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<reference anchor="dot15-tsch"> | <reference anchor="IEEE.802.15.4" | |||
target="https://ieeexplore.ieee.org/document/7460875"> | ||||
<front> | <front> | |||
<title>IEEE Standard for Low-Rate Wireless Networks, | <title>IEEE Standard for Low-Rate Wireless Networks</title> | |||
Part 15.4, IEEE Std 802.15.4-2015</title> | <author> | |||
<author surname="P802.11"> | <organization>IEEE</organization> | |||
<organization>"IEEE 802 Wireless"</organization> | </author> | |||
<date month="April" year="2016"/> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<date month="April" year="2016"/> | ||||
</front> | </front> | |||
<seriesInfo name="IEEE Standard" value="802.15.4-2015"/> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2016.7460875"/> | ||||
</reference> | </reference> | |||
<!-- | <reference anchor="IEEE.1588.2008"> | |||
@INPROCEEDINGS{Lee02ieee-1588standard, | <front> | |||
author = {Kang Lee and John Eidson}, | <title>IEEE Standard for a Precision Clock | |||
title = {IEEE-1588 Standard for a Precision Clock Synchronization Protocol f | ||||
or Networked Measurement and Control Systems}, | ||||
booktitle = {In 34 th Annual Precise Time and Time Interval (PTTI) Meeting}, | ||||
year = {2002}, | ||||
pages = {98 thru 105} | ||||
} | ||||
--> | ||||
<reference anchor="ieee-1588"> | ||||
<front> | ||||
<title>IEEE Std 1588-2008 Standard for a Precision Clock | ||||
Synchronization | Synchronization | |||
Protocol for Networked Measurement and Control Systems</title> | Protocol for Networked Measurement and Control Systems</title> | |||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date month="July" year="2008"/> | ||||
</front> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2008.4579760"/> | ||||
</reference> | ||||
<author surname="Precise Time and Time Interval Working Group"> | <reference anchor="IEEE-BLE-MESH"> | |||
<organization>"IEEE Standards"</organization> | <front> | |||
<title> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<date month="July" year="2008"/> | ||||
</front> | ||||
</reference> | ||||
<!-- New: Donald E. Eastlake comments -> dotBLEMesh . --> | ||||
<!-- Lijo : Is this reference, Okay --> | ||||
<reference anchor="dotBLEMesh"> | ||||
<front> | ||||
<title> | ||||
Multi-Hop Real-Time Communications Over Bluetooth Low Energy | Multi-Hop Real-Time Communications Over Bluetooth Low Energy | |||
Industrial Wireless Mesh Networks | Industrial Wireless Mesh Networks | |||
</title> | </title> | |||
<author fullname="Luca Leonardi" initials="L." surname="Leonardi"> | ||||
<author fullname="Luca Leonardi" initials="L." surname="Leonardi"> | <organization> </organization> | |||
<organization> </organization> | </author> | |||
<address> | <author fullname="Gaetano Patti" initials="G." surname="Patti"> | |||
</address> | <organization> </organization> | |||
</author> | </author> | |||
<author fullname="Lucia Lo Bello" initials="L." surname="Lo Bello"> | ||||
<author fullname="Gaetano Pattim" initials="G." surname="Pattim"> | <organization> </organization> | |||
<organization> </organization> | </author> | |||
<address> | <date month="May" year="2018"/> | |||
</address> | </front> | |||
</author> | <refcontent>IEEE Access, Vol 6, pp. 26505-26519</refcontent> | |||
<seriesInfo name="DOI" value="10.1109/ACCESS.2018.2834479"/> | ||||
<author fullname="Lucia Lo Bello" initials="L." surname="Lo Bello"> | </reference> | |||
<organization> </organization> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<date month="May" year="2018" /> | ||||
</front> | ||||
<seriesInfo name="IEEE Access" | ||||
value="Vol 6, 26505-26519"/> | ||||
</reference> | ||||
<reference anchor="dot1AS-2011"> | <reference anchor="IEEE.802.1AS.2011"> | |||
<front> | <front> | |||
<title>IEEE Standard for Local and Metropolitan Area Networks - | <title>IEEE Standard for Local and Metropolitan Area Networks - | |||
Timing and Synchronization for Time-Sensitive Applications | Timing and Synchronization for Time-Sensitive Applications | |||
in Bridged Local Area Networks | in Bridged Local Area Networks | |||
</title> | </title> | |||
<author surname="IEEE 802.1AS Working Group"> | <author surname="IEEE 802.1AS Working Group"> | |||
<organization>"IEEE Standards"</organization> | <organization>IEEE</organization> | |||
</author> | ||||
<address> | <date month="March" year="2011"/> | |||
</address> | </front> | |||
</author> | <refcontent>IEEE Std 802.1AS-2011</refcontent> | |||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2011.5741898"/> | ||||
<date month="March" year="2011"/> | </reference> | |||
</front> | ||||
</reference> | ||||
<reference anchor="Wi-SUN_PHY"> | ||||
<front> | ||||
<title>Wi-SUN PHY Specification V1.0</title> | ||||
<author> | ||||
<organization>Wi-SUN Alliance</organization> | ||||
</author> | ||||
<date month="March" year="2016"></date> | ||||
</front> | ||||
</reference> | ||||
<!-- | ||||
<title> Wi-SUN is a wireless communication technology designed for Uti | ||||
lities, Smart Cities and IoT. Wi-SUN is based on various IEEE, IETF, and NSI/TI | ||||
A standards supporting low power and lossy networks.</title> | ||||
--> | ||||
<!-- | ||||
Hiroshi Harada et al, | ||||
"IEEE 802.15.4g Based Wi-SUN Communication Systems", | ||||
IEICE Transactions on Communications. | ||||
@article{article, | ||||
author = {Harada, Hiroshi and Mizutani, Keiichi and FUJIWARA, Jun and MOCHIZUKI, | ||||
Kentaro and OBATA, Kentaro and Okumura, Ryota}, | ||||
year = {2017}, | ||||
month = {01}, | ||||
pages = {}, | ||||
title = {IEEE 802.15.4g based Wi-SUN communication systems}, | ||||
volume = {E100.B}, | ||||
booktitle = {IEICE Transactions on Communications} | ||||
} | ||||
<author fullname="Luca Leonardi" initials="L." surname="Leonardi"> | ||||
--> | ||||
<reference anchor="dotWi-SUN"> | ||||
<front> | ||||
<title>IEEE 802.15.4g Based Wi-SUN Communication Systems</title> | ||||
<author fullname="Hiroshi Harada" initials="H." surname="Harada"> | ||||
<organization> </organization> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<author fullname="Keiichi Mizutani" initials="K." surname="Mizutani"> | ||||
<organization> </organization> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<author fullname="Jun Fujiwara" initials="J." surname="Fujiwara"> | ||||
<organization> </organization> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<author fullname="Kentaro Mochizuki" initials="K." | ||||
surname="Mochizuki"> | ||||
<organization> </organization> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<author fullname="Kentaro Obata" initials="K." surname="Obata"> | ||||
<organization> </organization> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<author fullname="Ryota Okumura" initials="R." surname="Okumura"> | ||||
<organization> </organization> | ||||
<address> | ||||
</address> | ||||
</author> | ||||
<date month="Jan" year="2017"/> | <reference anchor="PHY-SPEC" target="http://wi-sun.org"> | |||
</front> | <front> | |||
<seriesInfo name="IEICE Transactions on Communications" | <title>Wi-SUN PHY Specification V1.0</title> | |||
value="volume E100.B"/> | <author> | |||
</reference> | <organization>Wi-SUN Alliance</organization> | |||
</author> | ||||
<date month="March" year="2016"/> | ||||
</front> | ||||
</reference> | ||||
<?rfc include="reference.I-D.ietf-ippm-ioam-data" ?> | <reference anchor="Wi-SUN"> | |||
<?rfc include="reference.I-D.ietf-detnet-use-cases" ?> | <front> | |||
<?rfc include="reference.I-D.ietf-6lo-backbone-router" ?> | <title>IEEE 802.15.4g Based Wi-SUN Communication Systems</title> | |||
<?rfc include="reference.I-D.ietf-roll-useofrplinfo" ?> | <author fullname="Hiroshi Harada" initials="H." surname="Harada"> | |||
<?rfc include="reference.I-D.ietf-6lo-blemesh" ?> | <organization> </organization> | |||
</references> | </author> | |||
<author fullname="Keiichi Mizutani" initials="K." surname="Mizutani" | ||||
> | ||||
<organization> </organization> | ||||
</author> | ||||
<author fullname="Jun Fujiwara" initials="J." surname="Fujiwara"> | ||||
<organization> </organization> | ||||
</author> | ||||
<author fullname="Kentaro Mochizuki" initials="K." surname="Mochizuk | ||||
i"> | ||||
<organization> </organization> | ||||
</author> | ||||
<author fullname="Kentaro Obata" initials="K." surname="Obata"> | ||||
<organization> </organization> | ||||
</author> | ||||
<author fullname="Ryota Okumura" initials="R." surname="Okumura"> | ||||
<organization> </organization> | ||||
</author> | ||||
<date month="January" year="2017"/> | ||||
</front> | ||||
<refcontent>IEICE Transactions on Communications</refcontent> | ||||
<refcontent>Volume E100.B, Issue 7, pp. 1032-1043</refcontent> | ||||
<seriesInfo name="DOI" value="10.1587/transcom.2016SCI0002"/> | ||||
</reference> | ||||
<section title="Changes from revision 04 to revision 05" | <reference anchor="I-D.ietf-ippm-ioam-data"> | |||
anchor="changes_04_05"> | <front> | |||
<t> | <title>Data Fields for In-situ OAM</title> | |||
This section lists the changes between draft-ietf-6lo-deadline-time | <author initials="F." surname="Brockners" fullname="Frank Brockners" role="edito | |||
revisions ...-04.txt and ...-05.txt. | r"> | |||
<list style="symbols"> | <organization>Cisco Systems, Inc.</organization> | |||
<t> | </author> | |||
Included additional relevant material in Security Considerations | <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari" role="edit | |||
regarding expected deployment scenarios and the effect of | or"> | |||
disclosing additional information during the travel of a packet. | <organization>Thoughtspot</organization> | |||
</t> | </author> | |||
<t> | <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi" role="editor"> | |||
Reworked the specification for using time ranges shorter than the | <organization>Huawei</organization> | |||
maximum allowed by the choice of TU, so that fewer bits are needed | </author> | |||
to represent DT and OT. | <date month="February" day="21" year="2021"/> | |||
</t> | </front> | |||
<t> | <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-ioam-data-12"/> | |||
Revised the figures and examples to use new parameters | <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-ippm-ioam- | |||
</t> | data-12.txt"/> | |||
<t> | </reference> | |||
Reordered the field definitions for the Deadline-6LoRHE. | ||||
</t> | ||||
<t> | ||||
Responded to numerous reviewer comments to improve terminology | ||||
and editorial consistency. | ||||
</t> | ||||
</list></t> | ||||
</section> <!-- End of section "Changes from revision 04 to revision 05" --> | ||||
<section title="Changes from revision 03 to revision 04" | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
anchor="changes_03_04"> | ence.RFC.8578.xml"/> | |||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8929.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.9008.xml"/> | ||||
<t> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
This section lists the changes between draft-ietf-6lo-deadline-time | .ietf-6lo-blemesh-10.xml"/> | |||
revisions ...-03.txt and ...-04.txt. | ||||
<list style="symbols"> | ||||
<t> | ||||
Replaced OT (Origination Time) field by OTD (Origination Time | ||||
Delta), allowing a more compressed representation that needs | ||||
less processing during transitions between networks. | ||||
</t> | ||||
<t> | ||||
Changed representation for DTL, OTL, DT, OTD. Eliminated | ||||
EXP in favor of BinaryPt. | ||||
</t> | ||||
<t> | ||||
Revised the figures and examples to use new parameters | ||||
</t> | ||||
<t> | ||||
Added new section on Synchronization Aspects to supply pertinent | ||||
information about how nodes agree on the meaning of t=0. | ||||
</t> | ||||
<t> | ||||
Responded to numerous reviewer comments to improve editorial | ||||
consistency and improve terminology. | ||||
</t> | ||||
</list></t> | ||||
</section> <!-- End of section "Changes from revision 03 to revision 04" --> | ||||
<section title="Changes from revision 02 to revision 03" | </references> | |||
anchor="changes_02_03"> | </references> | |||
<t> | <section anchor="modular" title="Modular Arithmetic Considerations"> | |||
This section lists the changes between draft-ietf-6lo-deadline-time | ||||
revisions ...-02.txt and ...-03.txt. | ||||
<list style="symbols"> | ||||
<t> | ||||
Added non-normative 6LoRHE description, citing RFC 8138. | ||||
</t> | ||||
<t> | ||||
Specified that the Origination Time (OT) is the time that packet | ||||
is enqueued for transmission. | ||||
</t> | ||||
<t> | ||||
Mentioned more sources of packet delay. | ||||
</t> | ||||
<t> | <t> | |||
Clarified reasons that packet MAY be forwarded if 'D' bit is 0. | Graphically, one might visualize the timeline as follows: | |||
</t> | </t> | |||
<figure anchor="fig7" title="Absolute Timeline Representation"> | ||||
<artwork><![CDATA[ | ||||
OT_abs CT_abs DT_abs | ||||
-------|-------------|-------------|------------------>]]> | ||||
</artwork> | ||||
</figure> | ||||
<t> | <t> | |||
Clarified that DT, OT, DTL and OTL are unsigned integers. | In <xref target="fig7"/>, the value of CT_abs is envisioned | |||
as traveling to the right as time progresses, getting farther away | ||||
from OT_abs and getting closer to DT_abs. The timeline is considered | ||||
to be subdivided into time subintervals [i,j] starting and ending at | ||||
absolute times equal to k*(2^N), for integer values of k. Let | ||||
I_k = k*(2^N) and I_(k+1) = (k+1)*2^N. Intervals starting at I_k | ||||
and I_(k+1) may occur at various placements in the above timeline. | ||||
Even though OT_abs is <em>always</em> less than DT_abs, it could be that | ||||
DT < OT because of the way that DT and OT are represented within | ||||
the range [0, 2^N) and similarly for CT_abs and CT compared to OT and DT. | ||||
</t> | </t> | |||
<t> | <t> | |||
Updated bibliographic citations, including BLEmesh and Wi-SUN. | Representing the above situation in time segments of length 2^N | |||
(and values OT, CT, DT) results in several cases where the deadline | ||||
time has not elapsed: | ||||
</t> | </t> | |||
</list></t> | <dl> | |||
</section> <!-- End of section "Changes from revision 02 to revision 03" --> | <dt> 1) OT < CT < DT </dt> | |||
<dd> (e.g., I_k < OT_abs < CT_abs < DT_abs < I_(k+1) ) | ||||
</dd> | ||||
<section title="Changes from revision 01 to revision 02" | <dt> 2) DT < OT < CT </dt> <dd>(e.g., I_k < OT_abs < CT_abs | |||
anchor="changes_01_02"> | < I_(k+1) < DT_abs ) </dd> | |||
<dt> 3) CT < DT < OT </dt> <dd> (e.g., I_k < OT_abs < I_(k+1 | ||||
) < CT_abs < DT_abs ) </dd> | ||||
</dl> | ||||
<t> | ||||
In the following cases, the deadline time has elapsed and the | ||||
packet should be dropped. | ||||
</t> | ||||
<dl> | ||||
<dt> 4) DT < CT < OT </dt> <dd></dd> | ||||
<dt> 5) OT < DT < CT </dt> <dd></dd> | ||||
<dt> 6) CT < OT < DT </dt> <dd></dd> | ||||
</dl> | ||||
<t> | ||||
This section lists the changes between draft-ietf-6lo-deadline-time | ||||
revisions ...-01.txt and ...-02.txt. | ||||
<list style="symbols"> | ||||
<t> | <t> | |||
Replaced 6LoRHE description by reference to RFC 8138. | Again in <xref target="fig7"/>, consider CT_abs as time | |||
moving away from OT_abs and towards DT_abs. | ||||
For times CT_abs before the expiration of the deadline time, we also | ||||
have CT_abs - OT_abs == CT - OT mod 2^N and similarly for DT_abs - | ||||
CT_abs. | ||||
</t> | </t> | |||
<t> | <t> | |||
Added figure to illustrate change to Origination Time when a | As time proceeds, DT_abs - CT_abs gets smaller. When the deadline time | |||
packet crosses timezone boundaries. | expires, DT_abs - CT_abs begins to grow negative. A proper selection | |||
for SAFETY_FACTOR allows it to go | ||||
<em>slightly negative</em> but for an intermediate point to <em>detect</e | ||||
m> that it | ||||
has gone negative. | ||||
Note that in modular arithmetic, "slightly negative" means <em>exactly</e | ||||
m> | ||||
the same as "almost as large as the modulus (i.e., 2^N)". | ||||
Now consider the test condition | ||||
((CT - DT) mod 2^N) > SAFETY_FACTOR*2^N. | ||||
</t> | </t> | |||
<t> | <t> | |||
Clarified that use of 6tisch networks is descriptive, not normative. | (DT_abs - OT_abs) < 2^N*(1-SAFETY_FACTOR) satisfies the test | |||
condition when CT_abs == OT_abs (i.e., when the packet is launched). | ||||
In modular arithmetic, 2^N*(1-SAFETY_FACTOR) == | ||||
2^N - 2^N*SAFETY_FACTOR == -2^N*(SAFETY_FACTOR). | ||||
Then DT_abs - OT_abs < -2^N*(1-SAFETY_FACTOR). | ||||
Inverting the inequality, | ||||
OT_abs - DT_abs > 2^N*(1-SAFETY_FACTOR), and thus at | ||||
launch CT_abs - DT_abs > 2^N*(1-SAFETY_FACTOR). | ||||
</t> | </t> | |||
<t> | <t> | |||
Clarified that In-Band OAM is used as an example and is not normative. | As CT_abs grows larger, CT_abs - DT_abs gets LARGER in (non-negative) | |||
modular arithmetic until the time at which CT_ABS == DT_ABS, and | ||||
suddenly CT_ABS - DT_abs becomes zero. Also suddenly, the test | ||||
condition is no longer fulfilled. | ||||
</t> | </t> | |||
<t> | <t> | |||
Updated bibliographic citations. | As CT_abs grows still larger, CT_abs > DT_abs, and we need to detect | |||
this condition as soon as possible. Requiring the SAFETY_FACTOR | ||||
enables this detection until CT_abs exceeds DT_abs | ||||
by an amount equal to SAFETY_FACTOR*2^N. | ||||
</t> | </t> | |||
<t> | <t> | |||
Alphabetized contributor names. | A note about "inverting the inequality". Observe that a < b | |||
implies that -a > -b on the real number line. Also, | ||||
(a - b) == -(b - a). These facts hold also for modular arithmetic. | ||||
</t> | </t> | |||
</list></t> | ||||
</section> <!-- End of section "Changes from revision 01 to revision 02" --> | ||||
<section title="Changes between earlier versions" | ||||
anchor="older_changes"> | ||||
<t> | ||||
This section lists the changes between draft-ietf-6lo-deadline-time | ||||
revisions ...-00.txt and ...-01.txt. | ||||
<list style="symbols"> | ||||
<t> | <t> | |||
Changed "SHOULD drop" to "MUST drop" a packet if the deadline is | During the times prior to the expiration of the deadline, for | |||
passed (see <xref target="Format"/>). | Safe = 2^N*SAFETY_FACTOR we have: | |||
</t> | </t> | |||
<t> | <t indent="6"> | |||
Added explanatory text about how packet delays might arise. | (DT_abs - 2^N) < OT_abs < CT_abs < DT_abs < DT_abs+Safe | |||
(see <xref target="Description"/>). | ||||
</t> | </t> | |||
<t> | <t> | |||
Mentioned availability of time-synchronization protocols | Naturally, DT_abs - 2^N == DT_abs mod 2^N == DT. | |||
(see <xref target="Intro"/>). | ||||
</t> | </t> | |||
<t> | <t> | |||
Updated bibliographic citations. | Again considering <xref target="fig7"/>, it is easy to see | |||
that {CT_abs - (DT_abs - 2^N)} gets larger and larger until the time | ||||
at which CT_abs = DT_abs, which is the first time at which | ||||
CT - DT == 0 mod 2^N. As CT_abs increases past the deadline time, | ||||
0 < CT_abs - DT_abs < Safe. In this range, any intermediate | ||||
node can detect that the deadline has expired. As CT_abs increases | ||||
past DT_abs+Safe, it is no longer possible for an intermediate node | ||||
to determine with certainty whether or not the deadline time has | ||||
expired. These statements | ||||
also apply when reduced to modular arithmetic in the modulus 2^N. | ||||
</t> | </t> | |||
<t> | <t> | |||
Alphabetized contributor names. | In particular, the test condition no longer allows | |||
detection of deadline expiration when the current | ||||
time becomes later than (DT_abs+Safe). In order to maintain | ||||
correctness even for packets that are forwarded after expiration | ||||
(i.e., the 'D' flag), N has to be chosen to be so large that | ||||
the test condition will not fail -- i.e., that in all scenarios | ||||
of interest, the packet will be dropped before the current time | ||||
becomes equal to DT_abs+2^N*SAFETY_FACTOR. | ||||
</t> | </t> | |||
<t> | </section> | |||
Added this section. | ||||
</t> | ||||
</list></t> | <section numbered="false" toc="default"> | |||
</section> | <name>Acknowledgments</name> | |||
<t> | ||||
The authors thank <contact fullname="Pascal Thubert"/> for suggesting the | ||||
idea and | ||||
encouraging the work. Thanks to <contact fullname="Shwetha Bhandari"/>'s | ||||
suggestions, which | ||||
were instrumental in extending the timing information to heterogeneous | ||||
networks. The authors acknowledge the 6TiSCH WG members for their | ||||
inputs on the mailing list. Special thanks to | ||||
<contact fullname="Jerry Daniel"/>, | ||||
<contact fullname="Dan Frost"/> (Routing Directorate), | ||||
<contact fullname="Charlie Kaufman"/> (Security Directorate), | ||||
<contact fullname="Seema Kumar"/>, | ||||
<contact fullname="Tal Mizrahi"/>, | ||||
<contact fullname="Avinash Mohan"/>, | ||||
<contact fullname="Shalu Rajendran"/>, | ||||
<contact fullname="Anita Varghese"/>, and | ||||
<contact fullname="Dale Worley"/> (General Area Review Team (Gen | ||||
-ART) review) | ||||
for their support and valuable feedback. | ||||
</t> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 177 change blocks. | ||||
947 lines changed or deleted | 914 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |