Contents
RPL is the IPv6 Routing Protocol for LLN (Low-Power and Lossy Networks) as defined in RFC6550. The Routing Protocol for Low Power and Lossy Networks feature implements RPL on Cisco IOS software.
Your software release may not support all the features documented in this module. For the latest caveats and feature information, see Bug Search Tool and the release notes for your platform and software release. To find information about the features documented in this module, and to see a list of the releases in which each feature is supported, see the feature information table.
Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
Information About Routing Protocol for Low Power and Lossy Networks
Low power and Lossy Networks (LLNs) are a class of network in which both the routers and their interconnect are constrained: LLN routers typically operate with constraints on (any subset of) processing power, memory and energy (battery), and their interconnects are characterized by (any subset of) high loss rates, low data rates and instability. LLNs are comprised of anything from a few dozen and up to thousands of LLN routers, and support point-to-point traffic (between devices inside the LLN), point-to-multipoint traffic (from a central control point to a subset of devices inside the LLN) and multipoint-to-point traffic (from devices inside the LLN towards a central control point).
The Routing Protocol for Low Power and Lossy Networks feature specifies the IPv6 Routing Protocol for LLNs (RPL), thereby providing a mechanism whereby multipoint-to-point traffic from devices inside the LLN towards a central control point, and point-to-multipoint traffic from the central control point to the devices inside the LLN, is supported. Point-to-point traffic is also supported.
RPL makes use of a wide set of routing attributes that can be used either as constraints or metrics as against IGPs such as IS-IS or OSPF. When used as a constraint, the routing attribute allows pruning the links and nodes from candidate paths that do not respect the constraint; when used as a metric the routing attribute is used to determine the least cost path. Additionally, routing metrics can either be used as aggregated (e.g. path cost equal to the sum of the link metrics) or recorded in which case metrics of all links along the path are recorded and announced along with the path by RPL. Recorded metrics are particularly useful when aggregating metrics implies loosing relevant information for path selection.
Metrics can also be local (exchanged between two neighbors) or global (propagated along the path as the path cost).RPL uses dynamic metrics, which implies the use of low pass filters to preserve routing stability, avoid temporary loops and bind control traffic by limiting the number of advertised RPL messages due to link metrics updates and consequently path cost that may have a global impact by recomputing the routing topology.
Note | Most RPL routing attributes could be used as either metric or constraint. For example, bandwidth can be used to prune link without sufficient capacity or as a metric to find the least cost pathn. |
The Routing Protocol for Low Power and Lossy Networks feature supports aggregated metrics only and the following subset of routing metrics or constraints:
ETX is defined as the Expected Transmission Count (ETX) metric. ETX is the number of transmissions a node expects to make to a destination in order to successfully deliver a packet. The formula for calculating ETX is
ETX= 1 / (Df * Dr)
where Df is the measured probability that a packet is received by the neighbor and Dr is the measured probability that the acknowledgment packet is successfully received.
ETX can be configured at root or node using the ocp etx command. ETX are exclusively based on IPv6 probing when configured via this command.
The aim of the probing process is to compute the ETX for all links for which the ETX is required. The probing process is also used to dynamically compute the link latency when latency is used.
Note | The probing process is also used to update the link ETX and link latency values. |
IPv6 probes are always DAG agnostic (one probe per neighbor regardless of the number of DAG instances using the evaluated link).
The latency of LLN MAC link layers can vary corresponding to the change in consumption. Some LLN MAC link layers allow the latency to be adjusted globally on the subnet, or on a link-by-link basis. Some link layers insist that the latency be fixed for a given link, but allow the latency to vary. lhe Latency object may be used as a constraint or a path metric. For example, an Objective Function may indicate that the latency must not exceed a specific value. The Routing Protocol for Low power and Lossy Networks (RPL) feature uses the IPv6 ping infrastructure to compute latency. The IPv6 ping provides the duration (in milliseconds) between a echo-request sent and a echo-reply received. Use the probe command to configure latency.
The Objective Function (OF) is used by RPL to specify how the routing metric and constraints should be used to reach specific objectives. For example, the OF may specify that the objective is to find the constrained shortest path where the constraint is related to the node power mode and the metric is the ETX.
Each Destination Oriented Directed Acyclic Graph (DODAG) is identified by:
The DODAGID will be specified as part of the RPL root template definition via the dag-id command.
RPL DIO messages are sent for DODAG discovery and maintenance. DIO are multicasted according to trickle timers. DIO messages are used for DODAG discovery and maintenance.
Use the dao solicit-interval command to configure the frequency (in minutes) at which the root can solicit destination advertisement messages from the downstream nodes. The mode of operation setting is specified as part of instance ID definition. You can also increment the version number using the version-number version keyword argument pair in the rpl command.
Control plane traffic load is a concern in LLNs where bandwidth and energy are often scarce. Periodic emission of control plane messages is not possible and the use of keepalive for routing adjacency maintenance is not a suitable option. A different approach in RPL consists of controlling the control plane packets frequency update by using adaptive mechanisms controlled by the use of dynamic timers, referred to as trickle timers. DIO messages are “multicasted” on expiry of trickle timers thereby the DIO messages are sent more frequently when a DAG consistency issue is detected to improve the convergence time. As DAG stabilizes, messages are sent less frequently.
The Routing Protocol for Low power and Lossy Networks (RPL) feature supports the Objective functions (OF)—OF0, OF1 (ETX) and OF1 (latency). These functions constitute a large set to cover a wide spectrum of uses in Smart Cities. OF0 is used where the objective is to build a DODAG that simply provides connectivity, while OF1 is used to build a reliable network and optimized DODAGs without delay requirements, for example, smart metering and lighting management, and traffic management in a smart city. Each OF specifies a different parent selection criteria and strictly follow the rules for parent selection as specified in the RFC for loop avoidance.
Use the step-rank in the RPL template definition to configure the objective function.
RPL supports redistribution of routes into a limited set (OSPF, IS-IS, BGP) of routing protocols. The route redistribution happens at the root, which will redistribute routes into other routing protocol that are directly connected as well as routes learnt from DAO messages. Routes learnt from other routing protocols will not be redistributed into the RPL network domain. The root updates the application VRFs with the routing update information. Use the redistribute rpl command to specify redistribution in an RPL network.
Management is critical in all networking solution but particularly in environments comprising a large number of networking devices. The DODAG root (a Cisco router) plays a central role in the DODAG management. The Routing Protocol for Low power and Lossy Networks (RPL) feature provides an extensive set of configuration options via CLI (general and service internal) to tune the behavior in the field.
The unique characteristics of LLNs provide several design choices for RPL. RPL routing performance is dependent on the routing environments. If convergence time is of utmost importance for a routing protocol operating in a “classic” IP networks, the prime performance objective in LLNs is scalability and stability, which are the main challenges in LLNs where links and nodes are potentially highly unstable. Another objective is to bound the control traffic to save bandwidth and energy—the control traffic is negligible compared to the traffic that is considerably lower in “typical” IP networks. The following metrics can be used to evaluate the performances of a routing protocol:
RPL is designed to support Home, Building, Smart Grid and Smart Cities networks. Thus, the routing protocol must support from a few dozens to a few thousands of nodes in a single LLN.
RPL IOS has been primarily designed for Smart Grid networks (substation automation, smart metering) and S+CC environments and could also be applied to home and building automation and even in Datacenters.
The objective of RPL is to support a network of 5,000 nodes. In comparison with link state protocols, RPL has been designed to ensure an increase of the number of nodes in the network has a limited impact on the overall scalability of the protocol. The protocol is topology agnostic and does not impact scalability nor the stability (lossiness) of the links.
RPL uses “trickle” timers whereby the control plane overhead varies with the level of stability of the network. When changes occurs in the networks, routing updates are more frequent with all nodes sending more regular updates while using some level of randomness to avoid collisions (especially critical for low power wireless networks). This allows for reducing the control plane and save bandwidth and energy in the network.
RPL is a distance vector protocol and supports a wide set of routing link and node metrics. RPL supports mono metric optimization—the best path is considered as the shortest (constrained) path according to a single metric (multimetric optimization is not supported). The objective is to not trade path optimality for network stability. A small path cost increase is usually smoothed out for the benefit of limiting the control plane traffic.
A number of techniques have been developed over the past few years to improve routing protocol convergence time. Fast recovery techniques relying on either protection or restoration have been designed to achieve convergence between a few seconds and a few hundreds of milliseconds. RPL has been designed to support two repair mechanisms: Global Repair and local repair.
Convergence in RPL networks is controlled by several factors, such as trickle timers, local repair parameters and Neighbor Unreachability Detection (NUD). Depending on the deployment requirements, the DODAG can be built with new values to achieve faster or slower convergence. In the case of NUD, the convergence will depend on the frequency of data traffic in the DODAG.
For deployments where applications use multicast traffic, it may be required to fine-tune RPL parameters (for example trickle-timer configuration) for that specific DODAG to achieve faster convergence to avoid sending redundant multicast traffic to stale node.
RPL supports an object-TLV based approach allowing for the flexible addition of functionalities in future such as new routing metrics, constraints and objective functions that could be defined in the future. Additionally, due to its the “root”-based nature where the DAG root (a Cisco router as opposed to a constraint sensor device), sophisticated functions could be added to the DAG root with limited or negligble impact on more constrained routers in the network.
The notion of local confidence in RPL is used to determine when a link with another RPL router or leaf is valid and usable to build a router adjacency and also to declare that an existing link used by RPL should no longer be used. In comparison with other routing protocols such decision is rather simple and determined by the link layer. Lossy links have a tendency to flap and transient states should not trigger routing adjacency changes at the risk of routing instability, control traffic churn, etc. Although the notion is fairly generic and not standardized the local confidence is built on a number of inputs.
In RPL, the local confidence is exclusively driven by the use of NUD, IPv6 probing (when enabled) for OF0 augmented by the smoothed calculation of the link ETX with OF1 that does smooth out the transient phenomenon of a low pass filter.
RPL configuration in Cisco IOS software is simple. The Routing Protocol for Low power and Lossy Networks (RPL) feature provides a configuration template to define the behavior. Use this template to configure and fine tune the parameters as needed. Most of the parameters are available with default values and states and hence will be optional unless there is a need to override the default values or behavior. After defining the template, the template can used to enable the protocol on a set of interfaces.
The template has two parts—to specify a name, associate a node behavior to the template and to define a behavior for the template via commands in the RPL template. The node behavior can be a root or a node. A root hosts the DODAG while a node participates in the DODAG either as a leaf node or router. Use the ipv6 router rpl command to define a template.
After the template has been defined, use the following commands to configure the RPL parameters:
How to Configure Routing Protocol for Low Power and Lossy Networks
Command or Action | Purpose | |
---|---|---|
Step 1 | enable
Example: Router> enable |
Enables privileged EXEC mode.
|
Step 2 | configure
terminal
Example: Router(config)# configure terminal |
Enters global configuration mode. |
Step 3 | ipv6
enable
Example: Router# ipv6 enable |
Automatically configure an IPv6 link-local address on the interface, and enable the interface for IPv6 processing. |
Step 4 | exit
Example: Router# exit |
Exits global configuration mode and returns to privileged EXEC mode. |
Proceed to Enabling RPL section to enable Routing Protocol for Low Power and Lossy Networks.
Proceed to Enabling RPL task to enable Routing Protocol for Low Power and Lossy Networks.
Command or Action | Purpose | |
---|---|---|
Step 1 | enable
Example: Router> enable |
Enables privileged EXEC mode.
|
Step 2 | configure
terminal
Example: Router# configure terminal |
Enters global configuration mode. |
Step 3 | ipv6
router
rpl
rpl
name
Example: Router(config)# ipv6 router rpl rpl_ip1 |
Specifies the RPL and enters RPL configuration mode. |
Step 4 | rpl
<instance-id>
version-number
number
Example: |
Specifies the RPL instance id and version number. |
Step 5 | redistribute
connected
Example: Router(config-rtr)# redistribute connected |
Starts redistribution of IPv6 connected prefixes in the VRF. The prefixes are displayed in DAO. |
Step 6 | rpl
attribute-names
names
Example: Router(config-rtr)# rpl attribute-names red |
Associates interface with specific link colors. |
Command or Action | Purpose | |
---|---|---|
Step 1 | enable
Example: Router> enable |
Enables privileged EXEC mode.
|
Step 2 | configure
terminal
Example: Router# configure terminal |
Enters global configuration mode. |
Step 3 | interface type
slot/subslot/port
[.
subinterface-number]
Example: Router(config)# interface gigabitEthernet0/0/0 |
Specifies the interface information and enters interface configuration mode. |
Step 4 | rpl template-name
enable
Example: Router(config-if)# rpl rpl_ipl enable |
Specifies the RPL template name and enables RPL. |
Configuration Examples for Routing Protocol for Low Power and Lossy Networks
Standard/RFC |
Title |
---|---|
RFC6550 |
RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks |
Description |
Link |
---|---|
The Cisco Support and Documentation website provides online resources to download documentation, software, and tools. Use these resources to install and configure the software and to troubleshoot and resolve technical issues with Cisco products and technologies. Access to most tools on the Cisco Support and Documentation website requires a Cisco.com user ID and password. |
The following table provides release information about the feature or features described in this module. This table lists only the software release that introduced support for a given feature in a given software release train. Unless noted otherwise, subsequent releases of that software release train also support that feature.
Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to . An account on Cisco.com is not required.
Feature Name |
Releases |
Feature Information |
---|---|---|
Routing Protocol for Low power and Lossy Networks (RPL) |
15.5(3)M |
RPL is the IPv6 Routing Protocol for LLN (Low-Power and Lossy Networks) as defined in RFC6550. The Routing Protocol for Low Power and Lossy Networks feature implements RPL on Cisco IOS software. The following commands were introduced or modified: dag id, dag id, dao, debug rpl, definition, definition, fast-connect, fast-connect, floating,global-repair interval, instance id, ipv6 enable, ipv6 router rpl, load-balance,ocp, preference, probe, rank maximum-increase, redistribute connected, route-tag, rpl attribute-names, rpl enable, send-dis, show rpl dao-prefixes, show rpl interfaces, show rpl statistics, show rpl, starting-version, step-rank, trickle-timer. |
DAG—Directed Acyclic Graph. A directed graph having the property that all edges are oriented in such a way that no cycles exist. All edges are contained in paths oriented toward and terminating at one or more root nodes.
DAG root—A DAG root is a node within the DAG that has no outgoing edges. Because the graph is acyclic, by definition all DAGs must have at least one DAG root and all paths terminate at a DAG root.
DODAG—Destination Oriented DAG. A DAG rooted at a single destination, i.e. at a single DAG root (the DODAG root) with no outgoing edges.
DODAGID—The identifier of a DODAG root. The DODAGID must be unique within the scope of a RPL Instance in the LLN.
DODAG Iteration—A specific version number iteration (version) of a DODAG with a given DODAGID.
DODAG parent—A parent of a node within a DODAG is one of the immediate successors of the node on a path towards the DODAG root. The DODAG parent of a node will have a lower rank than the node itself.
DODAG root—A DODAG root is the DAG root of a DODAG.
DODAG sibling—A sibling of a node within a DODAG is defined in this specification to be any neighboring node which is located at the same rank within a DODAG. The siblings defined in this manner do not necessarily share a common DODAG parent.
DODAGVersionNumber—A sequential counter that is incremented by the root to form a new Version of a DODAG. A DODAG Version is identified uniquely by the (RPLInstanceID, DODAGID, DODAGVersionNumber) tuple.
Down—The direction from DODAG roots towards leaf nodes, going against the orientation of the edges within the DODAG.
Goal—A host or set of hosts that satisfy a particular application objective / OF. Whether or not a DODAG can provide connectivity to a goal is a property of the DODAG. For example, a goal might be a host serving as a data collection point, or a gateway providing connectivity to an external infrastructure.
Grounded—A DODAG is said to be grounded, when the root can reach the Goal of the objective function.
Floating—A DODAG is floating if it is not Grounded. A floating DODAG is not expected to reach the Goal defined for the OF. As they form networks, LLN devices often mix the roles of 'host' and 'router' when compared to traditional IP networks. The host refers to an LLN device that can generate but does not forward RPL traffic, router refers to an LLN device that can forward as well as generate RPL traffic, and node refers to any RPL device, either a host or a router.
LBR—Low power and lossy network Border Router. A device that connects the Low power and Lossy Network to another routing domain such as a Local Area Network (LAN), Wide Area Network (WAN) or the Internet where a possibly different routing protocol is in operation. In some cases, in addition to acting as a routing device, the LBR may also be a host performing functions such as data collector or aggregator.
LLN—Low power and Lossy Networks. These networks are typically composed of many embedded devices with limited power, memory, and processing resources interconnected by a variety of links, such as IEEE 802.15.4 or Low Power WiFi. There is a wide scope of application areas for LLNs, including industrial monitoring, building automation (HVAC, lighting, access control, fire), connected home, healthcare, environmental monitoring, urban sensor networks, energy management, assets tracking and refrigeration.
OCP—Objective Code Point. An identifier, used to indicate which Objective Function is in use for forming a DODAG. The Objective Code Point is further described in METRIC.
OF—Objective Function. Defines which routing metrics, optimization objectives, and related functions are in use in a DODAG. The Objective Function is further described in METRIC.
Rank—The rank of a node in a DAG identifies the nodes position with respect to a DODAG root. The farther away a node is from a DODAG root, the higher is the rank of that node. The rank of a node may be a simple topological distance, or may more commonly be calculated as a function of other properties as described later.
RPL Instance—A set of possibly multiple DODAGs. A network may have more than one RPL Instance, and a RPL node can participate in multiple RPL Instances. Each RPL Instance operates independently of other RPL Instances. This document describes operation within a single RPL Instance. In RPL, a node can belong to at most one DODAG per RPL Instance. The tuple (RPLInstanceID, DODAGID) uniquely identifies a DODAG.
RPLInstanceID—Unique identifier of a RPL Instance.
Sub-DODAG—The set of other nodes in the DODAG that might use a path towards the DODAG root that contains that node. Nodes in the sub-DODAG of a node have a greater rank than that node itself (although not all nodes of greater rank are necessarily in the sub-DODAG of that node).
Up—The direction from leaf nodes towards DODAG roots, following the orientation of the edges within the DODAG.
Copyright © 2015, Cisco Systems, Inc. All rights reserved.