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/ |