ROLL | P. Thubert, Ed. |
Internet-Draft | Cisco Systems |
Intended status: Standards Track | May 05, 2011 |
Expires: November 06, 2011 |
RPL Objective Function 0
draft-ietf-roll-of0-11
The Routing Protocol for Low Power and Lossy Networks (RPL) defines a generic Distance Vector protocol that is adapted to such networks. RPL requires a specific Objective Function to establish a desired routing topology. This document specifies a basic Objective Function that relies only on RPL's basic Protocol Data Units; it does not use extensions such as RPL metric containers.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on November 06, 2011.
Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
The Routing Protocol for Low Power and Lossy Networks [I-D.ietf-roll-rpl] was designed as a generic core that is agnostic to metrics and that is adapted to a given problem using Objective Functions (OF). This separation of Objective Functions from the core protocol specification allows RPL to adapt to meet the different optimization criteria required by the wide range of use cases.
RPL forms Destination Oriented Directed Acyclic Graphs (DODAGs) within instances of the protocol. Each instance is associated with a specialized Objective Function. A DODAG is periodically reconstructed in a new Version to enable a global reoptimization of the graph.
An Objective Function selects the DODAG Version that a device joins within an instance, and a number of neighbor routers within that DODAG Version as parents or feasible successors. The OF generates the Rank of the device, that represents an abstract distance to the root within the DODAG. In turn, the Rank is used by the generic RPL core to enable a degree of loop avoidance and verify forward progression towards a destination, as specified in [I-D.ietf-roll-rpl].
The Objective Function 0 (OF0) corresponds to the Objective Code Point 0 (OCP0). OF0 only requires the information in the RPL DIO base container, such as Rank and the DODAGPreference field that describes an administrative preference [I-D.ietf-roll-rpl]. The Rank of a node is obtained by adding a normalized scalar, rank_increase, to the Rank of a selected preferred parent. OF0 uses a unit MinHopRankIncrease of rank_increase of 0x100 so that Rank value can be stored in one octet. This allows up to at least 28 hops even when default settings are used and each hop has the worst rank_increase of 9.
Since there is no default OF or metric container in the RPL main specification, it might happen that, unless two given implementations follow the same guidance for a specific problem or environment, those implementations will not support a common OF with which they could interoperate. OF0 is designed to be common to all implementations that are not specifically designed to apply to a given case for which further guidance is provided. This is why it is very abstract as to how the link properties are transformed into a rank_increase and leaves that responsibility to implementation; rather, OF0 enforces normalized values for the rank_increase of a normal link and its acceptable range, as opposed to formulating the details of its computation. This is also why OF0 ignores metric containers.
The terminology used in this document is consistent with and incorporates that described in `Terminology in Low power And Lossy Networks' [I-D.ietf-roll-terminology] and [I-D.ietf-roll-rpl].
The term feasible successor is used to refer to a neighbor that can possibly be used as a next-hop for upwards traffic following the loop avoidance and forwarding rules that the nodes implements and that are defined outside of this specification, in particular in the RPL specification.
The core RPL specification describes constraints on how nodes select potential parents, called a parent set, from their neighbors. All parents are feasible successors for upgoing traffic (towards the root). Additionally, RPL allows the use of parents in a subsequent Version of a same DODAG as feasible successors, in which case this node acts as a leaf in the subsequent DODAG Version. Further specifications might extend the set of feasible successors, for instance to nodes of a same Rank, aka siblings.
The Goal of the OF0 is for a node to join a DODAG Version that offers connectivity to a specific set of nodes or to a larger routing infrastructure. For the purpose of OF0, Grounded thus means that the root provides such connectivity. How that connectivity is asserted and maintained is out of scope.
Objective Function 0 is designed to find the nearest Grounded root. This can be achieved if the Rank of a node represents closely its distance to the root. This need is balanced with the other need of maintaining some path diversity. In the absence of a Grounded root, LLN inner connectivity is still desirable and floating DAGs will form, rooted at the nodes with the highest administrative preference.
OF0 selects a preferred parent and a backup feasible successor if one is available. All the upward traffic is normally routed via the preferred parent. When the link conditions do not let an upward packet through the preferred parent, the packet is passed to the backup feasible successor.
OF0 assigns a step_of_rank to each link to another node that it monitors. The exact method for computing the step_of_rank is implementation-dependent.
One trivial OF0 implementation might compute the step_of_rank from as a classical administrative cost that is assigned to the link. Using a metric similar to hop count implies that the OF0 implementation only considers neighbors with good enough connectivity, for instance neighbors that are reachable over an Ethernet link, or a WIFI link in infrastructure mode.
In most wireless networks, a Rank that is analogous to an unweighted hop count favors paths with long distance links and poor connectivity properties. Other link properties such as the expected transmission count metric (ETX) [DeCouto03] should be used instead to compute the step_of_rank. For instance, the Minimum Rank Objective Function with Hysteresis [I-D.ietf-roll-minrank-hysteresis-of] provides guidance on how link cost can be computed and on how hysteresis can improve Rank stability.
An implementation MAY allow to stretch the step_of_rank with a stretch_of_rank up to no more than MAXIMUM_RANK_STRETCH in order to enable the selection of a feasible successor and maintain path diversity. The use of a stretch_of_rank augments the apparent distance from the node to the root and distorts the DODAG; it should be used with care so as to avoid instabilities due to greedy behaviours.
The step_of_rank is expressed in units of MINIMUM_STEP_OF_RANK. As a result, the least significant octet in the RPL Rank is not used. The default step_of_rank is DEFAULT_STEP_OF_RANK for each hop. An implementation MUST maintain the stretched step_of_rank between MINIMUM_STEP_OF_RANK and MAXIMUM_STEP_OF_RANK, which allows to reflect a large variation of link quality.
The gap between MINIMUM_STEP_OF_RANK and MAXIMUM_RANK_STRETCH may not be sufficient in every case to strongly distinguish links of different types or categories in order to favor, say, powered over battery-operated or wired over wireless, within a same DAG.
An implementation SHOULD allow a configurable factor called Rank-factor and to apply the factor on all links and peers.
An implementation MAY recognizes sub-categories of peers and links, such as different MAC types, in which case it SHOULD be able to configure a more specific Rank-factor to those categories. The Rank-factor SHOULD be set between MINIMUM_RANK_FACTOR and MAXIMUM_RANK_FACTOR.
The step_of_rank Sp that is computed for that link is multiplied by the Rank-factor Rf and then possibly stretched by a stretch_of_rank Sr. The resulting rank_increase Ri is added to the Rank of preferred parent R(P) to obtain that of this node R(N):
R(N) = R(P) + Ri where Ri = (Rf*Sp + Sr) * MinHopRankIncrease
Optionally, the administrative preference of a root MAY be configured to supersede the goal to join a Grounded DODAG. In that case, nodes will associate to the root with the highest preference available, regardless of whether that root is Grounded or not. Compared to a deployment with a multitude of Grounded roots that would result in a same multitude of DODAGs, such a configuration may result in possibly less but larger DODAGs, as many as roots configured with the highest priority in the reachable vicinity.
As it scans all the candidate neighbors, OF0 performs in order the following checks and keeps the parent that is the best for the first criterion that makes a difference:
When selecting a backup feasible successor, the OF performs in order the following checks:
Objective Function 0 interacts with the core RPL in the following ways:
OF0 uses the following variables:
OF0 can use the following optional parameters:
OF0 fixes the following constants:
This specification requires the assignment of an OCP for OF0. The value of 0 is suggested.
Security Considerations for OCP/OF are to be developed in accordance with recommendations laid out in, for example, [I-D.tsao-roll-security-framework].
Most specific thanks to Philip Levis and Phoebus Chen for their help in finalizing this document.
Many thanks also to Tim Winter, JP Vasseur, Julien Abeille, Mathilde Durvy, Teco Boot, Navneet Agarwal and Henning Rogge for in-depth review and first hand implementer's feedback.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[I-D.ietf-roll-rpl] | Winter, T, Thubert, P, Brandt, A, Clausen, T, Hui, J, Kelsey, R, Levis, P, Pister, K, Struik, R and J Vasseur, "RPL: IPv6 Routing Protocol for Low power and Lossy Networks", Internet-Draft draft-ietf-roll-rpl-19, March 2011. |
[I-D.ietf-roll-terminology] | Vasseur, J, "Terminology in Low power And Lossy Networks", Internet-Draft draft-ietf-roll-terminology-06, September 2011. |
[I-D.ietf-roll-routing-metrics] | Vasseur, J, Kim, M, Pister, K, Dejean, N and D Barthel, "Routing Metrics used for Path Calculation in Low Power and Lossy Networks", Internet-Draft draft-ietf-roll-routing-metrics-19, March 2011. |
[I-D.tsao-roll-security-framework] | Tsao, T, Alexander, R, Daza, V and A Lozano, "A Security Framework for Routing over Low Power and Lossy Networks", Internet-Draft draft-tsao-roll-security-framework-02, March 2010. |
[I-D.ietf-roll-minrank-hysteresis-of] | Gnawali, O and P Levis, "The Minimum Rank Objective Function with Hysteresis", Internet-Draft draft-ietf-roll-minrank-hysteresis-of-04, May 2011. |
[DeCouto03] | De Couto, , Aguayo, , Bicket, and Morris, "A High-Throughput Path Metric for Multi-Hop Wireless Routing ", MobiCom '03 The 9th ACM International Conference on Mobile Computing and Networking, San Diego, California,, 2003. |