Internet Engineering Task Force M. Goyal, Ed. Internet-Draft University of Wisconsin Milwaukee Intended status: Informational P2P Team Expires: October 30, 2010 April 28, 2010 Mechanisms to Support Point-to-Point Routing in Low Power and Lossy Networks draft-dt-roll-p2p-rpl-00 Abstract This draft presents mechanisms to determine the end-to-end cost of an existing route and to discover/establish "on demand" one or more routes between two nodes in a low power and lossy network. This draft also proposes functionality that would enable RPL to provide these P2P mechanisms. Status of this Memo This Internet-Draft is submitted to IETF 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 October 30, 2010. Copyright Notice Copyright (c) 2010 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 Goyal & Team Expires October 30, 2010 [Page 1] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Targeted Use Cases . . . . . . . . . . . . . . . . . . . . 4 2. Required Functionality . . . . . . . . . . . . . . . . . . . . 5 3. High Level Description of Mechanisms . . . . . . . . . . . . . 5 3.1. Mechanisms to determine the end-to-end cost of an existing route . . . . . . . . . . . . . . . . . . . . . . 5 3.1.1. Node A determining the end-to-end cost of an existing route from itself to a remote node B . . . . 5 3.1.2. Node A determining the end-to-end cost of an existing route from a remote node B to itself . . . . 6 3.2. Mechanism to discover/establish a P2P route between two nodes . . . . . . . . . . . . . . . . . . . . . . . . 7 4. RPL Mechanisms Required . . . . . . . . . . . . . . . . . . . 8 4.1. Message Types . . . . . . . . . . . . . . . . . . . . . . 8 4.2. Objective Function . . . . . . . . . . . . . . . . . . . . 9 4.3. Route Stack . . . . . . . . . . . . . . . . . . . . . . . 9 4.4. Source Route . . . . . . . . . . . . . . . . . . . . . . . 9 4.5. Across-DAG Routing State . . . . . . . . . . . . . . . . . 9 4.6. Transport of Routing Metrics . . . . . . . . . . . . . . . 10 4.7. Propagation of Discovery Messages . . . . . . . . . . . . 10 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 6. Authors and Contributors . . . . . . . . . . . . . . . . . . . 12 7. Informative References . . . . . . . . . . . . . . . . . . . . 13 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 13 Goyal & Team Expires October 30, 2010 [Page 2] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 1. Introduction RPL-07 [I-D.ietf-roll-rpl] provides multipoint-to-point (MP2P) routes from nodes in a low power and lossy network (LLN) to a sink node by organizing the nodes along a Directed Acyclic Graph (DAG) rooted at the sink. The DAG root initiates the DAG formation by originating a Destination Information Object (DIO) message. The DIO message is sent via link-local multicast and carries information about the originating node's position (the "rank") in the DAG. On receiving DIO messages sent by its neighbors, a node determines its own "rank" in the DAG and originates its own DIO message. RPL-07 enables point-to-multipoint (P2MP) routing from a node to its descendants in the DAG by allowing a node to send a Destination Advertisement Object (DAO) upwards along the DAG. The DAO carries the aggregated information regarding the descendants (and other local prefixes) reachable through the originating node. RPL-07 also provides mechanisms for point-to-point (P2P) routing between any two nodes in the DAG. If the destination is within the source's "range", the source may directly send packets to the destination. Otherwise, if the destination is a DAG descendant and the source maintains "downwards" routing state about this descendant, it can forward the packet along this route. Otherwise, the source sends the packet to a DAG parent, which then applies the same set of rules to forward the packet further. Thus, a packet travels up the DAG until it reaches a node that knows of the downwards route to the destination and then it travels down the DAG towards its destination. A node may or may not maintain routing state about a descendant depending on whether its immediate children send it such information in their DAOs and whether the node can store this information. Thus, in the best case scenario, the "upwards" segment of the P2P route between a source and a destination ends at the first common ancestor of the source and the destination. In the worst case, the "upwards" segment would extend all the way to the DAG's root. If the destination did not originate a DAO, the packet will travel all the way to the DAG's root, where it will be dropped. The P2P routing functionality available in RPL-07 suffers from several shortcomings [I-D.brandt-roll-rpl-applicability-home-building]: o The need to maintain routes "proactively", i.e. every possible destination in the DAG must originate a DAO. o The constraint to route only along a DAG leading to significantly suboptimal P2P routes and traffic congestion near the DAG root. Goyal & Team Expires October 30, 2010 [Page 3] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 These shortcomings mean that RPL-07 does not meet the requirements of many LLN applications, including those in home and commercial building domains [RFC5826] [I-D.ietf-roll-building-routing-reqs]. Such applications require a mechanism for "reactive route discovery" and the ability to route "across DAGs". In other words, a node should be able to discover or establish "on demand" one or more "good enough" routes in either direction to a destination with no constraints regarding the existing DAG-membership of the links that such routes may use. A complementary functionality, necessary to help decide whether to initiate a route discovery, is a mechanism to determine the end-to-end cost of an existing route, where the cost may depend on one or more routing metrics in a particular manner. Accordingly, this draft presents a high level description of the two mechanisms mentioned above: o A mechanism to determine the end-to-end cost of an existing route; and o A mechanism to discover/establish one or more "good enough" routes between any two nodes in a low power and lossy network. This draft also proposes the functionality that future versions of RPL should support in order to implement these mechanisms. 1.1. Targeted Use Cases The mechanisms described in this document are intended to be employed as complementary to RPL in specific scenarios that need point-to- point (P2P) routes between arbitrary nodes. One target use case, common in a home environment, involves a remote control (or a motion sensor) that suddenly needs to communicate with a lamp module, whose network address it knows apriori. In this case, the source of data (the remote control or the motion sensor) must be able to discover a route to the destination (the lamp module) "on demand". Another target use case, common in a large commercial building environment, involves a large LLN deployment where P2P communication along a particular DAG among hundreds (or thousands) of nodes creates severe traffic congestion near that DAG's root, and thus routes across this DAG are desirable. Targeted use cases also include scenarios where energy or delay constraints are not satisfied by the P2P routes along a DAG because they involve traversing many more intermediate nodes than necessary to reach the destination. Goyal & Team Expires October 30, 2010 [Page 4] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 2. Required Functionality o A mechanism for a node to determine the end-to-end cost of an existing route from itself to another node or from another node to itself; * This route may be a source-route (i.e., en-route nodes, other than the source, do not maintain state about the route) or a loose source-route (i.e., the source and some en-route nodes maintain state about the route) or an hop-by-hop one (i.e., all en-route nodes maintain state about the next hop to the destination); * This route may be the one along a DAG or the one established using the mechanisms specified in this draft; * A node may use the cost learned using this mechanism to decide whether to initiate a new route discovery. o A mechanism for a node to discover/establish one or more "good enough" routes from itself to another node or from another node to itself or in both directions; * Such routes may be source-routes or loose source-routes or hop- by-hop ones. 3. High Level Description of Mechanisms 3.1. Mechanisms to determine the end-to-end cost of an existing route 3.1.1. Node A determining the end-to-end cost of an existing route from itself to a remote node B Node A sends a "Measurement Request" message towards node B. Node A indicates in the message: o The nature of the route the message must travel on (e.g. source- route specified in the message or a loose source-route or hop-by- hop along a specific DAG or along an "across DAG" route established using the mechanisms specified in this draft); o The nature of the routing cost (e.g. the routing metrics that determine the routing cost and how these metrics combine to yield the routing cost); o The method for accumulating the end-to-end cost, specifically whether: Goyal & Team Expires October 30, 2010 [Page 5] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 * An intermediate node should update the end-to-end cost so far before forwarding the message further; or * An intermediate node should append the local cost to the message so that the destination (node B) can aggregate the local costs into the end-to-end cost. o If the message should accumulate the reverse source-route from node B to node A. The Measurement Request message accumulates the end-to-end routing cost or the individual local costs (and the reverse route if desired) as it travels to node B. On receiving a Measurement Request message, Node B calculates the end-to-end cost if necessary and sends this cost back to node A via a "Measurement Reply" message. This Measurement Reply message may travel towards node A using any existing route. For example, it may be sent to node A along a DAG or along the reverse route accumulated by the Measurement Request message. 3.1.2. Node A determining the end-to-end cost of an existing route from a remote node B to itself Node A sends a Measurement Request message to node B. This message can travel towards node B using any existing route. For example, it may be sent to node B along a DAG or along a source route. Node A indicates in the message: o The nature of the route the Measurement Reply message, to be sent by node B in response to this message, must travel on (e.g. (loose) source route specified by node B or hop-by-hop along a specific DAG or along an "across DAG" route established using the mechanisms specified in this draft); o The nature of the routing cost; o The method for accumulating the end-to-end cost (each hop updating the end-to-end cost or appending its local cost to the message); On receiving the Measurement Request message, node B sends a Measurement Reply message towards node A. Node B specifies in the message the following information as indicated in the received Measurement Request message: o The (loose) source route to node A or the nature of the hop-by-hop route the message must travel on; Goyal & Team Expires October 30, 2010 [Page 6] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 o The nature of the routing cost; o The method for accumulating the end-to-end cost. The Measurement Reply message accumulates the end-to-end routing cost as it travels towards node A. Depending on the method used for accumulating the end-to-end cost, node A may need to calculate the end-to-end cost using the local costs contained in the message. 3.2. Mechanism to discover/establish a P2P route between two nodes Node A originates a "Discovery" message listing node B as the target. Node A also indicates in the message: o The nature of the routing cost; o The method for accumulating the end-to-end cost; o The criteria used to determine if a route is "good enough"; o The direction (forward: A to B; backward: B to A; or both) of the route being discovered; o The desired number of routes; o Whether the route is a source-route or a loose source-route or a hop-by-hop one; and o A limit on the "distance" the Discovery message may travel. The Discovery message propagates via link-local multicast with each receiving node making the decision regarding whether to forward the message further based on the "distance" (from node A) that this particular copy of the message has already traveled. Note that we do not require a receiving node to use the "good enough" criteria to make the forwarding decision. This is because the evaluation of the "good enough" criteria may be too complex for a constrained intermediate node to perform. The calculation of the "distance" that a copy of the Discovery message has already travelled should be simple enough for a constrained node to perform. A node capable of evaluating the "good enough" criteria may optionally decide not to forward a copy of the Discovery message further because the aggregated cost of the route so far does not meet the "good enough" criteria. The underlying mechanism being used to propagate the Discovery message may put further restrictions on its propagation. A node should not propagate the Discovery message further if hop-by-hop routes are desired and the node can not store state for this route. If loose source-routes are the objective of route discovery, a node Goyal & Team Expires October 30, 2010 [Page 7] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 may indicate in a Discovery message it forwards its ability to store state. As a copy of the Discovery message travels towards node B, it accumulates the relevant forward/backward costs as well as the route it takes. When node B receives a copy of the Discovery message, it determines whether the route traveled by the message meets the "good enough" criteria. For the first "n" good enough routes it discovers, where n is the number of routes requested by node A, node B does the following: o If node A had requested the discovery of a backwards (i.e. from B to A) source-route, node B simply caches the route. o Otherwise, node B sends out a "Discovery Reply" message to node A: * If node A had requested the discovery of a forward (from A to B) or bidirectional source-route, the Discovery Reply message carries such a route back to node A. This message can travel towards node A in any manner chosen by node B. For example, node B may source-route the message or send it towards A along a DAG. * If node A had requested a hop-by-hop route, the Discovery Reply message travels towards A using the source-route accumulated by the Discovery message. As this message travels towards A, it establishes appropriate forward/backward routing state in the en-route nodes. * If node A had requested a loose source-route, the Discovery Reply message travels towards A using the complete source-route accumulated by the Discovery message. On receiving this message, a node capable of storing state stores the source- route piece between itself and the previous storing node, prunes this piece from the source-route carried in the packet and forwards the message further towards A. A node incapable of storing state simply forwards the packet along the source-route it carries. 4. RPL Mechanisms Required 4.1. Message Types The proposed mechanisms define the following message types: o Measurement Request message Goyal & Team Expires October 30, 2010 [Page 8] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 o Measurement Reply message o Discovery message o Discovery Reply message Among the existing message types defined in RPL-07, the Destination Information Object (DIO) message can be used as the Discovery message as described in Section 4.7. RPL-07 requires further extension to include definitions for other message types described in this draft. 4.2. Objective Function The Measurement Request and Reply messages discussed earlier need to carry information regarding o The nature of the routing cost. The Discovery message needs to carry information regarding o The nature of the routing cost and o The criteria used to determine if a route is "good enough". This information can be conveyed via suitably defined objective functions. 4.3. Route Stack The Discovery message (and sometimes the Measurement Request message) needs to accumulate the route it travels on. These messages can use the Route Stack option, currently available for DAO messages, for this purpose. 4.4. Source Route All message types described in this draft, except the Discovery message, need the ability to travel along a complete or partial source-route. Any source-routing mechanism RPL defines in future should be sufficient for this purpose. 4.5. Across-DAG Routing State The routing state the nodes establish as a result of the mechanisms described in this draft should be annotated as being "across DAG" in nature. In order to avoid loops, such routing state should not be mixed with DAG-specific routing state while making packet forwarding decisions. Goyal & Team Expires October 30, 2010 [Page 9] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 It should be possible to associate the "across DAG" routing state with the destination of the route and the objective function giving the measured cost of the route. It should be possible for a packet to indicate its desire to be routed along an "across DAG" path satisfying a particular objective function. 4.6. Transport of Routing Metrics The Metric Container option defined in RPL-07 can be used to carry both the aggregated end-to-end and the local values for the routing metrics being used to define the routing cost. Additional metric objects may need to be defined to carry the aggregated end-to-end routing cost and a source-route unmodified from one node to another; 4.7. Propagation of Discovery Messages RPL-07 uses DIO message propagation to build a DAG. The DIO message travels via link-local multicast. Each node joining the DAG determines a rank for itself and ignores the subsequent DIO messages received from lower (higher in numerical value) ranked neighbors. Thus, the DIO messages propagate outwards rather than return inwards towards the DAG root. The DIO message generation at a node is further controlled by a trickle timer that allows a node to avoid generating unnecessary messages. The link-local multicast based propagation, trickle- controlled generation and the rank-based poisoning of messages traveling in the wrong direction (towards the DAG root) provide powerful incentives to use the DIO message as the Discovery message and propagate the DIO/Discovery message by creating a "temporary" DAG. To facilitate the use of a DIO as the Discovery message, we suggest the creation of a new "Route Discovery" option that each DIO/ Discovery message must carry. The Route Discovery option should include fields to specify: o A target destination for route discovery; o The maximum rank allowed in the temporary DAG advertised by the DIO/Discovery message; o The minimum "Life Time" of the temporary DAG, i.e., the minimum duration a node must maintain membership in the temporary DAG; o The direction of the route to be discovered and the number of routes desired; Goyal & Team Expires October 30, 2010 [Page 10] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 o Whether the route is a source-route or a loose source-route or hop-by-hop. The upper limit on the DAG rank provides a control over how far the DIO/Discovery message may travel. A node should not join the temporary DAG advertised by a DIO/Discovery message at a rank higher than this limit. A node (say node A) can use such targeted and scoped DIO as the Discovery message to discover a route to node B in the following manner. Node A originates a DIO/Discovery message listing node B as the target (inside the Route Discovery option). This DIO/Discovery message advertises a temporary DAG to facilitate the DIO message propagation as well as an upper limit on the rank that a node may hold in this DAG. A node, incapable of storing state, should ignore a DIO/Discovery message searching for a hop-by-hop route. Otherwise, when a node first receives a DIO/Discovery message advertising a particular temporary DAG, it starts a trickle timer and does the following at the expiry of this timer: o The node calculates a rank for itself based on the DIO/Discovery messages it has received so far; o If the calculated rank is less than the upper limit allowed for this DAG, the node joins the DAG and generates a DIO/Discovery message advertising its rank in the DAG and including in it the Route Discovery option received from other DIO/Discovery messages. o The node restarts the trickle timer. Having selected a rank for itself in the temporary DAG, the node ignores any DIO/Discovery messages originated by nodes with lower (higher in numerical value) ranks, thereby poisoning the spread of DIO/Discovery messages in the wrong direction. The node continues to process the DIO/Discovery messages it receives from higher-ranked nodes possibly improving its own rank and re-originates its DIO/ Discovery message at the periodic expiry of the trickle timer if it has a better rank or costs to advertise than the ones reported in its previous DIO/Discovery message. A node may optionally restrict its origination of the DIO/Discovery message to a certain number of times. For example, a node may choose to generate its DIO/Discovery message just once - at the first expiry of the trickle timer. Thus, the DIO/Discovery message propagates as the nodes join the temporary DAG. In this manner, the DIO/Discovery message ultimately reaches node B, the target of route discovery. A node maintains its membership in the temporary DAG for a time Goyal & Team Expires October 30, 2010 [Page 11] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 duration at least as large as the DAG Life Time specified inside the Route Discovery option. The node initiating the route discovery selects the Life Time duration on the basis of the estimated time required for the route discovery to complete. A member node is free to leave the temporary DAG (i.e. delete all the state information regarding this DAG) any time after the expiry of the Life Time duration since joining this DAG. While a node is a member of a temporary DAG, it needs to remember its rank in the DAG so that it can poison the DIO messages traveling in the wrong direction. A member node may not need to remember the identity of its DAG parents since the temporary DAG is not used for routing. The sole purpose of a temporary DAG's existence is to facilitate the propagation of DIO/Discovery messages. Consequently, we advocate the use of a simple method to calculate a node's rank in this DAG. For example, using hop count as the rank may suffice. Use of a simple rank calculation method facilitates the participation of severely constrained nodes, common in the home and building environments, in the route discovery process. Note that the use of a simple rank calculation method does not mean that the method used for the routing cost calculation has to be simple as well. The routing cost calculation may still take in account multiple routing metrics in a complex manner while the rank calculation is based on a simple method. 5. Security Considerations TBD 6. Authors and Contributors In addition to the editor, the authors of this draft include the following individuals (listed in alphabetical order). Emmanuel Baccelli, INRIA, Paris, France. Email:emmanuel.baccelli@inria.fr Anders Brandt, Sigma Designs, Emdrupvej 26A, 1., Copenhagen, Dk-2100, Denmark. Phone: +45 29609501; Email: abr@sdesigns.dk Robert Cragie, Gridmerge Ltd, 89 Greenfield Crescent, Wakefieldm WF4 4WA, UK. Phone: +44 1924910888; Email: robert.cragie@gridmerge.com Jerald Martocci, Johnson Controls, Milwaukee, WI 53202, USA. Phone: +1 414 524 4010; Email:jerald.p.martocci@jci.com Goyal & Team Expires October 30, 2010 [Page 12] Internet-Draft draft-dt-roll-p2p-rpl-00 April 2010 Charles Perkins, Tellabs Inc., USA. Email:charliep@computer.org Authors gratefully acknowledge the contributions of Richard Kelsey and Zach Shelby in the development of this draft. 7. Informative References [I-D.brandt-roll-rpl-applicability-home-building] Brandt, A., Baccelli, E., and R. Cragie, "Applicability Statement: The use of RPL in Building and Home Environments", draft-brandt-roll-rpl-applicability-home-building-00 (work in progress), April 2010. [I-D.ietf-roll-building-routing-reqs] Martocci, J., Riou, N., Mil, P., and W. Vermeylen, "Building Automation Routing Requirements in Low Power and Lossy Networks", draft-ietf-roll-building-routing-reqs-09 (work in progress), January 2010. [I-D.ietf-roll-rpl] Winter, T., Thubert, P., and R. Team, "RPL: IPv6 Routing Protocol for Low power and Lossy Networks", draft-ietf-roll-rpl-07 (work in progress), March 2010. [RFC5826] Brandt, A., Buron, J., and G. Porcu, "Home Automation Routing Requirements in Low-Power and Lossy Networks", RFC 5826, April 2010. Authors' Addresses Mukul Goyal (editor) University of Wisconsin Milwaukee 3200 N Cramer St Milwaukee, WI 53211 USA Phone: +1 414 2295001 Email: mukul@uwm.edu P2P Team Goyal & Team Expires October 30, 2010 [Page 13]