Supporting Asymmetric Links in Low Power Networks: AODV-RPL
Lupin LodgeLos Gatos95033United Statescharliep@lupinlodge.comIndian Institute of ScienceBangalore560012Indiaanandsvr@iisc.ac.inSRM University-APAmaravati CampusAmaravati, Andhra Pradesh522 502Indiasatishnaidu80@gmail.comHuawei TechnologiesNo. 156 Beiqing Rd. Haidian DistrictBeijing100095Chinaremy.liubing@huawei.com
Internet
ROLLAODV, Peer-to-Peer Route Discovery, Asymmetric Route discovery for symmetric and asymmetric Peer-to-Peer (P2P)
traffic flows is a desirable feature in Low power and Lossy Networks
(LLNs). For that purpose, this document specifies a reactive P2P route
discovery mechanism for both hop-by-hop routes and source routing: Ad
Hoc On-demand Distance Vector Routing (AODV) based RPL protocol
(AODV-RPL). Paired Instances are used to construct directional paths,
for cases where there are asymmetric links between source and target
nodes.
Routing Protocol for Low-Power and Lossy Networks (RPL)
is an IPv6 distance vector routing protocol
designed to support
multiple traffic flows through a root-based Destination-Oriented
Directed Acyclic Graph (DODAG). Typically, a router does not have
routing information for most other routers. Consequently, for traffic
between routers within the DODAG (i.e., Peer-to-Peer (P2P) traffic)
data packets either have to traverse the root in non-storing mode, or
traverse a common ancestor in storing mode. Such P2P traffic
is thereby likely to traverse longer routes and
may suffer severe congestion near the root (for more information
see , ,
, ).
The network environment that is considered in this document
is assumed to be the same as described in Section 1 of
.
The route discovery process in AODV-RPL is modeled on the analogous
peer-to-peer procedure specified in AODV .
The on-demand nature of AODV route discovery is natural for the needs
of routing in RPL-based LLNs when routes are needed but
aren't yet established. Peer-to-peer routing is desirable to discover
shorter routes, and especially when it is desired to avoid directing
additional traffic through a root or gateway node of the network.
AODV terminology has been adapted for use with AODV-RPL messages,
namely RREQ for Route Request, and RREP for Route Reply. AODV-RPL
currently omits some features compared to AODV -- in particular,
flagging Route Errors, "blacklisting" unidirectional links
(), multihoming, and handling unnumbered
interfaces.
AODV-RPL reuses and extends the core RPL
functionality to support routes with bidirectional asymmetric links.
It retains RPL's DODAG formation, RPL Instance and the associated
Objective Function (defined in ), trickle
timers, and support for storing and non-storing modes. AODV-RPL adds
basic messages RREQ and RREP as part of RPL DODAG Information
Object (DIO) control message, which go in separate (paired) RPL
instances. AODV-RPL does not utilize the Destination
Advertisement Object (DAO) control message of RPL.
AODV-RPL uses the "P2P Route Discovery Mode of Operation" (MOP == 4)
with three new Options for the DIO message, dedicated to discover P2P
routes. These P2P routes may differ from routes discoverable by native
RPL. Since AODV-RPL uses newly defined Options and a newly allocated
multicast group (see ), there is no conflict
with P2P-RPL , a previous document using the
same MOP. AODV-RPL can be operated whether or not P2P-RPL or native
RPL is running otherwise. For many networks AODV-RPL could be a
replacement for RPL, since it can find better routes at very moderate
cost. Consequently, it seems unlikely that RPL would be needed in
a network that is running AODV-RPL, even though it would be possible
to run both protocols at the same time.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14
when, and only when, they appear in all capitals, as shown here.
AODV-RPL reuses names for messages and data structures, including
Rank, DODAG and DODAGID, as defined in RPL .
Ad Hoc On-demand Distance Vector Routing .
AODV-RPL Target option: a target option defined in this document.
The route from the OrigNode to the TargNode can traverse different
nodes than the route from the TargNode to the OrigNode. An asymmetric
route may result from the asymmetry of links, such that only one
direction of the series of links satisfies the Objective Function
during route discovery.
A link that can be used in both directions but with different link
characteristics.
DODAG Information Object (defined in )
RPL Instance built using the DIO with RREQ option; used for
transmission of control messages from OrigNode to TargNode, thus
enabling data transmission from TargNode to OrigNode.
RPL Instance built using the DIO with RREP option; used for
transmission of control messages from TargNode to OrigNode thus
enabling data transmission from OrigNode to TargNode.
The direction from the OrigNode to the TargNode.
A route in the downward direction.
A route for which each router along the routing path stores
routing information about the next hop. A hop-by-hop route is
created using RPL's "storing mode".
Routing in which a route is established only when needed.
The IPv6 router (Originating Node) initiating the AODV-RPL
route discovery to obtain a route to TargNode.
Two DODAGs for a single route discovery process between OrigNode
and TargNode.
Peer-to-Peer -- in other words, not constrained a priori to
traverse a common ancestor.
Same as "on-demand" routing.
The duration during which a node is prohibited from joining a
DODAG with a particular RREQ-InstanceID, after it has left a DODAG
with the same RREQ-InstanceID. The default value of REJOIN_REENQBLE is
15 minutes.
A DIO message containing the RREQ option. The
RPLInstanceID in RREQ-DIO is assigned locally by the OrigNode.
The RREQ-DIO message has a secure variant as noted in .
The RPLInstanceID for the RREQ-Instance. The RREQ-InstanceID is formed
as the ordered pair (Orig_RPLInstanceID, OrigNode-IPaddr), where
Orig_RPLInstanceID is the local RPLInstanceID allocated by OrigNode,
and OrigNode-IPaddr is an IP address of OrigNode. The RREQ-InstanceID
uniquely identifies the RREQ-Instance.
A DIO message containing the RREP option.
OrigNode pairs the RPLInstanceID in RREP-DIO to the one in the
associated RREQ-DIO message (i.e., the RREQ-InstanceID) as described
in . The RREP-DIO message has a secure
variant as noted in .
The RPLInstanceID for the RREP-Instance. The RREP-InstanceID is formed
as the ordered pair (Targ_RPLInstanceID, TargNode-IPaddr), where
Targ_RPLInstanceID is the local RPLInstanceID allocated by TargNode,
and TargNode-IPaddr is an IP address of TargNode. The RREP-InstanceID
uniquely identifies
the RREP-Instance. The RPLInstanceID in the RREP message along with
the Delta value indicates the associated RREQ-InstanceID.
A mechanism by which the source supplies a vector of addresses
towards the destination node along with each data packet
.
The upstream and downstream routes traverse the same routers and over
the same links.
The IPv6 router (Target Node) for which OrigNode requires a
route and initiates Route Discovery within the LLN network.
The direction from the TargNode to the OrigNode.
A route in the upward direction. With AODV-RPL, routes from OrigNode to TargNode within the LLN
network are established "on-demand". In other words, the route
discovery mechanism in AODV-RPL is invoked reactively when OrigNode
has data for delivery to the TargNode but existing routes do not
satisfy the application's requirements. AODV-RPL works
without requiring the use of RPL or any other routing protocol.
The routes discovered by
AODV-RPL are not constrained to traverse a common ancestor.
AODV-RPL can enable asymmetric communication paths in networks with
bidirectional asymmetric links. For this purpose, AODV-RPL enables
discovery of two routes: namely, one from OrigNode to TargNode, and
another from TargNode to OrigNode. AODV-RPL also
enables discovery of symmetric routes along Paired DODAGs, when
symmetric routes are possible (see ).
In AODV-RPL, routes are discovered by first forming a temporary DAG
rooted at the OrigNode. Paired DODAGs (Instances) are constructed
during route
formation between the OrigNode and TargNode.
The RREQ-Instance is formed by route control messages from OrigNode to
TargNode whereas the RREP-Instance is formed by route control messages
from TargNode to OrigNode. The route
discovered in the RREQ-Instance is used for transmitting data from
TargNode to OrigNode, and the route discovered in RREP-Instance is
used for transmitting data from OrigNode to TargNode.
Intermediate routers join the DODAGs
based on the Rank as calculated from the DIO
message. Henceforth in this document, "RREQ-DIO message" means the DIO
message from OrigNode toward TargNode, containing the RREQ option as
specified in . The RREQ-InstanceID is formed
as the ordered pair (Orig_RPLInstanceID, OrigNode-IPaddr), where
Orig_RPLInstanceID is the local RPLInstanceID allocated by OrigNode,
and OrigNode-IPaddr is the IP address of OrigNode. A node receiving
the RREQ-DIO can use the RREQ-InstanceID to identify the proper OF
whenever that node receives a data packet with Source Address ==
OrigNode-IPaddr and IPv6 RPL Option having the RPLInstanceID ==
Orig_RPLInstanceID along with 'D' == 0.
Similarly, "RREP-DIO message"
means the DIO message from TargNode toward OrigNode, containing the
RREP option as specified in .
The RREP-InstanceID is formed
as the ordered pair (Targ_RPLInstanceID, TargNode-IPaddr), where
Targ_RPLInstanceID is the local RPLInstanceID allocated by TargNode,
and TargNode-IPaddr is the IP address of TargNode. A node receiving
the RREP-DIO can use the RREP-InstanceID to identify the proper OF
whenever that node receives a data packet with Source Address ==
TargNode-IPaddr and IPv6 RPL Option having the RPLInstanceID ==
Targ_RPLInstanceID along with 'D' == 0.
OrigNode selects one of its IPv6 addresses and sets it in the DODAGID
field of the RREQ-DIO message. The address scope of the selected
address must encompass the domain where the route is built (e.g, not
link-local). Exactly one RREQ option MUST be present
in a RREQ-DIO message, otherwise the message MUST be dropped.
OrigNode supplies the following information in the RREQ option:
TBD2
The length of the option in octets, excluding the Type and Length
fields. Variable due to the presence of the address vector and the
number of octets elided according to the Compr value.
Symmetric bit indicating a symmetric route from the OrigNode to the
router transmitting this RREQ-DIO. See .
Set to one for a hop-by-hop route. Set to zero for a source route.
This flag controls both the downstream route and upstream route.
Reserved; MUST be initialized to zero and
ignored upon reception.
4-bit unsigned integer. When Compr is nonzero, exactly that number of
prefix octets MUST be elided from each address before storing it in
the Address Vector. The octets elided are shared with the IPv6 address
in the DODAGID. This field is only used in source routing mode (H=0).
In hop-by-hop mode (H=1), this field MUST be set to zero and ignored
upon reception.
2-bit unsigned integer determining the time duration that a node
is able to belong to the RREQ-Instance (a temporary DAG including the
OrigNode and the TargNode). Once the time is reached, a node MUST
leave the RREQ-Instance and stop sending or receiving any more DIOs
for the RREQ-Instance. This naturally depends on the node's ability
to keep track of time. Once a node leaves an RREQ-Instance, it MUST
NOT rejoin the same RREQ-Instance for at least the time interval
specified by the configuration variable REJOIN_REENABLE.
0x00: No time limit imposed. 0x01: 16 seconds 0x02: 64 seconds 0x03: 256 seconds
L is independent from the route lifetime, which is defined in the
DODAG configuration option.
This field indicates the upper limit on the integer portion of the
Rank (calculated using the DAGRank() macro defined in
). A value of 0 in this field
indicates the limit is infinity.
Sequence Number of OrigNode. See .
A vector of IPv6 addresses representing the route that the RREQ-DIO
has passed. It is only present when the H bit is set to 0.
The prefix of each address is elided according to the Compr field. TargNode can join the RREQ instance at a Rank whose integer portion is
less than or equal to the RankLimit. Any other node MUST NOT join a
RREQ instance if its own Rank would be equal to or higher than
RankLimit. A router MUST discard a received RREQ if the integer part
of the advertised Rank equals or exceeds the RankLimit.
TargNode sets one of its IPv6 addresses in the DODAGID
field of the RREP-DIO message. The address scope of the selected
address must encompass the domain where the route is built (e.g, not
link-local). Exactly one RREP option MUST be present
in a RREP-DIO message, otherwise the message MUST be dropped.
TargNode supplies the following information in the RREP option:
TBD3
The length of the option in octets, excluding the Type and Length
fields. Variable due to the presence of the address vector and
the number of octets elided according to the Compr value.
Gratuitous RREP (see ).
The H bit in the RREP option MUST be set to be the same as the
H bit in RREQ option.
It requests either source routing (H=0) or hop-by-hop (H=1) for
the downstream route.
Reserved; MUST be initialized to zero and
ignored upon reception.
4-bit unsigned integer. Same definition as in RREQ option.
2-bit unsigned integer defined as in RREQ option. The
lifetime of the RREP-Instance MUST be no greater than the
lifetime of the RREQ-Instance to which it is paired.
Similarly to RankLimit in the RREQ message, this field indicates the
upper limit on the integer portion of the Rank. A value
of 0 in this field indicates the limit is infinity.
6-bit unsigned integer. This field is used to recover the
RREQ-InstanceID (see );
0 indicates that the RREQ-InstanceID has the same value
as the RPLInstanceID of the RREP message.
Reserved; MUST be initialized to zero and
ignored upon reception.
Only present when the H bit is set to 0. For an asymmetric route,
the Address Vector represents the IPv6 addresses of the path
through the network the RREP-DIO has passed. For a symmetric
route, it is the Address Vector when the RREQ-DIO arrives at the
TargNode, unchanged during the transmission to the OrigNode. The AODV-RPL Target (ART) Option is based on the Target Option
in core RPL . The Flags field is replaced by
the Destination Sequence Number of the TargNode and the Prefix
Length field is reduced to 7 bits so that the value is limited to
be no greater than 127.
A RREQ-DIO message MUST carry at least one ART Option. A RREP-DIO
message MUST carry exactly one ART Option. Otherwise, the message
MUST be dropped.
OrigNode can include multiple TargNode addresses via multiple AODV-RPL
Target Options in the RREQ-DIO, for routes that share the same
requirement on metrics. This reduces the cost to building only one
DODAG.
TBD4
Length of the option in octets excluding the
Type and Length fields.
In RREQ-DIO, if nonzero, it is the Sequence Number for the last
route that OrigNode stored to the TargNode for which a route is
desired. In RREP-DIO, it is the destination sequence number
associated to the route. Zero is used if there is no known
information about the sequence number of TargNode, and not used
otherwise.
A one-bit reserved field. This field MUST be initialized to zero
by the sender and MUST be ignored by the receiver.
7-bit unsigned integer. Number of valid leading bits
in the IPv6 Prefix. If Prefix Length is 0, then the value in the
Target Prefix / Address field represents an IPv6 address, not
a prefix.
(variable-length field) An IPv6 destination address or prefix.
The Prefix Length field contains the number of valid leading bits
in the prefix. The Target Prefix / Address field contains the
least number of octets that can represent all of the bits of the
Prefix, in other words Ceil(Prefix Length/8) octets.
The initial bits in the Target Prefix / Address field
preceding the prefix length (if any) MUST be set to zero on
transmission and MUST be ignored on receipt. If Prefix Length
is zero, the Address field is 128 bits for IPv6 addresses.
Links are considered symmetric until indication to the contrary is
received. In and
, BR is the Border Router, O is the
OrigNode, each R is an intermediate router, and T is the TargNode.
In this example, the use of BR is only for illustrative purposes;
AODV does not depend on the use of border routers for its operation.
If the RREQ-DIO arrives over an interface that
is known to be symmetric, and the S bit is set to 1, then it remains
as 1, as illustrated in . If an
intermediate router sends out RREQ-DIO with the S bit set to 1, then
each link en route from the OrigNode O to this router has met
the requirements of route discovery, and the route can be used
symmetrically.
Upon receiving a RREQ-DIO with the S bit set to 1, a node determines
whether this link can be used symmetrically, i.e., both
directions meet the requirements of data transmission. If the RREQ-DIO
arrives over an interface that is not known to be symmetric, or is
known to be asymmetric, the S bit is set to 0. If the S bit arrives
already set to be '0', it is set to be '0' when the RREQ-DIO is
propagated (). For an asymmetric route,
there is at least one hop which doesn't satisfy the Objective Function.
Based on the S bit received in RREQ-DIO, TargNode T
determines whether or not the route is symmetric before transmitting
the RREP-DIO message upstream towards the OrigNode O.
It is beyond the scope of this document to specify the criteria used
when determining whether or not each link is symmetric. As an
example, intermediate routers
can use local information (e.g., bit rate, bandwidth, number of cells
used in 6tisch ), a priori
knowledge (e.g., link quality according to previous communication) or
use averaging techniques as appropriate to the application.
Other link metric information
can be acquired before AODV-RPL operation, by executing evaluation
procedures; for instance test traffic can be generated between
nodes of the deployed network. During AODV-RPL operation, OAM
techniques for evaluating link state (see ,
, ) MAY be used
(at regular intervals appropriate for the LLN).
The evaluation procedures are out of scope for AODV-RPL.
describes an example method using the
upstream Expected Number of Transmissions (ETX) and downstream
Received Signal Strength Indicator
(RSSI) to estimate whether the link is symmetric in terms of link
quality using an averaging technique.
As illustrated in , an intermediate
router determines the S bit value that the RREQ-DIO should carry
using link asymmetry detection methods as discussed earlier in
this section. In many cases the intermediate router has already
made the link asymmetry decision by the time RREQ-DIO arrives.
The route discovery process is initiated when an application
at the OrigNode has data to be transmitted to the TargNode, but does
not have a route that satisfies the Objective Function for the target
of the application's data. In this case, the OrigNode builds a local
RPLInstance and a DODAG rooted at itself. Then it transmits a DIO
message containing exactly one RREQ option
(see ) to multicast group all-AODV-RPL-nodes.
The RREQ-DIO MUST contain at least one ART Option
(see ), which indicates the TargNode.
The S bit in RREQ-DIO sent out by the OrigNode is set to 1.
Each node maintains a sequence number; the operation is specified in
section 7.2 of .
When the OrigNode initiates a
route discovery process, it MUST increase its own sequence number to
avoid conflicts with previously established routes. The sequence
number is carried in the Orig SeqNo field of the RREQ option.
The Target Prefix / Address in the ART Option can be a unicast IPv6
address or a prefix. The OrigNode can initiate
the route discovery process for multiple targets simultaneously by
including multiple ART Options. Within a RREQ-DIO the Objective
Function for the routes to different TargNodes MUST be the same.
OrigNode can maintain different RPLInstances to discover routes with
different requirements to the same targets. Using the RPLInstanceID
pairing mechanism (see ), route replies
(RREP-DIOs) for different RPLInstances can be generated.
The transmission of RREQ-DIO obeys the Trickle timer
. If the duration specified by the
L field has elapsed, the OrigNode MUST leave
the DODAG and stop sending RREQ-DIOs in the related RPLInstance.
OrigNode needs to set L field such that the DODAG will not
prematurely timeout during data transfer with the TargNode.
For setting this value, it has to consider factors such as
Trickle timer, TargNode hop distance, network size, link
behavior, expected data usage time, and so on.
When a router X receives a RREQ message over a link from a
neighbor Y, X first determines whether or not the RREQ is valid.
If so, X then determines whether or not it has sufficient
resources available to maintain the state needed to process an
eventual RREP if the RREP were to be received. If not, then
X MUST drop the packet and discontinue processing of the RREQ.
Otherwise, X next determines whether the RREQ advertises a usable
route to OrigNode, by checking whether the link to Y can be
used to tramsmit packets to OrigNode.
When H=0 in the incoming RREQ, the router MUST drop the
RREQ-DIO if one of its addresses is present in the Address Vector.
When H=1 in the incoming RREQ, the router MUST drop the RREQ
message if Orig SeqNo field of the RREQ is older than the SeqNo
value that X has stored for a route to OrigNode.
Otherwise, the router determines whether to propagate the RREQ-DIO.
It does this by determining whether or not a route to OrigNode
using the upstream direction of the incoming link satisfies the
Objective Function (OF). In order to evaluate the OF, the router
first determines the maximum useful rank (MaxUsefulRank). If the
router has previously joined the RREQ-Instance associated with
the RREQ-DIO, then MaxUsefulRank is set to be the Rank value that
was stored when the router processed the best previous RREQ for
the DODAG with the given RREQ-Instance. Otherwise, MaxUsefulRank
is set to be RankLimit. If OF cannot be satisfied (i.e.,
the Rank evaluates to a value greater than MaxUsefulRank)
the RREQ-DIO MUST be dropped, and the following steps are not
processed. Otherwise, the router MUST join the RREQ-Instance
and prepare to propagate the RREQ-DIO, as follows. The upstream
neighbor router that transmitted the received RREQ-DIO is selected
as the preferred parent.
After determining that a received RREQ provides a usable route
to OrigNode, a router determines whether it is a TargNode, or
a possible intermediate router between OrigNode and a TargNode,
or both. The router is a TargNode if it finds one of its own
addresses in a Target Option in the RREQ. After possibly
propagating the RREQ according to the procedures in Steps 3,
4, and 5, the TargNode generates a RREP as specified in
.
If the OrigNode tries to reach multiple TargNodes in a
single RREQ-Instance, one of the TargNodes can be an intermediate
router to other TargNodes. In this case, before transmitting the
RREQ-DIO to multicast group all-AODV-RPL-nodes, a TargNode MUST
delete the Target Option encapsulating its own address, so that
downstream routers with higher Rank values do not try to create
a route to this TargNode.
An intermediate router could receive several RREQ-DIOs from
routers with lower Rank values in the same RREQ-Instance with
different lists of Target Options. For the purposes of determining
the intersection with previous incoming RREQ-DIOs, the intermediate
router maintains a record of the targets that have been requested
for a given RREQ-Instance. An incoming RREQ-DIO message having
multiple ART Options coming from a router with higher Rank than
the Rank of the stored targets is ignored. When transmitting the
RREQ-DIO, the intersection of all received lists MUST be included
if it is nonempty after TargNode has deleted the Target Option
encapsulating its own address. If the intersection is empty, it
means that all the targets have been reached, and the router MUST
NOT transmit any RREQ-DIO. Otherwise it proceeds to
.
For example, suppose two RREQ-DIOs are received with the same
RPLInstance and OrigNode. Suppose further that the first
RREQ has (T1, T2) as the targets, and the second one has (T2, T4)
as targets. Then only T2 needs to be included in the generated
RREQ-DIO.
The intermediate router establishes itself as a viable node
for a route to OrigNode as follows. If the H bit is set to 1,
for a hop-by-hop route, then the router MUST build or update
its upward route entry towards OrigNode, which includes at least
the following items: Source Address, RPLInstanceID, Destination
Address, Next Hop, Lifetime, and Sequence Number.
The Destination Address and the RPLInstanceID respectively can be
learned from the DODAGID and the RPLInstanceID of the RREQ-DIO.
The Source Address is the address used by the router to
send data to the Next Hop, i.e., the preferred parent.
The lifetime is set according to DODAG configuration (not
the L field) and can be extended when the route is actually used.
The sequence number represents the freshness of the route entry;
it is copied from the Orig SeqNo field of the RREQ option. A route
entry with the same source and destination address, same
RPLInstanceID, but stale sequence number, MUST be deleted.
If the S bit of the incoming RREQ-DIO is 0, then the route cannot
be symmetric, and the S bit of the RREQ-DIO to be transmitted is
set to 0. Otherwise, the router MUST determine whether the
downward (i.e., towards the TargNode) direction of the
incoming link satisfies the OF. If so, the S bit of the
RREQ-DIO to be transmitted is set to 1. Otherwise the S bit of
the RREQ-DIO to be transmitted is set to 0.
When a router joins the RREQ-Instance, it also associates within
its data structure for the RREQ-Instance the information about
whether or not the RREQ-DIO to be transmitted has the S-bit set
to 1. This information
associated to RREQ-Instance is known as the S-bit of the
RREQ-Instance. It will be used later during the RREP-DIO message
processing .
Suppose a router has joined the RREQ-Instance, and H=0, and the
S-bit of the RREQ-Instance is set to 1. In this case, the router
MAY optionally associate to the RREQ-Instance, the Address Vector
of the symmetric route back to OrigNode. This is useful if the
router later receives an RREP-DIO that is paired with the
RREQ-Instance. If the router does NOT associate the Address
Vector, then it has to rely on multicast for the RREP.
This can impose a substantial performance penalty.
If the router is an intermediate router, then it transmits the
RREQ-DIO to the multicast group all-AODV-RPL-nodes; if the H bit is
set to 0, the intermediate router MUST append
the address of its interface receiving the RREQ-DIO into the
address vector. If, in addition, the address of the router's
transmitting the RREQ-DIO is not the same as the address of
the interface receiving the RREQ-DIO, the router MUST also
append the transmitting interface address into the address vector.
If the router is a TargNode and was already associated with the
RREQ-Instance, it takes no further action and does not send an
RREP-DIO. If TargNode is not already associated with the
RREQ-Instance, it prepares and transmits a RREP-DIO, possibly
after waiting for RREP_WAIT_TIME, as detailed in
().
When a TargNode receives a RREQ message over a link from a
neighbor Y, TargNode first follows the procedures in
. If the link to Y can be
used to tramsmit packets to OrigNode, TargNode generates
a RREP according to the steps below. Otherwise TargNode
drops the RREQ and does not generate a RREP.
If the L field is not 0, the TargNode MAY delay transmitting the
RREP-DIO for duration RREP_WAIT_TIME to await a route with a lower
Rank. The value of RREP_WAIT_TIME is set by default to 1/4 of
the duration determined by the L field. For L == 0,
RREP_WAIT_TIME is set by default to 0. Depending upon the
application, RREP_WAIT_TIME may be set to other values.
Smaller values enable quicker formation for the P2P route.
Larger values enable formation of P2P routes with better
Rank values.
The address of the OrigNode MUST be
encapsulated in the ART Option and included in this RREP-DIO
message along with the SeqNo of TargNode.
If the RREQ-Instance corresponding to the RREQ-DIO that arrived
at TargNode has the S bit set to 1, there
is a symmetric route both of whose directions satisfy the
Objective Function. Other RREQ-DIOs might later provide better
upward routes. The method of selection between a
qualified symmetric route and an asymmetric route that might have
better performance is implementation-specific and out of scope.
For a symmetric route, the RREP-DIO message is unicast to the next
hop according to the Address Vector (H=0) or the route
entry (H=1); the DODAG in RREP-Instance does not need to be
built. The RPLInstanceID in the RREP-Instance is paired as
defined in . In case the H bit
is set to 0, the address vector from the RREQ-DIO MUST be
included in the RREP-DIO.
When a RREQ-DIO arrives at a TargNode with the S bit set to 0,
the TargNode MUST build a DODAG in the RREP-Instance
corresponding to the RREQ-DIO rooted at itself, in order to
provide OrigNode with a downstream route
to the TargNode. The RREP-DIO message is transmitted to
multicast group all-AODV-RPL-nodes.
Since the RPLInstanceID is assigned locally (i.e., there is no
coordination between routers in the assignment of RPLInstanceID), the
tuple (OrigNode, TargNode, RPLInstanceID) is needed to uniquely
identify a discovered route. It is possible that multiple route
discoveries with dissimilar Objective Functions
are initiated simultaneously. Thus between the same pair of OrigNode
and TargNode, there can be multiple AODV-RPL route discovery
instances. So that OrigNode and Targnode can avoid any mismatch,
they MUST pair the RREQ-Instance and the RREP-Instance in the same
route discovery by using the RPLInstanceID.
When preparing the RREP-DIO, a TargNode could find the RPLInstanceID
candidate for the RREP-Instance is already occupied by another RPL
Instance from an earlier route discovery operation which is still
active. This unlikely case might happen if two distinct OrigNodes
need routes to the same TargNode, and they happen to use the same
RPLInstanceID for RREQ-Instance. In such cases, the
RPLInstanceID of an already active RREP-Instance MUST NOT be used
again for assigning RPLInstanceID for the later RREP-Instance.
If the same RPLInstanceID were re-used for two
distinct DODAGs originated with the same DODAGID (TargNode address),
intermediate routers could not distinguish between these
DODAGs (and their associated Objective Functions). Instead, the
RPLInstanceID MUST be replaced by another value so that the two
RREP-instances can be distinguished. In the RREP-DIO option, the
Delta field of the RREP-DIO message ()
indicates the increment to be applied to the pre-existing
RPLInstanceID to obtain the value of the RPLInstanceID that
is used in the RREP-DIO message.
When the new RPLInstanceID after incrementation exceeds 255, it
rolls over starting at 0. For example, if the RREQ-InstanceID
is 252, and incremented by 6, the new RPLInstanceID will be 2.
Related operations can be found in .
RPLInstanceID collisions do not occur across RREQ-DIOs; the
DODAGID equals the OrigNode address and is sufficient to
disambiguate between DODAGs.
Upon receiving a RREP-DIO, a router which already belongs to the
RREP-Instance SHOULD drop the RREP-DIO. Otherwise the router
performs the steps in the following subsections.
If the Objective Function is not satisfied, the router MUST NOT
join the DODAG; the router MUST discard the RREP-DIO, and does not
execute the remaining steps in this section. An Intermediate
Router MUST discard a RREP if one of its addresses is present
in the Address Vector, and does not execute the remaining steps in
this section.
If the S bit of the associated RREQ-Instance is set to 1,
the router MUST proceed to .
If the S-bit of the RREQ-Instance is set to 0, the router MUST
determine whether the downward direction of the link (towards the
TargNode) over which the RREP-DIO is received satisfies the
Objective Function, and the router's Rank would not exceed the
RankLimit. If so, the router joins the DODAG of the
RREP-Instance. The router that transmitted the received RREP-DIO
is selected as the preferred parent. Afterwards, other RREP-DIO
messages can be received.
The router updates its stored value of the TargNode's sequence
number according to the value provided in the ART option.
The router next checks if one of its addresses is included in the
ART Option. If so, this router is the OrigNode of the
route discovery. Otherwise, it is an intermediate router.
If the H bit is set to 1, then the router (OrigNode or
intermediate) MUST build a downward route entry towards TargNode
which includes at least the following items: OrigNode Address,
RPLInstanceID, TargNode Address as destination, Next Hop, Lifetime
and Sequence Number. For a symmetric route, the Next Hop in the
route entry is the router from which the RREP-DIO is received. For
an asymmetric route, the Next Hop is the preferred parent in the
DODAG of RREP-Instance. The RPLInstanceID in the route entry MUST
be the RREQ-InstanceID (i.e., after subtracting the Delta field
value from the value of the RPLInstanceID). The source address is
learned from the ART Option, and
the destination address is learned from the DODAGID. The lifetime
is set according to DODAG configuration (i.e., not the L field)
and can be extended when the route is actually used. The sequence
number represents the freshness of the route entry, and is copied
from the Dest SeqNo field of the ART option of the RREP-DIO.
A route entry with same source and destination address, same
RPLInstanceID, but stale sequence number (i.e., incoming sequence
number is less than the currently stored sequence number of the
route entry), MUST be deleted.
If the receiver is the OrigNode, it can start transmitting the
application data to TargNode along the path as provided in
RREP-Instance, and processing for the RREP-DIO is complete.
Otherwise, the RREP will be propagated towards OrigNode.
If H=0, the intermediate router
MUST include the address of the interface receiving the RREP-DIO
into the address vector. If H=1, according to the last step
the intermediate router has set up a route entry for TargNode.
If the intermediate router has a route to OrigNode, it uses that
route to unicast the RREP-DIO to OrigNode. Otherwise, in case of
a symmetric route, the RREP-DIO message is unicast to the Next Hop
according to the address vector in the RREP-DIO (H=0) or the local
route entry (H=1). Otherwise, in case of an asymmetric route, the
intermediate router transmits the RREP-DIO to multicast group
all-AODV-RPL-nodes. The RPLInstanceID in the transmitted RREP-DIO
is the same as the value in the received RREP-DIO.
In some cases, an Intermediate router that receives a RREQ-DIO message
MAY unicast a "Gratuitous" RREP-DIO message back to OrigNode before
continuing the transmission of the RREQ-DIO towards TargNode. The
Gratuitous RREP allows the OrigNode to start transmitting
data to TargNode sooner. The G bit of the RREP option is provided to
distinguish the Gratuitous RREP-DIO (G=1) sent by the Intermediate
router from the RREP-DIO sent by TargNode (G=0).
The gratuitous RREP-DIO MAY be sent out when the Intermediate router
receives a RREQ-DIO for a TargNode, and the router has a pair of
downward and upward routes to the TargNode which also satisfy the
Objective Function and for which the destination sequence number is
at least as large as the sequence number in the RREQ-DIO message.
After unicasting the Gratuitous RREP to the OrigNode, the Intermediate
router then unicasts the RREQ towards TargNode, so that TargNode will
have the advertised route towards OrigNode along with the
RREQ-InstanceID for the RREQ-Instance.
In case of source routing, the intermediate router MUST include the
address vector between the OrigNode and itself in the
Gratuitous RREP. It also includes the address vector in the unicast
RREQ-DIO towards TargNode. Upon reception of the unicast RREQ-DIO,
the TargNode will have a
route address vector from itself to the OrigNode. Then the
router MUST include the address vector from the TargNode to the
router itself in the gratuitous RREP-DIO to be transmitted.
For establishing hop-by-hop routes, the intermediate router MUST
unicast the received RREQ-DIO to the Next Hop on the route. The Next
Hop router along the route MUST build new route entries with the related
RPLInstanceID and DODAGID in the downward direction. This process
repeats at each node until the RREQ-DIO arrives at the TargNode.
Then the TargNode and each router along the path towards OrigNode
MUST unicast the RREP-DIO hop-by-hop towards OrigNode
as specified in .
RREQ-Instance/RREP-Instance multicast uses trickle timer operations
to control RREQ-DIO and
RREP-DIO transmissions. The Trickle control of these DIO transmissions
follows the procedures described in the Section 8.3 of
entitled "DIO Transmission". If the route is
symmetric, the RREP DIO does not need the Trickle timer mechanism.
Note to RFC editor:
The sentence "The parenthesized numbers are only suggestions."
is to be removed prior publication.
A Subregistry in this section refers to a named sub-registry of the
"Routing Protocol for Low Power and Lossy Networks (RPL)" registry.
AODV-RPL uses the "P2P Route Discovery Mode of Operation" (MOP == 4)
with new Options as specified in this document. Please cite AODV-RPL
and this document as one of the protocols using MOP 4.
IANA is asked to assign three new AODV-RPL options "RREQ", "RREP" and
"ART", as described in from the "RPL Control
Message Options" Subregistry. The parenthesized numbers are only
suggestions.
IANA is requested to allocate a new permanent multicast address
with link-local scope called all-AODV-RPL-nodes for nodes
implementing this specification.
The security considerations for the operation of AODV-RPL
are similar to those for the operation of RPL (as described in
Section 19 of the RPL specification ).
Sections 6.1 and 10 of describe RPL's
optional security framework, which AODV-RPL relies on to provide data
confidentiality, authentication,
replay protection, and delay protection services. Additional analysis
for the security threats to RPL can be found in .
A router can join a temporary DAG created for a secure AODV-RPL route
discovery only if it can support the security configuration in use
(see Section 6.1 of ), which also specifies the
key in use. It does not matter whether the key is preinstalled or
dynamically acquired. The router must have the key in use before it
can join the DAG being created for secure route discovery.
If a rogue router knows the key for the security configuration in use, it
can join the secure AODV-RPL route discovery and cause various types of
damage. Such a
rogue router could advertise false information in its DIOs in order
to include itself in the discovered route(s). It could generate
bogus RREQ-DIO, and RREP-DIO messages carrying bad routes or maliciously
modify genuine RREP-DIO messages it receives. A rogue router acting as
the OrigNode could launch denial-of-service attacks against the LLN
deployment by initiating fake AODV-RPL route discoveries. When rogue
routers might be present, RPL's preinstalled mode of operation, where the
key to use for route discovery is preinstalled, SHOULD be used.
When a RREQ-DIO message uses the source routing option by setting the H
bit to 0, a rogue router may populate the Address Vector field with a set
of addresses that may result in the RREP-DIO traveling in a routing loop.
If a rogue router is able to forge a gratuitous RREP,
it could mount denial-of-service attacks.
The authors thank Pascal Thubert, Rahul Jadhav,
and Lijo Thomas for their support and valuable inputs.
The authors specially thank Lavanya H.M for implementing AODV-RPl in
Contiki and conducting extensive simulation studies.
The authors would like to acknowledge the review, feedback and
comments from the following people, in alphabetical order:
Roman Danyliw,
Lars Eggert,
Benjamin Kaduk,
Tero Kivinen,
Erik Kline,
Murray Kucherawy,
Warren Kumari,
Francesca Palombini,
Alvaro Retana,
Ines Robles,
John Scudder,
Meral Shirazipour,
Peter Van der Stok,
Eric Vyncke,
and Robert Wilton.
Co-iOAM: In-situ Telemetry Metadata Transport for
Resource Constrained Networks within IETF Standards Framework
Cooja Simulator for Wireless Sensor Networks
(Contiki/Cooja Version 2.7)
The Contiki Open Source OS for the Internet of Things
(Contiki Version 2.7)
Contiki-NG: The OS for Next Generation IoT Devices
(Contiki-NG Version 4.6)
On Link Asymmetry and One-way Estimation in Wireless
Sensor Networks
An empirical study of low-power wireless
An empirical study of asymmetry in low-power wireless links
The combination of Received Signal Strength Indication(downstream)
(RSSI) and Expected Number of Transmissions(upstream) (ETX) has been
tested to determine whether a link is symmetric or asymmetric at
intermediate routers. We present two methods to obtain an ETX value
from RSSI measurement.
In the first method, we constructed a table measuring RSSI vs
ETX using the Cooja simulation
setup in the Contiki OS environment. We used
Contiki-2.7 running 6LoWPAN/RPL protocol stack for the simulations.
For approximating the number of packet drops based on the RSSI values,
we implemented simple logic that drops transmitted packets with certain
pre-defined ratios before handing over the packets to the receiver. The
packet drop ratio is implemented as a table lookup of RSSI ranges
mapping to different packet drop ratios with lower RSSI ranges resulting
in higher values. While this table has been defined for the purpose of
capturing the overall link behavior, it is highly recommended to conduct
physical radio measurement experiments, in general. By keeping the
receiving node at different distances, we let the packets experience
different packet drops as per the described method. The ETX value
computation is done by another module which is part of RPL
Objective Function implementation. Since ETX value is reflective of
the extent of packet drops, it allowed us to prepare a useful
ETX vs RSSI table. ETX versus RSSI values obtained in this way
may be used as explained below:
RSSI at NodeA for NodeBExpected ETX at NodeA for NodeB->NodeA> -60150-70 to -60192-80 to -70226-90 to -80662-100 to -903840One could also make use of the function
guess_etx_from_rssi() defined in the 6LoWPAN/RPL protocol stack of
Contiki-ng OS to obtain RSSI-ETX
mapping. This function outputs ETX value ranging between 128
and 3840 for -60 <= rssi <= -89. The function description
is beyond the scope of this document.
We tested the operations in this specification by making the
following experiment, using the above parameters. In our experiment,
a communication link is considered as symmetric if the ETX value of
NodeA->NodeB and NodeB->NodeA (see ) are
within, say, a 1:3
ratio. This ratio should be understood as determining the
link's symmetric/asymmetric nature. NodeA can typically know
the ETX value in the direction of NodeA -> NodeB but it has no direct
way of knowing the value of ETX from NodeB->NodeA. Using physical
testbed experiments and realistic wireless channel propagation
models, one can determine a relationship between RSSI and ETX
representable as an expression or a mapping table. Such a
relationship in turn can be used to estimate ETX value at nodeA for
link NodeB--->NodeA from the received RSSI from NodeB. Whenever
nodeA determines that the link towards the nodeB is bi-directional
asymmetric then the S bit is set to 0. Afterwards, the link from
NodeA to Destination remains designated as asymmetric and the S bit
remains set to 0.
Determination of asymmetry versus bidirectionality remains a topic
of lively discussion in the IETF.
Note to the RFC Editor: please remove this section before publication.
Provided more details about scenarios naturally supporting
the choice of AODV-RPL as a routing protocol
Added new informative references ,
) that describe the value provided
by peer-to-peer routing.
Requested IANA to allocate a new multicast group to enable
clean separation of AODV-RPL operation from previous
routing protocols in the RPL family.
Cited as the origination of the
definition of DIO
Defined "hop-by-hop route" as a route created using RPL's
storing mode.
Defined new configuration variable REJOIN_REENABLE.
Improved definition for RREQ-InstanceID. Created analogous
definition for RREP-InstanceID=(RPLInstanceID, TargNode_IPaddr)
Improved definition of source routing
Clarified that the Border Router (BR) in
does not imply that AODV does not
a require a BR as a protocol entity.
Provided more guidelines about factors to be considered
by OrigNode when selecting a value for the 'L' field.
Described the disadvantage of not keeping track of the
Address Vector in the RREQ-Instance.
Specified that in non-storing mode an intermediate node has
to record the IP addresses of both incoming and outgoing
interfaces into the Address Vector, when those interfaces have
different IP addresses.
Added three informative references to describe relevant
details about evaluating link assymetry.
Clarified details about Gratuitous RREP.
Changed name of "Shift" field to be the "Delta" field.
Specified that if a node does not have resources, it MUST
drop the RREQ.
Changed name of MaxUseRank to MaxUsefulRank.
Revised a sentence that was not clear about when a TargNode
can delay transmission of the RREP in response to a RREQ.
Provided advice about running AODV-RPL at same time as
P2P-RPL or native RPL.
Small reorganization and enlargement of the description
of Trickle time operation in .
Added definition for "RREQ-InstanceID" to Terminology
section.
Specified that once a node leaves an RREQ-Instance, it MUST
NOT rejoin the same RREQ-Instance.
Defined RREP_WAIT_TIME for asymmetric as well as
symmetric handling of RREP-DIO.
Clarifed link-local multicast transmission to use
link-local multicast group all-RPL nodes.
Identified some security threats more explicitly.
Specified that the pairing between RREQ-DIO and RREP-DIO
happens at OrigNode and TargNode. Intermediate routers do not
necessarily maintain the pairing.
When RREQ-DIO is received with H=0 and S=1, specified that
intermediate routers MAY store symmetric Address Vector
information for possible use when a matchine RREP-DIO is
received.
Specified that AODV-RPL uses the "P2P Route Discovery Mode of
Operation" (MOP == 4), instead of requesting the allocation
of a new MOP. Clarified that there is no conflict with
.
Fixed several important typos and improved language in
numerous places.
Reorganized the steps in the specification for handling RREQ
and RREP at an intermediate router, to more closely follow the
order of processing actions to be taken by the router.
Numerous editorial improvements.
Replace Floor((7+(Prefix Length))/8) by Ceil(Prefix Length/8)
for simplicity and ease of understanding.
Use "L field" instead of "L bit" since L is a two-bit field.
Improved the procedures in section 6.2.1.
Define the S bit of the data structure a router uses to
represent whether or not the RREQ instance is for a symmetric
or an asymmetric route. This replaces text in the document
that was a holdover from earlier versions in which the RREP
had an S bit for that purpose.
Quote terminology from AODV that has been identified as
possibly originating in language reflecting various kinds
of bias against certain cultures.
Clarified the relationship of AODV-RPL to RPL.
Eliminated the "Point-to-Point" terminology to avoid
suggesting only a single link.
Modified certain passages to better reflect the possibility
that a router might have multiple IP addresses.
"Rsv" replaced by "X X" for reserved field.
Added mandates for reserved fields, and replaces some
ambiguous language phraseology by mandates.
Replaced "retransmit" terminology by more correct "propagate"
terminology.
Added text about determining link symmetry near
.
Mandated checking the Address Vector to avoid routing loops.
Improved specification for use of the Delta value in
.
Corrected the wrong use of RREQ-Instance to be RREP-Instance.
Referred to Subregistry values instead of Registry values
in .
Sharpened language in , eliminated
misleading use of capitalization in the words
"Security Configuration".
Added acknowledgements and contributors.
Changed the title for brevity and to remove acronyms.
Added "Note to the RFC Editor" in .
Expanded DAO and P2MP in .
Reclassified and
as Informational.
SHOULD changed to MUST in
and .
Several editorial improvements and clarifications.
Removed section "Link State Determination" and put some of the
relevant material into .
Cited security section of as part of
the RREP-DIO message description in .
SHOULD has been changed to MUST in .
Expanded the terms ETX and RSSI in .
has been expanded to provide
a more precise explanation of the handling of route reply.
Added in the Security Considerations
() for RPL security threats.
Cited for authenticated
mode of operation.
Appendix A has been mostly re-written to describe methods
to determine whether or not the S bit should be set to 1.
For consistency, adjusted several mandates from SHOULD to MUST
and from SHOULD NOT to MUST NOT.
Numerous editorial improvements and clarifications.
Instead of describing the need for routes to
"fulfill the requirements", specify that routes need to
"satisfy the Objective Function".
Removed all normative dependencies on
Rewrote to avoid duplication of language
in cited specifications.
Added a new section "Link State Determination"
with text and citations to
more fully describe how implementations determine whether
links are symmetric.
Modified text comparing AODV-RPL to other protocols to
emphasize the need for AODV-RPL instead of the problems with
the other protocols.
Clarified that AODV-RPL uses some of the base RPL specification
but does not require an instance of RPL to run.
Improved capitalization, quotation, and spelling variations.
Specified behavior upon reception of a RREQ-DIO or RREP-DIO
message for an already existing DODAGID
(e.g, ).
Fixed numerous language issues in IANA Considerations
.
For consistency, adjusted several mandates from SHOULD to MUST
and from SHOULD NOT to MUST NOT.
Numerous editorial improvements and clarifications.
Added definitions for all fields of the ART option
(see ). Modified definition of
Prefix Length to prohibit Prefix Length values greater
than 127.
Modified the language from
Target Option definition so that the trailing zero bits
of the Prefix Length are no longer described as "reserved".
Reclassified and
as Informative.
Added citation for to Terminology
section.
Added Security Considerations based on the security
mechanisms defined in .
Clarified the nature of improvements due to P2P route
discovery versus
bidirectional asymmetric route discovery.
Editorial improvements and corrections.
Add description for sequence number operations.
Extend the residence duration L in section 4.1.
Change AODV-RPL Target option to ART option.
Updated RREP option format. Remove the T bit in RREP option.
Using the same RPLInstanceID for RREQ and RREP,
no need to update .
Explanation of Delta field in RREP.
Multiple target options handling during transmission.
Include the support for source routing.
Import some features from , e.g.,
choice between hop-by-hop and source routing, the L field
which determines the duration of residence in the DAG,
RankLimit, etc.
Define new target option for AODV-RPL, including the
Destination Sequence Number in it. Move the TargNode address
in RREQ option and the OrigNode address in RREP option into
ADOV-RPL Target Option.
Support route discovery for multiple targets in one RREQ-DIO.
New RPLInstanceID pairing mechanism.
Abdur Rashid Sangi
Huaiyin Institute of Technology
No.89 North Beijing Road, Qinghe District
Huaian 223001
P.R. China
Email: sangi_bahrian@yahoo.com Malati Hegde
Indian Institute of Science
Bangalore 560012
India
Email: malati@iisc.ac.in Mingui Zhang
Huawei Technologies
No. 156 Beiqing Rd. Haidian District
Beijing 100095
P.R. China
Email: zhangmingui@huawei.com