[Roll] editing of section 3
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Roll] editing of section 3
Feedback/comments appreciated. Mostly, do people feel this makes
things clearer? Please note some terminology is in flux (e.g. this
text still uses inward/outward rather than up/down).
Phil
3. Protocol Model
The aim of this section is to describe RPL in the spirit of
[RFC4101]. Protocol details can be found in further sections.
3.1 Overview
Each RPL instance constructs a routing topology optimized for a
certain Objective
Function (OF). An instance may provide routes to certain destination
prefixes.
A single RPL instance consists of one or more DAG roots. These roots
may
operate independently, or may coordinate over a non-RPL backchannel.
Each root
has a unique identifier, such that nodes can identify the root of a
route.
3.1.1: Multipoint-to-Point Traffic
Multipoint-to-Point (MP2P) is a dominant traffic flow in many
LLN applications ([I-D.ietf-roll-building-routing-reqs],
[I-D.ietf-roll-home-routing-reqs], [RFC5673], and [RFC5548]). The
destinations of MP2P flows are designated nodes that have some
application
significance, such as providing connectivity to the larger Internet or
core private IP network. RPL supports MP2P traffic by allowing MP2P
destinations to be DAG roots.
3.1.2 Point-to-Multipoint Traffic Flows
Point-to-multipoint (P2MP) is a traffic pattern required by several
LLN applications[cite]. RPL supports P2MP traffic by using a
destination
advertisement mechanism that sets up routes toward destination
prefixes and
away from roots. Destination advertisements can update routing
tables as
the underlying DAG topology changes.
3.1.3 Point-to-Point Traffic Flows
RPL DAGs provide a basic structure for point-to-point (P2P) traffic.
For a RPL network to support P2P traffic, a root must be able to
route packets to a destination. Nodes within the network may also
have routing tables to destinations. A packet flows towards a root
until it reaches a node that has a known route to the destination.
RPL supports the case where a P2P destination is a `one-hop' neighbor.
RPL neither specifies nor precludes additional mechanisms for
computing and installing more optimal routes to support arbitrary P2P
traffic.
3.2. DAG Construction and the DAG Information Object (DIO)
RPL creates minimum cost routes to DAG roots. RPL nodes construct
these
DAGs through DAG Information Object (DIO) messages.
A DIO identifies the DAG root, the Objection Function (OF) of the DAG,
the position of the transmitter within the DAG, and other routing
information. RPL uses DIOs to establish and maintain routes. RPL
adapts the rate at which nodes send DIOs. When a DAG is inconsistent
or needs repair, RPL sends DIOs more frequently. As the DAG
stabilizes, the DIO rate tapers off, reducing the maintenance cost
of a steady and well-working DAG.
3.2.1 Grounded and Floating DAGs
DAGs can be grounded or floating. A grounded DAG that offers
connectivity to
to an external routed infrastructure. A floating DAG offers no such
external connectivity, and provides routes only to nodes within the
DAG.
3.2.2 Objective Function (OF)
The Objective Function (OF) conveys and controls the optimization
objectives of route selection within a DAG. The Objective Function
defines the cost function a RPL instance uses to compute minimum
cost routes. Examples of simple optimization
functions include minimizing latency, maximizing throughput, or
minimizing energy spent. An Objective Code Poiint (OCP) specifies
the Objective Function of the DAG. Further details can be found in
[I-D.ietf-roll-routing-metrics].
This document describes a default OF, OF0 (designated by OCP value
of 0x0000).
OF0 may be used to d code efine RPL behaviors in the case where a
node encounters a
DIO message containing a point that it does not support, if allowed
by
policy. [I-D.ietf-roll-routing-metrics] contains additional OFs.
3.2.3 Administrative Preference
An DAG instance may specify that some DAG roots should be used over
others
through an administrative preference. Administrative preference
offers a
way to control traffic and engineer DAG formation in order to better
support application requirements or needs.
3.2.4 Distributed Algorithm Operation
A high level overview of the distributed algorithm which constructs
the DAG is as follows:
o Some nodes are DAG roots, with associated administrative
preferences.
o Nodes advertise their presence, DAG instance, and routing cost
with DIO messages sent to the link-local multicast address.
o Nodes listen for DIOs and use their information to join a new DAG,
maintain their position within an existing DAG, or improve their
position within an existing DAG as according to the DAG's Objective
Function.
o The nodes provision routing table entries for the destinations
specified by the DIO towards their DAG Parents. Nodes may
provision a DAG Parent as a default gateway.
o RPL supports both global and local DAG repair. Each DAG root
maintains a sequence number. Incrementing this sequence number
institutes a global repair, allowing nodes to choose an arbitrary
new position within a DAG.
o Nodes may locally repair or change the topology, moving within
the DAG without requiring a global repair event. The OCP
specifies the limits of this local repair.
o Using both DIOs and possibly information in data packets,
RPL nodes detect possible routing loops. When a RPL node detects a
possible routing loop, it adapts its DIO transmission rate to
quickly apply these local repair to the topology. This process
and its limitations is discussed in greater detail in 3.4.
3.3 Outward Routes and the Destination Advertisement Object (DAO)
RPL uses DIO messages to establish Inward routes from nodes within
the LLN
to DAG roots. It uses Destination Advertisement Object (DAO) messages
to establish Outward routes from DAG roots to nodes within the DAG.
DAO
messages and Outward traffic are an optional feature for applications
that require P2MP traffic. DIO messages advertise whether a DAG
instance supports DAOs.
3.3.1 Destination Advertisement Object (DAO)
A Destination Advertisement Object conveys destination information
so that a root (and other nodes within the network) can establish
Outward
routes. A DAO message includes prefix information to identify
destinations,
reverse route information to record routes, and information to
determine the
freshness of a particular advertisement. Nodes send DAOs Inward
towards
DAG Roots.
Nodes that can maintain routing state may aggregate routes they
received in the DAOs they transmit. Nodes that cannot maintain
routing state forward DAOs toward the DAG Root and adds
the next-hop address to a Reverse Route Stack carried within
the DAO message.
3.3.2. `One-Hop' Neighbors
In addition to sending DAOs toward DAG roots, RPL nodes may
periodically
emit a link-local multicast DAO message advertising available
destination prefixes. This mechanism allow provisioning a trivial
`one-hop' route to local neighbors.
3.4. Loop Detection and Limiting Local Repair
RPL nodes maintains route cost information within a DAG. Because links
may fail or change over time, nodes can move within a DAG. If routers
only move Inward, the DAG remains consistent. However, if a router
moves
Outward, it can create a routing loop. RPL embeds information in data
packets that enable it to quickly detect potential loops and locally
repair
the DAG. A data packet includes the route cost metric of the
transmitter:
if a router receives a packet from a router that advertises a cost
lower
than its own, there may be a routing loop.
Allowing nodes to move Outward can, in the case of a Floating DAG,
lead to the count-to-infinity problem, where nodes continuously move
Outward as they search for a route to a DAG Root.
RPL allows a DAG Instance to specify the amount of local repair a
router may
apply. If a router is unable to find a valid route after this amount
of repair,
it marks itself as Floating until the DAG Root applies a global
repair by
incrementing its sequence number. If the local repair limit is zero,
then
a router cannot move Outward without a global repair. If the local
repair
limit is infinity, then routers may locally repair freely and can
suffer
from the count-to-infinity problem.
Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.