Internet DRAFT - draft-haas-zone-routing-protocol
draft-haas-zone-routing-protocol
HTTP/1.1 200 OK
Date: Tue, 09 Apr 2002 00:14:11 GMT
Server: Apache/1.3.20 (Unix)
Last-Modified: Tue, 18 Nov 1997 14:43:00 GMT
ETag: "2e9a9f-ca8e-3471a974"
Accept-Ranges: bytes
Content-Length: 51854
Connection: close
Content-Type: text/plain
INTERNET-DRAFT Zygmunt J. Haas, Cornell University
Marc R. Pearlman, Cornell University
Expires in six months November 1997
The Zone Routing Protocol (ZRP) for Ad Hoc Networks
<draft-zone-routing-protocol-00.txt>
Status of this Memo
This document is 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.''
To view the entire list of current Internet-Drafts, please check
the "1id-abstracts.txt" listing contained in the Internet-Drafts
Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
(Europe), munnari.oz.au (Pacific Rim), ds.internic.net (US East
Coast), or ftp.isi.edu (US West Coast).
Distribution of this memo is unlimited.
Abstract
This document describes a routing protocol for ad hoc networks.
In particular, it is suitable for highly versatile networks,
characterized by large range of nodal mobilities and large network
diameters. The protocol is a hybrid of a proactive and a reactive
schemes, allowing adjustment of its operation to the current
network operational conditions.
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, at least the reachability information of the source
neighbors needs to be known to the source node. 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.
Haas, Pearlman Expires May 1998 [Page 1]
INTERNET DRAFT The Zone Routing Protocol November 1997
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. 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 examples of reactive (also called on-demand)
ad hoc network routing protocols are [Johnson] and [TORA].
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 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 again in an excessive 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 presented-here protocol, termed the "Zone Routing Protocol
(ZRP)," is an example of a hybrid reactive/proactive routing
protocol.
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
have to have local effect only. 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. 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.
Haas, Pearlman Expires May 1998 [Page 2]
INTERNET DRAFT The Zone Routing Protocol November 1997
2.0 The Notion of Routing Zone, Zone Radius, and Bordercasting
A routing zone is defined for each node and includes the nodes whose
minimum distance in *hops* from the node in question is at most some
predefined number, which is 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 | | Zone of node A
+---+ | +---+ | +---+-----+---+ | of radius=2
| +---+------| B | |
| | 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 path from A, one with length 2 hops and one with
length 3 hope. 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.
Bordercasting is a process of sending an IP datagram ([RFC-0791]) by
a node to all its peripheral nodes. Bordercasting can be implemented
either through regular IP unicast or through IP multicast (Distance
Vector Multicast Routing Protocol [RFC-1075]). Of course, the
multicasting approach is preferred to reduce the amount of traffic
over the air.
2.1 The Zone Routing Protocol (ZRP) ([Haas-1],[Haas-2])
The ZRP is based on two procedures: the IntrAzone Routing Protocol
(IARP) and the IntErzone Routing Protocol (IERP). Through the use
of the IARP, each node learns the identity of and the (minimal)
distance to all the nodes in its routing zone. The actual IARP is
not specified and can include any number of protocols, such as the
derivatives of Distance Vector Protocol (e.g., Ad Hoc On-Demand
Distance Vector [AODV], Shortest Path First (e.g., OSPF
[RFC-2178]), [Murthy]). In fact, different portions of an ad hoc
network may choose to operate based on different choice of the IARP
protocol. Whatever the choice of IARP is, the protocol needs to be
modify to ensure that the scope of this operation is restricted to
the zone of the node in question.
Note that as each node needs to learn the distances to the nodes
within its zone only, the nodes are updated about topological
Haas, Pearlman Expires May 1998 [Page 3]
INTERNET DRAFT The Zone Routing Protocol November 1997
changes only within their routing zone. Consequently, in spite of
the fact that a network can be quite large, the updates are only
locally propagated.
2.2 The Interzone Routing Protocol (IERP)
While IARP finds routes within a zone, IERP is responsible for
finding routes between nodes located at distances larger than the
zone radius. IERP relies on bordercasting. Bordercasting is possible
as any node knows the identity and the distance to all the nodes in
its routing zone by the virtue of the IARP protocol.
The IERP operates as follows: The source node first checks whether
the destination is within its routing zone. (Again, this is possible
as every node knows the content of its zone). If so, the path to the
destination is known and no further route discovery processing is
required. If, on the other hand, the destination is not within the
source's routing zone, the source bordercasts a route request
(referred to here as a "request") to all its peripheral nodes. Now,
in turn, all the peripheral nodes execute the same algorithm: check
whether the destination is within their zone. If so, a route reply
(referred to here as a "reply") is sent back to the source
indicating the route to the destination. If not, the peripheral node
forwards the query to its peripheral nodes, which, in turn, execute
the same procedure. An example of this Route Discovery procedure is
demonstrated in the figure below. As we be shown, Thus, a route
within a network is specified as a sequence of nodes, separated by
approximately the zone radius.
+---+
+---+ | F |
+---+---| C |----+---+-----+---+ +---+
| D | +---+ | E |----| H |
+---+ | +---+-----+---+ +---+
+---+----| B | |
| A | +---+-----+---+ +---+
+---+ | G | | I |
+---+ +---+
|
+---+
+---+ | J |
| C |----+---+----+---+ +---+
+---+ | K |----| L |
+---+ +---+
The node A has a datagram to node L. Assume routing zone radius of
2. Since L is not in A's routing zone (which includes B,C,D,E,F,G),
A bordercast a routing request 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
Haas, Pearlman Expires May 1998 [Page 4]
INTERNET DRAFT The Zone Routing Protocol November 1997
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.
2.3 Route Accumulation procedure
The process by which the node receiving a query knows the path back
to the source of the query is the Route Accumulation procedure. In
particular, the Route Accumulation procedure is used to return the
route to the source of the query by the "last peripheral node" in
which routing zone the destination resides. The Route Accumulation
procedure is based on each node that forwards a query writing into
the query packet its identification. The sequence of these
identifications represents a path from the source node to the
current node, and, by reversing the order, a path from the current
node to the source node.
2.4 Terminating the IERP flood
It is desirable for route requests to propagate away from the source
and not to loop-back into a previously queried routing zone. To
encourage this directed spread of route requests, IERP employs two
loop-back prevention mechanisms. The first mechansim terminates
threads which loop-back on themselves. Such threads are terminated
when the accumulated route (excluding the previous hop) contains a
host which lies within its routing zone. A separate mechanism, based
on packet eavesdropping, is employed to reduce the overlapping of
parallel threads. When a host receives a route request, the IERP
records the request ID in its Processed Request List.* If a node
"officially" receives a request that has been previously recorded,
the new copy is discarded. Without these measures, the bordercast
transmission can actually generate more overhead than flooding.
* ICMP provides a service similar to IERP's route failure
notification. However, the IERP service provides additional
diagnostic information, allowing the source to respond to the
route failure more effectively.
2.5 Route failures notifications
The IERP also provides a mechanism to reactively respond to route
failures. A route failure is detected by the IP when the next hop in
a source route is determined to be unreachable (i.e., does not
appear in the Intrazone Routing Table). Upon detection of a route
failure, the IERP is alerted, and a route failure packet is
generated.** The route failure packet propagates back to the route's
source in the same manner as a route reply. When the route's source
receives notification of the route failure, the expired route is
removed from its Interzone Routing Table. The IERP may also be
configured to locally repair the damaged Interzone route by
Haas, Pearlman Expires May 1998 [Page 5]
INTERNET DRAFT The Zone Routing Protocol November 1997
initiating a route discovery to the unreachable next hop.
** Eavesdropping nodes are only permitted to listen to route requests
(and record them in their Processed Request List); they are
prohibited from processing the request any further.
2.6 Bordercast Resolution Protocol (BRP)
The Bordercast Resolution Protocol (BRP) is included with the IERP in
order to provide bordercasting services which do not exist in IP. In
the current version of the BRP, the content of a bordercast message
is considered to be accessible to any host which receives the
message.*** Future versions of the BRP may allow for semi-private
bordercasting, where bordercast messages are only delivered to the
higher layers of the bordercast destinations (peripheral nodes).
*** When the BRP delivers the message to the next higher layer, a
flag is set to indicate whether the packet was overheard or
received at its intended destination. Note that this does not
restrict access to the message; it only serves to provide the
access control status of the message.
3.0 The ZRP Architecture
.........................................
: ZRP :
: :
+---------+ : +---------+ +---------+ : +---------+
| 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
Haas, Pearlman Expires May 1998 [Page 6]
INTERNET DRAFT The Zone Routing Protocol November 1997
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 the neighbor discovery operation can be
implemented by the MAC/link-layer protocols. Thus the NDM protocol
remains unspecified here.
4.0 Implementation Details
4.1 The IntrAzone Routing Protocol (IARP)
Although the IARP can be implemented through various proactive
protocols, we present here an example of an implementation based
on a modified version of the Distance Vector algorithm that restricts
the of the algorithm's operation to the range of the routing zone
radius.
A terminal may receive new route information either from a received
IARP packet or from an interrupt generated by its Neighbor Discovery
/ Maintenance (NDM) process$. In the special case when a host has
discovered a neighoor, the IARP is responsible for sending the new
neighbor the shortest route to each host which is common to both of
their routing zones. The terminal then records the new route
information in its Intrazone Routing Table. If the shortest path to
the host has changed, the terminal broadcasts an IARP packet
reflecting the change.
$ IARP relies on the services of a separate protocol (referred to
here as the Neighbor Discovery/Maintenance Protocol) to provide
current information about a host'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
neighbor information, such as link cost.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Hop Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Hop Cnt|
+-+-+-+-+
Haas, Pearlman Expires May 1998 [Page 7]
INTERNET DRAFT The Zone Routing Protocol November 1997
Field Description:
* Destination Address (32 bits)
IP address of the destination host
* Next Hop Address (32 bits)
IP address of the "next hop" host to the destination host
* Hop Count (4 bits)
Length of the route to the destination host, measured in hops
B. Structures
B.1 Intrazone Routing Table
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Routes |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Host | 0 | 1 | ==> | M-1 |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Next : Hop | Next : Hop | ==> | Next : Hop |
| | Hop : Count | Hop : Count | | Hop : Count |
+-+-+-+-+-+-+-+-+-+-:-+-+-+-+-+-+-+-:-+-+-+-+-+-+-+-+-+-+-:-+-+-+-+
| | : | : | | : |
|-----------|-------:-------|-------:-------|-----|-------:-------|
| | : | : | | : |
|-----------|-------:-------|-------:-------|-----|-------:-------|
| | : | : | | : |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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)
C.3 NDM
C.3.1 Neighbor_Lost(host)
Used by the NDM to notify the IARP that direct contact
has been lost with "host".
C.3.2 Neighbor_Found(host)
Used by the NDM to notify the IARP that direct contact
has been confirmed with "host".
C.4 IERP
C.4.1 Host_Lost(host)
Used by IARP to notify the IERP that a host 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.
Haas, Pearlman Expires May 1998 [Page 8]
INTERNET DRAFT The Zone Routing Protocol November 1997
Notes: 1) X is used as a label for the host running this state
machine.
2) INF is a reserved field value corresponding to
"infinity".
D.1
Event: An IARP packet is received containing route
information to a destination D. The hop count
associated with the received route is LESS THAN
the routing zone radius.
Action: The received route is recorded in the Intrazone
Routing Table. If the received route is shorter
than the previous shortest route to D, then a new
IARP packet containing route information to D
through X is broadcasted.
D.2
Event: An IARP packet is received containing route
information to a destination D. The hop count is
EQUAL TO the routing zone radius.
Action: The received route is recorded in the Intrazone
Routing Table.
D.3
Event: An IARP packet is received containing route
information to a destination D. The hop count is
equal to INF.
Action: The route to D is removed from the Intrazone
Routing Table.
1) If the Intrazone Routing Table still
contains a route to D and the length of the
shortest route has increased due to the route
removal, then the an IARP packet containing the
shortest route to D through X is broadcasted.
2) If the Intrazone Routing Table contains no
more routes to D, then an IARP packet containing
a route to D through X with hop count of INF is
broadcast. A "Host Lost" interrupt is
generated to alert the IERP that D has moved
beyond the routing zone.
D.4
Event: A "Neighbor Found" interrupt is received,
indicating the discovery of a neighbor host N.
Action: For each destination in X's Intrazone Routing
Table, an IARP packet is sent to N containing the
best route to that destination. An IARP packet is
then broadcasted containing the 1 hop route to N
through X.
Haas, Pearlman Expires May 1998 [Page 9]
INTERNET DRAFT The Zone Routing Protocol November 1997
D.5
Event: A "Neighbor Lost" interrupt is received, indicating
that host N is no longer a neighbor of X
Action: The one hop route to N is removed from the
Intrazone Routing Table.
1) If the Intrazone Routing Table still
contains a route to N and the length of the
shortest route has increased due to the route
removal, then the an IARP packet containing the
shortest route to N through X is broadcasted.
2) If the Intrazone Routing Table contains no
more routes to N, then an IARP packet containing
a route to D through X with hop count of INF is
broadcast. A "Host Lost" interrupt is generated
to alert the IERP that D has moved beyond the
routing zone.
E. Pseudocode Implementation
E.1 Update Intrazone Routing Table
if (packet arrived)
{host, route->next_hop,route->hop_count} <-- packet
else
{
{host} <-- intrpt
route->next_hop=host
if (type(intrpt) == "Neighbor Found")
{
for recorded_host = each host in Intrazone_Routing_Table
{
best_route = Intrazone_Routing_Table[recorded_host,0]
if (best_route->hop_count < ROUTING_ZONE_RADIUS)
{
packet <-- {recorded_host,my_id,hop_count+1}
send(packet,host)
}
}
route->hop_count=1
}
else
route->hop_count=INF
}
Haas, Pearlman Expires May 1998 [Page 10]
INTERNET DRAFT The Zone Routing Protocol November 1997
former_best_route = Intrazone_Routing_Table[host,0]
if (route->hop_count < INF)
add(Intrazone_Routing_Table[host], route)
else
remove(Intrazone_Routing_Table[host],route)
best_route = Intrazone_Routing_Table[host,0]
if (best_route != NULL)
{
if (best_route->hop_count != former_best_route->hop_count
&& best_route->hop_count < ROUTING_ZONE_RADIUS)
{
packet <-- {host, my_id, best_route->hop_count+1}
broadcast(packet)
}
}
else
{
force_intrpt("IERP","Host Lost",{host})
packet <-- {host, my_id, INF}
broadcast(packet)
}
4.2 IntErzone Routing Protocol (IERP)
The Interzone Routing Protocol (IERP) is responsible for discovering
routes to hosts which are beyond a terminal's routing zone. The IERP
collects routing information reactively, through bordercasted queries
which contain the accumulated routes from the source.
When IP receives a data packet intended for an unknown destination
(i.e., destination is not recorded in either the Intrazone or
Interzone Routing Tables), the IERP is interrupted. The IERP responds
by initiating a route discovery and bordercasting a route query. Each
query in the network is uniquely identified by the IP address of the
source and a request ID (local to the source).
Upon receipt of a route request packet, a host searches its Intrazone
Routing Table to determine if the requested destination is within its
routing zone. If so, the terminal responds with a route reply which
is returned to the source along the (reversed) accumulated route. If
the destination is not within the terminal's routing zone, the
terminal adds its terminal ID to the accumulated route and
bordercasts the route request.
A. Packet Format
Haas, Pearlman Expires May 1998 [Page 11]
INTERNET DRAFT The Zone Routing Protocol November 1997
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 | Request ID | Last Hop | Hop Mrker | Max Hops |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
| Hop 0 Address (Source) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Hop 1 Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | |
| | source
\ / route
\ / |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| |
| Hop (N-1) Address | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --+--
Field Description:
* Type (4 bits)
Identifies the type of IERP packet. The current version
of IERP contains three packet types:
REQUEST: request an Interzone source route to
the destination host specified in
Destination Address
REPLY: response to a request packet; includes the source route to the
destination host specified in
Destination Address
FAILURE: control message sent a host indicating
that the received data packet contains
an invalid source route.
* Request ID (10 bits)
Sequence number which, along with the Source Address
(see below) uniquely identifies any route query in the
network. (used only for REQUEST packets)
* Last Hop (6 bits)
Indicates the previous recipient of the IERP packet
(referenced as an index into the Source Route (see
below))
* Hop Marker (6 bits)
Currently used to indicate the hop where a route failure
was detected (referenced as an index into the Source
Route (see below)) (used only for FAILURE packets)
Haas, Pearlman Expires May 1998 [Page 12]
INTERNET DRAFT The Zone Routing Protocol November 1997
* Max Hops (6 bits)
Maximum number of Interzone hops which a route query may
propagate. This field allows nodes to adaptively
configure the depth of a route search in order to
control the amount of IERP traffic generated. (used only
for REQUEST packets)
* Destination Address (32 bits)
IP address of the destination host
* Source Route (N*32 bits)
Variable length field which contains the IP addresses of
an N hop source route. The first subfield of the Source
Route contains the IP address of the route's source.
In general, the n-th subfield contains the IP address of
the n-th hop in the route.
For REQUEST packets, the Source Route represents the
incomplete accumulated route to the destination host
(as indicated by the Destination Address)
For REPLY and FAILURE packets, the Source Route contains
the complete route from the source host to the
destination host.
B. Structures
B.1 Intrazone Routing Table (See IARP Description)
B.2 Interzone Routing Table
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Routes |
+ Dest +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | 0 | 1 | ==> | M-| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | ==> | |
|---------|-----------|-----------|-----|-----------|
| | | | ==> | |
|---------|-----------|-----------|-----|-----------|
| | | | | | ==> | |
+-+-+-+-+-+-+-+| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
\ /
\ /
+-+-+-+-+ +-+-+-+-+ +-+-+-+-+
| 0 |==>| 1 |==> ...==>| N-1 | source
+-+-+-+-+ +-+-+-+-+ +-+-+-+-+ route
source first (N-1)
host hop hop
Haas, Pearlman Expires May 1998 [Page 13]
INTERNET DRAFT The Zone Routing Protocol November 1997
B.3 Processed Request List
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source | Request ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
|-----------|---------------|
| | |
|-----------|---------------|
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
C. Interfaces
C.1 Higher Layer (N/A)
C.2 Lower Layer (BRP)
C.2.1 Send() (same interface as IP send())
Used by the IERP to request transmission of a data
packet.
C.2.2 Deliver() (same interface as IP deliver())
Used by the BRP to alert the IERP of the arrival of a
data packet.
C.3 IARP
C.3.1 Neighbor_Lost(host)
Used by the NDM to notify the IARP that direct contact
has been lost with "host".
C.3.2 Neighbor_Found(host)
Used by the NDM to notify the IARP that direct contact
has been confirmed with "host".
C.4 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 host running this state
machine.
D.1
Event: A "Host Lost" interrupt is received, indicating
that the host H has moved beyond the routing zone.
Action: Remove every route from the Interzone Routing Table
which contains H. A limited depth route discovery
to H is initiated. An IERP request packet is
created with the destination addresss set to H and
the source route initialized with the IP address
of X. The request packet is then bordercasted.
Haas, Pearlman Expires May 1998 [Page 14]
INTERNET DRAFT The Zone Routing Protocol November 1997
D.2
Event: A "Host Unreachable" interrupt is received from the
ICMP, indicating an unknown destination host D.
Action: A full depth route discovery to the lost host is
initiated. An IERP request packet is created with
the destination addresss set to H and the source
route initialized with the IP address of X. The
request packet is then bordercasted.
D.3
Event: An "Source Route Failed" interrupt is received from
the ICMP, indicating that the next hop specified in
an IP source route does not appear within the
routing zone.
Action: A route failure packet containing the invalid route
is sent to the route's source with the hop marker
indicating X as the host where a route failure was
detected.
D.4
Event: An IERP request packet is received with a
destination that appears within X's routing zone.
Action: The request is recorded in the Processed Request
List. In order to be processed further, four
conditions must be satisfied. First, the received
packet must not be flagged as overheard. Second,
the number of hops in the route must not exceed the
maximum hop count. Third, the request must not
have been previously recorded. Finally, no hops in
the route (except the last_hop) may lie within X's
routing zone. X appends its IP address to the route
and sends an IERP reply packet to the preceding hop
in the route.
D.5
Event: An IERP request packet is received with a
destination that DOES NOT appear within X's routing
zone.
Action: The request is recorded in the Processed Request
List. In order to be processed further, four
conditions must be satisfied. First, the received
packet must not be flagged as overheard. Second,
the number of hops in the route must not exceed the
maximum hop count. Third, the request must not have
been previously recorded. Finally, no hops in the
route (except the last_hop) may lie within X's
routing zone. X appends its IP address to the route
and is bordercasts an IERP request packet
containing the updated route.
Haas, Pearlman Expires May 1998 [Page 15]
INTERNET DRAFT The Zone Routing Protocol November 1997
D.6
Event: An IERP reply packet is received containing X as
the source host.
Action: The received source route is recorded in Interzone
Routing Table.
D.7
Event: An IERP reply packet is received containing a node
other than X as the source host.
Action: The route reply packet is fowarded to the preceding
hop in the route
D.8
Event: An IERP failure packet is received containing X as
the source host.
Action: X removes all routes from its Interzone Routing
table which contain the broken link specified by
the bad hop field.
D.9
Event: An IERP failure packet is received containing a
node other than X as the source host.
Action: X fowards the route reply packet to the preceding
hop in the route
E. Pseudocode Implementation
E.1 Intrazone Node Lost
{lost_host} <-- intrpt
for host = each host in Interzone Routing Table
{
m=0
while (Interzone_Routing_Table[host,m] != NULL)
{
route=Interzone_Routing_Table[host,m]
if (lost_host (EXISTS IN) route)
remove(Interzone_Routing_Table[host,m])
else
m++
}
}
force_intrpt("IERP","repair",{lost_host})
Haas, Pearlman Expires May 1998 [Page 16]
INTERNET DRAFT The Zone Routing Protocol November 1997
E.2 Initiate Route Discovery
{dest} <-- intrpt
req_id++
route(0)=my_id
last_hop=0
if (type(intrpt) == "repair")
max_hops=MAX_REPAIR_HOPS
else
max_hops=MAX_REQUEST_HOPS
packet <-- {REQUEST, req_id, last_hop, NULL, max_hops, dest,
route}
bordercast(packet)
add (Processed_Request_List, {my_id, req_id})
E.3 Report Route Failure
{route,dest} <-- intrpt
last_hop=0
while (route(last_hop) != my_id)
last_hop++
packet <-- {FAILURE, NULL, last_hop, last_hop, NULL, dest,
route}
send(packet, route(last_hop-1))
E.4 Receive IERP Packet
{pk_type, req_id, last_hop, bad_hop, max_hops, route} <--
packet
{overheard} <-- intrpt
switch(pk_type)
{
case: REQUEST
add({Processed_Request_List, source, req_id)
LSP1_terminate = FALSE
n=0
while (!LSP1_terminate && n < last_hop)
{
if (Intrazone_Routing_Table[route(n)]!=NULL)
LSP1_terminate = TRUE
n++
}
LSP2_terminate = (Processed_Request_List[source,req_id]
!= NULL)
if (!overheard && !LSP1_terminate && !LSP2_terminate &&
last_hop < max_hops)
{
last_hop++
route(last_hop)=my_id
if (dest (EXISTS IN) Intrazone_Routing_Table)
{
packet<--{REPLY,req_id,last_hop,bad_hop,max_hops,
dest,route}
Haas, Pearlman Expires May 1998 [Page 17]
INTERNET DRAFT The Zone Routing Protocol November 1997
send(packet, route(last_hop-1))
}
else
{
packet<--{REQUEST,req_id,last_hop,bad_hop,max_hops,
dest,route}
bordercast(packet)
}
}
break
case: REPLY
case: FAILURE
if (route(0) == my_id)
{
if (pk_type == ROUTE_REPLY)
add(Interzone_Routing_Table, route)
else
{
link(0)=route(bad_hop)
link(1)=route(bad_hop+1)
remove(Interzone_Routing_Table,link)
}
}
else
{
last_hop --
packet <-- {pk_type,req_id,last_hop,bad_hop,max_hops,
dest,route}
send(packet, route(last_hop-1))
}
}
4.3 Bordercast Resolution Protocol (BRP)
The higher layer interface of the BRP is designed to be compatible
with any IP based application. However, it is assumed that the
routing zone hierarchy is visible only to the ZRP entities, making
bordercasting services only of use to the IERP.
Upon receipt of a (IERP) packet to be bordercasted, the BRP resolves
the bordercast address into the individual IP addresses of the
peripheral nodes. The received packet is then encapsulated into a BRP
packet and sent to each peripheral node (via IP broadcast
transmission).
When a BRP packet is delivered from IP, the (IERP) data is
decapsulated and passed on to the higher layer. If the BRP packet
has not reached its destination, the BRP is responsible for
forwarding the packet to the next hop toward its destination.
Haas, Pearlman Expires May 1998 [Page 18]
INTERNET DRAFT The Zone Routing Protocol November 1997
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Hop Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Field Description:
* Destination Address (32 bits)
IP address of the destination host
* Next Hop Address (32 bits)
IP address of the "next hop" host to the destination
host
* Data (variable length)
Encapsulated data
B. Structures
B.1 Intrazone Routing Table (see IARP description)
C. Interfaces
C.1 Higher Layer (ie. IERP)
C.2.1 Send() (same interface as IP Send() primitive)
Used by higher layer protocol to request transmission of
a data packet
C.2.2 Deliver() (same interface as IP Deliver() primitive)
Used by the BRP to alert the higher layer protocol of
the arrival of a data packet
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 host running this state
machine.
2) NULL is a reserved field value, corresponding to an
invalid IP address.
Haas, Pearlman Expires May 1998 [Page 19]
INTERNET DRAFT The Zone Routing Protocol November 1997
D.1
Event: A packet is received from the IERP, destined for
the BORDERCAST address.
Action: The IERP packet is encapsulated in a BRP packet. A
copy of the BRP packet is made for each peripheral
host, P. (i.e., each host in X's Intrazone Routing
Table whose shortest route is ROUTING_ZONE_RADIUS
hops away from X). The packet's destination address
is set to the IP address of P and the next hop
address is set to the IP address of the next hop
to P (from X). Each packet is then broadcasted.
D.2
Event: A packet is received from the IERP, destined for a
non-BORDERCAST address.
Action: The IERP packet is encapsulated in a BRP packet.
The BRP packet`s destination address and next hop
address fields are cleared and the BRP packet is
sent to the specified destination.
D.3
Event: A BRP packet is received from the IP layer. The BRP
packet contains a next hop address EQUAL TO NULL.
Action: The data is decapuslated from the BRP packet and
delivered to the IERP, with the overhead flag set
to FALSE.
D.4
Event: A BRP packet is received from the IP layer. The BRP
packet contains a valid next hop address and a
destination address EQUAL TO X.
Action: The data is decapuslated from the BRP packet and
delivered to the IERP, with the overhead flag set
to FALSE.
D.5
Event: A BRP packet is received from the IP layer. The BRP
packet contains a valid next hop address EQUAL TO
X and a destination address NOT EQUAL TO X.
Action: The data is decapuslated from the BRP packet and
delivered to the IERP, with the overhead flag set
to TRUE. The received BRP packet is copied, the
next hop address field is updated by querying the
Intrazone Routing Table, and the new packet is
broadcasted.
Haas, Pearlman Expires May 1998 [Page 20]
INTERNET DRAFT The Zone Routing Protocol November 1997
D.6
Event: A BRP packet is received from the IP layer. The BRP
packet contains a valid next hop address NOT EQUAL
TO X and a destination address NOT EQUAL TO X.
Action: The data is decapuslated from the BRP packet and
delivered to the IERP, with the overhead flag set
to TRUE.
E. Pseudocode Implementation
E.1 Receive Data Packet from IERP
{dest} <-- intrpt
if (dest == BORDERCAST)
{
for (host = each host in Intrazone_Routing_Table)
{
if (Intrazone_Routing_Table[host,0]->hop_count
==ROUTING_ZONE_RADIUS)
{
next_hop=Intrazone_Routing_Table[host,0]->next_hop
packet<--{host,next_hop,data_packet}
broadcast(packet)
}
}
}
else
{
packet<--{dest,NULL,data_packet}
send(packet,dest)
}
E.2 Receive Packet from IP
{dest,next_hop,data}<--packet
overheard=FALSE
if (next_hop != NULL)
{
if (next_hop == my_id)
{
if(dest != my_id)
{
overheard=TRUE
next_hop = Intrazone_Routing_Table[dest,0]->next_hop
packet<--{dest,next_hop,data}
broadcast(packet)
}
}
else
overheard=TRUE
Haas, Pearlman Expires May 1998 [Page 21]
INTERNET DRAFT The Zone Routing Protocol November 1997
}
deliver(IERP,data,{overheard})
5.0 Other Considerations
5.1 Sizing the Zone Radius
The value of the zone radius determines the performance of the ZRP
protocol. In general, highly mobile networks should set the zone
radius to a smaller values, while in more stationary networks the
zone radius should be larger. Similarly, in very active networks
(frequent query requests), the zone radius should be larger, and in
low-activity networks, the zone radius should be smaller.
We believe that setting the size of the zone radius should be
performed by the administration of the network, if one exists, or
by the manufacturer, as a default value. Although some guidance can
be given as to "optimal" value of the zone radius [Haas-3],
additional constrains and operational conditions may affect this
choice.
6.0 References
[AODV] Perkins, C.E., "Ad-Hoc On-Demand Distance Vector Routing",
MILCOM'97 panel on Ad-Hoc Networks, Monterey, CA,
November 3, 1997
[Corson] Corson, M.S., and Ephremides, A., "A Distributed Routing
Algorithm for Mobile Wireless Networks", ACM/Baltzer
journal on Wireless Networks, January 1995
[Haas-1] Haas, Z.J., "A New Routing Protocol for the Reconfigurable
Wireless Networks", ICUPC'97, San Diego, CA, Oct. 12, 1997
[Haas-2] Haas, Z.J., and Pearlman, M.R., "Providing Ad-Hoc
Connectivity with the Reconfigurable Wireless Networks",
submitted for journal publication.
[Haas-3] Haas, Z.J., "Design Choices in Ad-Hoc Networking",
in preparation.
[Johnson] Johnson, D.B., and Maltz, D.A., "Dynamic Source Routing
in Ad-Hoc Wireless Networks," in Mobile Computing,
T. Imielinski and H. Korth, editors, Kluwer, 1996
[Murthy] Murthy, S., and Garcia-Luna-Aceves, J.J., "A Routing
Protocol for Packet Radio Networks", MOBICOM'95,
November 14-15, 1995
[Perkins] 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
Haas, Pearlman Expires May 1998 [Page 22]
INTERNET DRAFT The Zone Routing Protocol November 1997
[TORA] Macker, J., "Mobile Ad Hoc Internetworking", MILCOM'97
panel on Ad-Hoc Networks, Monterey, CA, November 3, 1997
[RFC-0791] Postel, J., Editor, "Internet Protocol", STD 5, RFC 791,
September 1981
[RFC-1075] Waitzman, D., Partridge, C., Deering, S.E., "Distance
Vector Multicast Routing Protocol", RFC 1075, Nov. 1, 1988
[RFC-2178] Moy, J., "OSPF Version 2", INTERNET DRAFT STANDARD,
RFC 2178, July 1997
Authors' Information
Zygmunt J. Haas
Wireless Networks Laboratory
323 Frank Rhodes Hall
School of Electrial Engineering
Cornell University
Ithaca, NY 14853
United States of America
tel: (607) 255-3454, fax: (607) 255-9072
Email: haas@acm.org or haas@ee.cornell.edu
Marc R. Pearlman
319 Frank Rhodes Hall
School of Electrial Engineering
Cornell University
Ithaca, NY 14853
United States of America
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 in six months [Page 23]