Eeny, Meeny, Miney Moe: choosing the right low power wireless sensor network protocol: Part 3
The three most notable additions to the 802.15.4 protocol are the
mesh routing algorithms, a strong security implementation, and
application-level abstractions enabling powerful associations of
devices and interoperable "application profiles" within the target
market sectors.
The mesh routing algorithm for a ZigBee network makes it an
extremely reliable method of delivering data from one End Device on the
network to another. Aside from optional end-to-end acknowledgements,
which ensure the delivery of a packet within the network, ZigBee
defines algorithms for route discovery that enable the ability to
communicate around a failed node, known as ZigBee's self-healing
feature for communications.
A route discovery is a shortest-path algorithm that can be initiated
by any router device and is always performed in regard to a particular
destination. This can be calculated due to the fact that each node
constantly keeps track of "link costs" to all of its neighboring
devices where a link cost is a measure of signal strength of a received
signal. Adding up the link costs for all the links along a route
results in a "route cost" and can be derived for every route in the
network.
A node will request a route discovery by broadcasting a Route
Request (RREQ) packet to its neighbors for a certain destination. Every
time a node receives a RREQ, it adds its link cost to the route cost
and in turn re-broadcasts the RREQ. This repeats until all the RREQs
reach the destination device.
The destination device then selects the RREQ packet with the lowest
route cost and broadcasts a Route Reply. As the RREP packets travels
back to the source, all intermediate nodes update their routing tables
to indicate the route to the destination.
In this manner, a node can lose connectivity to its next hop and
send a Route Error (RERR) packet to the network so that the next time
someone attempts to send it a message, a new route discovery can be
initiated.
ZigBee implements extensive security measures. There are three
security keys, a master key for long-term security, a network key to
join the network, and an encryption key for peer to peer communication.
Encryption is executed using the AES-128 bit encryption standard.
As a check for message integrity, ZigBee uses a MIC-128, or Message
Integrity Code. Using the coordinator as a trust center to manage all
security from a single node, the network can also choose to update the
symmetric encryption keys periodically, maintaining secure
communication indefinitely.
The application-level abstraction, however, may be ZigBee's most
competitive feature. Each node can be abstracted to maintain up to 270
"endpoints," or applications. Each one of these endpoints could
represent, for example, a light switch, or a light bulb (light bulb 01,
light bulb 02, etc...). Each endpoint can accept any type of data in or
send any type of data out.
A single descriptor of that data, being output by one endpoint and
input to another, is referred to as a Cluster. To remain consistent
with the light bulb example, assume the state of a light switch, which
will be named "light_status_on_off", is one of these data descriptors
called a Cluster. Each endpoint can then be described by its endpoint
ID (1 " 270) and its list of Clusters (data types that it will receive
or transmit).
A logical binding (Figure 11 below)
can then be made from one to one or one to many endpoints whose
Clusters match. In this example, one light switch can be logically
bound to any and all light bulbs that are described as supporting the
light_status_on_off Cluster. This application level binding allowing a
one-to-one or one-to-many is a powerful feature of the ZigBee protocol.
 |
| Figure
11--The binding table in ZigBee can be used to change controls on the
fly |
If the ZigBee Alliance were then to define a list of Clusters, as
well as define the method of interpretation of the Clusters flowing
between endpoints, then it could specify the standard for specific
applications (like light switch / light bulb), regardless of the
hardware used to implement the application.
The ZigBee Alliance has done just that, calling these standards
application profiles, making applications from different vendors
completely interoperable, and allowing the market to compete as a whole
within the target market sectors of ZigBee low-power wireless networks.
If interoperability is not the intent of the designer, the ZigBee
Alliance also offers the opportunity to define company-specific
application profiles that are not shared with the general public.
Zigbee PRO
For the sake of brevity, while there are other features that a ZigBee
implementation, they will not be discussed here in detail, including
group addressing, frequency agility, automatic re-joins on session
failure, and the series of additional features offered by the latest
incarnation of the protocol, ZigBee 2007 (also referred to as ZigBee
PRO).
ZigBee PRO is essentially the ZigBee standard, but edited with
additional features to optimize support for very large network
integration. More information can be found on the ZigBee Alliance's
website at www.zigbee.org.
Drawbacks of the Zigbee protocol
The drawbacks to designing a product using the ZigBee protocol include
the cost associated with developing a ZigBee product, incurred through
a yearly membership fee paid to the ZigBee alliance and the cost to
certify the product as ZigBee compliant, as well as for the memory
footprint of the protocol itself.
The ZigBee protocol is loaded with features that are difficult to
leverage in full in every application, requiring additional memory
resources that would have been designed out given a customized
solution. In some cases, the memory and resource requirements can even
be restrictive to the end-application.
For this reason, some companies have released radios with integrated
MCUs that come pre-loaded with the ZigBee software stack, and whose
operation is controlled by a small set of API calls on another,
application-centric MCU.
Using SPI communication to update the ZigBee chip's configuration,
the application MCU is free from the protocol's memory and resource
requirements and can efficiently address other application
responsibilities.