| < draft-thubert-6man-flow-label-for-rpl-00.txt | draft-thubert-6man-flow-label-for-rpl-01.txt > | |||
|---|---|---|---|---|
| ROLL P. Thubert, Ed. | 6MAN P. Thubert, Ed. | |||
| Internet-Draft Cisco | Internet-Draft Cisco | |||
| Intended status: Standards Track April 17, 2014 | Intended status: Standards Track May 13, 2014 | |||
| Expires: October 17, 2014 | Expires: November 14, 2014 | |||
| The IPv6 Flow Label within a RPL domain | The IPv6 Flow Label within a RPL domain | |||
| draft-thubert-6man-flow-label-for-rpl-00 | draft-thubert-6man-flow-label-for-rpl-01 | |||
| Abstract | Abstract | |||
| This document present how the Flow Label can be used inside a RPL | This document present how the Flow Label can be used inside a RPL | |||
| domain as a replacement to the RPL option and provides rules for the | domain as a replacement to the RPL option and provides rules for the | |||
| root to set and reset the Flow Label when forwarding between the | root to set and reset the Flow Label when forwarding between the | |||
| inside of RPL domain and the larger Internet, in both direction. | inside of RPL domain and the larger Internet, in both direction. | |||
| This new operation saves 44 bits in each frame, and an eventual IP- | This new operation saves 44 bits in each frame, and an eventual IP- | |||
| in-IP encapsulation within the RPL domain that is required for all | in-IP encapsulation within the RPL domain that is required for all | |||
| packets that reach outside of the RPL domain. | packets that reach outside of the RPL domain. | |||
| Status of this Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on October 17, 2014. | This Internet-Draft will expire on November 14, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (http://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
| as described in Section 4.e of the Trust Legal Provisions and are | include Simplified BSD License text as described in Section 4.e of | |||
| provided without warranty as described in the Simplified BSD License. | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. On LLN flows . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. On Wasted Energy . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. On Wasted Resources . . . . . . . . . . . . . . . . . . . 4 | 1.2. LLN flows . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.3. On Compatibility With Existing Standards . . . . . . . . . 5 | 1.3. On Compatibility With Existing Standards . . . . . . . . 6 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3. Flow Label Format Within the RPL Domain . . . . . . . . . . . 6 | 3. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4. Root Operation . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Flow Label Format Within the RPL Domain . . . . . . . . . . . 8 | |||
| 4.1. Incoming Packets . . . . . . . . . . . . . . . . . . . . . 7 | 5. Root Operation . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.2. Outgoing Packets . . . . . . . . . . . . . . . . . . . . . 7 | 5.1. Incoming Packets . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5. RPL node Operation . . . . . . . . . . . . . . . . . . . . . . 8 | 5.2. Outgoing Packets . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 6. RPL node Operation . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . . 8 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . . 9 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 10.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 1. Introduction | 1. Introduction | |||
| The emergence of radio technology enabled a large variety of new | The emergence of radio technology enabled a large variety of new | |||
| types of devices to be interconnected, at a very low marginal cost | types of devices to be interconnected, at a very low marginal cost | |||
| compared to wire, at any range from Near Field to interplanetary | compared to wire, at any range from Near Field to interplanetary | |||
| distances, and in circumstances where wiring would be less than | distances, and in circumstances where wiring would be less than | |||
| practical, for instance rotating devices. | practical, for instance rotating devices. | |||
| In particular, IEEE802.14.5 [IEEE802154] that is chartered to specify | In particular, IEEE802.14.5 [IEEE802154] that is chartered to specify | |||
| PHY and MAC layers for radio Lowpower Lossy Networks (LLNs), defined | PHY and MAC layers for radio Lowpower Lossy Networks (LLNs), defined | |||
| the TimeSlotted Channel Hopping [I-D.ietf-6tisch-tsch] (TSCH) mode of | the TimeSlotted Channel Hopping [I-D.ietf-6tisch-tsch] (TSCH) mode of | |||
| operation as part of the IEEE802.15.4e MAC specification in order to | operation as part of the IEEE802.15.4e MAC specification in order to | |||
| address Time Sensitive applications. | address Time Sensitive applications. | |||
| The 6TISCH architecture [I-D.ietf-6tisch-architecture] specifies | The 6TISCH architecture [I-D.ietf-6tisch-architecture] specifies the | |||
| the operation IPv6 over the IEEE802.15.4e TimeSlotted Channel Hopping | operation IPv6 over TSCH wireless networks attached and synchronized | |||
| [I-D.ietf-6tisch-tsch] (TSCH) wireless networks attached and | by backbone routers. In that model, route Computation may be | |||
| synchronized by backbone routers. In that model, route Computation | achieved in a centralized fashion by a Path Computation Element | |||
| may be achieved in a centralized fashion by a Path Computation | (PCE), in a distributed fashion using the Routing Protocol for Low | |||
| Element (PCE), in a distributed fashion using the Routing Protocol | Power and Lossy Networks [RFC6550] (RPL), or in a mixed mode. The | |||
| for Low Power and Lossy Networks [RFC6550] (RPL), or in a mixed | Backbone Routers may typically serve as roots for the RPL domain. | |||
| mode. The Backbone Routers may typically serve as roots for the RPL | ||||
| domain. | ||||
| 6TiSCH was created to simplify the adoption of IETF technology by | 6TiSCH was created to simplify the adoption of IETF technology by | |||
| other Standard Defining Organizations (SDOs), in particular in the | other Standard Defining Organizations (SDOs), in particular in the | |||
| Industrial Automation space, which already relies on variations of | Industrial Automation space, which already relies on variations of | |||
| IEEE802.15.4e TSCH for Wireless Sensor Networking. ISA100.11a | IEEE802.15.4e TSCH for Wireless Sensor Networking. ISA100.11a | |||
| [ISA100.11a] is an example of such industrial WSN standard, using | [ISA100.11a] is an example of such industrial WSN standard, using | |||
| IEEE802.15.4e over the classical IEEE802.14.5 PHY. In that case, | IEEE802.15.4e over the classical IEEE802.14.5 PHY. In that case, | |||
| after security is applied, roughly 80 octets are available per frame | after security is applied, roughly 80 octets are available per frame | |||
| for IP and Payload. In order to 1) avoid fragmentation and 2) | for IP and Payload. In order to 1) avoid fragmentation and 2) | |||
| conserve energy, the SDO will scrutinize any bit in the frame and | conserve energy, the SDO will scrutinize any bit in the frame and | |||
| reject any waste. | reject any waste. | |||
| The challenge to obtain the adoption of IPv6 in the original standard | The challenge to obtain the adoption of IPv6 in the original standard | |||
| was really to save any possible bit in the frames, including the UDP | was really to save any possible bit in the frames, including the UDP | |||
| checksum which was an interesting discussion on its own. This work | checksum which was an interesting discussion on its own. This work | |||
| was actually one of the roots for the 6LoWPAN Header Compression | was actually one of the roots for the 6LoWPAN Header Compression | |||
| [RFC6282] work, which goes down to the individual bits to save space | [RFC6282] work, which goes down to the individual bits to save space | |||
| in the frames for actual data, and allowed ISA100.11a to adopt IPv6. | in the frames for actual data, and allowed ISA100.11a to adopt IPv6. | |||
| 1.1. On LLN flows | 1.1. On Wasted Energy | |||
| In industrial applications such as control systems [RFC5673], a | ||||
| packet loss is usually acceptable but jitter and latency must be | ||||
| strictly controlled as they can play a critical role in the | ||||
| interpretation of the measured information. Sensory systems are | ||||
| often distributed, and the control information can in fact be | ||||
| originated from multiple sources and aggregated. As a result, it can | ||||
| be a requirement for related measurements from multiple sources to be | ||||
| treated as a single flow following a same path over the Internet in | ||||
| order to experience similar jitter and latency. The traditional | ||||
| tuple of source, destination and ports might then not be the proper | ||||
| indication to isolate a meaningful flow. | ||||
| In a typical LLN application, the bulk of the traffic consists of | ||||
| small chunks of data (in the order few bytes to a few tens of bytes) | ||||
| at a time. In the industrial case, a typical frequency is 4Hz but it | ||||
| can be a lot slower than that for, say, environmental monitoring. | ||||
| The granularity of traffic from a single source is too small to make | ||||
| a lot of sense in load balancing application. | ||||
| In such cases, related packets from multiple sources should not be | ||||
| load-balanced along their path in the Internet; load-balancing can be | ||||
| discouraged by tagging those packets with a same Flow Label in the | ||||
| IPv6 [RFC2460] header. This can be achieved if the Flow Label in | ||||
| packets outgoing a RPL domain are set by the root of the RPL | ||||
| structure as opposed to the actual source. It derives that the Flow | ||||
| Label could be reused inside the RPL domain. | ||||
| In a LLN, each transmitted bit represents energy and every saving | ||||
| counts dearly. Considering that the value for which the Flow Label | ||||
| is used in the IPv6 Flow Label Specification [RFC6437] is to serve | ||||
| load balancing in the core, it is unlikely that LLN devices will | ||||
| consume energy to generate and then transmit a Flow Label to serve | ||||
| interests in some other place. On the other hand, it makes sense to | ||||
| recommend the computation of a stateless Flow Label at the root of | ||||
| the LLN towards the Internet. | ||||
| Reciprocally, [RFC6437] requires that once set, a non-zero flow label | ||||
| value is left unchanged. The value for that setting is consumed once | ||||
| the packet has traversed the core and reaches the LLN. Then again, | ||||
| there is little value but a high cost for the LLN in spending 20 bits | ||||
| to transport a Flow Label from the Internet over the constrained | ||||
| network to the destination node. It results that the MUST in | ||||
| [RFC6437] should be alleviated for packets coming from the outside on | ||||
| the LLN, and that it should be acceptable that the compression over | ||||
| the LLN erases the original flow label. It should also be acceptable | ||||
| that the Flow Label field is reused in the LLN as proposed in this | ||||
| draft. | ||||
| 1.2. On Wasted Resources | The design of Lowpower Lossy Networks is generally focussed on saving | |||
| energy, which is the most constrained resource of all. The other | ||||
| constraints, such as the memory capacity and the duty cycling of the | ||||
| LLN devices, derive from that primary concern. Energy is typically | ||||
| available from batteries that are expected to last for years, or | ||||
| scavenged from the environment in very limited quantities. Any | ||||
| protocol that is intended for use in LLNs must be designed with the | ||||
| primary concern of saving energy as a strict requirement. | ||||
| The Routing Protocol for Low Power and Lossy Networks (RPL) | The Routing Protocol for Low Power and Lossy Networks (RPL) [RFC6550] | |||
| [RFC6550] specification defines a generic Distance Vector protocol | specification defines a generic Distance Vector protocol that is | |||
| that is adapted to a variety of LLNs. RPL forms Destination Oriented | indeed designed for very low energy consumption and adapted to a | |||
| Directed Acyclic Graphs (DODAGs) which root often acts as the Border | variety of LLNs. RPL forms Destination Oriented Directed Acyclic | |||
| Router to connect the RPL domain to the Internet. The root is | Graphs (DODAGs) which root often acts as the Border Router to connect | |||
| responsible to select the RPL Instance that is used to forward a | the RPL domain to the Internet. The root is responsible to select | |||
| packet coming from the Internet into the RPL domain. | the RPL Instance that is used to forward a packet coming from the | |||
| Internet into the RPL domain and set the related RPL information in | ||||
| the packets. | ||||
| A classical RPL implementation will use the RPL Option for Carrying | A classical RPL implementation will use the RPL Option for Carrying | |||
| RPL Information in Data-Plane Datagrams [RFC6553] to tag a packet | RPL Information in Data-Plane Datagrams [RFC6553] to tag a packet | |||
| with the Instance ID and other information that RPL requires for its | with the Instance ID and other information that RPL requires for its | |||
| operation within the RPL domain. In particular, the Rank, which is | operation within the RPL domain. In particular, the Rank, which is | |||
| the scalar metric computed by an specialized Objective Function such | the scalar metric computed by an specialized Objective Function such | |||
| as [RFC6552], is modified at each hop and allows to validate that the | as [RFC6552], is modified at each hop and allows to validate that the | |||
| packet progresses in the execpted direction each upwards or downwards | packet progresses in the expected direction each upwards or downwards | |||
| in along the DODAG. | in along the DODAG. | |||
| With [RFC6553] the RPL option is encoded as 6 Octets; it must be | With [RFC6553] the RPL option is encoded as 6 Octets; it must be | |||
| placed in a Hop-by-Hop header that represents 2 additional octets for | placed in a Hop-by-Hop header that represents 2 additional octets for | |||
| a total of 8. In order to limit its range to the inside the RPL | a total of 8. In order to limit its range to the inside the RPL | |||
| domain, the Hop-by-Hop header must be added to (or removed from) | domain, the Hop-by-Hop header must be added to (or removed from) | |||
| packets that cross the border of the RPL domain. For reasons such as | packets that cross the border of the RPL domain. For reasons such as | |||
| the capability to send ICMP errors back to the source, this operation | the capability to send ICMP errors back to the source, this operation | |||
| involves an extra IP-in-IP encapsulation inside the RPL domain for | involves an extra IP-in-IP encapsulation inside the RPL domain for | |||
| all the packets which path is not contained within the RPL domain. | all the packets which path is not contained within the RPL domain. | |||
| The 8-octets overhead is detrimental to the LLN operation, in | The 8-octets overhead is detrimental to the LLN operation, in | |||
| particular with regards to bandwidth and battery constraints. The | particular with regards to bandwidth and battery constraints. The | |||
| extra encapsulation may cause a containing frame to grow above | extra encapsulation may cause a containing frame to grow above | |||
| maximum frame size, leading to Layer 2 or 6LoWPAN [RFC4944] | maximum frame size, leading to Layer 2 or 6LoWPAN [RFC4944] | |||
| fragmentation, which in turn cause even more energy spending and | fragmentation, which in turn cause even more energy spending and | |||
| issues discussed in the LLN Fragment Forwarding and Recovery [I-D | issues discussed in the LLN Fragment Forwarding and Recovery | |||
| .thubert-6lo-forwarding-fragments]. | [I-D.thubert-6lo-forwarding-fragments]. | |||
| ------+--------- ^ | ------+--------- ^ | |||
| | Internet | | | Internet | | |||
| | | Native IPv6 | | | Native IPv6 | |||
| +-----+ | | +-----+ | | |||
| | | Border Router (RPL Root) ^ | ^ | | | Border Router (RPL Root) ^ | ^ | |||
| | | | | | | | | | | | | |||
| +-----+ | | | IPv6 + | +-----+ | | | IPv6 + | |||
| | | | | HbH | | | | | HbH | |||
| o o o o | | | headers | o o o o | | | headers | |||
| 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 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 o o o o o o | | | | |||
| o o o o o o o o v v v | o o o o o o o o v v v | |||
| o o o o o o | o o o o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 1: IP-in-IP Encapsulation within the LLN | ||||
| Considering that, in the classical IEEE802.14.5 PHY that is used by | Considering that, in the classical IEEE802.14.5 PHY that is used by | |||
| ISA100.11a, roughly 80 octets are available per frame after security | ISA100.11a, roughly 80 octets are available per frame after security | |||
| is applied, and , any additional transmitted octet weights in the | is applied, and any additional transmitted bit weights in the energy | |||
| energy consumption and drains the batteriesBut [RFC6282] does not | consumption and drains the batteries. | |||
| provide an efficient compression for the RPL option so the cost in | ||||
| current implementations can not be alleviated in any fashion. So | Regrettably, [RFC6282] does not provide an efficient compression for | |||
| even for packets that are confined within the RPL domain and do not | the RPL option so the cost in current implementations can not be | |||
| need the 6in6 encapsulation, the use of the flow label instead of the | alleviated in any fashion. So even for packets that are confined | |||
| RPL option would be a valuable saving. | within the RPL domain and do not need the IP-in-IP encapsulation, the | |||
| use of the flow label instead of the RPL option would be a valuable | ||||
| saving. | ||||
| 1.2. LLN flows | ||||
| In Industrial Automation and Control Systems (IACS) [RFC5673], a | ||||
| packet loss is usually acceptable but jitter and latency must be | ||||
| strictly controlled as they can play a critical role in the | ||||
| interpretation of the measured information. Sensory systems are | ||||
| often distributed, and the control information can in fact be | ||||
| originated from multiple sources and aggregated. In such cases, | ||||
| related packets from multiple sources should not be load-balanced | ||||
| along their path in the Internet. | ||||
| In a typical LLN application, the bulk of the traffic consists of | ||||
| small chunks of data (in the order few bytes to a few tens of bytes) | ||||
| at a time. 4Hz is a typical loop frequency in Process Control, | ||||
| though it can be a lot slower than that in, say, environmental | ||||
| monitoring. The granularity of traffic from a single source is too | ||||
| small to make a lot of sense in load balancing application. | ||||
| As a result, it can be a requirement for related measurements from | ||||
| multiple sources to be treated as a single flow following a same path | ||||
| over the Internet so as to experience similar jitter and latency. | ||||
| The traditional tuple of source, destination and ports might then not | ||||
| be the proper indication to isolate a consistent flow. On the other | ||||
| hand, the flow integrity can be preserved in a simple manner if the | ||||
| setting of the Flow Label in the IPv6 header of packets outgoing a | ||||
| RPL domain, is centralized to the root of the RPL DODAG structure, as | ||||
| opposed to distributed across the actual sources. | ||||
| Considering that the goal for setting the Flow Label as prescribed in | ||||
| the IPv6 Flow Label Specification [RFC6437] is to improve load | ||||
| balancing in the core of the Internet, it is unlikely that LLN | ||||
| devices will consume energy to generate and then transmit a Flow | ||||
| Label to serve outside interests and the Flow Label is generally left | ||||
| to zero so as to be elided in the 6LoWPAN [RFC6282] compression. So | ||||
| in a general manner the interests of the core are better served if | ||||
| the RPL roots systematically rewrite the flow label rather than if | ||||
| they never do. | ||||
| For packets coming into the RPL domain from the Internet, the value | ||||
| for setting the Flow Label as prescribed in [RFC6437] is consumed | ||||
| once the packet has traversed the core and reaches the LLN. Then | ||||
| again, there is little value but a high cost for the LLN in spending | ||||
| 20 bits to transport a Flow Label from the Internet over the | ||||
| constrained network to a destination node that has no use of it. | ||||
| 1.3. On Compatibility With Existing Standards | 1.3. On Compatibility With Existing Standards | |||
| All the packets from all the nodes in a same DODAG that are leaving a | All the packets from all the nodes in a same DODAG that are leaving a | |||
| RPL domain towards the Internet will transit via a same RPL root. | RPL domain towards the Internet will transit via a same RPL root. | |||
| The RPL root segregates the Internet and the RPL domain, which | The RPL root segregates the Internet and the RPL domain, which | |||
| enables the capability to reuse the Flow Label within the RPL domain. | enables the capability to reuse the Flow Label within the RPL domain. | |||
| On the other hand, the operation of writing/rewriting the IPv6 Flow | On the other hand, the operation of resetting or reusing the IPv6 | |||
| Label at the root of a RPL domain may seem in contradiction with the | Flow Label at the root of a RPL domain is a deviation from the IPv6 | |||
| IPv6 Flow Label Specification [RFC6437], in that it is neither the | Flow Label Specification [RFC6437], in that it is neither the source | |||
| source nor the first hop router that sets the final Flow Label for | nor the first hop router that sets the final Flow Label for use | |||
| use outside the RPL domain. | outside the RPL domain. | |||
| Additionally, using the Flow Label to transport the information that | Additionally, using the Flow Label to transport the information that | |||
| is classically present in the RPL option implies that the Flow Label | is classically present in the RPL option implies that the Flow Label | |||
| is modified at each hop inside the RPL domain, which again | is modified at each hop inside the RPL domain, which again is a | |||
| contradicts [RFC6437], which explicitly requires that the flow label | limited deviation from [RFC6437], which explicitly requires that the | |||
| cannot be modified once set. | flow label cannot be modified once set. | |||
| But if we consider the whole RPL domain as a large virtual host from | But if we consider the whole RPL domain as a large virtual host from | |||
| the standpoint of the rest of the Internet, the interests that lead | the standpoint of the rest of the Internet, the interests that lead | |||
| to [RFC6437], and in particular load balancing in the core of the | to [RFC6437], and in particular load balancing in the core of the | |||
| Internet, are probably better served if the root guarantees that the | Internet, are probably better served if the root guarantees that the | |||
| Flow Label is set in a compliant fashion than if we rely on each | Flow Label is set in a compliant fashion than if we rely on each | |||
| individual sensor that may not use it at all, or use it slightly | individual sensor that may not use it at all, or use it slightly | |||
| differently such as done in ISA100.11a. | differently such as done in ISA100.11a. | |||
| Additionally, LLN flows can be compound flows aggregating information | Additionally, LLN flows can be compound flows aggregating information | |||
| from multiple sources. The root is an ideal place to rewrite the | from multiple sources. The root is an ideal place to rewrite the | |||
| Flow Label to a same value for a same flow across multiple sources, | Flow Label to a same value for a same flow across multiple sources, | |||
| ensuring compliance with the rules defined by [RFC6437] for use | ensuring compliance with the rules defined by [RFC6437] for use | |||
| outside of the RPL domain and in particular in the core of the | outside of the RPL domain and in particular in the core of the | |||
| Internet. | Internet. | |||
| It can be noted that [RFC6282] provides an efficient header | It can be noted that [RFC6282] provides an efficient header | |||
| compression for packets that do have the Flow Label set in the IPv6 | compression for packets that do have the Flow Label set in the IPv6 | |||
| header. It results overhead for transporting the RPL information can | header. It results that the overhead for transporting the RPL | |||
| be down from 64 to 20 bits, alleviating at the same time the need for | information can be down from 64 to 20 bits, alleviating at the same | |||
| IP-in-IP encapsulation. This optimization cannot be ignored, and is | time the need for IP-in-IP encapsulation. This optimization cannot | |||
| required for the adoption of the 6TiSCH architecture by external | be ignored, and can make the difference for the adoption of RPL and | |||
| standard bodies. | 6TiSCH by external standard bodies. | |||
| This document specifies how the Flow Label can be reused within the | This document specifies how the Flow Label can be reused within the | |||
| RPL domain as a replacement to the RPL option. The use of the Flow | RPL domain as a replacement to the RPL option. The use of the Flow | |||
| Label within a RPL domain is an instance of the stateful scenarios as | Label within a RPL domain is an instance of the stateful scenarios as | |||
| discussed in [RFC6437]where the states include the rank of a node and | discussed in [RFC6437] where the states include the Rank of a node | |||
| the RPLInstanceID that identifies the routing topology. | and the RPLInstanceID that identifies the routing topology. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| The Terminology used in this document is consistent with and | The Terminology used in this document is consistent with and | |||
| incorporates that described in `Terminology in Low power And Lossy | incorporates that described in `Terminology in Low power And Lossy | |||
| Networks' [RFC7102] and [RFC6550]. | Networks' [RFC7102] and [RFC6550]. | |||
| 3. Flow Label Format Within the RPL Domain | 3. Applicability | |||
| This specification applies to a RPL [RFC6282] domain that forms a | ||||
| stub LLN and is connected to the Internet by and only by its RPL | ||||
| root(s), which act(s) as Border Router(s) for the LLN. With RPL, a | ||||
| root is the bottleneck for all the traffic between the Internet and | ||||
| the Destination-Oriented Directed Acyclic Graph (DODAG) that it | ||||
| serves. | ||||
| In that context, the specification entitles a RPL root to rewrite the | ||||
| IPv6 [RFC2460] Flow Label of all packets entering or leaving the RPL | ||||
| domain in both directions, from and towards the Internet, regardless | ||||
| of its original setting. This may seem contradictory with the IPv6 | ||||
| Flow Label Specification [RFC6437] which stipulates that once it is | ||||
| set, the Flow Label is left unchanged; but the RFC also indicates a | ||||
| violation to the rule can be accepted for compelling reasons, and | ||||
| that security is a case justifying such a violation. This | ||||
| specification suggests that energy-saving is another compelling | ||||
| reason for a violation to the aforementioned rule. | ||||
| For the compelling reason of saving energy, this specification allows | ||||
| that regardless of its original setting, a root of a RPL domain MAY | ||||
| reset the Flow Label of IPv6 packets entering the RPL domain to zero | ||||
| for an optimal Header Compression by 6LoWPAN [RFC6282]. The | ||||
| specification also allows that the root and LLN routers MAY reuse the | ||||
| Flow Label inside the LLN for LLN purposes, such as to carry the RPL | ||||
| Information as detailed hereafter. | ||||
| This specification also allows that regardless of its original | ||||
| setting, a a root of a RPL domain MAY set low Label of IPv6 packets | ||||
| that exits the RPL domain MAY be set by the RPL, in a manner that | ||||
| SHOULD conform the prescriptions in [RFC6437], and that a source in | ||||
| the RPL domain MAY NOT expect that its setting of the Flow Label be | ||||
| preserved end-to-end. From there, the capability by RPL routers | ||||
| inside the LLN to alter a non-zero Flow Label between the source and | ||||
| the root is another minor deviation to [RFC6437] that is also | ||||
| acceptable since it is transparent to the core of the Internet. | ||||
| 4. Flow Label Format Within the RPL Domain | ||||
| [RFC6550] section 11.2 specifies the fields that are to be placed | [RFC6550] section 11.2 specifies the fields that are to be placed | |||
| into the packets for the purpose of Instance Identification, as well | into the packets for the purpose of Instance Identification, as well | |||
| as Loop Avoidance and Detection. Those fields include an 'O', and | as Loop Avoidance and Detection. Those fields include an 'O', and | |||
| 'R' and an 'F' bits, the 8-bit RPLInstanceID, and the 16-bit | 'R' and an 'F' bits, the 8-bit RPLInstanceID, and the 16-bit | |||
| SenderRank. SenderRank is the result of the DAGRank operation on the | SenderRank. SenderRank is the result of the DAGRank operation on the | |||
| rank of the sender, where the DAGRank operation is defined in section | rank of the sender, where the DAGRank operation is defined in section | |||
| 3.5.1 as: | 3.5.1 as: | |||
| DAGRank(rank) = floor(rank/MinHopRankIncrease) | DAGRank(rank) = floor(rank/MinHopRankIncrease) | |||
| If MinHopRankIncrease is set to a multiple of 256, it appears that | If MinHopRankIncrease is set to a multiple of 256, it appears that | |||
| the most significant 8 bits of the SenderRank will be all zeroes and | the most significant 8 bits of the SenderRank will be all zeroes and | |||
| could be ommitted. In that case, the Flow Label MAY be used as a | could be omitted. In that case, the Flow Label MAY be used as a | |||
| replacement to the [RFC6553] RPL option. To achive this, the | replacement to the [RFC6553] RPL option. To achieve this, the | |||
| SenderRank is expressed with 8 least significant bits, and the | SenderRank is expressed with 8 least significant bits, and the | |||
| information carried within the Flow Label in a packet is constructed | information carried within the Flow Label in a packet is constructed | |||
| follows: | follows: | |||
| 0 1 2 | 0 1 2 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | |O|R|F| SenderRank | RPLInstanceID | | | |O|R|F| SenderRank | RPLInstanceID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: The RPL Flow Label | ||||
| The first (leftmost) bit of the Flow Label is reserved and should be | The first (leftmost) bit of the Flow Label is reserved and should be | |||
| set to zero. | set to zero. | |||
| 4. Root Operation | 5. Root Operation | |||
| [RFC6437] section 3 intentionally does not consider flow label values | [RFC6437] section 3 intentionally does not consider flow label values | |||
| in which any of the bits have semantic significance. However, the | in which any of the bits have semantic significance. However, the | |||
| present specification assigns semantics to various bits in the flow | present specification assigns semantics to various bits in the flow | |||
| label, destroying within the edge network that is the RPL domaina | label, destroying within the edge network that is the RPL domain the | |||
| property of belonging to a statistically uniform distribution | property of belonging to a statistically uniform distribution that is | |||
| that is desirable in the rest of the Internet. This property MUST be | desirable in the rest of the Internet. | |||
| restored by the root for outgoing packets. | ||||
| It can be noted that the rationale for the statistically uniform | It can be noted that the rationale for the statistically uniform | |||
| distribution does not necessarily bring a lot of value within the RPL | distribution does not necessarily bring a lot of value within the RPL | |||
| domain. In a specific use case where it would, that value must be | domain. In a specific use case where it would, that value must be | |||
| compared with that of the battery savings in order to decide which | compared with that of the battery savings in order to decide which | |||
| technique the deployment will use to transport the RPL information. | technique the deployment will use to transport the RPL information. | |||
| 4.1. Incoming Packets | 5.1. Incoming Packets | |||
| When routing a packet towards the RPL domain, the root applies a | When routing a packet towards the RPL domain, the root applies a | |||
| policy to determine whether the Flow Label is to be used to carry the | policy to determine whether the Flow Label is to be used to carry the | |||
| RPL information. If so, the root MUST reset the Flow Label and then | RPL information. If so, the root MUST reset the Flow Label and then | |||
| it MUST set all the fields in the Flow Label as prescribed by | it MUST set all the fields in the Flow Label as prescribed by | |||
| [RFC6553] using the format specified in Figure 2. In particular, the | [RFC6553] using the format specified in Figure 1. In particular, the | |||
| root selects the Instance that will be used to forward the packet | root selects the Instance that will be used to forward the packet | |||
| within the RPL domain. | within the RPL domain. | |||
| 4.2. Outgoing Packets | 5.2. Outgoing Packets | |||
| When routing a packet outside the RPL domain, the root applies a | When routing a packet outside the RPL domain, the root applies a | |||
| policy to determine whether the Flow Label was used to carry the RPL | policy to determine whether the Flow Label was used to carry the RPL | |||
| information. If so, the root MUST reset the Flow Label. The root | information. If so, the root MUST reset the Flow Label. The root | |||
| SHOULD recompute a Flow Label following the rules prescribed by | SHOULD recompute a Flow Label following the rules prescribed by | |||
| [RFC6553]. In particular, the root MAY ignore the source address but | [RFC6553]. In particular, the root MAY ignore the source address but | |||
| it SHOULD use the RPLInstanceID for the computation. | it SHOULD use the RPLInstanceID for the computation. | |||
| 5. RPL node Operation | 6. RPL node Operation | |||
| Depending on the policy in place, the source of a packet will decide | Depending on the policy in place, the source of a packet will decide | |||
| whether to use this specification to transport the RPL information in | whether to use this specification to transport the RPL information in | |||
| the IPv6 packets. If it does, the source in the LLN SHOULD set the | the IPv6 packets. If it does, the source in the LLN SHOULD set the | |||
| Flow Label to zero and MUST NOT expect that the flow label will be | Flow Label to zero and MUST NOT expect that the flow label will be | |||
| conserved end-to-end". | conserved end-to-end". | |||
| 6. Security Considerations | 7. Security Considerations | |||
| The process of using the Flow Label as opposed to the RPL option does | Because the flow label is not protected by IPSec, it is expected that | |||
| not appear to create any opening for new threat compared to | Layer-2 security is deployed in the LLN where is specification is | |||
| [RFC6553]. | applied. This is the actual best practice in LLNs, which serves in | |||
| particular to avoid forwarding of untrusted packets over the | ||||
| constrained network. | ||||
| 7. IANA Considerations | If the link layer is secured adequately, using the Flow Label as | |||
| opposed to the RPL option does not create an opening for a new threat | ||||
| compared to [RFC6553]. | ||||
| 8. IANA Considerations | ||||
| No IANA action is required for this specification. | No IANA action is required for this specification. | |||
| 8. Acknowledgements | 9. Acknowledgements | |||
| The author wishes to thank Brian Carpenter for his in-depth review | The author wishes to thank Brian Carpenter for his in-depth review | |||
| and constructive approach to the problem and its resolution. | and constructive approach to the problem resolution. | |||
| 9. References | 10. References | |||
| 9.1. Normative References | 10.1. Normative References | |||
| [IEEE802154] | [IEEE802154] | |||
| IEEE standard for Information Technology, "IEEE std. | IEEE standard for Information Technology, "IEEE std. | |||
| 802.15.4, Part. 15.4: Wireless Medium Access Control | 802.15.4, Part. 15.4: Wireless Medium Access Control (MAC) | |||
| (MAC) and Physical Layer (PHY) Specifications for Low-Rate | and Physical Layer (PHY) Specifications for Low-Rate | |||
| Wireless Personal Area Networks", June 2011. | Wireless Personal Area Networks", June 2011. | |||
| [ISA100.11a] | [ISA100.11a] | |||
| ISA, "ISA100, Wireless Systems for Automation", May 2008, | ISA, "ISA100, Wireless Systems for Automation", May 2008, | |||
| < http://www.isa.org/Community/ | < http://www.isa.org/Community/ | |||
| SP100WirelessSystemsforAutomation>. | SP100WirelessSystemsforAutomation>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2460] Deering, S.E. and R.M. Hinden, "Internet Protocol, Version | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| 6 (IPv6) Specification", RFC 2460, December 1998. | (IPv6) Specification", RFC 2460, December 1998. | |||
| [RFC6282] Hui, J. and P. Thubert, "Compression Format for IPv6 | [RFC6282] Hui, J. and P. Thubert, "Compression Format for IPv6 | |||
| Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, | Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, | |||
| September 2011. | September 2011. | |||
| [RFC6437] Amante, S., Carpenter, B., Jiang, S. and J. Rajahalme, | [RFC6437] Amante, S., Carpenter, B., Jiang, S., and J. Rajahalme, | |||
| "IPv6 Flow Label Specification", RFC 6437, November 2011. | "IPv6 Flow Label Specification", RFC 6437, November 2011. | |||
| [RFC6550] Winter, T., Thubert, P., Brandt, A., Hui, J., Kelsey, R., | [RFC6550] Winter, T., Thubert, P., Brandt, A., Hui, J., Kelsey, R., | |||
| Levis, P., Pister, K., Struik, R., Vasseur, JP. and R. | Levis, P., Pister, K., Struik, R., Vasseur, JP., and R. | |||
| Alexander, "RPL: IPv6 Routing Protocol for Low-Power and | Alexander, "RPL: IPv6 Routing Protocol for Low-Power and | |||
| Lossy Networks", RFC 6550, March 2012. | Lossy Networks", RFC 6550, March 2012. | |||
| [RFC6552] Thubert, P., "Objective Function Zero for the Routing | [RFC6552] Thubert, P., "Objective Function Zero for the Routing | |||
| Protocol for Low-Power and Lossy Networks (RPL)", RFC | Protocol for Low-Power and Lossy Networks (RPL)", RFC | |||
| 6552, March 2012. | 6552, March 2012. | |||
| [RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low- | [RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low- | |||
| Power and Lossy Networks (RPL) Option for Carrying RPL | Power and Lossy Networks (RPL) Option for Carrying RPL | |||
| Information in Data-Plane Datagrams", RFC 6553, March | Information in Data-Plane Datagrams", RFC 6553, March | |||
| 2012. | 2012. | |||
| 9.2. Informative References | 10.2. Informative References | |||
| [I-D.ietf-6tisch-architecture] | [I-D.ietf-6tisch-architecture] | |||
| Thubert, P., Watteyne, T. and R. Assimiti, "An | Thubert, P., Watteyne, T., and R. Assimiti, "An | |||
| Architecture for IPv6 over the TSCH mode of IEEE | Architecture for IPv6 over the TSCH mode of IEEE | |||
| 802.15.4e", Internet-Draft draft-ietf-6tisch- | 802.15.4e", draft-ietf-6tisch-architecture-01 (work in | |||
| architecture-01, February 2014. | progress), February 2014. | |||
| [I-D.ietf-6tisch-tsch] | [I-D.ietf-6tisch-tsch] | |||
| Watteyne, T., Palattella, M. and L. Grieco, "Using | Watteyne, T., Palattella, M., and L. Grieco, "Using | |||
| IEEE802.15.4e TSCH in an LLN context: Overview, Problem | IEEE802.15.4e TSCH in an LLN context: Overview, Problem | |||
| Statement and Goals", Internet-Draft draft-ietf-6tisch- | Statement and Goals", draft-ietf-6tisch-tsch-00 (work in | |||
| tsch-00, November 2013. | progress), November 2013. | |||
| [I-D.thubert-6lo-forwarding-fragments] | [I-D.thubert-6lo-forwarding-fragments] | |||
| Thubert, P. and J. Hui, "LLN Fragment Forwarding and | Thubert, P. and J. Hui, "LLN Fragment Forwarding and | |||
| Recovery", Internet-Draft draft-thubert-6lo-forwarding- | Recovery", draft-thubert-6lo-forwarding-fragments-01 (work | |||
| fragments-01, February 2014. | in progress), February 2014. | |||
| [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J. and D. Culler, | [RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, | |||
| "Transmission of IPv6 Packets over IEEE 802.15.4 | "Transmission of IPv6 Packets over IEEE 802.15.4 | |||
| Networks", RFC 4944, September 2007. | Networks", RFC 4944, September 2007. | |||
| [RFC5673] Pister, K., Thubert, P., Dwars, S. and T. Phinney, | [RFC5673] Pister, K., Thubert, P., Dwars, S., and T. Phinney, | |||
| "Industrial Routing Requirements in Low-Power and Lossy | "Industrial Routing Requirements in Low-Power and Lossy | |||
| Networks", RFC 5673, October 2009. | Networks", RFC 5673, October 2009. | |||
| [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | |||
| Lossy Networks", RFC 7102, January 2014. | Lossy Networks", RFC 7102, January 2014. | |||
| Author's Address | Author's Address | |||
| Pascal Thubert, editor | ||||
| Pascal Thubert (editor) | ||||
| Cisco Systems | Cisco Systems | |||
| Village d'Entreprises Green Side | Village d'Entreprises Green Side | |||
| 400, Avenue de Roumanille | 400, Avenue de Roumanille | |||
| Batiment T3 | Batiment T3 | |||
| Biot - Sophia Antipolis, 06410 | Biot - Sophia Antipolis 06410 | |||
| FRANCE | FRANCE | |||
| Phone: +33 4 97 23 26 34 | Phone: +33 4 97 23 26 34 | |||
| Email: pthubert@cisco.com | Email: pthubert@cisco.com | |||
| End of changes. 54 change blocks. | ||||
| 181 lines changed or deleted | 237 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/ | ||||