| draft-ietf-roll-rpl-18.txt | draft-ietf-roll-rpl-18-jari.txt | |||
|---|---|---|---|---|
| skipping to change at page 8, line 26 | skipping to change at page 8, line 26 | |||
| offer unique challenges to a routing solution: the IETF ROLL Working | offer unique challenges to a routing solution: the IETF ROLL Working | |||
| Group has defined application-specific routing requirements for a Low | Group has defined application-specific routing requirements for a Low | |||
| power and Lossy Network (LLN) routing protocol, specified in | power and Lossy Network (LLN) routing protocol, specified in | |||
| [RFC5867], [RFC5826], [RFC5673], and [RFC5548]. | [RFC5867], [RFC5826], [RFC5673], and [RFC5548]. | |||
| This document specifies the IPv6 Routing Protocol for Low power and | This document specifies the IPv6 Routing Protocol for Low power and | |||
| lossy networks (RPL). Note that although RPL was specified according | lossy networks (RPL). Note that although RPL was specified according | |||
| to the requirements set forth in the aforementioned requirement | to the requirements set forth in the aforementioned requirement | |||
| documents, its use is in no way limited to these applications. | documents, its use is in no way limited to these applications. | |||
| 1.1. Design Principles | 1.1. Design Principles and Assumptions | |||
| RPL was designed with the objective to meet the requirements spelled | RPL was designed with the objective to meet the requirements spelled | |||
| out in [RFC5867], [RFC5826], [RFC5673], and [RFC5548]. | out in [RFC5867], [RFC5826], [RFC5673], and [RFC5548]. | |||
| A network may run multiple instances of RPL concurrently. Each such | A network may run multiple instances of RPL concurrently. Each such | |||
| instance may serve different and potentially antagonistic constraints | instance may serve different and potentially antagonistic constraints | |||
| or performance criteria. This document defines how a single instance | or performance criteria. This document defines how a single instance | |||
| operates. | operates. | |||
| In order to be useful in a wide range of LLN application domains, RPL | In order to be useful in a wide range of LLN application domains, | |||
| separates packet processing and forwarding from the routing | RPL separates packet processing and forwarding from the routing | |||
| optimization objective. Examples of such objectives include | optimization objective. Examples of such objectives include | |||
| minimizing energy, minimizing latency, or satisfying constraints. | minimizing energy, minimizing latency, or satisfying constraints. | |||
| This document describes the mode of operation of RPL. Other | This document describes the mode of operation of RPL. Other | |||
| companion documents specify routing objective functions. A RPL | companion documents specify routing objective functions and | |||
| implementation, in support of a particular LLN application, will | possibly associated metrics. A particular application may require | |||
| include the necessary objective function(s) as required by the | specific objective function(s), but the as a baseline only the | |||
| application. | default objective function is required (see Section 3.2.1). | |||
| RPL routes are optimized for traffic to or from one or more roots | ||||
| that act as sinks for the topology. | ||||
| This specification has two major modes. Implementations are | ||||
| expected to support either no downward routes, non-storing mode | ||||
| only, or storing mode only (see Section 3.3). | ||||
| RPL operations require bidirectional links. It is required that the | RPL operations require bidirectional links. It is required that the | |||
| reachability of a router is verified before the router can be used as | reachability of a router is verified before the router can be used as | |||
| a parent. RPL expects an external mechanism to be triggered during | a parent. RPL expects an external mechanism to be triggered during | |||
| the parent selection phase in order to verify link properties and | the parent selection phase in order to verify link properties and | |||
| neighbor reachability. Neighbor Unreachability Detection (NUD) is | neighbor reachability. Neighbor Unreachability Detection (NUD) is | |||
| such a mechanism, but alternates are possible, including | such a mechanism, but alternates are possible, including | |||
| Bidirectional Forwarding Detection [RFC5881] and hints from lower | Bidirectional Forwarding Detection [RFC5881] and hints from lower | |||
| layers via L2 triggers like [RFC5184]. In a general fashion, a | layers via L2 triggers like [RFC5184]. In a general fashion, a | |||
| detection mechanism that is reactive to traffic is favored in order | detection mechanism that is reactive to traffic is favored in order | |||
| skipping to change at page 9, line 22 | skipping to change at page 9, line 22 | |||
| the validation of RPL routing states. The IPv6 Hop-by-Hop RPL Option | the validation of RPL routing states. The IPv6 Hop-by-Hop RPL Option | |||
| [I-D.ietf-6man-rpl-option] is an example of such mechanism. The | [I-D.ietf-6man-rpl-option] is an example of such mechanism. The | |||
| mechanism is required for all packets except when strict source | mechanism is required for all packets except when strict source | |||
| routing is used (that is for packets going downward in non-storing | routing is used (that is for packets going downward in non-storing | |||
| mode as detailed further in Section 9), which by nature prevents | mode as detailed further in Section 9), which by nature prevents | |||
| endless loops and alleviates the need for the RPL Packet Information. | endless loops and alleviates the need for the RPL Packet Information. | |||
| Future companion specifications may propose alternate ways to carry | Future companion specifications may propose alternate ways to carry | |||
| the RPL Packet Information in the IPv6 packets and may extend the RPL | the RPL Packet Information in the IPv6 packets and may extend the RPL | |||
| Packet Information to support additional features. | Packet Information to support additional features. | |||
| ***Question about the above. Is the strick source routing mode | ||||
| applicable to both up and downward traffic? If only the the latter, | ||||
| then 6man-rpl-option is still mandatory for all implementations, to | ||||
| support the other direction. I'm assuming this is the case, please | ||||
| fix the above text and Section 1.3 if this is not the case. | ||||
| ***Besides, this document says in Section 5 that all packets have | ||||
| an RPL instance, so it would seem that -option is always needed. | ||||
| ***Finally, why isn't -rpl-routing-header mentioned here? This is | ||||
| needed... (But its unclear to me if its needed in *all* modes. | ||||
| Please add something about this here, and modify Section 1.3 | ||||
| accordingly.) | ||||
| RPL provides a mechanism to disseminate information over the | RPL provides a mechanism to disseminate information over the | |||
| dynamically-formed network topology. The dissemination enables | dynamically-formed network topology. The dissemination enables | |||
| minimal configuration in the nodes, allowing nodes to operate mostly | minimal configuration in the nodes, allowing nodes to operate mostly | |||
| autonomously. This mechanism uses trickle [I-D.ietf-roll-trickle] to | autonomously. This mechanism uses trickle [I-D.ietf-roll-trickle] to | |||
| optimize the dissemination as described in Section 8.3. | optimize the dissemination as described in Section 8.3. An | |||
| implementation of trickle is a mandatory part of RPL. However, | ||||
| some advanced aspects of RPL, such as the use of non-default | ||||
| objective function, security, and multiple simultaneous instances | ||||
| may require configuration. Configuration mechanisms for parameters | ||||
| necessary to control these advanced features are a subject for | ||||
| future specifications. | ||||
| In some applications, RPL assembles topologies of routers that own | In some applications, RPL assembles topologies of routers that own | |||
| independent prefixes. Those prefixes may or may not be aggregatable | independent prefixes. Those prefixes may or may not be aggregatable | |||
| depending on the origin of the routers. A prefix that is owned by a | depending on the origin of the routers. A prefix that is owned by a | |||
| router is advertised as on-link. | router is advertised as on-link. | |||
| RPL also introduces the capability to bind a subnet together with a | RPL also introduces the capability to bind a subnet together with a | |||
| common prefix and to route within that subnet. A source can inject | common prefix and to route within that subnet. A source can inject | |||
| information about the subnet to be disseminated by RPL, and that | information about the subnet to be disseminated by RPL, and that | |||
| source is authoritative for that subnet. Because many LLN links have | source is authoritative for that subnet. Because many LLN links have | |||
| non-transitive properties, a common prefix that RPL disseminates over | non-transitive properties, a common prefix that RPL disseminates over | |||
| the subnet must not be advertised as on-link. | the subnet must not be advertised as on-link. | |||
| RPL may in particular disseminate IPv6 Neighbor Discovery (ND) | RPL may in particular disseminate IPv6 Neighbor Discovery (ND) | |||
| information such as the [RFC4861] Prefix Information Option (PIO) and | information such as the [RFC4861] Prefix Information Option (PIO) | |||
| the [RFC4191] Route Information Option (RIO). ND information that is | and the [RFC4191] Route Information Option (RIO). Without such | |||
| disseminated by RPL conserves all its original semantics for router | distribution, the automatic configuration capabilities for RPL | |||
| to host, with limited extensions for router to router, though it is | routers would be of limited value. An RPL implementation is | |||
| not to be confused with routing advertisements and it is never to be | required to support distribution of ND information to non-RPL | |||
| directly redistributed in another routing protocol. A RPL node often | nodes, but the exact specification for this is subject to future | |||
| combines host and router behaviors. As a host, it will process the | specifications. | |||
| options as specified in [RFC4191], [RFC4861], [RFC4862] and | ||||
| [RFC3775]. As a router, the RPL node may advertise the information | ||||
| from the options as required for the specific link, for instance in a | ||||
| ND RA message, though the exact operation is out of scope. | ||||
| A set of companion documents to this specification will provide | A set of companion documents to this specification will provide | |||
| further guidance in the form of applicability statements specifying a | further guidance in the form of applicability statements specifying a | |||
| set of operating points appropriate to the Building Automation, Home | set of operating points appropriate to the Building Automation, Home | |||
| Automation, Industrial, and Urban application scenarios. | Automation, Industrial, and Urban application scenarios. | |||
| ***Maybe we should say something about the three security modes | ||||
| here... | ||||
| 1.2. Expectations of Link Layer Type | 1.2. Expectations of Link Layer Type | |||
| In compliance with the layered architecture of IP, RPL does not rely | In compliance with the layered architecture of IP, RPL does not rely | |||
| on any particular features of a specific link layer technology. RPL | on any particular features of a specific link layer technology. RPL | |||
| is designed to be able to operate over a variety of different link | is designed to be able to operate over a variety of different link | |||
| layers, including ones that are constrained, potentially lossy, or | layers, including ones that are constrained, potentially lossy, or | |||
| typically utilized in conjunction with highly constrained host or | typically utilized in conjunction with highly constrained host or | |||
| router devices, such as but not limited to, low power wireless or PLC | router devices, such as but not limited to, low power wireless or PLC | |||
| (Power Line Communication) technologies. | (Power Line Communication) technologies. As noted above, however, | |||
| it is required that links are bidirectional. | ||||
| Implementers may find [RFC3819] a useful reference when designing a | Implementers may find [RFC3819] a useful reference when designing a | |||
| link layer interface between RPL and a particular link layer | link layer interface between RPL and a particular link layer | |||
| technology. | technology. | |||
| 1.3. Summary of Implementation Requirements | ||||
| A conforming implementation of RPL is REQUIRED to support the following | ||||
| parts: | ||||
| - An implementation of RPL itself with support either for storing | ||||
| or the non-storing modes, but not necessarily both (Section 3.3). | ||||
| - The default objective function (Section 3.2.1 specifies this as | ||||
| [I-D.ietf-roll-of0]). | ||||
| - Neighbor Unreachability Detection (NUD) is required for testing | ||||
| bidirectional reachability. | ||||
| - The IPv6 Hop-by-Hop RPL Option [I-D.ietf-6man-rpl-option]. | ||||
| - The IPv6 RPL Routing Header [I-D.ietf-6man-rpl-routing-header]. | ||||
| - Trickle [I-D.ietf-roll-trickle]. | ||||
| - A mechanism to distribute ND information received via RPL to | ||||
| other, non-RPL nodes (subject to future work). | ||||
| In addition, if the node supports authenticated mode - one of | ||||
| the three security modes defined in Section 3.2.3 - it is also | ||||
| required to support a mechanism to obtain authentication | ||||
| material. Such a mechanism is subject to future specification. | ||||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in RFC | "OPTIONAL" in this document are to be interpreted as described in RFC | |||
| 2119 [RFC2119]. | 2119 [RFC2119]. | |||
| Additionally, this document uses terminology from | Additionally, this document uses terminology from | |||
| [I-D.ietf-roll-terminology], and introduces the following | [I-D.ietf-roll-terminology], and introduces the following | |||
| terminology: | terminology: | |||
| skipping to change at page 17, line 42 | skipping to change at page 17, line 42 | |||
| The Objective Function (OF) defines how RPL nodes select and optimize | The Objective Function (OF) defines how RPL nodes select and optimize | |||
| routes within a RPL Instance. The OF is identified by an Objective | routes within a RPL Instance. The OF is identified by an Objective | |||
| Code Point (OCP) within the DIO Configuration option. An OF defines | Code Point (OCP) within the DIO Configuration option. An OF defines | |||
| how nodes translate one or more metrics and constraints, which are | how nodes translate one or more metrics and constraints, which are | |||
| themselves defined in [I-D.ietf-roll-routing-metrics], into a value | themselves defined in [I-D.ietf-roll-routing-metrics], into a value | |||
| called Rank, which approximates the node's distance from a DODAG | called Rank, which approximates the node's distance from a DODAG | |||
| root. An OF also defines how nodes select parents. Further details | root. An OF also defines how nodes select parents. Further details | |||
| may be found in Section 14, [I-D.ietf-roll-routing-metrics], | may be found in Section 14, [I-D.ietf-roll-routing-metrics], | |||
| [I-D.ietf-roll-of0], and related companion specifications. | [I-D.ietf-roll-of0], and related companion specifications. | |||
| While specialized metrics [I-D.ietf-roll-routing-metrics] can be | ||||
| useful in particular networks, a RPL implementation is not required | ||||
| to implement these metrics. For interoperability, it is REQUIRED | ||||
| that the Objective Function 0 [I-D.ietf-roll-of0] is implemented, | ||||
| however. This Objective Function can work without any specified | ||||
| metrics. | ||||
| 3.2.2. DODAG Repair | 3.2.2. DODAG Repair | |||
| A DODAG Root institutes a global repair operation by incrementing the | A DODAG Root institutes a global repair operation by incrementing the | |||
| DODAG Version Number. This initiates a new DODAG Version. Nodes in | DODAG Version Number. This initiates a new DODAG Version. Nodes in | |||
| the new DODAG Version can choose a new position whose Rank is not | the new DODAG Version can choose a new position whose Rank is not | |||
| constrained by their Rank within the old DODAG Version. | constrained by their Rank within the old DODAG Version. | |||
| RPL also supports mechanisms which may be used for local repair | RPL also supports mechanisms which may be used for local repair | |||
| within the DODAG Version. The DIO message specifies the necessary | within the DODAG Version. The DIO message specifies the necessary | |||
| parameters as configured from and controlled by policy at the DODAG | parameters as configured from and controlled by policy at the DODAG | |||
| skipping to change at page 20, line 20 | skipping to change at page 20, line 20 | |||
| o Nodes provision routing table entries, for the destinations | o Nodes provision routing table entries, for the destinations | |||
| specified by the DIO message, via their DODAG parents in the DODAG | specified by the DIO message, via their DODAG parents in the DODAG | |||
| Version. Nodes that decide to join a DODAG can provision one or | Version. Nodes that decide to join a DODAG can provision one or | |||
| more DODAG parents as the next-hop for the default route and a | more DODAG parents as the next-hop for the default route and a | |||
| number of other external routes for the associated instance. | number of other external routes for the associated instance. | |||
| 3.3. Downward Routes and Destination Advertisement | 3.3. Downward Routes and Destination Advertisement | |||
| RPL uses Destination Advertisement Object (DAO) messages to establish | RPL uses Destination Advertisement Object (DAO) messages to establish | |||
| downward routes. DAO messages are an optional feature for | downward routes. DAO messages are an optional feature for | |||
| applications that require P2MP or P2P traffic. RPL supports two | applications that require P2MP or P2P traffic. | |||
| ***DAO message are optional. If I do not implement them, can I not | ||||
| send any packets downward? I'm not sure we should build protocols | ||||
| that only support one-way communication, and I suspect situations | ||||
| where this truly is sufficient are rare. Reasons relate to | ||||
| reliability, acknowledgements, destination address discovery, and | ||||
| so on. But maybe I'm missing something. | ||||
| RPL supports two | ||||
| modes of downward traffic: storing (fully stateful) or non-storing | modes of downward traffic: storing (fully stateful) or non-storing | |||
| (fully source routed). Any given RPL Instance is either storing or | (fully source routed). Any given RPL Instance is either storing or | |||
| non-storing. In both cases, P2P packets travel Up toward a DODAG | non-storing. In both cases, P2P packets travel Up toward a DODAG | |||
| Root then Down to the final destination (unless the destination is on | Root then Down to the final destination (unless the destination is on | |||
| the upward route). In the non-storing case the packet will travel | the upward route). In the non-storing case the packet will travel | |||
| all the way to a DODAG root before traveling Down. In the storing | all the way to a DODAG root before traveling Down. In the storing | |||
| case the packet may be directed Down towards the destination by a | case the packet may be directed Down towards the destination by a | |||
| common ancestor of the source and the destination prior to reaching a | common ancestor of the source and the destination prior to reaching a | |||
| DODAG Root. | DODAG Root. | |||
| End of changes. 11 change blocks. | ||||
| 21 lines changed or deleted | 92 lines changed or added | |||
This html diff was produced by rfcdiff 1.32. The latest version is available from http://www.levkowetz.com/ietf/tools/rfcdiff/  | ||||