One document matched: draft-ietf-roll-of0-12.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc subcompact="no"?>
<?rfc authorship="yes"?>
<?rfc tocappendix="yes"?>
<rfc category="std" docName="draft-ietf-roll-of0-12" ipr="trust200902">
<front>
<title abbrev="draft-ietf-roll-of0">RPL Objective Function 0</title>
<author fullname="Pascal Thubert" initials="P" role="editor"
surname="Thubert">
<organization abbrev="Cisco Systems">Cisco Systems</organization>
<address>
<postal>
<street>Village d'Entreprises Green Side</street>
<street>400, Avenue de Roumanille</street>
<street>Batiment T3</street>
<city>Biot - Sophia Antipolis</city>
<code>06410</code>
<country>FRANCE</country>
</postal>
<phone>+33 497 23 26 34</phone>
<email>pthubert@cisco.com</email>
</address>
</author>
<date />
<area>Routing Area</area>
<workgroup>ROLL</workgroup>
<keyword>Draft</keyword>
<abstract>
<t>The Routing Protocol for Low Power and Lossy Networks (RPL)
specification defines a generic Distance Vector protocol that is
adapted to a variety of networks types by the application of a
specific Objective Function.
<!-- This document specifies a basic Objective Function that
relies only on the Protocol Data Units defined for the RPL
generic protocol, as opposed to extensions such as RPL
metric containers.
-->
This document specifies a basic Objective Function that relies only on
the objects that are defined in RPL and does not use any extension.
</t>
</abstract>
<note title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref
target="RFC2119">RFC 2119</xref>.</t>
</note>
</front>
<middle>
<section title="Introduction">
<!-- t>The IETF ROLL Working Group has defined
application-specific routing requirements for a Low Power and Lossy
Network (LLN) routing protocol, specified in
<xref target="RFC5548"></xref>,
<xref target="RFC5673"></xref>,
<xref target="RFC5826"></xref>, and
<xref target="RFC5867"></xref>.
</t -->
<t>
<xref target="I-D.ietf-roll-rpl"> The Routing Protocol for Low Power and Lossy Networks </xref>
was designed as a generic core that is agnostic to metrics and that is adapted to a given problem
using Objective Functions (OF). This separation of Objective Functions from
the core protocol specification allows RPL to adapt to meet the different optimization
criteria required by the wide range of use cases.</t>
<t>RPL forms Destination Oriented Directed Acyclic Graphs (DODAGs) within instances of the protocol.
Each instance is associated with a specialized Objective Function. A DODAG is periodically
reconstructed in a new Version to enable a global reoptimization of the graph.</t>
<t>An Objective Function selects the DODAG Version that a device joins within an instance,
and a number of neighbor routers within that DODAG Version as parents or feasible successors.
The OF generates the Rank of the device, that represents an abstract distance to the root within the DODAG.
In turn, the Rank is used by the generic RPL core to avoid loops
and verify forward progression towards a destination, as specified in <xref target="I-D.ietf-roll-rpl"/>.</t>
<t> The Objective Function 0 (OF0) operates on parameters that are obtained from provisionning,
the RPL DODAG Configuration option and the RPL DIO base container
<xref target="I-D.ietf-roll-rpl"/>.
</t>
<t>
The Rank of a node is obtained by adding a normalized scalar, rank_increase,
to the Rank of a selected preferred parent. The rank_increase can vary with a ratio
from 1 ( excellent) to 9 (worst acceptable) to represent the link properties.
<!--
Though a Rank value is represented as 2 octets, OF0 with default settings uses
increments of 0x100 so that the value can be stored in one octet, and
allows to encode a minimum of 28 hops and a maximum of 255 hops.
--> As a result,
OF0 with default settings allows to encode a minimum of 28 (worst acceptable) hops and a
maximum of 255 (excellent) hops.
</t>
<!-- t>
How the link properties are transformed into a step_of_rank for a given hop
depends on the link type and on the implementation. It can be as simple as an administrative cost,
but might also derive from a statistical metric with some hysteresis.</t -->
<t>
Since there is no default OF or metric container in the RPL main specification, it might
happen that, unless two given implementations follow the same guidance for a specific problem
or environment, those implementations will not support a common OF with which they could interoperate.
</t>
<t>OF0 is designed as a default OF that will allow interoperation between implementations in a wide spectrum of use cases.
<!-- that are not specifically designed to
apply to a given case for which further guidance is provided. -->
This is why it is not specific as to how the link properties are transformed into a rank_increase
and leaves that responsibility to the implementation;
rather, OF0 enforces normalized values for the rank_increase of a normal link and its acceptable range,
as opposed to formulating the details of its computation.
This is also why OF0 ignores metric containers.
</t>
<!-- t>
Indeed, it is the general design in RPL that the metrics are passed from parent to children in
a specific container and that the OF will derive the Rank from the natural metric.
The separation of Rank and metrics avoids a loss of information as the various metrics are propagated down the DAG.
This specification can be used when the link properties that are considered are
such that they can be turned in a scalar step_of_rank in a reversible fashion and the resulting
step_of_rank is additive over multiple hops. </t -->
</section>
<section anchor="Terminology" title="Terminology">
<t>The terminology used in this document is consistent with and
incorporates that described in `Terminology in Low power And Lossy
Networks' <xref target="I-D.ietf-roll-terminology"></xref>
and <xref target="I-D.ietf-roll-rpl"/>.</t>
<t>The term feasible successor is used to refer to a neighbor that can possibly be used as
a next-hop for upwards traffic following the loop avoidance and forwarding rules that
the nodes implements and that
are defined in the RPL specification <xref target="I-D.ietf-roll-rpl"/>.
</t>
</section>
<!--
<section title="Objective Functions">
<t>An Objective Function (OF) allows for the selection of a DAG to
join, and a number of peers in that DAG as parents. The OF is used
to compute an ordered list of parents and provides load balancing
guidance. The OF is also responsible to compute the Rank of the
device within the DAG.</t>
<t><xref target="I-D.ietf-roll-rpl"/> defines the operation of RPL
and the generic interfaces that all OFs need to implement. OF0
does not require additional headers and is implemented using
only the information in the DIO Base.</t>
<t>The Objective Function is specified in the RA-DIO message using
an objective code point (OCP) and indicates the objective function
that has been used to compute the DAG (e.g. "minimize the path cost
using the ETX metric and avoid `Blue' links"). The objective code
points are specified in <xref
target="I-D.ietf-roll-routing-metrics" />. This document specifies
the OCP 0, in support of default operation.</t>
<t>OFO follows the same abstract behavior specified in < xref
target="I-D.ietf-roll-rpl" />: </t>
<list style="symbols">
<t>The parent selection is triggered each time an event indicates
that a potential next_hop information is updated. This might
happen upon the reception of a RA-DIO message, a timer elapse, or
a trigger indicating that the state of a candidate neighbor has
changed.</t>
<t>An OF scans all the interfaces on the device. Although there
may typically be only one interface in most application scenarios,
there might be multiple of them and an interface might be
configured to be usable or not for RPL operation. An interface can
also be configured with a preference or dynamically learned to be
better than another by some heuristics that might be link-layer
dependent and are out of scope. Finally an interface might or not
match a required criterion for an Objective Function, for instance
a degree of security. As a result some interfaces might be
completely excluded from the computation, while others might be
more or less preferred.</t>
<t>The OF scans all the candidate neighbors on the possible
interfaces to check whether they can act as an attachment router
for a DAG. There might be multiple of them and a candidate
neighbor might need to pass some validation tests before it can be
used. In particular, some link layers require experience on the
activity with a router to enable the router as a next_hop.</t>
<t>The OF computes self's Rank by adding the step_of_rank to that
candidate to the Rank of that candidate. The step_of_rank is
estimated as follows:</t>
<list style="symbols">
<t>The step_of_rank might vary from MINIMUM_STEP_OF_RANK to
MAXIMUM_STEP_OF_RANK.
</t>
<list style="symbols">
<t>MINIMUM_STEP_OF_RANK indicates a unusually good link, for instance a link
between powered devices in a mostly battery operated
environment.</t>
<t>DEFAULT_STEP_OF_RANK indicates a `normal'/typical link, as qualified by the
implementation.</t>
<t>MAXIMUM_STEP_OF_RANK indicates a link that can hardly be used to forward any
packet, for instance a radio link with quality indicator or
expected transmission count that is close to the acceptable
threshold.</t>
</list>
<t>Candidate neighbors that would cause self's Rank to increase
are ignored</t>
</list>
<t>Candidate neighbors that advertise an OF incompatible with the
set of OF specified by the policy functions are ignored.</t>
<t>As it scans all the candidate neighbors, the OF keeps the
current best parent and compares its capabilities with the current
candidate neighbor. The OF defines a number of tests that are
critical to reach the Objective. A test between the routers
determines an order relation.</t>
<list style="symbols">
<t>If the routers are roughly equal for that relation then the
next test is attempted between the routers,</t>
<t>Else the best of the 2 becomes the current best parent and
the scan continues with the next candidate neighbor</t>
<t>Some OFs may include a test to compare the Ranks that would
result if the node joined either router</t>
</list>
<t>When the scan is complete, the preferred parent is elected and
self's Rank is computed as the preferred parent Rank plus the step
in Rank with that parent.</t>
<t>Other rounds of scans might be necessary to elect alternate
parents and siblings. In the next rounds:</t>
<list style="symbols">
<t>Candidate neighbors that are not in the same DAG are
ignored</t>
<t>Candidate neighbors that are of worse Rank than self are
ignored</t>
<t>Candidate neighbors of a better Rank than self (non-siblings)
are preferred</t>
</list>
</list>
</section>
-->
<!--
<t>This document specifies a default objective metric, called OF0,
and using the OCP 0. OF0 is the default objective function of RPL,
and can be used if allowed by the policy of the processing node when
no objective function is included in the RA-DIO message, or if the
OF indicated in the RA-DIO message is unknown to the node. If not
allowed, then the RA-DIO message is simply ignored and not processed
by the node.</t>
-->
<section title="Objective Function 0 Overview">
<t>The RPL specification describes constraints on how nodes select
potential parents, called a parent set, from their neighbors.
All parents are feasible successors for upgoing traffic (towards
the root). Additionally, RPL allows the use of parents in a
subsequent Version of a same DODAG as feasible successors, in which
case this node acts as a leaf in the subsequent DODAG Version.
<!--
Further specifications might extend the set of feasible successors,
for instance to nodes of a same Rank, aka siblings.
-->
</t>
<t> The Goal of the OF0 is for a node to join a DODAG Version that
offers good enough connectivity to a specific set of nodes or to
a larger routing infrastructure though there is no guarantee
that the path will be optimized according to a specific metric.
For the purpose of OF0, Grounded thus means that the root
provides such connectivity. How that connectivity is asserted
and maintained is out of scope.</t>
<t>Objective Function 0 is designed to find the nearest Grounded
root. This can be achieved if the Rank of a node represents closely
its distance to the root. This need is balanced with the
other need of maintaining some path diversity, which may be achieved
by increasing the Rank.
In the absence of a Grounded root, LLN inner connectivity
is still desirable and floating DAGs will form, rooted at the
nodes with the highest administrative preference.</t>
<t>OF0 selects a preferred parent and a backup feasible successor if one is
available. All the upward traffic is normally routed via the preferred parent
with no attempt to perform any load balancing.
When the link conditions do not let an upward packet through the preferred parent,
the packet is passed to the backup feasible successor.</t>
<t>OF0 assigns a rank_increase to each link to another node that it monitors.
Though the exact method for computing the rank_increase is implementation-dependent,
the computation must follow the rules that are specified in <xref target="comprank"/>.
<!-- This step_of_rank can be augmented by a configurable stretch_of_rank
to enable the node to obtain an alternate feasible successor.
A configurable rank_factor can be used to multiply the effect of the
resulting value in the rank_increase computation. If the rank_increase
is computed from a step_of_rank Sp to a given parent,
a stretch_of_rank Sr, and a rank_factor F, then the increase I is:
I = F * (Sp + Sr).
-->
</t>
</section>
<section title="OF0 operations">
<section anchor="comprank" title="Computing Rank">
<t>An OF0 implementation first computes a step_of_rank associated with a given
parent from relevant link properties and metrics. </t>
<t>Computing a step_of_rank based on a static metric such as an
administrative cost implies that the OF0 implementation
only considers parents with good enough connectivity, <!--for instance
neighbors that are reachable over an Ethernet link, or a WIFI link in
infrastructure mode, -->and results in a Rank that is analoguous to hop-count.
In most LLNs, this favors paths with less but longer hops of poorer connectivity;
it is thus recommended to base the computation of the step_of_rank
on dynamic link properties such as the expected transmission count metric (ETX)
<xref target="DeCouto03"/>. The
<xref target="I-D.ietf-roll-minrank-hysteresis-of">
Minimum Rank Objective Function with Hysteresis </xref>
provides guidance on how link cost can be computed and on how
hysteresis can improve Rank stability.</t>
<t>
An implementation MAY allow to stretch the step_of_rank with a stretch_of_rank
up to no more than MAXIMUM_RANK_STRETCH in order to enable the selection of at
least one feasible successor and thus maintain path diversity.
The use of a stretch_of_rank is not recommended as it augments the apparent
distance from the node to the root, distorts the DODAG from the optimal
shape and may cause instabilities due to greedy behaviours whereby
depending nodes augment their Ranks to use each other as parents in a loop.
An implementation MUST maintain the stretched step_of_rank between
MINIMUM_STEP_OF_RANK and MAXIMUM_STEP_OF_RANK, which allows to reflect a
large variation of link quality.</t>
<t>The gap between MINIMUM_STEP_OF_RANK and MAXIMUM_RANK_STRETCH
may not be sufficient in every case to strongly distinguish links of different
types or categories in order to favor, say, powered over battery-operated or wired
over wireless, within a same DAG. </t>
<t>An implementation SHOULD allow a configurable factor
called rank_factor and to apply the factor on all links and peers.
</t>
<t>An implementation MAY recognize categories of peers and links,
such as different MAC types, in which case it SHOULD be able to configure a more
specific rank_factor to those categories.
The rank_factor SHOULD be set between MINIMUM_RANK_FACTOR and MAXIMUM_RANK_FACTOR.
</t>
<t>The rank_increase is expressed in units of MinHopRankIncrease, which defaults to
DEFAULT_MIN_HOP_RANK_INCREASE; with that setting, the least significant octet
in the RPL Rank is not used.
</t>
<t>The step_of_rank Sp that is computed for that link is multiplied by the
rank_factor Rf and then possibly stretched by a stretch_of_rank Sr.
The resulting rank_increase is added
to the Rank of preferred parent R(P) to obtain that of this node R(N):
</t>
<t> R(N) = R(P) + rank_increase where: </t>
<t> rank_increase = (Rf*Sp + Sr) * MinHopRankIncrease
</t>
<t>Optionally, the administrative preference of a root MAY be configured
to supersede the goal to join a Grounded DODAG. In that case, nodes will
associate to the root with the highest preference available, regardless
of whether that root is Grounded or not. Compared to a deployment with
a multitude of Grounded roots that would result in a same multitude of DODAGs,
such a configuration may result in possibly less but larger DODAGs, as many as
roots configured with the highest priority in the reachable vicinity.</t>
</section>
<section title="Feasible successors selection">
<section title="Selection of the Preferred Parent">
<t>As it scans all the candidate neighbors, OF0 keeps the parent that is
the best for the following criteria (in order):
<list style="numbers">
<t><xref target="I-D.ietf-roll-rpl"/> section 8 spells out the generic
rules for a node to reparent and in particular the boundaries
to augment its Rank within a DODAG Version.
A candidate that would not satisfy those rules MUST NOT be considered.</t>
<t>An implementation should validate a router prior to selecting it
as preferred. This validation process is implementation and link type
dependent, and is out of scope. A router that succeeded that
validation process is preferable.</t>
<t>When multiple interfaces are available,
a policy might be locally configured to order them and that
policy applies first;
that is a router on a higher order interface in the policy
is preferable.</t>
<t>If the administrative preference of the root is configured to
supersede the goal to join a Grounded DODAG,
a router that offers connectivity to a more preferable root SHOULD be
preferred.</t>
<t>A router that offers connectivity to a grounded DODAG Version SHOULD be
preferred over one that does not.</t>
<t>A router that offers connectivity to a more preferable root SHOULD be
preferred.</t>
<t>When comparing 2 parents that belong to the same DODAG, a router that
offers connectivity to the most recent DODAG Version SHOULD be preferred.</t>
<t>The parent that causes the lesser resulting Rank
for this node, as specified in <xref target="comprank"/>,
SHOULD be preferred.</t>
<t>A DODAG Version for which there is an alternate parent SHOULD be preferred.
This check is optional. It is performed by computing the
backup feasible successor while assuming that the router that is currently examined
is finally selected as preferred parent.</t>
<!-- t>The DODAG Version that was in use already SHOULD be preferred.</t -->
<t>The preferred parent that was in use already SHOULD be preferred.</t>
<t>A router that has announced a DIO message more recently SHOULD be preferred.</t>
</list>
</t>
</section>
<section title="Selection of the backup feasible successor">
<t>When selecting a backup feasible successor, the OF performs in order the
following checks:
<list style="numbers">
<t>When multiple interfaces are available,
a router on a higher order interface is preferable.</t>
<t>The backup feasible successor MUST NOT be the preferred parent.</t>
<t>
The backup feasible successor MUST be either in the same DODAG Version as
this node or in an subsequent DODAG Version.</t>
<t>Along with RPL rules, a Router in the same DODAG Version as
this node and with a Rank that is higher than the Rank
computed for this node MUST NOT be selected as a feasible successor.
<!--
Further specifications might allow a node of a same Rank as a feasible successor.
Further specifications might extend the set of feasible successors,
for instance to nodes of a same Rank, aka siblings.It MAY still be selected as sibling if no better Back-up next hop is found. -->
</t>
<t>A router with a lesser Rank SHOULD be preferred.</t>
<t>A router that has been validated as usable by an implementation-dependant
validation process SHOULD be preferred.</t>
<t>The backup feasible successor that was in use already SHOULD be preferred.</t>
</list>
</t>
</section>
</section>
</section>
<section anchor="API" title="Abstract Interface with RPL core">
<t>Objective Function 0 interacts with the RPL core in the following ways:
<list
style="hanging">
<t hangText="Processing DIO:">When a new DIO is received,
the RPL core calls the OF that corresponds to the Objective Code Point
OCP) in the DIO . OF0 corresponds to the OCP 0 (to be validated by IANA).</t>
<t hangText="Providing DAG information:">The OF0 support
provides an interface that returns information about a given instance.
This includes material from the DIO base header, the role (router, leaf),
and the Rank of this node.</t>
<!-- t>
hangText="Generating Options">The OF0 support can be required to
provide the material that is necessary to build a DIO option.</t -->
<t hangText="Providing a Parent List:"> The OF0 support
provide an interface that returns the ordered list of the parents and feasible
successors for a given instance to the RPL core.
This includes the material that is contained in the transit option for
each entry.</t>
<t hangText="Calling back:">The RPL core provides a call back interface for the
OF0 support to inform it that a change in DAG information or Parent List as occurred.
This can be caused by an interaction with another system component such
as configuration, timers, and device drivers, and the change may cause the
RPL core to fire a new DIO
or reset trickle timers.</t>
</list>
</t>
</section>
<section anchor="constvarpar" title="OF0 Operands">
<section anchor="var" title="Variables">
<t>OF0 uses the following variables:
<list style="hanging">
<t hangText="step_of_rank (unsigned integer):">an intermediate computation based on the link
properties with a certain neighbor.</t>
<t hangText="rank_increase (unsigned integer):">delta between the Rank of the preferred parent and self
</t>
</list></t>
</section>
<section anchor="parms" title="Configurable parameters">
<t>OF0 can use the following optional parameters:
<list style="hanging">
<t hangText="stretch_of_rank (unsigned integer):">an optional augmentation to
the step-of-rank
of the preferred parent to allow the selection of additional parents.</t>
<t hangText="rank_factor (unsigned integer):">A configurable factor that is used
to multiply the effect of the link properties in the rank_increase computation.</t>
</list></t>
</section>
<section anchor="consts" title="Constants">
<t> OF0 fixes the following constants:
<list style="hanging">
<t hangText="DEFAULT_MIN_HOP_RANK_INCREASE:">256</t>
<t hangText="DEFAULT_STEP_OF_RANK:">3</t>
<t hangText="MINIMUM_STEP_OF_RANK:">1</t>
<t hangText="MAXIMUM_STEP_OF_RANK:">9</t>
<t hangText="DEFAULT_RANK_STRETCH:">0</t>
<t hangText="MAXIMUM_RANK_STRETCH:">5</t>
<t hangText="DEFAULT_RANK_FACTOR:">1</t>
<t hangText="MINIMUM_RANK_FACTOR:">1</t>
<t hangText="MAXIMUM_RANK_FACTOR:">4</t>
</list></t>
</section>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>This specification requires the assignment of a RPL
Objective Code Point (OCP) for OF0. The value of 0 is suggested.</t>
</section>
<section anchor="Sec" title="Security Considerations">
<t>Security Considerations for OCP/OF are to be developed in accordance
with recommendations laid out in, for example, <xref
target="I-D.tsao-roll-security-framework"></xref>.</t>
</section>
<section anchor="Acknowledgements" title="Acknowledgements">
<t>Most specific thanks to Philip Levis and Phoebus Chen for their help
in finalizing this document.</t><t>
Many thanks also to Tim Winter, JP Vasseur, Julien Abeille, Mathilde
Durvy, Teco Boot, Navneet Agarwal and Henning Rogge for in-depth review and first
hand implementer's feedback.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
</references>
<references title="Informative References">
<!-- 5867?rfc include='reference.I-D.draft-ietf-roll-building-routing-reqs-07.xml'? -->
<!-- 5826?rfc include='reference.I-D.draft-ietf-roll-home-routing-reqs-08.xml'? -->
<?rfc include='reference.I-D.ietf-roll-rpl.xml'?>
<?rfc include='reference.I-D.ietf-roll-terminology.xml'?>
<!--
<?rfc include="reference.RFC.5548"?>
<?rfc include="reference.RFC.5826"?>
<?rfc include="reference.RFC.5867"?>
<?rfc include="reference.RFC.5673"?>
<?rfc include='reference.I-D.ietf-roll-routing-metrics.xml'?>
-->
<?rfc include='reference.I-D.tsao-roll-security-framework.xml'?>
<?rfc include="reference.I-D.ietf-roll-minrank-hysteresis-of"?>
<reference anchor="DeCouto03"
target="http://pdos.csail.mit.edu/papers/grid:mobicom03/paper.pdf">
<front>
<title abbrev="DeCouto03">
A High-Throughput Path Metric for Multi-Hop Wireless Routing
</title>
<author fullname="Douglas S. J. De Couto" surname="De Couto"> </author>
<author fullname="Daniel Aguayo" surname="Aguayo"> </author>
<author fullname="John Bicket" surname="Bicket"> </author>
<author fullname="Robert Morris" surname="Morris"> </author>
<date year="2003" />
</front>
<seriesInfo name="MobiCom '03"
value="The 9th ACM International Conference on Mobile
Computing and Networking, San Diego, California," />
<format target="http://pdos.csail.mit.edu/papers/grid:mobicom03/paper.pdf"
type="HTML" />
</reference>
<!--
<?rfc include="reference.RFC.2453"?>
<?rfc include="reference.RFC.3819"?>
<?rfc include="reference.RFC.4101"?>
<?rfc include="reference.RFC.4191"?>
<?rfc include="reference.RFC.4461"?>
<?rfc include="reference.RFC.4861"?>
<?rfc include="reference.RFC.4875"?>
<?rfc include="reference.RFC.4915"?>
<?rfc include="reference.RFC.5120"?>
<?rfc include="reference.I-D.draft-ietf-bfd-base-09.xml"?>
<?rfc include="reference.I-D.draft-ietf-manet-nhdp-10.xml"?>
<reference anchor="Levis08"
target="http://portal.acm.org/citation.cfm?id=1364804">
<front>
<title abbrev="Levis08">The Emergence of a Networking Primitive in
Wireless Sensor Networks</title>
<author fullname="Philip Levis" initials="P." surname="Levis">
<organization></organization>
</author>
<author fullname="Eric Brewer" initials="E." surname="Brewer">
<organization></organization>
</author>
<author fullname="David Culler" initials="D." surname="Culler">
<organization></organization>
</author>
<author fullname="David Gay" initials="D." surname="Gay">
<organization></organization>
</author>
<author fullname="Samuel Madden" initials="S." surname="Madden">
<organization></organization>
</author>
<author fullname="Neil Patel" initials="N." surname="Patel">
<organization></organization>
</author>
<author fullname="Joe Polastre" initials="J." surname="Polastre">
<organization></organization>
</author>
<author fullname="Scott Shenker" initials="S." surname="Shenker">
<organization></organization>
</author>
<author fullname="Robert Szewczyk" initials="R." surname="Szewczyk">
<organization></organization>
</author>
<author fullname="Alec Woo" initials="A." surname="Woo">
<organization></organization>
</author>
<date month="July" year="2008" />
</front>
<seriesInfo name="Communications of the ACM," value="v.51 n.7" />
<format target="http://portal.acm.org/citation.cfm?id=1364804"
type="HTML" />
</reference>
-->
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-23 03:36:01 |