INTERNET-DRAFT Zygmunt J. Haas, Cornell University
Marc R. Pearlman, Cornell University
Expires in six months on September 2000 March 2000
The Zone Routing Protocol (ZRP) for Ad Hoc Networks
<draft-ietf-manet-zone-zrp-03.txt>
Status of this Memo
This document is an Internet-Draft and is NOT offered in accordance
with Section 10 of RFC2026, and the author does not provide the IETF
with any rights other than to publish as an Internet-Draft.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference material
or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Distribution of this memo is unlimited.
Abstract
This document describes the Zone Routing Protocol (ZRP), a hybrid
routing protocol suitable for a wide variety of mobile ad-hoc
networks, especially those with large network spans and diverse
mobility patterns. Each node proactively maintains routes within a
local region (referred to as the routing zone). Knowledge of the
routing zone topology is leveraged by the ZRP to improve the
efficiency of a reactive route query/reply mechanism. The proactive
maintenance of routing zones also helps improve the quality of
discovered routes, by making them more robust to changes in network
topology. The ZRP can be configured for a particular network by
proper selection of a single parameter, the routing zone radius.
Haas, Pearlman Expires September 2000 [Page i]
INTERNET DRAFT The Zone Routing Protocol March 2000
Contents
Status of this Memo . . . . . . . . . . . . . . . . . . . . . . i
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Applicability Statement . . . . . . . . . . . . . . . . . . . iii
A. Networking Context . . . . . . . . . . . . . . . . . iii
B. Protocol Characteristics and Mechanisms . . . . . . . iii
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 1
2. Overview of the Zone Routing Protocol . . . . . . . . . . . 2
2.1 Routing Zones, Extended Routing Zones,
and the Intrazone Routing Protocol (IARP) . . . . . . 2
2.2 The Interzone Routing Protocol (IERP) . . . . . . . . 3
2.2.1 Routing Zone Based Route Discovery . . . . . . 4
2.2.2 Route Accumulation Procedure . . . . . . . . . 5
2.2.3 Query Control Mechanisms . . . . . . . . . . . 6
2.2.4 Route Maintenance . . . . . . . . . . . . . . . 6
3. The ZRP Architecture . . . . . . . . . . . . . . . . . . . 7
4. Implementation Details . . . . . . . . . . . . . . . . . . 8
4.1 Intrazone Routing Protocol (IARP) -- Link State . . . 8
A. Packet Format . . . . . . . . . . . . . . . . . . 9
B. Data Structures . . . . . . . . . . . . . . . . . 10
C. Interfaces . . . . . . . . . . . . . . . . . . . . 12
D. State Machine . . . . . . . . . . . . . . . . . . 13
E. Pseudocode Implementation . . . . . . . . . . . . 14
4.2 Interzone Routing Protocol (IERP) . . . . . . . . . . 18
A. Packet Format . . . . . . . . . . . . . . . . . . 19
B. Data Structures . . . . . . . . . . . . . . . . . 22
C. Interfaces . . . . . . . . . . . . . . . . . . . . 23
D. State Machine . . . . . . . . . . . . . . . . . . 23
E. Pseudocode Implementation . . . . . . . . . . . . 25
4.3 Bordercast Resolution Protocol (BRP) . . . . . . . . . 30
A. Packet Format . . . . . . . . . . . . . . . . . . 30
B. Data Structures . . . . . . . . . . . . . . . . . 31
C. Interfaces . . . . . . . . . . . . . . . . . . . . 32
D. State Machine . . . . . . . . . . . . . . . . . . 32
E. Pseudocode Implementations . . . . . . . . . . . . 34
5. Other Considerations . . . . . . . . . . . . . . . . . . . 37
5.1 Sizing the Routing Zone . . . . . . . . . . . . . . . 37
5.2 Hierarchical Routing and the ZRP . . . . . . . . . . . 37
6. References . . . . . . . . . . . . . . . . . . . . . . . . 39
7. Draft Modifications . . . . . . . . . . . . . . . . . . . . 40
Authors' Information . . . . . . . . . . . . . . . . . . . . . 41
MANET Contact Information . . . . . . . . . . . . . . . . . . . 41
Haas, Pearlman Expires September 2000 [Page ii]
INTERNET DRAFT The Zone Routing Protocol March 2000
Applicability Statement
A. Networking Context
The hybrid Zone Routing Protocol (ZRP) can adapt to a wide variety of
network scenarios by adjusting the range of the nodes' proactively
maintained routing zones. Large routing zones are preferred when
demand for routes is high and/or the network consists of many slowly
moving nodes. In the extreme case of a network with fixed topology,
the ideal routing zone radius would be infinitely large. (Consider
the purely proactive routing protocols used on the fixed Internet).
On the other hand, smaller routing zones are appropriate in
situations where route demand is low and/or the network consists of a
small number of nodes that move fast relative to one another. In the
"worst case", a routing zone radius of one hop is best, and the ZRP
defaults to a traditional reactive flooding protocol.
When the ZRP is properly configured for a particular network scenario,
it can perform at least as well as (and often better than) its purely
proactive and reactive constituent protocols. In situations where
the network behavior varies across different regions, the ZRP
performance can be fine-tuned by individual adjustment of each node's
routing zone.
The global reactive component of the ZRP uses the multicast based
"bordercast" mechanism to propagate route queries throughout the
network, rather than relying on neighbor-broadcast flooding found in
tradtional reactive protocols. Consequently, the ZRP provides the
most benefit in networks where reliable neighbor broadcasting is
either inefficient or altogether impossible. In particular, the ZRP
is well suited for multi-channel, multi-technology routing fabrics
and networks operating under high load.
B. Protocol Characteristics and Mechanisms
* Does the protocol provide support for unidirectional links?
(if so, how?)
Yes. The ZRP provides "local" support for unidirectional links.
A unidirectional link can be used as long as the link source and
link destination lie within each other's routing zone.
* Does the protocol require the use of tunneling? (if so, how?)
No.
* Does the protocol require using some form of source routing?
(if so, how?)
No. The ZRP's framework supports global route discovery based
on source routing, distributed distance vectors, or various
combinations of both.
Haas, Pearlman Expires September 2000 [Page iii]
INTERNET DRAFT The Zone Routing Protocol March 2000
* Does the protocol require the use of periodic messaging?
(if so, how?)
Yes. The ZRP proactively maintains local routing information
(routing zones) based on periodic exchanges of neighbor
discovery messages.
* Does the protocol require the use of reliable or sequenced packet
delivery? (if so, how?)
The ZRP only assumes that link-layer (neighbor) unicasts are
delivered reliably and in-sequence. Reliable and sequenced
delivery of neighbor broadcasts and IP unicasts is not
required.
* Does the protocol provide support for routing through a multi-
technology routing fabric? (if so, how?)
Yes. It is assumed that each node's network interface is
assigned a unique IP address.
* Does the protocol provide support for multiple hosts per router?
(if so, how?)
Yes. Multiple hosts may be associated with a router. These
hosts can be identified by the neighbor discovery/maintenance
process.
By default, it is assumed that a host's association with a router
is not permanent. As a result, the ZRP exchanges routing
information for individual hosts in the same manner as routing
information for routers.
In cases where a router is permanently associated with a network
(subnetwork), the ZRP supports the exchange of network
(subnetwork) prefixes in place of all aggregated host IP
addresses.
* Does the protocol support the IP addressing architecture?
(if so, how?)
Yes. Each node is assumed to have a unique IP address (or
set of unique IP addresses in the case of multiple interfaces).
The ZRP references all nodes/interfaces by their IP address.
This version of the ZRP also supports IP network addressing
(network prefixes) for routers that provide access to a
network of non-router hosts.
Haas, Pearlman Expires September 2000 [Page iv]
INTERNET DRAFT The Zone Routing Protocol March 2000
* Does the protocol require link or neighbor status sensing
(if so, how?)
Yes. The ZRP proactively maintains local routing information
(routing zones) based on detected changes in neighbor status.
* Does the protocol have dependence on a central entity?
(if so, how?)
No. The ZRP is a fully distributed protocol.
* Does the protocol function reactively? (if so, how?)
Yes. The ZRP's GLOBAL route discovery mechanism is reactive.
A route query is initiated, on demand, when a node requires
routing information that is not immediately available in its
routing table.
The route query propagates through the network, using a special
packet delivery service called "bordercasting". Bordercasting
leverages knowledge of local network topology to direct route
queries away from the source, thereby reducing redundancy.
* Does the protocol function proactively? (if so, how?)
Yes. The ZRP proactively maintains LOCAL routing information
(routing zones) for each node. The routing zone information is
leveraged, through the bordercasting mechanism, to support
efficient global propagation of route queries.
* Does the protocol provide loop-free routing? (if so, how?)
Yes. In this draft, loop-freedom in the reactive route discovery
process is ensured by inspection of accumulated source routes.
For distributed distance vector approaches, loop-freedom can be
ensured by labeling queries (replies) with the source
(destination) address and locally unique sequence number. Nodes
that relay these messages can temporarily cache these identifiers
in order to identify and terminate loops.
The ZRP's Link State proactive protocol is inherently loop-free,
although temporary loops may form while new link state updates
propagate through the routing zone.
* Does the protocol provide for sleep period operation? (if so, how?)
No.
* Does the protocol provide some form of security? (if so, how?)
No. It is assumed that security issues are adequately addressed
by the underlying protocols (IPsec, for example).
Haas, Pearlman Expires September 2000 [Page v]
INTERNET DRAFT The Zone Routing Protocol March 2000
* Does the protocol provide support for utilizing multi-channel,
link-layer technologies? (if so, how?)
Yes. It is assumed that each node's network interface is
assigned a unique IP address.
Haas, Pearlman Expires September 2000 [Page vi]
INTERNET DRAFT The Zone Routing Protocol March 2000
1. Introduction
One of the major challenges in designing a routing protocol for the
ad hoc networks stems from the fact that, on one hand, to determine
a packet route, a node needs to known at least the reachability
information to its neighbors. On the other hand, in an ad hoc
network, the network topology can change quite often. Furthermore,
as the number of network nodes can be large, the potential number of
destinations is also large, requiring large and frequent exchange of
data (e.g., routes, routes updates, or routing tables) among the
network nodes. Thus, the amount of update traffic can be quite high.
This is in contradiction with the fact that all updates in a
wirelessly interconnected ad hoc network travel over the air and,
thus, are costly in resources.
In general, the existing routing protocols can be classified either
as proactive or as reactive. Proactive protocols attempt to
continuously evaluate the routes within the network, so that when
a packet needs to be forwarded, the route is already known and can
be immediately used. The family of Distance-Vector protocols is an
example of a proactive scheme. Examples of proactive routing
protocols include the Wireless Routing Protocol (WRP) [7] and
Destination-Sequenced Distance-Vector (DSDV) routing [11]. Reactive
protocols, on the other hand, invoke a route determination procedure
on demand only. Thus, when a route is needed, some sort of global
search procedure is employed. The family of classical flooding
algorithms belong to the reactive group. Some other examples of
reactive (also called on-demand) ad hoc network routing protocols are
Dynamic Source Routing (DSR)[5], Ad-hoc On demand Distance Vector
Routing (AODV) [12] and the Temporally Ordered Routing Algorithm
(TORA) [8].
The advantage of the proactive schemes is that, once a route is
needed, there is little delay until the route is determined. In
reactive protocols, because route information may not be available
at the time a datagram is received, the delay to determine a route
can be quite significant. Furthermore, the global flood-search
procedure of the reactive protocols requires significant control
traffic. Because of this long delay and excessive control traffic,
pure reactive routing protocols may not be applicable to real-time
communication. However, pure proactive schemes are likewise not
appropriate for the ad hoc networking environment, as they
continuously use a large portion of the network capacity to keep the
routing information current. Since nodes in an ad hoc networks move
quite fast, and as the changes may be more frequent than the route
requests, most of this routing information is never even used! This
results in a further waste of the wireless network capacity. What is
needed is a protocol that, on one hand, initiates the route
determination procedure on-demand, but at limited search cost. The
protocol described in this draft, termed the "Zone Routing Protocol
(ZRP)" ([1], [2],[9]), is an example of a such a hybrid proactive/
reactive scheme.
Haas, Pearlman Expires September 2000 [Page 1]
INTERNET DRAFT The Zone Routing Protocol March 2000
The ZRP, on one hand, limits the scope of the proactive procedure
only to the node's local neighborhood. On the other hand, the search
throughout the network, although global in nature, is done by
efficiently querying selected nodes in the network, as opposed to
querying all the network nodes.
A related issue is that of updates in the network topology. For a
routing protocol to be efficient, changes in the network topology
should have only a local effect. In other words, creation of a new
link at one end of the network is an important local event but, most
probably, not a significant piece of information at the other end of
the network. Globally proactive protocols tend to distribute such
topological changes widely in the network, incurring large costs. The
ZRP limits propagation of such information to the neighborhood of the
change only, thus limiting the cost of topological updates.
2. Overview of the Zone Routing Protocol
2.1 Routing Zones, Extended Routing Zones, and the
Intrazone Routing Protocol (IARP)
A routing zone is defined for each node X, and includes the nodes
whose minimum distance in *hops* from X is no greater than some
parameter referred to as the Zone Radius. An example of a
routing zone (for node A) of radius 2 is shown below.
+-----------------------------------------+
| +---+ |
| +---+ ---| F |-------| |
+---+ | +---+ --| C |--/ +---+ +---+ |
| G |-----| D |--/ +---+ | E | | Routing Zone of
+---+ | +---+ | +---+ +---+ | node A
| +---+ ---| B |-------| | (radius = 2 hops)
| | A |--/ +---+ |
| +---+ |
+-----------------------------------------+
Note that in this example nodes B through E are within the routing
zone of A. Node G is outside A's routing zone. Also note that E can be
reached by two paths from A, one with length 2 hops and one with
length 3 hops. Since the minimum is less or equal than 2, E is within
A's routing zone.
Peripheral nodes are nodes whose minimum distance to the node in
question is equal exactly to the zone radius. Thus, in the above
figure, nodes D, F, and E are A's peripheral nodes.
Haas, Pearlman Expires September 2000 [Page 2]
INTERNET DRAFT The Zone Routing Protocol March 2000
An important consequence of the routing zone construction is the
ability of a node to deliver a packet to its peripheral nodes. This
service, which we refer to as "bordercasting", allows for more
efficient network-wide searching than simple neighbor broadcasting.
Bordercasting could be implemented either through IP multicast
(Distance Vector Multicast Routing Protocol (DVMRP) [14]) to the
peripheral nodes. However, as will be explained later, efficient ZRP
operation requires that the bordercast service be handled, on a
hop-by-hop basis, by the ZRP.
In its basic form, the ZRP's Intrazone Routing Protocol (IARP) is
responsible for providing each node with current view of its routing
zone topology. With this information, a node can identify ITS
peripheral nodes AND construct a bordercast (multicast) tree to them.
However, in order for the bordercast to be carried out, member of the
bordercast tree needs to know the tree's downstream structure. This
can be achieved if each node tracks the routing zone topology of each
of ITS interior routing zone members. This "extended" routing zone
consists of all nodes that are at a minimum distance (in hops) LESS
THAN twice the "basic" routing zone radius.
The IARP may be derived from a variety of existing globally proactive
protocols that provide a complete view of network connectivity (for
example, the Shortest Path First OSPF [6]). The base protocol needs
to be modified to ensure that the scope of the route updates is
restricted to the radius of a node's extended routing zone. Because
each node needs to proactively acquire route information only for the
nodes within its zone, the total amount of IARP traffic does not
depend on the size of the network, which may be quite large.
2.2 The Interzone Routing Protocol (IERP)
While the IARP maintains routes within a zone, the IERP* is
responsible for finding routes between nodes located at distances
larger than the zone radius. The IERP is distinguished from standard
flood-search query/response protocols by exploiting the routing zone
topology. A node is able to respond positively to any queries for its
routing zone nodes. For large networks, relatively few destinations
lie within any particular node's routing zone. In this more likely
case, the node can efficiently continue the propagation of the query,
through the routing zone-based bordercast delivery mechanism.
* The IERP relies on a special sub-protocol, called the Bordercast
Resolution Protocol (BRP) to provide the bordercast message delivery
service for route queries. Sections 3.0 and 4.0 describe in detail
the relationship between the BRP and the IERP.
Haas, Pearlman Expires September 2000 [Page 3]
INTERNET DRAFT The Zone Routing Protocol March 2000
2.2.1 Routing Zone Based Route Discovery
We illustrate the basic operation of routing zone based route
discovery through a simple (and as we will see, inefficient) IERP
implementation. The source node, in need of a route to a destination
node, first checks whether the destination lies within its routing
zone. (This is possible since every node knows the content of its
routing zone). If a path to the destination is known, no further
route discovery processing is required. On the other hand, if the
destination is not within the source's routing zone, the source
bordercasts a route query to all of its peripheral nodes. Upon
receipt of the route query, each peripheral nodes executes the same
algorithm. If the destination lies within its routing zone, a route
reply is sent back to the source, indicating the route to the
destination. If not, this node forwards the query to ITS peripheral
nodes. This process continues until the query has spread throughout
the network.
+---+
+---+ | F |
+---+---| C |----+---+-----+---+ +---+
| D | +---+ | E |----| H |
+---+ | +---+-----+---+ +---+
+---+----| B | |
| A | +---+-----+---+ +---+
+---+ | G | | I |
+---+ +---+
|
+---+
+---+ | J |
| C |----+---+----+---+ +---+
+---+ | K |----| L |
+---+ +---+
In the example illustrated above, node A has a datagram to send to
node L. Assuming each node's zone radius is 2 hops, node L does not
lie within A's routing zone (which does include B,C,D,E,F,G).
Therefore, A bordercasts a routing query to its peripheral nodes:
D,F,E and G. Each one of these peripheral nodes check whether L
exists in their routing zones. Since L is not found in any routing
zones of these nodes, the nodes bordercast the request to their
peripheral nodes. In particular, G bordercasts to K, which realizes
that L is in its routing zone and returns the requested route (L-K-G-A)
to the query source, namely A.
Haas, Pearlman Expires September 2000 [Page 4]
INTERNET DRAFT The Zone Routing Protocol March 2000
2.2.2 Route Accumulation Procedure
The query propagation mechanism allows a route query to indirectly
reach the desired destination (through some node Y, which discovers
the destination in its routing zone.) To complete the route
discovery process, Y needs to send a reply back to the query's source,
S, providing S with the desired route. To perform the route reply,
sufficient information needs to be accumulated during the query phase
so that Y is provided with a route back to S. Providing routes from
discovering node Y to query source S, and from the query source S back
to the query destination D (through Y), is the role of the Route
Accumulation procedure.
In the basic Route Accumulation, a node appends its IP address to a
received query packet. The sequence of IP addresses specifies a route
from the query's source to the current node. By reversing this
sequence, a route may also be obtained back to the source. In this
way, the route reply can be returned via strict source routing.
In order to reduce the length of query packets and query response time,
the query packet's accumulated route can be cached among the path's
nodes (in the form of the previous hop toward the query source),
rather than explicitly recorded in the packet itself. During the
reply phase, the cached previous hops can direct the reply back to the
source. Along the way, information can be accumulated in the reply
packet, forming a source route. Alternatively, the discovered route
may be distributed among its nodes' routing tables, providing a next
hop routing solution.
Sending replies along the (reversed) paths explicitly traveled by the
successful query packets can result in a set of discovered routes that
exhibit limited diversity among. This anomalous behavior can be
explained as follows. Variations in packet forwarding delay often
result in one query packet reaching the destination region ahead of
others. The descendents of this query packet trigger the majority of
route replies. The route diversity problem is aggravated when all
possible paths between the source and destination pass through a
common node, called a topological bottleneck. Since only one query
packet passes through the bottleneck, all discovered routes will be
identical prior to the topological bottleneck.
This problem could be addressed by allowing a node to relay a route
query more than once. Alternatively, we can apply "diversity
injection" [10] to increase diversity without generating additional
route replies. During the route query stage, nodes temporarily cache
the previous hop information for ALL received query packets (including
the packets that are discarded). Later, during the reply phase,
replies are relayed through the shortest of the least selected cached
paths that does not produce a routing loop.
Haas, Pearlman Expires September 2000 [Page 5]
INTERNET DRAFT The Zone Routing Protocol March 2000
2.2.3 Query Control Mechanisms
Bordercasting has the potential to support global querying schemes
that are more efficient than flooding. To achieve this efficiency,
the protocol should be able to terminate a bordercasted packet before
it arrives at a recipient peripheral node lying in a previously
queried region of the network. The ZRP's ability to provide this
level of query control capability is significantly limited when
bordercast messages are forwarded to peripheral nodes by IP.
To prevent redundant querying, nodes should be able to detect when
routing zones that they belong to have been queried. Clearly, a node
that bordercasts a route query is aware that its own zone has been
queried. If bordercast messages are relayed by IP, then the query
will not be detected again until it reappears at the target peripheral
nodes. On the other hand, if bordercast forwarding is performed
within the routing protocol, then all nodes in the bordercast tree
will detect the query. Additional query detection is possible in
shared channel networks if the underlying IP delivery is neighbor
broadcast or if promiscuous mode operation is enabled. In this case,
nodes may "overhear" a query even if they do not belong to the
bordercast tree.
Standard flood search protocols terminate query packets that are
targeted for (or arrive at) previously queried nodes. We can extend
this idea to the ZRP by discarding route queries before they arrive at
bordercast recipients that belong to a previously queried routing
zone. More precisely, a node will not relay a packet down a branch of
the bordercast tree if each of the branch's downstream "leaves"
(bordercast recipients) either lies inside the routing zone of a
previous bordercasted nodes, or if this node has already relayed the
query to that leaf. This scheme, which we refer to as Early
Termination (ET), relies on the aforementioned Query Detection to
identify which routing zone nodes have already bordercast a query.
The "extended" routing zone maintained by the IARP is then used to
determine the members of these previously bordercasted nodes' routing
zones.
2.2.4 Route Maintenance
In addition to initially discovering routes, the IERP may also assume
responsibility for monitoring the integrity of these routes and
repairing failed routes as appropriate.
Route failures can be detected either proactively or reactively.
Proactive route failure detection is triggered by the IARP, in
response to a node leaving the routing zone. Any IERP routes
containing this node as the first hop can be considered invalid.
Route failures may also be detected reactively, by IP, when the next
hop in a datagram's source route is determined to be unreachable
(i.e. does not appear in the Routing Table).
Haas, Pearlman Expires September 2000 [Page 6]
INTERNET DRAFT The Zone Routing Protocol March 2000
Upon local detection of a route failure, a node may choose to attempt
a route repair by discovering a path to bypass the failed link. The
repair discovery process is nearly identical to an initial route
discovery. Route repairs should not be substantially longer than the
original failed connection. Therefore, the depth of a repair query
can be limited, through the use of a "time to live" field. This has
the advantage of producing much less query traffic than an
unrestricted initial route query. After a successful repair, the
route's source MAY be notified so that routes are properly selected
for use. Alternatively, the repair could go unreported without
compromising the connectivity between source and destination.
3.0 The ZRP Architecture
.........................................
: Z R P :
: :
+---------+ : +---------+ +---------+ : +---------+
| NDM |========>| IARP |========>| IERP |<========| ICMP |
+---------+ : +---------+ |---+-----+ : +---------+
/|\ : /|\ |BRP| /|\ : /|\
| : | +---+ | : |
| : | /|\ | : |
| :...........|................|.....|....: |
| | | | |
\|/ \|/ \|/ \|/ \|/
+---------+---------+---------+---------+---------+---------+---------+
| IP |
+---------+---------+---------+---------+---------+---------+---------+
Legend:
A <---> B exchange of packets between protocols A & B
A ===> B information passed from protocol A to protocol B
Existing Protocols
------------------
IP Internet Protocol
ICMP Internet Control Message Protocol
ZRP Entities
------------
IARP IntrAzone Routing Protocol
IERP IntErzone Routing Protocol
BRP Bordercast Resolution Protocol
Additional Protocols
--------------------
NDM Neighbor Discovery/Maintenance Protocol
Note, it is assumed that basic neighbor discovery operation is
implemented by the MAC/link-layer protocols. Thus the NDM protocol
remains unspecified here.
Haas, Pearlman Expires September 2000 [Page 7]
INTERNET DRAFT The Zone Routing Protocol March 2000
4. Implementation Details
4.1 The IntrAzone Routing Protocol (IARP) -- Link State Implementation
The Intrazone Routing Protocol (IARP) is responsible for proactively
maintaining routes within each node's routing zone. Many traditional
proactive protocols can be modified to serve as an IARP by limiting
the range of route updates to the boundary of (extended) routing
zones.
In this draft, we detail implementations for a Link-State IARP.
Nodes compute intrazone routes based on the link state (neighbor
connectivity) of each extended routing zone node. A node may receive
link state updates either from an IARP link state packet or from an
interrupt generated by its Neighbor Discovery / Maintenance (NDM)
process*. Link states are maintained in a Link State Table. When
all pending link state updates have been received (full link state
updates may contain multiple links and span multiple packets), the
routing table is recomputed, using a minimum spanning tree algorithm.
The Link State Table is then updated to remove links that lie outside
of the extended routing zone. All new link state updates for non-
peripheral routing zone nodes are forwarded to all neighbors. In
addition, if a new neighbor is discovered, the new neighbor is sent
the FULL link states of all non-peripheral routing zone nodes.
In addition to computing routes to all nodes in the extended routing
zone, the IARP also uses the extended zone topology to construct
the bordercast tree of each routing zone member. A node's bordercast
tree can be constructed by first determining the minimum spanning
tree for its routing zone, and then pruning interior node leaves.
For each bordercast tree, the node should record if it's a member,
and if so, its downstream neighbors and peripheral nodes.
* the IARP relies on the services of a separate protocol (referred to
here as the Neighbor Discovery/Maintenance Protocol) to provide
current information about a node's neighbors. At the least, this
information must include the IP addresses of all the neighbors.
The IARP can be readily configured to support supplemental link
quality metrics.
Haas, Pearlman Expires September 2000 [Page 8]
INTERNET DRAFT The Zone Routing Protocol March 2000
A. Packet Format
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Packet Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID | Zone Radius | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link Destination Subnet Mask (Optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
| RESERVED | Metric Type | Metric Value | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| RESERVED | Metric Type | Metric Value | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Link
\| |/ Metrics
\ / |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| RESERVED | Metric Type | Metric Value | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
Field Description:
* Link Source Address (node_id) (32 bits)
IP address of the reported link's source node.
* Link Destination Address (node_id) (32 bits)
IP address of the reported link's destination node.
* Packet Source Address (node_id) (32 bits)
IP address of the node that sent this packet.
(Used to account for any outstanding link state information)
* Link State ID (unsigned int) (16 bits)
Sequence number used to track the link state history of
the Link Source node.
* Zone Radius (unsigned int) (8 bits)
Routing zone radius of the link's source node. Determines
the extent that link state information propagates.
* Flags (boolean) (8 bits)
Flags(0) Full Link Information
Indicates whether this link state information was sent
as:
(0) a PARTIAL link state update
OR
(1) part of a FULL update of all the
link source's current links
Haas, Pearlman Expires September 2000 [Page 9]
INTERNET DRAFT The Zone Routing Protocol March 2000
Flags(1) Current Link State Update
Indicates whether more link state information is pending
for THIS link state update {link_source,state_id}
(0) INCOMPLETE
(1) COMPLETE
Flags(2) All Link State Updates
Indicates whether more link state updates are pending
(0) INCOMPLETE
(1) COMPLETE
Flags(3) Link Destination Subnet Mask
(0) INCLUDED
(1) NOT INCLUDED
Flags(4) Link Status
(0) DOWN
(1) UP
Flags(5..7) RESERVED for future use.
* Node/Link Metrics (metric) (X * 32 bits)
This section of the packet is used to report the quality
of this link (or link source node).
* Metric Type (char) (8 bits)
Type of metric being reported
(based on pre-defined metric types)
* Metric Value (unsigned int) (16 bits)
Value of node / link metric specified by Metric Type
B. Data Structures
B.1 Routing Table
+-----------------------|--------------------------------+-----------+
| Dest | Subnet | Routes | Route | Intrazone |
| Addr | Mask | | Metrics | |
| (node_id) | (node_id) | (node_id list) | (metric list) | (boolean) |
|-----------+-----------|----------------+---------------+-----------+
| | | | | |
|-----------+-----------|----------------+---------------+-----------+
| | | | | |
|-----------+-----------|----------------+---------------+-----------+
| | | | | |
+-----------------------|--------------------------------------------+
Haas, Pearlman Expires September 2000 [Page 10]
INTERNET DRAFT The Zone Routing Protocol March 2000
B.2 Link State Table
+-----------|--------+-------+------------------+
| Link | Zone | Link | Link State |
| Source | Radius | State | Information # |
| Addr | | ID | |
| (node_id) | (int) | (int) | (ls_info list)## |
+-----------|--------+-------+------------------|
| | | | |
| | |-------+------------------|
| | | | |
| | |-------+------------------|
| | | | |
|-----------|--------+-------+------------------|
| | | | |
|-----------|--------+-------+------------------|
| | | | |
| | |-------+------------------|
| | | | |
+-----------|-----------------------------------+
# The first link state entry for each link source
contains the complete link state information
corresponding to the Link State ID.
Subsequent entries contain only changes of a single
link state.
A FULL link state entry of link state #k and
a PARTIAL entry of link state #(k+1) can be
merged into a FULL link state entry of
link state #(k+1)
## detail of (ls_info) data type
+---+---|---|---+
| | ||||| |
+---+---|---|---+
(a) (b) (c) (d)
(a) Link Destination Address
(b) Link Destination Subnet Mask
(c) Link Metrics
(d) Forward Flag ( indicates if link state information
has been forwarded)
Haas, Pearlman Expires September 2000 [Page 11]
INTERNET DRAFT The Zone Routing Protocol March 2000
B.3 Bordercast Tree Table
+-----------|-----------+----------------+----------------+
| | | Downstream | Downstream |
| Node | Member | Neighbors | Peripheral |
| | | | Nodes |
| (node_id) | (boolean) | (node_id list) | (node_id list) |
+-----------|-----------+----------------+----------------|
| | | | |
+-----------|-----------+----------------+----------------|
| | | | |
+-----------|-----------+----------------+----------------|
| | | | |
+-----------|---------------------------------------------+
B.4 Pending Link State List
(list of neighbors in the process of sending link state updates)
+----------+ +----------+ +----------+
| | ---> | | . . . | | (node_id list)
+----------+ +----------+ +----------+
B.5 New Neighbors List
(list of new neighbors to receive a copy Link State Table,
upon completion of updates)
+----------+ +----------+ +----------+
| | ---> | | . . . | | (node_id list)
+----------+ +----------+ +----------+
B.6 Former Routing Zone Nodes
(list of routing zone nodes, prior to routing table updates)
+----------+ +----------+ +----------+
| | ---> | | . . . | | (node_id list)
+----------+ +----------+ +----------+
C. Interfaces
C.1 Higher Layer (N/A)
C.2 Lower Layer (IP)
C.1.1 Send() (specified in IP standard)
C.1.2 Deliver() (specified in IP standard)
Haas, Pearlman Expires September 2000 [Page 12]
INTERNET DRAFT The Zone Routing Protocol March 2000
C.3 NDM
C.3.1 Neighbor_Lost(node,mask,metric)
Used by the NDM to notify the IARP that direct contact
has been lost with "node" (with subnet mask "mask").
Any node/link quality measurements are reported in
the "metric" list.
C.3.2 Neighbor_Found(node,mask,metric)
Used by the NDM to notify the IARP that direct contact
has been confirmed with "node" (with subnet mask "mask").
Any node/link quality measurements are reported in
the "metric" list.
C.4 IERP
C.4.1 Zone_Node_Lost(node)
Used by IARP to notify the IERP that a node no longer
exists within the routing zone.
D. State Machine
The IARP protocol consists of only one state (IDLE). Therefore,
no state transitions need to be specified. The IARP immediately
acts upon an event and then returns back to the IDLE state.
Notes: 1) X is used as a label for the node running this state
machine.
D.1
Event: An IARP link state packet is received.
Action: The link state update is recorded in the Link State
Table. If more link state updates are pending,
then the IARP returns to an idle state. Otherwise,
X rebuilds its routing table and the bordercast trees
of its routing zone nodes. Links that lie outside of
the routing zone are removed from the Link State
Table. X sends its neighbors all previously
unforwarded link state updates from its NON-
peripheral nodes. Finally, all neighbors in the New
Neighbor List are sent the link states of X's NON-
peripheral nodes, and the New Neighbor List is
cleared.
Haas, Pearlman Expires September 2000 [Page 13]
INTERNET DRAFT The Zone Routing Protocol March 2000
D.2
Event: A "Neighbor Found" interrupt is received, indicating
the discovery of a neighbor N.
Action: X's new link to N is recorded in the Link State Table
and N is added to the New Neighbors List. If more
link state updates are pending, then the IARP returns
to an idle state. Otherwise, X rebuilds its routing
table and the bordercast trees of its routing zone
nodes. Links that lie outside of the routing zone
are removed from the Link State Table. X sends its
neighbors all previously unforwarded link state
updates from its NON-peripheral nodes. Finally, all
neighbors in the New Neighbor List are sent the link
states of X's NON-peripheral nodes, and the New
Neighbor List is cleared.
D.3
Event: A "Neighbor Lost" interrupt is received, indicating
that node N is no longer a neighbor of X.
Action: The lost link to neighbor N is removed from the Link
State Table and N is removed from the New Neighbor
List. If more link state updates are pending, then
the IARP returns to an idle state. Otherwise, X
rebuilds its routing table and the bordercast trees
of its routing zone nodes. Links that lie outside of
the routing zone are removed from the Link State
Table. X sends its neighbors all previously
unforwarded link state updates from its NON-
peripheral nodes. Finally, all neighbors in the New
Neighbor List are sent the link states of X's NON-
peripheral nodes, and the New Neighbor List is
cleared.
E. Pseudocode Implementation
We define two complimentary operations on packets:
extract(packet) and load(packet)
extract (packet)
extracts the fields of the IARP packet to the following
variables: {link_source, link_dest, pk_source, state_id,
radius, flags, mask, link_metric}
* full_link_state -> flag(0)
* current_update -> flag(1)
* all_updates -> flag(2)
* mask -> flag(3)
* link_status -> flag(4)
load (packet)
loads the values of the aforementioned variables into
the fields of the IARP packet.
Haas, Pearlman Expires September 2000 [Page 14]
INTERNET DRAFT The Zone Routing Protocol March 2000
E.1 Update Intrazone Routing Table
args: (packet, link_dest, mask, link_metric)
// IARP may be triggered by either a link state packet update
// or an interrupt from the NDP
if (packet)
{
extract(packet);
my_link_changed = FALSE;
}
else
{
link_source = MY_ID;
pk_source = MY_ID;
state_id = MY_LINK_STATE_ID;
radius = MY_ROUTING_ZONE_RADIUS;
full_link_state = 0;
current_update = COMPLETE;
all_updates = COMPLETE;
if (type(intrpt) == "Neighbor Found")
link_status = UP;
else
link_status = DOWN;
my_link_changed = TRUE;
}
// Record link state information in Link State Table
add(Pending_Link_State_List, pk_source_id);
status = add(Link_State_Table, link_source, link_dest, mask,
radius, link_metric, state_id, flags);
// Determine if received link state information is new
if (status == NEW_LINK_INFO)
{
cum_status = UPDATE_IN_PROGRESS;
if(my_link_changed)
{
if (link_status == UP)
add(New_Neighbor_List, link_dest);
else
remove(New_Neighbor_List, link_dest);
MY_LINK_STATE_ID++;
}
}
// Release hold on pk_source when all link state information
// from pk_source is received
if(all_updates == COMPLETE)
remove(Pending_Link_State_List, pk_source);
Haas, Pearlman Expires September 2000 [Page 15]
INTERNET DRAFT The Zone Routing Protocol March 2000
// Once all pending link state information has been received,
// recompute Routing Table
if(empty(Pending_Link_State_List) (AND)
cum_status == UPDATE_IN_PROGRESS)
{
// Record former routing zone nodes in order to determine
// (later) which nodes have left the routing zone
for((EACH) node (BELONGING TO) Routing_Table)
{
if(Routing_Table[node].Intrazone)
add(Former_Routing_Zone_Nodes, node);
}
// The Link State Table should not contain links that lie
// beyond the (extended) routing zone.
// The Routing Table is recomputed until all outlying links
// have been removed from the Routing Table
rebuild = TRUE;
while (rebuild)
{
for((EACH) node (BELONGING TO) Routing_Table)
{
if(Routing_Table[node].Intrazone)
delete(Routing_Table[node]);
}
for((EACH) node (BELONGING TO) Link_State_Table)
{
Routing_Table[node].route =
compute_route_from_links(Link_State_Table,node);
Routing_Table[node].Intrazone = TRUE;
}
rebuild = update(Link_State_Table);
}
// After recomputing the Routing Table, the bordercast trees
// of the interior routing zone nodes are recomputed
for ((EACH) node (BELONGING TO) Routing_Table)
{
if(Routing_Table[node].Intrazone)
{
Bordercast_Tree[node] =
construct_bordercast_tree(Link_State_Table,node);
}
}
// Broadcast all new link state information that lies
// inside the extended routing zone
broadcast_link_state_updates(Link_State_Table);
// Send all link state information that lies inside the
// extended routing zone to each new neighbor
for ((EACH) node (BELONGING TO) New_Neighbor_List))
send_link_state_table(Link_State_Table, node);
Haas, Pearlman Expires September 2000 [Page 16]
INTERNET DRAFT The Zone Routing Protocol March 2000
clear(New_Neighbor_List);
cum_status = UPDATE_COMPLETE;
// Alert IERP about any lost routing zone nodes
for ((EACH) node (BELONGING TO) Former_Routing_Zone_Nodes)
{
if(node !(BELONGS TO) Routing_Table)
Routing_Zone_Node_Lost(IERP, node);
}
clear(Former_Routing_Zone_Nodes);
}
Haas, Pearlman Expires September 2000 [Page 17]
INTERNET DRAFT The Zone Routing Protocol March 2000
4.2 IntErzone Routing Protocol (IERP)
The Interzone Routing Protocol (IERP) is responsible for discovering
and maintaining routes to nodes which are beyond a node's routing
zone. These routes are acquired, on demand, by efficiently probing the
network with bordercasted route queries.*
This version of the IERP extends the basic query / reply mechanism
described in Section 3. A node issues a ROUTE_QUERY when a route is
needed for a destination outside of its routing zone. A ROUTE_QUERY
for a new route may probe the entire network. In contrast, a route
repair will only trigger a limited depths search. A ROUTE_QUERY is
guided from a node outward to its peripheral nodes, using the BRP's
bordercast service (described in greater detail in Section 4.3).
Because future IERP implementations may not be "routing zone aware",
the BRP delivers the query up to the IERP at every hop. When the
ROUTE_QUERY is received at the IERP, the previous hop node address is
recorded in the Routing Table and Temporary Query Cache. The previous
hop node address is then overwritten in the packet by the current
node's address. If the ROUTE_QUERY destination lies within this node's
routing zone, then a ROUTE_REPLY is sent to the query source and a
QUERY_EXTENSION is forwarded to the query destination. Otherwise, the
ROUTE_QUERY is sent back down to the BRP.
The QUERY_EXTENSION performs route accumulation in distributed manner,
similar to the ROUTE_QUERY. When the QUERY_EXTENSION arrives at the
destination, a next hop route is formed back to the query source.
As the ROUTE_REPLY proceeds back the query source, each node selects a
previous hop from its Temporary Query Cache (i.e. based on diversity
injection criteria) and appends the address to the packet. When the
ROUTE_REPLY arrives at the query source, it contains a source route
to the destination.
This IERP version offers some additional features. Multiple
destination route discoveries (for any OR all destinations) can be
aggregated into a single ROUTE_QUERY. In addition, QOS routing is
supported through the collection of various route quality metrics.
* The bordercast service is provided by the Bordercast Resolution
Protocol (BRP)
+-----+ +-----+ +-----+
| S | . . . . | Y | . . . | D |
+-----+ +-----+ +-----+
(1) search for ROUTE_QUERY
route |-------------------------->
(2) establish ROUTE_REPLY EXTENSION
connectivity <--------------------------|
|=============>
Sequence of the IERP Route Discovery Stages
Haas, Pearlman Expires September 2000 [Page 18]
INTERNET DRAFT The Zone Routing Protocol March 2000
A. Packet Format
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | TTL | Hop Count | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Current Hop Ptr | Num Dests = D | Num Nodes = N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Query ID | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Query/Route Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
| Query/Route Destination (1) Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Query/Route Destination (2) Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | |
| | Dests
\| |/ |
\ / |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Query/Route Destination (D) Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
| Intermediate Node (1) Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Intermediate Node (2) Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | |
| | route(1:N)
\| |/ |
\ / |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| |
| Intermediate Node (N) Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
| Node | Metric Type |D| Metric Value | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Node | Metric Type |D| Metric Value | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | Node/
| | Segment
\| |/ Metrics
\ / |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Node | Metric Type |D| Metric Value | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
Haas, Pearlman Expires September 2000 [Page 19]
INTERNET DRAFT The Zone Routing Protocol March 2000
Field Description:
* Type (char) (8 bits)
Identifies the type of IERP packet. The current version
of IERP contains three packet types:
ROUTE_QUERY:
request for an Interzone source route to the
destination specified by the Destination
IP Address
QUERY_EXTENSION:
extension of a QUERY packet sent from the
node that discovers the Destination to the
Destination itself.
ROUTE_REPLY:
response to a ROUTE_QUERY packet, sent from the
node that discovers the Destination back to the
Source. At a minimum, the ROUTE_REPLY contains
next-hop route information to the Destination.
(In general, returns the source route up to the
first node which has cached routing information
If no nodes have cached routing information, then
the complete source route is returned.)
* TTL (Time to Live) (unsigned int) (8 bits)
Number of hops that a route query may continue to
propagate. This field allows a querying node to configure
the depth of a route search, in order to control the
amount of IERP traffic generated.
* Hop Count (unsigned int) (8 bits)
Hop count from source to current node (ROUTE_QUERY,
QUERY_EXTENSION) or hop count from source to route
destination (ROUTE_REPLY, ROUTE_ACCUMULATION,
ROUTE_OPTIMIZATION).
* Flags (boolean) (8 bits)
Flags(0) ANY destination (0) / ALL destination (1)
In the case of multiple destinations, specifies
whether the ROUTE_QUERY should return routes for
ANY specified destination, or ALL specified
destinations.
In the case of a single MULTICAST IP address,
specifies whether the ROUTE_QUERY should return
routes to ANY member of the multicast group, or
ALL members of the multicast group.
Flags(1..7) RESERVED for future use
Haas, Pearlman Expires September 2000 [Page 20]
INTERNET DRAFT The Zone Routing Protocol March 2000
* Current Hop Pointer (unsigned int) (16 bits)
INDEX of the route (see below) corresponding to the route
node that has most recently received this packet. (the
first node in the route has an index of 1).
* Number of Destinations = D (unsigned int) (8 bits)
Number of destinations included in the route query/reply
packet. This allows multiple route discoveries to be
consolidated into a common route query process. The
multiple query destinations feature is particularly useful
for routing to a multicast group with known members, or
for locating downstream nodes during the route repair
phase.
* Number of Nodes = N (unsigned int) (8 bits)
Number of nodes IP addresses appearing in the route
specification.
* Query ID (unsigned int) (16 bits)
Sequence number which, along with the Query Source Address
(see below) uniquely identifies any ROUTE_QUERY in the
network.
* Query/Route Source Address (node_id) (32 bits)
IP address of the node that initiates the ROUTE_QUERY.
In subsequent stages, this corresponds to the IP address
of the discovered route's source node.
* Query/Route Destination Addresses (node_id) (D * 32 bits)
List of IP addresses to be located during the ROUTE_QUERY
phase. (Either ANY or ALL addresses, depending on the
setting of Flags(0)) In subsequent stages, this field
contains the IP address of the discovered route's (single)
destination node.
* Route (node_id) (N * 32 bits)
Variable length field that contains the recorded IP
addresses of nodes along the path traveled by this
ROUTE_QUERY packet from the Query Source. In subsequent
stages (after a route to a Query Destination has been
discovered), this set of IP addresses provides a partial
specification of the route between the Route Source and
Route Destination.
Haas, Pearlman Expires September 2000 [Page 21]
INTERNET DRAFT The Zone Routing Protocol March 2000
* Node/Segment Metrics (metric) (X * 32 bits)
This optional section of the packet can be used to
record a variety of node and segment quality measurements.
(In this context, a segment refers to the communication
path between consecutive nodes in the packet's accumulated
route. In the case of neighboring nodes, a segment is
equivalent to a (one-hop) link).
* Node (char) (8 bits)
Index of the route corresponding to a particular
node.
* Metric Type (char) (7 bits)
Type of metric being recorded
(based on pre-defined metric types)
* Direction Flag (boolean) (1 bit)
For segment metrics, specifies either the:
upstream segment (toward Query Source) (0)
downstream segment (toward Query Dest) (1)
* Metric Value (unsigned int) (16 bits)
Value of node / segment metric specified by
Metric Type
B. Data Structures
B.1 Routing Table (See IARP Description)
B.2 Temporary Query Cache
+------------------------------------------------------+ ...
| Query | Query_ID | Prev_hop | Hop Count |
| Source | | | |
|(node_id)|(unsigned int)|(node_id list)|(unsigned int)|
|---------+--------------|--------------+--------------+ ...
| | | | |
|---------+--------------|--------------+--------------+ ...
| | | | |
|---------+--------------|--------------|--------------+ ...
| | | | |
+------------------------------------------------------+ ...
... +--------------+
| Injection |
| Counter |
|(unsigned int)|
... +--------------|
| |
... +--------------|
| |
... +--------------|
| |
... +--------------+
Haas, Pearlman Expires September 2000 [Page 22]
INTERNET DRAFT The Zone Routing Protocol March 2000
C. Interfaces
C.1 Higher Layer (N/A)
C.2 Lower Layer (BRP)
C.2.1 Send(packet,source,query_ID,BRP_cache_ID)
Used by the IERP to request packet transmission
through the BRP.
C.2.2 Deliver(packet,BRP_cache_ID)
Used by the BRP to deliver data packet to the IERP.
C.3 Lower Layer (IP)
C.3.1 Send() (specified in IP standard)
C.3.2 Deliver() (specified in IP standard)
C.4 IARP
C.4.1 Zone_Node_Lost(node)
Used by the IARP to notify the IERP that a node has left
the routing zone
C.5 ICMP
C.4.1 Host_Unreachable() (specified in ICMP standard)
C.4.2 Source_Route_Failed() (specified in ICMP standard)
D. State Machine
The IERP protocol consists of only one state (IDLE). Therefore,
no state transitions need to be specified. The IERP immediately
acts upon an event and then returns back to the IDLE state.
Note: 1) X is used as a label for the node running this state
machine.
D.1
Event: A routing zone node is reported lost by the IARP,
indicating that a node H has moved beyond the
routing zone.
Action: Remove every route from the Interzone Routing Table
which contains H. If any routes containing H are
found AND Proactive Route Repair is enabled, then a
route "Repair" (limited depth route discovery) to H
is initiated.
D.2
Event: ICMP issues a "Host_Unreachable" message, triggering
a route discovery for unreachable host H.
Action: A FULL depth route discovery to H is initiated.
X's query_id is incremented and assigned to a new
ROUTE_QUERY packet. The route is initialized with
the IP addresses of the route's source and destination
IP addresses (X and H). Finally, the ROUTE_QUERY
packet is sent to the BRP to be bordercasted.
Haas, Pearlman Expires September 2000 [Page 23]
INTERNET DRAFT The Zone Routing Protocol March 2000
D.3
Event: The IERP or ICMP (via source_route_failed()) triggers
a "Repair" message, indicating that the next hop
H specified in a source route cannot be found locally.
Action: A limited depth route discovery to H is initiated.
X's query_id is incremented and assigned to a new
ROUTE_QUERY packet. The route is initialized with
the IP addresses of the route's source and destination
IP addresses (X and H). Finally, the ROUTE_QUERY
packet is sent to the BRP to be bordercasted.
D.4
Event: A ROUTE_QUERY packet is received with a destination
that appears within X's routing zone.
Action: The packet's accumulated route information (for the
source)is recorded in X's Routing Table and Temporary
Query Cache. The accumulated route is replaced by
X's address and any accumulated route metrics are
updated and compressed.
X copies the ROUTE_QUERY packet's contents to a
ROUTE_REPLY. A loop-free return path is selected
from the Temporary Query Cache (i.e. based on
"Diversity Injection"). X also forwards a
QUERY_EXTENSION to discovered query destination. If
the ROUTE_QUERY packet has not traveled too deep into
the network (i.e. TTL > 0) AND there are still more
destinations to be discovered, then the ROUTE_QUERY
is sent down to the BRP to be relayed outward.
D.5
Event: A ROUTE_QUERY packet is received with a destination
that DOES NOT appear within X's routing zone.
Action: The packet's accumulated route information (for the
source) is recorded in X's Routing Table and
Temporary Query Cache. The accumulated route is
replaced by X's address and any accumulated route
metrics are updated and compressed. The ROUTE_QUERY
packet is sent down to the BRP to be relayed outward.
D.6
Event: A QUERY_EXTENSION packet is received.
Action: The packet's accumulated route information (for the
source) is recorded in X's Routing Table. The
accumulated route is replaced by X's address and any
accumulated route metrics are updated and compressed.
If X is not the query destination, then X forwards the
message toward the destination (directly through IP)
Haas, Pearlman Expires September 2000 [Page 24]
INTERNET DRAFT The Zone Routing Protocol March 2000
D.7
Event: A ROUTE_REPLY packet is received.
Action: The packet's accumulated route information (for the
destination) is recorded in X's Routing Table. X
adds its address to the accumulated route and adds
metrics for the downstream (toward the destination)
link to the accumulated metrics. If X is not the
query source, then X forwards the message toward the
source (directly through IP), along a path selected
from the Temporary Query Cache (i.e. based on
Diversity Injection).
E. Pseudocode Implementation
We define two complimentary operations on packets:
extract(packet) and load(packet)
extract(packet)
extracts the fields of the IERP packet to the following
variables: {type, TTL, hop_count, flags, current_hop_ptr,
query_id, reply_id, source, reply_node,
dests, route, metric}
load(packet)
loads the values of the aforementioned variables into
the fields of the IERP packet.
load(packet) automatically computes the values of:
num_dests = |dests|
num_nodes = |routes|
Haas, Pearlman Expires September 2000 [Page 25]
INTERNET DRAFT The Zone Routing Protocol March 2000
E.1 Routing Zone Node Lost
args: (lost_node)
// Determine if lost_node belongs to any stored routes.
// If so, the route should be removed from the
// Routing Table and a route repair triggered
// (if proactive route repairs are enabled)
repair_link = FALSE;
for((EACH) node (BELONGING TO) Routing Table)
{
for ((EACH) route (BELONGING TO) Routing_Table[node])
{
if (lost_node (BELONGS TO) route)
{
if (PROACTIVE_REPAIRS_ENABLED)
{
removal_timer = ROUTE_QUERY_TIMEOUT;
repair_link = TRUE;
}
else
{
removal_timer = 0;
}
schedule(remove(Routing_Table[node,route],removal_timer)
}
}
}
if(repair_link)
{
dests = lost_node;
Initiate_Route_Discovery(IERP, {dests, ALL, REPAIR});
}
E.2 Initiate Route Discovery
args: (dests, flags, type)
// Route query is initialized and sent down to the BRP
// to be bordercasted
if (type == REPAIR)
TTL = MAX_REPAIR_HOPS;
else
TTL = MAX_FULL_QUERY_HOPS;
source = MY_ID
query_id = MY_QUERY_ID++;
type = ROUTE_QUERY;
hop_count = 0;
route = NULL;
current_hop_ptr = 0;
load (packet);
send ((packet, source, query_id, NULL), BRP);
Haas, Pearlman Expires September 2000 [Page 26]
INTERNET DRAFT The Zone Routing Protocol March 2000
E.3 Receive IERP Packet
args: (packet, BRP_cache_ID)
extract(packet);
switch(type)
{
case: ROUTE_QUERY
// Update Time-to-Live and hop count
TTL--;
hop_count++;
// Extract route (and metrics) from packet and record
// them in the Routing Table and Temporary Query Cache
prev_hops = route(1 : current_hop_ptr);
metrics = compress(metrics,
get_metrics(prev_hops|prev_hop|,MY_ID));
add(Routing_Table[source],(reverse(prev_hops),
reverse(metrics),FALSE);
add(Temp_Query_Cache[source,query_id],
(reverse(prev_hops),hop_count));
// Determine if routes are known for each destination
find_all = flags(0);
find_any = !flags(0);
found_any = FALSE;
found_all = TRUE;
// Save current values for dests and metrics, since
// we may need them later
DESTS = dests;
METRICS = metrics;
for((EACH) dest (BELONGING TO) DESTS)
{
if (Routing_Table[dest].Intrazone)
{
// A route to this destination is known
found_any = TRUE;
dests = dest;
remove(dest, DESTS);
// Forward query directly to destination, so
// that the destination will have some routing
// information back to the source
type = QUERY_EXTENSION;
prev_hops = NULL;
next_hops = Routing_Table[dest].route;
route = {prev_hops,MY_ID,next_hops};
current_hop_ptr = |prev_hops|+1;
load(packet);
send((packet,next_hops(1)),IP);
Haas, Pearlman Expires September 2000 [Page 27]
INTERNET DRAFT The Zone Routing Protocol March 2000
// Send reply back to the source
type = ROUTE_REPLY;
reply_node = MY_ID;
reply_id = MY_REPLY_ID++;
next_hops = Routing_Table[dest].route;
prev_hops = inject_loopfree_path(next_hops,
Temp_Query_Cache[source,query_id]);
metrics = NULL;
route = {prev_hops,MY_ID,next_hops};
current_hop_ptr = |prev_hops|+1;
load(packet);
send((packet,prev_hops(|prev_hops|)),IP);
}
found_all = found_all && found_any;
}
// If more destinations need to be discovered then
// forward QUERY via BRP bordercasting
if(((find_all && !found_all)||(find_any && !found_any))
&& TTL>0)
{
dests = DESTS;
metrics = METRICS;
prev_hops = NULL;
next_hops = NULL;
route = {prev_hops, MY_ID, next_hops};
current_hop_ptr = |prev_hops|+1;
load(packet);
send((packet,BRP_cache_ID), BRP);
}
break;
case: QUERY_EXTENSION
// Extract route (and metrics) from packet and record
// them in the Routing Table
prev_hops = route(1 : current_hop_ptr);
next_hops = route(current_hop_ptr+1 : |route|);
metrics = compress(metrics,
get_metrics(prev_hops|prev_hop|,MY_ID));
add(Routing_Table[source],(reverse(prev_hops),
reverse(metrics),FALSE);
Haas, Pearlman Expires September 2000 [Page 28]
INTERNET DRAFT The Zone Routing Protocol March 2000
// Forward query extension until it reaches destination
if(MY_ID !(BELONGS TO) dests)
{
prev_hops = NULL;
if(|next_hops|==1)
{
next_hops = Routing_Table[dest].route;
route = {prev_hops, MY_ID, next_hops};
current_hop_ptr = |prev_hops|+1;
}
else
{
current_hop_ptr++;
}
load(packet);
send((packet,next_hops(1)),IP);
}
break;
case: ROUTE_REPLY
// Extract route (and metrics) from packet and record
// them in the Routing Table
prev_hops = route(1 : current_hop_ptr-1);
next_hops = route(current_hop_ptr : |route|);
metrics = {metrics,get_metrics(MY_ID,next_hops(1))};
add(Routing_Table[dest],(next_hops,compress(metrics),FALSE);
// Forward reply until it reaches source
if(MY_ID != source)
{
// Choose a loopfree return path from the Temporary
// Query Cache (eg. shortest path, shortest least
// "injected" path, etc.)
prev_hops = inject_loopfree_path(next_hops,
Temp_Query_Cache[source,query_id]);
route = {prev_hops, MY_ID, next_hops};
current_hop_ptr = |prev_hops|+1;
load(packet);
send((packet,next_hop),IP);
}
break;
}
Haas, Pearlman Expires September 2000 [Page 29]
INTERNET DRAFT The Zone Routing Protocol March 2000
4.3 Bordercast Resolution Protocol (BRP)
The BRP provides the "bordercasting" message delivery service, here
used to forward IERP route queries. Messages are relayed from a
bordercasting node outward to its peripheral nodes, along a
bordercast (multicast) tree. Although the intended recipients of
the bordercast are the peripheral nodes, the BRP may deliver the
bordercast message up to the higher layer application (in this case,
the IERP) at EVERY hop. This may be necessary for applications that
use bordercasting, but are generally not "routing zone aware".
When a node receives a bordercasted message, it first needs to determine
whether the message should be forwarded. Clearly, the node should
only forward the message if it belongs to the bordercast tree.
Furthermore, if the node is the (peripheral node) bordercast recipient,
it would re-bordercast the message, but only if it has not been a bordercast
recipient before AND it does not lie inside the routing zone of a
detected "previously bordercasted" node.
If the node decides not to discard the message, it next determines which
of the current bordercast tree's downstream branches will be dropped.
A downstream branch will be dropped if each of the branch's downstream
peripheral nodes either has had a bordercast message relayed to it by
this node OR lies inside the routing zone of a detected previously
bordercasted node.
The BRP delivers the message up to the higher layer application (IERP).
After some processing, the application may return an updated message
back to the BRP. The BRP will then relay the message on the selected
outgoing links.
A. Packet Format
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Source Addresss |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prev Bordercast Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| E N C A P S U L A T E D P A C K E T |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Haas, Pearlman Expires September 2000 [Page 30]
INTERNET DRAFT The Zone Routing Protocol March 2000
* Message Source Address (node_id) (32 bits)
IP address of the node that initiates the message.
* Message ID (unsigned int) (16 bits)
Sequence number which, along with the Message Source
Address uniquely identifies any BRP message in the
network.
* Prev Bordercast Address (node_id) (32 bits)
IP address of the most recent bordercasting node
* Encapsulated Packet (packet)
*** note: Within the context of the ZRP, the Message Source
Address and Message ID can assume the same values
as the corresponding "Query" fields in the
encapsulated IERP packet.
As such, they can be eliminated AS LONG AS:
(a) The BRP has read access to the contents of
the encapsulated IERP packet.
(b) The BRP knows the format of the IERP packet.
For this version of the ZRP, both (a) and (b) are true.
However, we provide the BRP with its own Message ID and
Message Source fields for future support of generic
higher layer applications.
B. Data Structures
B.1 Routing Table (see IARP description)
B.2 Bordercast Tree Table (see IARP description)
Haas, Pearlman Expires September 2000 [Page 31]
INTERNET DRAFT The Zone Routing Protocol March 2000
B.3 Detected Messages Cache
+------------------------|--------------------------+ ...
| Message | Message ID | BRP_cache_ID | Prev |
| Source | | |Bordercast |
|(node_id)|(unsigned int)|(unsigned int)| (node_id) |
|---------+--------------|--------------+-----------+ ...
| | | | |
| | |--------------+-----------+ ...
| | | | |
|---------+--------------|--------------+-----------+ ...
| | | | |
| | |--------------+-----------+ ...
| | | | |
+------------------------|--------------+-----------+ ...
... +---------------+
| Out_neighbor |
| |
|(node_id list) |
... +---------------|
| |
... +---------------|
| |
... +---------------|
| |
... +---------------|
| |
... +---------------+
C. Interfaces
C.1 Higher Layer (IERP)
C.2.1 Send(packet, BRP_cache_ID)
Used by the IERP to request packet transmission.
C.2.2 Deliver(packet, BRP_cache_ID)
Used by the BRP to deliver a data packet up to IERP.
C.2 Lower Layer (IP)
C.2.1 Send() (specified in IP standard)
C.2.2 Deliver() (specified in IP standard)
D. State Machine
The BRP protocol consists of only one state (IDLE). Therefore,
no state transitions need to be specified. The BRP immediately
acts upon an event and then returns back to the IDLE state.
Notes: 1) X is used as a label for the node running this state
machine.
Haas, Pearlman Expires September 2000 [Page 32]
INTERNET DRAFT The Zone Routing Protocol March 2000
D.1
Event: A message is received from the higher layer (IERP).
BRP_cache_ID == NULL.
Action: The bordercast was initiated by X. X marks itself as
the previous bordercast node and relays the message to
all the downstream neighbors in its bordercast tree.
D.2
Event: A message is received from the higher layer (IERP).
BRP_cache_ID != NULL.
Action: The bordercast was not initiated by X. X looks up
this message's forwarding information recorded in
it's Detected Messages Cache (and referenced by
BRP_cache_ID). X then relays the message to the
designated downstream neighbors.
D.3
Event: A message is received from the IP.
Action: The message is terminated under the following
conditions:
(1) X does not belong to the bordercast tree of
prev_bcast.
(2) If X is the bordercast recipient and
(a) X has already been a bordercast recipient.
OR
(b) X is an interior (i.e. non-peripheral)
member of a detected previously
bordercasted node's routing zone.
If X is a bordercast recipient and does not terminate
the message then it re-bordercasts the message.
Next, X decides which of the current bordercast
tree's downstream branches (neighbor) will be dropped.
A downstream branch will be dropped if, for each of
the branch's downstream peripheral node D:
(a) X has already relayed a message to D.
OR
(b) D is an interior (i.e. non-peripheral)
member of a detected previously
bordercasted node's routing zone
Finally, X delivers the message to the higher layer
(IERP).
Haas, Pearlman Expires September 2000 [Page 33]
INTERNET DRAFT The Zone Routing Protocol March 2000
E. Pseudocode Implementation
We define two complimentary operations on packets:
extract(packet) and load(packet)
extract (packet)
extracts the fields of the BRP packet to the following
variables: {source,message_id,prev_bordercst,
message_packet)
load (packet)
loads the values of the aforementioned variables into
the fields of the BRP packet.
E.1 Receive Packet from higher layer (IERP)
args: (message_packet, BRP_cache_ID)
// If BRP_cache_ID == NULL then this is a new bordercast
// issued by this node. This new bordercast can be relayed
// to ALL downstream neighbors in the bordercast tree.
// Otherwise, this is an existing bordercast that should be
// forwarded to the pre-assigned downstream neighbors.
if(BRP_cache_ID)
{
prev_bcast = Detected_Messages[source,message_id
,BRP_cache_ID].prev_bcast;
out_neighbors = Detected_Message
[source,message_id,BRP_cache_ID].out_neighbors;
}
else
{
prev_bcast = MY_ID;
out_neighbors = Bordercast_Tree[MY_ID].downstream_neighbors;
}
source = MY_ID;
message_id = MY_BORDERCAST_ID++;
load(packet);
send(packet,out_neighbors),IP);
E.2 Receive Packet from IP
args: (packet)
extract(packet);
// Discard bordercast message if this node is not a member of
// prev_bcast's bordercast tree
discard = !Bordercast_Tree[prev_bcast].member;
Haas, Pearlman Expires September 2000 [Page 34]
INTERNET DRAFT The Zone Routing Protocol March 2000
// If this node is the downstream peripheral node of
// prev_bcast then terminate if this node:
// (a) has already been a bordercast recipient
// OR
// (b) is inside the routing zone of a node that has
// already bordercasted the message
if(is_peripheral_node(prev_bcast,MY_ID))
{
for((EACH) queried_node (BELONGING TO)
Detected_Messages[source,message_id]
.prev_bcast)
{
a = MY_ID (BELONGS TO)
Bordercast_Tree[queried_node]
.downstream_peripheral_nodes;
b = is_interior_node(queried_node,MY_ID);
discard = discard || (a || b);
}
// Since this node is the downstream peripheral recipient,
// it will re-bordercast the message (if it isn't
// terminated)
prev_bcast = MY_ID;
}
Haas, Pearlman Expires September 2000 [Page 35]
INTERNET DRAFT The Zone Routing Protocol March 2000
out_neighbors = {};
if(!discard)
{
// Don't relay message to a given downstream neighbor if
// each covered downstream peripheral node (of prev_bcast):
// (a) has already been a bordercast recipient
// OR
// (b) is inside the routing zone of a node that has
// already bordercast the message
for((EACH) neighbor (BELONGING TO)
Bordercast_Tree[prev_bcast]
.downstream_neighbors)
{
drop_neighbor = TRUE;
leaves = Bordercast_Tree[prev_bcast,neighbor
].downstream_peripheral_nodes;
for((EACH) leaf_node (BELONGING TO) leaves)
{
failed_leaf = TRUE;
for((EACH) queried_node (BELONGING TO)
Detected_Messages[source,message_id]
.prev_bcast)
{
a = leaf_node (BELONGS TO)
Bordercast_Tree[queried_node]
.downstream_peripheral_nodes;
b = is_interior_node(queried_node,leaf_node);
failed_leaf = failed_leaf || (a || b);
}
drop_neighbor = drop_neighbor && failed_leaf;
}
if(!drop_neighbor)
out_neighbors = {out_neighbors, neighbor};
}
}
// Record BRP "state" in Detected Messages Cache, so that
// the message can be properly forwarded when returned by
// the higher layer app (IERP)
BRP_cache_ID++;
add(Detected_Messages[source,message_id],(BRP_cache_ID,
prev_bcast,out_neighbors));
schedule(remove(Detected_Messages[BRP_cache_ID],
MAX_QUERY_LIFETIME);
deliver(message_packet,BRP_cache_ID);
Haas, Pearlman Expires September 2000 [Page 36]
INTERNET DRAFT The Zone Routing Protocol March 2000
5. Other Considerations
5.1 Sizing the Zone Radius
The performance of the Zone Routing Protocol is determined by the
routing zone radius. In general, dense networks consisting of a few
fast moving nodes favor smaller routing zones. On the other hand, a
sparse network of many slowly moving nodes operates more efficiently
with a larger zone radius.
The simplest approach to configuring the routing zone radius is to
make the assignment once, prior to deploying the network. This can
be performed by the network administration, if one exists, or by
the manufacturer, as a default value. This may provide acceptable
performance, especially in situations where network characteristics
do not vary greatly over space and time. Alternatively, the ZRP can
adapt to changes in network behavior, through dynamic configuration
of the zone radius [3]. In [9], it was shown that a node can
accurately estimate its optimal zone radius, on-line, based on local
measurements of ZRP traffic. The re-sizing of the routing zone can be
carried out by a protocol that conveys the change in zone radius to the
members of the routing zone. The details of such an update protocol
will be provided in a future version of this draft.
5.2 Hierarchical Routing and the ZRP
In a hierarchical network architecture, network nodes are organized
into a smaller number of (often disjoint) clusters. This routing
hierarchy is maintained by two component routing protocols. An intra-
cluster protocol provides routes between nodes of the same cluster,
while an inter-cluster protocol operates globally to provide routes
between clusters.
The ZRP, with its routing zones and intrazone / interzone routing
protocol (IARP/IERP) architecture may give the appearance of being a
hierarchical routing protocol. In actuality, the ZRP is a flat routing
protocol. Each node maintains its own routing zone, which heavily
overlaps with the routing zones of neighboring nodes. Because there is
a one-to-one correspondence between nodes and routing zones, the routing
zones, unlike hierarchical clusters, do not serve to hide the details of
local network topology. As a result, the network-wide interzone routing
protocol (IERP) actually determines routes between individual nodes,
rather than just between higher level network entities.
Haas, Pearlman Expires September 2000 [Page 37]
INTERNET DRAFT The Zone Routing Protocol March 2000
For small to moderately sized networks, flat routing protocols, like the
ZRP, are preferable to hierarchical routing protocols. In order for
a node to be located, its address needs to reflect the node's location
within the network hierarchy (i.e. {cluster id,node id}). Because of
node mobility, a node's cluster membership (and thus address) is subject
to change. This complicates mobility management, for the benefit of
more efficient routing. In many hierarchical routing protocols, each
cluster designates a single clusterhead node to relay inter-cluster
traffic. These clusterhead nodes become traffic "hot-spots",
potentially resulting in network congestion and single point of failure.
Furthermore, restricting cluster access through clusterhead nodes can
lead to sub-optimal routes, as potential neighbors in different clusters
are prohibited from communicating directly. Some hierarchical routing
protocols, such as the Zone-Based Hierarchical Link-State (ZHLS) [4],
avoid these problems by distributing routing information to all cluster
nodes, rather than maintaining a single clusterhead.
In spite of these disadvantages, hierarchical routing protocols are
often better suited for very large networks than flat routing protocols.
Because hierarchical routing protocols provide global routes to network
clusters, rather than individual nodes, routing table storage is more
scalable. Similarly, the amount of route update messages is also more
scalable. To some extent, the reduction in routing traffic is offset
by extra mobility management overhead (i.e. identifying which cluster
a node belongs to). However, it is quite common that the environment or
existing organizational structure causes nodes to naturally cluster
together. In these cases, there may be a high degree of intra-cluster
mobility, with inter-cluster mobility is less common.
A hierarchical routing protocol can be viewed as a set of flat routing
protocols, each operating at different levels of granularity. In a two-
tier routing protocol, the inter-cluster components is essentially a
flat routing protocol that computes routes between clusters. Likewise,
the intra-cluster component is a flat routing protocol, that computes
routes between nodes in each cluster. For example, the Near Term
Digital Radio (NTDR) System [13] and ZHLS both employ proactive link
state protocols to determine inter and intracluster connectivity.
In place of traditional proactive or reactive protocols, we recommend
that the intra-cluster and inter-cluster routing protocol components
be implemented based on the hybrid proactive/reactive ZRP. As described
throughout this draft, the ZRP is designed to provide an optimal balance
between purely proactive and reactive routing. This applies equally well
to routing between nodes at the intra-cluster level and between clusters
at the inter-cluster level. Additionally, the hybrid ZRP methodology can
be applied to the related mobility management protocols, which determine
complete node addresses based on a node's location in the network
hierarchy.
Haas, Pearlman Expires September 2000 [Page 38]
INTERNET DRAFT The Zone Routing Protocol March 2000
6.0 References
[1] Haas, Z.J., "A New Routing Protocol for the Reconfigurable
Wireless Networks," ICUPC'97, San Diego, CA, Oct. 12,1997.
[2] Haas, Z.J. and Pearlman, M.R., "The Performance of Query
Control Schemes for the Zone Routing Protocol,"
SIGCOMM'98, Vancouver, BC, Sept. 2-4, 1998.
[3] Haas, Z.J. and Tabrizi, S., "On Some Challenges and Design
Choices in Ad-Hoc Communications," MILCOM'98, Boston, MA,
October 18-21, 1998.
[4] Joa-Ng, M. and Lu, I.T., "A Peer-to-Peer Zone-based Two-Level
Link State Routing for Mobile Ad-Hoc Networks," to appear
in IEEE JSAC issue on Ad-Hoc Networks, June, 1999.
[5] Johnson, D.B., and Maltz, D.A., "Dynamic Source Routing
in Ad-Hoc Wireless Networks," in Mobile Computing,
edited by T. Imielinski and H. Korth, chapter 5,
pp. 153-181, Kluwer, 1996.
[6] Moy, J., "OSPF Version 2," INTERNET DRAFT STANDARD,
RFC 2178, July 1997.
[7] Murthy, S., and Garcia-Luna-Aceves, J.J., "An Efficient
Routing Protocol for Wireless Networks," MONET, vol. 1,
no. 2, pp. 183-197, October 1996.
[8] Park, V.D., and Corson, M.S., "A Highly Adaptive Distributed
Routing Algorithm for Mobile Wireless Networks,"
IEEE INFOCOM'97, Kobe, Japan, 1997.
[9] Pearlman, M.R. and Haas, Z.J., "Determining the Optimal
Configuration for the Zone Routing Protocol," IEEE JSAC,
August, 1999.
[10] Pearlman, M.R. and Haas, Z.J., "Improving the Performance of
of Query-Based Routing Protocols Through 'Diversity
Injection'", IEEE WCNC'99, New Orleans, LA, Sept. 1999.
[11] Perkins, C.E., and Bhagwat, P., "Highly Dynamic
Destination-Sequenced Distance-Vector Routing (DSDV) for
Mobile Computers," ACM SIGCOMM, vol.24, no.4, October 1994.
[12] Perkins, C.E. and Royer, E.M., "Ad-Hoc On-Demand Distance
Vector Routing," IEEE WMCSA'99, New Orleans, LA, Feb. 1999
[13] Ruppe, R., Griswald, S., Walsh, P. and Martin, R., "Near Term
Digital Radio (NTDR) System," IEEE MILCOM'97, Monterey, CA,
Nov. 1997.
[14] Waitzman, D., Partridge, C., Deering, S.E., "Distance
Vector Multicast Routing Protocol," RFC 1075, Nov. 1, 1988.
Haas, Pearlman Expires September 2000 [Page 39]
INTERNET DRAFT The Zone Routing Protocol March 2000
7.0 Draft Updates
- The sole function of the Bordercast Resolution Protocol (BRP) is
to perform application independent bordercasting (all excess
routing protocol functionality has been moved up to the IERP).
This means that the BRP can be used outside of the ZRP, for any
application that requires an efficient network-wide query/probing
mechanism. Likewise, a wide variety of globally reactive routing
protocols may be adopted as alternate IERPs, by substituting the
query "broadcast()" with "bordercast()".
In further support of application independent bordercasting, the BRP
can deliver messages up to the higher layer application at every hop
(as opposed to only delivering for peripheral nodes). This is
important for applications that wish to use the bordercast service,
but are otherwise "routing zone unaware".
- The bordercast message delivery service is now implemented via
multicasting, rather than a series of separate unicasts to individual
peripheral nodes. The bordercast control mechanisms have been revised
to support this transition.
- The IARP is now required to proactively track the COMPLETE topology of
an EXTENDED routing zone, consisting of all nodes that are at a
minimum distance (in hops) LESS THAN twice the "basic" routing zone
radius. Nodes use this extended information to construct the
downstream portion of each routing zone node's bordercast (multicast)
tree. Consequently, the Distance Vector IARP implementation has been
dropped.
- For convenience, the IARP and IERP now share a single routing table.
IARP entries are indicated by a special flag.
- The IERP's optional Route Accumulation and Route Optimization stages
have been dropped.
- The route maintenance policy has been simplified. Local route
repairs are only reported to the source of the broken link, not to
the route's source.
- Support for "diversity injection" [10] has been added to the IERP.
The diversity injection mechanism allows the global route discovery
to extract more information about current network connectivity,
without any additional traffic.
Haas, Pearlman Expires September 2000 [Page 40]
INTERNET DRAFT The Zone Routing Protocol March 2000
Authors' Information
Zygmunt J. Haas
Wireless Networks Laboratory
323 Frank Rhodes Hall
School of Electrical Engineering
Cornell University
Ithaca, NY 14853
United States of America
tel: (607) 255-3454, fax: (607) 255-9072
Email: haas@ee.cornell.edu
Marc R. Pearlman
389 Frank Rhodes Hall
School of Electrical Engineering
Cornell University
Ithaca, NY 14853
United States of America
tel: (607) 255-0236, fax: (607) 255-9072
Email: pearlman@ee.cornell.edu
The MANET Working Group contacted through its chairs:
M. Scott Corson
Institute for Systems Research
University of Maryland
College Park, MD 20742
(301) 405-6630
corson@isr.umd.edu
Joseph Macker
Information Technology Division
Naval Research Laboratory
Washington, DC 20375
(202) 767-2001
macker@itd.nrl.navy.mil
Haas, Pearlman Expires September 2000 [Page 41]